diff -Nru meld-1.5.3/bin/meld meld-3.11.0/bin/meld --- meld-1.5.3/bin/meld 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/bin/meld 2014-02-22 03:14:50.000000000 +0000 @@ -1,138 +1,205 @@ #! /usr/bin/env python -### Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009-2014 Kai Willadsen +# +# 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, see . -### 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 +from __future__ import print_function import locale +import logging import os +import subprocess import sys -# Disable buffering of stdout -class Unbuffered(object): - def __init__(self, file): - self.file = file - def write(self, arg): - self.file.write(arg) - self.file.flush() - def __getattr__(self, attr): - return getattr(self.file, attr) -sys.stdout = Unbuffered(sys.stdout) - -# Use pychecker if requested -if "--pychecker" in sys.argv: - sys.argv.remove("--pychecker") - os.environ['PYCHECKER'] = "--no-argsused --no-classattr --stdlib" - #'--blacklist=gettext,locale,pygtk,gtk,gtk.keysyms,popen2,random,difflib,filecmp,tempfile' - import pychecker.checker +# On Windows, pythonw.exe (which doesn't display a console window) supplies +# dummy stdout and stderr streams that silently throw away any output. However, +# these streams seem to have issues with flush() so we just redirect stdout and +# stderr to actual dummy files (the equivalent of /dev/null). +# Regarding pythonw.exe stdout, see also http://bugs.python.org/issue706263 +if sys.executable.endswith("pythonw.exe"): + devnull = open(os.devnull, "w") + sys.stdout = sys.stderr = devnull -# Ignore session management -for ignore in "--sm-config-prefix", "--sm-client-id": - try: - smprefix = sys.argv.index(ignore) - del sys.argv[smprefix:smprefix + 2] - except (ValueError, IndexError): - pass -# Extract the profiling flag -try: - sys.argv.remove("--profile") - profiling = True -except ValueError: - profiling = False +def disable_stdout_buffering(): + + class Unbuffered(object): + + def __init__(self, file): + self.file = file + + def write(self, arg): + self.file.write(arg) + self.file.flush() + + def __getattr__(self, attr): + return getattr(self.file, attr) + + sys.stdout = Unbuffered(sys.stdout) + # Support running from an uninstalled version -melddir = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "..")) +if os.path.basename(__file__) == "meld": + self_path = os.path.realpath(__file__) +melddir = os.path.abspath(os.path.join(os.path.dirname(self_path), "..")) + +uninstalled = False if os.path.exists(os.path.join(melddir, "meld.doap")): sys.path[0:0] = [melddir] -else: - sys.path[0:0] = [ #LIBDIR# - ] + uninstalled = True +devel = os.path.exists(os.path.join(melddir, ".git")) + +import meld.conf + +if uninstalled: + meld.conf.uninstalled() -# i18n support -import meld.paths +# TODO: Possibly move to elib.intl import gettext _ = gettext.gettext - -# Locale setting in gtk.Builder appears somewhat broken under Python. See: -# https://bugzilla.gnome.org/show_bug.cgi?id=574520 -locale_domain = "meld" -locale_dir = meld.paths.locale_dir() +locale_domain = meld.conf.__package__ +locale_dir = meld.conf.LOCALEDIR gettext.bindtextdomain(locale_domain, locale_dir) -locale.setlocale(locale.LC_ALL,'') +locale.setlocale(locale.LC_ALL, '') gettext.textdomain(locale_domain) -gettext.install(locale_domain, localedir=locale_dir, unicode=True) +try: + gettext.install(locale_domain, localedir=locale_dir, unicode=True) +except TypeError: + # py3k + gettext.install(locale_domain, localedir=locale_dir) try: - locale.bindtextdomain(locale_domain, locale_dir) - locale.bind_textdomain_codeset(locale_domain, 'UTF-8') -except AttributeError: - # OS X doesn't appear to have bindtextdomain(). This will cause - # gtk.Builder translations to fail. - print "Couldn't bind the translation domain. Some translations won't work." -except locale.Error: - print "Couldn't bind the translation domain. Some translations won't work." - - -# Check requirements: Python 2.5, pygtk 2.14 -pyver = (2, 5) -pygtkver = (2, 14, 0) -pygobjectver = (2, 16, 0) - -def missing_reqs(mod, ver, exception=None): - if isinstance(exception, ImportError): - print _("Cannot import: ") + mod + "\n" + str(e) + if os.name == 'nt': + from ctypes import cdll + libintl = cdll.intl + libintl.bindtextdomain(locale_domain, locale_dir) + libintl.bind_textdomain_codeset(locale_domain, 'UTF-8') + del libintl else: - modver = mod + " " + ".".join(map(str, ver)) - print _("Meld requires %s or higher.") % modver - sys.exit(1) + locale.bindtextdomain(locale_domain, locale_dir) + locale.bind_textdomain_codeset(locale_domain, 'UTF-8') +except AttributeError as e: + # Python builds linked without libintl (i.e., OSX) don't have + # bindtextdomain(), which causes Gtk.Builder translations to fail. + print("Couldn't bind the translation domain. Some translations won't work.") + print(e) +except locale.Error as e: + print("Couldn't bind the translation domain. Some translations won't work.") + print(e) +except WindowsError as e: + # Accessing cdll.intl sometimes fails on Windows for unknown reasons. + # Let's just continue, as translations are non-essential. + print("Couldn't bind the translation domain. Some translations won't work.") + print(e) + + +def check_requirements(): + + pyver = (2, 7) + gtk_requirement = (3, 6) + glib_requirement = (2, 34, 0) + gtksourceview_requirement = (3, 6, 0) + + def missing_reqs(mod, ver, exception=None): + if isinstance(exception, ImportError): + print(_("Cannot import: ") + mod + "\n" + str(e)) + else: + modver = mod + " " + ".".join(map(str, ver)) + print(_("Meld requires %s or higher.") % modver) + sys.exit(1) -if sys.version_info[:2] < pyver: - missing_reqs("Python", pyver) + if sys.version_info[:2] < pyver: + missing_reqs("Python", pyver) -# gtk+ and related imports -try: - import pygtk - pygtk.require("2.0") -except (ImportError, AssertionError), e: - missing_reqs("pygtk", pygtkver, e) + # gtk+ and related imports + try: + # FIXME: Extra clause for gi + import gi + from gi.repository import Gtk + gi.require_version("Gtk", "3.0") + version = (Gtk.get_major_version(), Gtk.get_minor_version()) + assert version >= gtk_requirement + except (ImportError, AssertionError) as e: + missing_reqs("GTK+", gtk_requirement, e) -try: - import gtk - assert gtk.pygtk_version >= pygtkver -except (ImportError, AssertionError), e: - missing_reqs("pygtk", pygtkver, e) + try: + from gi.repository import GObject + assert GObject.glib_version >= glib_requirement + except (ImportError, AssertionError) as e: + missing_reqs("GLib", glib_requirement, e) -try: - import gobject - assert gobject.pygobject_version >= pygobjectver -except (ImportError, AssertionError), e: - missing_reqs("pygobject", pygobjectver, e) - - -gtk.icon_theme_get_default().append_search_path(meld.paths.icon_dir()) - -def main(): - from meld.meldapp import app - app.create_window() - app.parse_args(sys.argv[1:]) - gtk.main() - -if profiling: - import profile - profile.run("main()") -else: - main() + try: + from gi.repository import GtkSource + # TODO: There is no way to get at GtkSourceView's actual version + except (ImportError, AssertionError) as e: + missing_reqs("GtkSourceView", gtksourceview_requirement, e) + + +def setup_resources(): + from gi.repository import GObject + from gi.repository import Gtk + from gi.repository import Gdk + + GObject.threads_init() + icon_dir = os.path.join(meld.conf.DATADIR, "icons") + Gtk.IconTheme.get_default().append_search_path(icon_dir) + css_file = os.path.join(meld.conf.DATADIR, "meld.css") + provider = Gtk.CssProvider() + provider.load_from_path(css_file) + Gtk.StyleContext.add_provider_for_screen( + Gdk.Screen.get_default(), provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) + + +def setup_settings(): + import meld.conf + + schema_path = os.path.join(meld.conf.DATADIR, "gschemas.compiled") + if uninstalled and not os.path.exists(schema_path): + subprocess.call(["glib-compile-schemas", meld.conf.DATADIR], + cwd=melddir) + + import meld.settings + meld.settings.create_settings(uninstalled=uninstalled) + + +def setup_logging(): + log = logging.getLogger() + + # If we're running uninstalled and from Git, turn up the logging level + if uninstalled and devel: + log.setLevel(logging.INFO) + else: + log.setLevel(logging.CRITICAL) + + handler = logging.StreamHandler() + formatter = logging.Formatter("%(asctime)s %(levelname)s " + "%(name)s: %(message)s") + handler.setFormatter(formatter) + log.addHandler(handler) + + +if __name__ == '__main__': + setup_logging() + disable_stdout_buffering() + check_requirements() + setup_settings() + setup_resources() + + import meld.meldapp + status = meld.meldapp.app.run(sys.argv) + sys.exit(status) diff -Nru meld-1.5.3/COPYING meld-3.11.0/COPYING --- meld-1.5.3/COPYING 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/COPYING 2014-02-16 20:23:22.000000000 +0000 @@ -1,12 +1,12 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 + 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 + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -15,7 +15,7 @@ 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 +the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not @@ -55,8 +55,8 @@ The precise terms and conditions for copying, distribution and modification follow. - - GNU GENERAL PUBLIC LICENSE + + GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains @@ -110,7 +110,7 @@ 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 @@ -168,7 +168,7 @@ 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 @@ -225,7 +225,7 @@ 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 @@ -255,7 +255,7 @@ of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + 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 @@ -277,9 +277,9 @@ 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 + 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 @@ -303,17 +303,16 @@ 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 - + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 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 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. @@ -336,5 +335,5 @@ 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 +library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. diff -Nru meld-1.5.3/data/icons/button_apply0.xpm meld-3.11.0/data/icons/button_apply0.xpm --- meld-1.5.3/data/icons/button_apply0.xpm 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/button_apply0.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -/* XPM */ -static char * button_apply0_xpm[] = { -"16 16 2 1", -" c None", -". c #000000", -" ", -" ", -" ", -" ... ", -" ... ", -" ... ", -" .... ", -" .............. ", -" ...............", -" .............. ", -" .... ", -" ... ", -" ... ", -" ... ", -" ", -" "}; diff -Nru meld-1.5.3/data/icons/button_apply1.xpm meld-3.11.0/data/icons/button_apply1.xpm --- meld-1.5.3/data/icons/button_apply1.xpm 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/button_apply1.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -/* XPM */ -static char * button_apply1_xpm[] = { -"16 16 2 1", -" c None", -". c #000000", -" ", -" ", -" ... ", -" ... ", -" ... ", -" .... ", -" .............. ", -"............... ", -" .............. ", -" .... ", -" ... ", -" ... ", -" ... ", -" ", -" ", -" "}; diff -Nru meld-1.5.3/data/icons/button_copy0.xpm meld-3.11.0/data/icons/button_copy0.xpm --- meld-1.5.3/data/icons/button_copy0.xpm 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/button_copy0.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char *button_copy1[] = { -/* columns rows colors chars-per-pixel */ -"16 24 2 1", -" c black", -". c None", -/* pixels */ -"........ ", -"........ ", -"............ ", -"........... ", -"..... .. ", -"..... . . ", -"..... . .. ", -"..... . ... ", -"..... . .... ", -"..... ...... ", -"..... ........", -" ...", -" ...", -" ...", -"..... ........", -"..... . .... ", -"..... . ... ", -"..... . .. ", -"..... . . ", -"..... .. ", -"........... ", -"............ ", -"........ ", -"........ " -}; diff -Nru meld-1.5.3/data/icons/button_copy1.xpm meld-3.11.0/data/icons/button_copy1.xpm --- meld-1.5.3/data/icons/button_copy1.xpm 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/button_copy1.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char *button_copy0[] = { -/* columns rows colors chars-per-pixel */ -"16 24 2 1", -" c black", -". c None", -/* pixels */ -" ........", -" ........", -" ............", -" ...........", -" .. .....", -" . . .....", -" .. . .....", -" ... . .....", -" .... . .....", -" ...... .....", -"........ .....", -"... ", -"... ", -"... ", -"........ .....", -" .... . .....", -" ... . .....", -" .. . .....", -" . . .....", -" .. .....", -" ...........", -" ............", -" ........", -" ........" -}; diff -Nru meld-1.5.3/data/icons/button_delete.xpm meld-3.11.0/data/icons/button_delete.xpm --- meld-1.5.3/data/icons/button_delete.xpm 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/button_delete.xpm 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -/* XPM */ -static char * button_delete_xpm[] = { -"16 16 2 1", -" c None", -". c #000000", -" ", -" ", -" .... .... ", -" .... .... ", -" .... .... ", -" ........ ", -" ...... ", -" .... ", -" ...... ", -" ........ ", -" .... .... ", -" .... .... ", -" .... .... ", -" ", -" ", -" "}; diff -Nru meld-1.5.3/data/icons/COPYING meld-3.11.0/data/icons/COPYING --- meld-1.5.3/data/icons/COPYING 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/COPYING 2014-02-16 20:23:22.000000000 +0000 @@ -6,6 +6,7 @@ gnome/8x8/emblems/emblem-new.png and is licensed under the terms of the Creative Commons BY-SA 3.0 license. See COPYING_CCBYSA3 for details. -meld-locked.png and meld-unlocked.png are taken from the gnome-colors project -at gnome-colors/gnome-colors-common/16x16/status/locked.png and unlocked.png, -and are licensed under the GPL v2. +meld-version-control.svg is derived from a combination of appointment-soon and +emblem-documents icons taken from the gnome-icon-theme project and is +licensed under the terms of the Creative Commons BY-SA 3.0 license. See +COPYING_CCBYSA3 for details. Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/16x16/actions/meld-change-apply-left.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/16x16/actions/meld-change-apply-left.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/16x16/actions/meld-change-apply-right.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/16x16/actions/meld-change-apply-right.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/16x16/actions/meld-change-copy.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/16x16/actions/meld-change-copy.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/16x16/actions/meld-change-delete.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/16x16/actions/meld-change-delete.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/16x16/apps/meld-version-control.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/16x16/apps/meld-version-control.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/16x16/apps/meld.xcf and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/16x16/apps/meld.xcf differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/22x22/apps/meld.xcf and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/22x22/apps/meld.xcf differ diff -Nru meld-1.5.3/data/icons/hicolor/32x32/apps/meld.svg meld-3.11.0/data/icons/hicolor/32x32/apps/meld.svg --- meld-1.5.3/data/icons/hicolor/32x32/apps/meld.svg 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/hicolor/32x32/apps/meld.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,843 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff -Nru meld-1.5.3/data/icons/hicolor/48x48/apps/meld.svg meld-3.11.0/data/icons/hicolor/48x48/apps/meld.svg --- meld-1.5.3/data/icons/hicolor/48x48/apps/meld.svg 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/icons/hicolor/48x48/apps/meld.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,843 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/hicolor/48x48/apps/meld-version-control.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/hicolor/48x48/apps/meld-version-control.png differ diff -Nru meld-1.5.3/data/icons/HighContrast/scalable/apps/meld.svg meld-3.11.0/data/icons/HighContrast/scalable/apps/meld.svg --- meld-1.5.3/data/icons/HighContrast/scalable/apps/meld.svg 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/data/icons/HighContrast/scalable/apps/meld.svg 2014-02-08 21:03:00.000000000 +0000 @@ -0,0 +1,232 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/meld-locked.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/meld-locked.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/meld-unlocked.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/meld-unlocked.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/vc-icon.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/vc-icon.png differ Binary files /tmp/JIfrCOlQz7/meld-1.5.3/data/icons/vc-push-24.png and /tmp/W4Mrcd0iCf/meld-3.11.0/data/icons/vc-push-24.png differ diff -Nru meld-1.5.3/data/meld.appdata.xml.in meld-3.11.0/data/meld.appdata.xml.in --- meld-1.5.3/data/meld.appdata.xml.in 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/data/meld.appdata.xml.in 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,25 @@ + + + + meld.desktop + CC0 + + <_p> + Meld is a visual diff and merge tool targeted at developers. Meld helps you + compare files, directories, and version controlled projects. It provides + two- and three-way comparison of both files and directories, and supports + many version control systems including Git, Mercurial, Bazaar and Subversion. + + <_p> + Meld helps you review code changes, understand patches, and makes enormous + merge conflicts slightly less painful. + + + + http://meldmerge.org/images/meld-filediff-full.png + http://meldmerge.org/images/meld-dircomp-full.png + http://meldmerge.org/images/meld-vc-full.png + + http://meldmerge.org + meld-list@gnome.org + diff -Nru meld-1.5.3/data/meld.css meld-3.11.0/data/meld.css --- meld-1.5.3/data/meld.css 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/data/meld.css 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,44 @@ + +@define-color insert-bg #d0ffa3; +@define-color insert-outline shade(@insert-bg, 0.8); +@define-color insert-text #008800; +@define-color delete-bg White; +@define-color delete-outline shade(@delete-bg, 0.8); +@define-color delete-text #880000; +@define-color replace-bg #bdddff; +@define-color replace-outline shade(@replace-bg, 0.8); +@define-color replace-text #0044dd; +@define-color conflict-bg #ffa5a3; +@define-color conflict-outline shade(@conflict-bg, 0.8); +@define-color conflict-text #ff0000; +@define-color error-bg #fce94f; +@define-color error-outline shade(@error-bg, 0.8); +@define-color error-text #faad3d; +@define-color inline-bg #8ac2ff; +@define-color unknown-text #888888; +@define-color current-line-highlight #ffff00; +@define-color syncpoint-outline #555555; +@define-color current-chunk-highlight #ffffff; + +.meld-notebook-toolbar.toolbar { + background-image: none; + background-color: @theme_base_color; + border-width: 0 0 1px 0; + border-style: solid; + border-color: @borders; + + -GtkToolbar-button-relief: none; + padding: 3px 2px 2px 2px; +} + +LinkMap { + border-width: 0 0 1px 0; + border-style: solid; + border-color: @borders; +} + +.meld-vc-console-pane { + border-width: 1px 0 0px 0; + border-style: solid; + border-color: @borders; +} diff -Nru meld-1.5.3/data/meld.desktop.in meld-3.11.0/data/meld.desktop.in --- meld-1.5.3/data/meld.desktop.in 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/meld.desktop.in 2014-02-08 21:03:00.000000000 +0000 @@ -1,5 +1,4 @@ [Desktop Entry] -Encoding=UTF-8 _Name=Meld _GenericName=Diff Viewer _X-GNOME-FullName=Meld Diff Viewer @@ -8,6 +7,7 @@ Terminal=false Type=Application Icon=meld +MimeType=application/x-meld-comparison; StartupNotify=true Categories=GTK;Development; X-GNOME-Bugzilla-Bugzilla=GNOME diff -Nru meld-1.5.3/data/mime/meld.xml.in meld-3.11.0/data/mime/meld.xml.in --- meld-1.5.3/data/mime/meld.xml.in 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/data/mime/meld.xml.in 2014-02-08 21:03:00.000000000 +0000 @@ -0,0 +1,8 @@ + + + + <_comment>Meld comparison description + + + + diff -Nru meld-1.5.3/data/org.gnome.meld.gschema.xml meld-3.11.0/data/org.gnome.meld.gschema.xml --- meld-1.5.3/data/org.gnome.meld.gschema.xml 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/data/org.gnome.meld.gschema.xml 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + + + + + + + + + + + (-1, -1) + Default window size + + + true + Show toolbar + If true, the window toolbar is visible. + + + true + Show statusbar + If true, the window statusbar is visible. + + + + + + ["utf8"] + Automatically detected text encodings + These text encodings will be automatically used (in order) to try to decode loaded text files. + + + + + + 8 + Width of an indentation step + The number of spaces to use for a single indent step + + + false + Whether to indent using spaces or tabs + If true, any new indentation will use spaces instead of tabs. + + + false + Show line numbers + If true, line numbers will be shown in the gutter of file comparisons. + + + false + Highlight syntax + Whether to highlight syntax in comparisons. Because of Meld's own color highlighting, this is off by default. + + + [] + Displayed whitespace + Selector for individual whitespace character types to be shown. Possible values are 'space', 'tab', 'newline' and 'nbsp'. + + + + + + + + 'none' + Wrap mode + Lines in file comparisons will be wrapped according to this setting, either not at all ('none'), at any character ('char') or only at the end of words ('word'). + + + + + + false + Highlight current line + If true, the line containing the cursor will be highlighted in file comparisons. + + + true + Use the system default monospace font + If false, the defined custom font will be used instead of the system monospace font. + + + "monospace, 14" + Custom font + The custom font to use, stored as a string and parsed as a Pango font description + + + + + + false + Ignore blank lines when comparing files + If true, blank lines will be trimmed when highlighting changes between files. + + + + + + true + Use the system default editor + If false, the defined custom editor will be used instead of the system editor when opening files externally. + + + "" + The custom editor launch command + The command used to launch a custom editor. Some limited templating is supported here; at the moment '{file}' and '{line}' are recognised tokens. + + + + + [("size", true), ("modification time", true), ("permissions", false)] + Columns to display + List of column names in folder comparison and whether they should be displayed. + + + false + Ignore symbolic links + If true, folder comparisons do not follow symbolic links when traversing the folder tree. + + + false + Use shallow comparison + If true, folder comparisons compare files based solely on size and mtime, considering files to be identical if their size and mtime match, and different otherwise. + + + 100 + File timestamp resolution + When comparing based on mtime, this is the minimum difference in nanoseconds between two files before they're considered to have different mtimes. This is useful when comparing files between filesystems with different timestamp resolution. + + + ['normal', 'modified', 'new'] + File status filters + List of statuses used to filter visible files in folder comparison. + + + + + false + Show the version control console output + If true, a console output section will be shown in version control views, showing the commands run for version control operations. + + + 300 + Version control pane position + This is the height of the main version control tree when the console pane is shown. + + + false + Present version comparisons as left-local/right-remote + If true, version control comparisons will use a left-is-local, right-is-remote scheme to determine what order to present files in panes. Otherwise, a left-is-theirs, right-is-mine scheme is used. + + + true + Show margin in commit message editor + If true, a guide will be displayed to show what column the margin is at in the version control commit message editor. + + + 72 + Margin column in commit message editor + The column of the margin is at in the version control commit message editor. + + + false + Automatically hard-wrap commit messages + If true, the version control commit message editor will hard-wrap (i.e., insert line breaks) at the defined commit margin before commit. + + + ['flatten', 'modified'] + Version control status filters + List of statuses used to filter visible files in version control comparison. + + + + + + [ + ("Backups", true, "#*# .#* ~* *~ *.{orig,bak,swp}"), + ("OS-specific metadata", true, ".DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db Desktop.ini"), + ("Version Control", true, "_MTN .bzr .svn .svn .hg .fslckout _FOSSIL_ .fos CVS _darcs .git .svn"), + ("Binaries", true, "*.{pyc,a,obj,o,so,la,lib,dll,exe}"), + ("Media", false, "*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}") + ] + + Filename-based filters + List of predefined filename-based filters that, if active, will remove matching files from a folder comparison. + + + + [ + ("CVS keywords", false, "\$\\w+(:[^\\n$]+)?\$"), + ("C++ comment", false, "//.*"), + ("C comment", false, "/\\*.*?\\*/"), + ("All whitespace", false, "[ \\t\\r\\f\\v]*"), + ("Leading whitespace", false, "^[ \\t\\r\\f\\v]*"), + ("Trailing whitespace", false, "[ \\t\\r\\f\\v]*$"), + ("Script comment", false, "#.*") + ] + + Text-based filters + List of predefined text-based regex filters that, if active, will remove text from being used in a file comparison. The text will still be displayed, but won't contribute to the comparison itself. + + + diff -Nru meld-1.5.3/data/ui/application.ui meld-3.11.0/data/ui/application.ui --- meld-1.5.3/data/ui/application.ui 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/data/ui/application.ui 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,71 @@ + + + + + + False + 5 + About Meld + meld + dialog + Meld + Copyright © 2002-2009 Stephen Kennedy +Copyright © 2009-2013 Kai Willadsen + http://meldmerge.org/ + Website + Stephen Kennedy +Kai Willadsen +Vincent Legoll + translator-credits + GNOME Project +Josef Vybíral + meld + gpl-2-0 + + + False + vertical + 2 + + + False + end + + + False + True + end + 0 + + + + + + + + + +
+ + _Preferences + app.preferences + +
+
+ + _Help + app.help + F1 + + + _About + app.about + + + _Quit + app.quit + <Primary>q + +
+
+
diff -Nru meld-1.5.3/data/ui/dirdiff.ui meld-3.11.0/data/ui/dirdiff.ui --- meld-1.5.3/data/ui/dirdiff.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/dirdiff.ui 2014-02-16 20:23:22.000000000 +0000 @@ -1,8 +1,98 @@ - + - + + + + _Compare + Compare selected files + gtk-dialog-info + True + + + + + + Copy _Left + Copy to left + gtk-go-back + True + + + + + + + Copy _Right + Copy to right + gtk-go-forward + True + + + + + + + Delete selected + gtk-delete + True + + + + + + + Hide + Hide selected + gtk-no + + + + + + Ignore Filename Case + Consider differently-cased filenames that are otherwise-identical to be the same + gtk-italic + + + + + + Same + Show identical + gtk-apply + True + + + + + + New + Show new + gtk-add + True + + + + + + Modified + Show modified + gtk-remove + True + + + + + + Filters + Set active filters + True + + + + True False @@ -12,77 +102,158 @@ True False - + True False - 2 - 7 - + True False - direntry - True - + False + 1 + + + + True + False + False + + + True + False + True + select-folder + + + + + + True + + 1 - 2 - + 0 + 1 + 1 - + True False - direntry - True - + False + 1 + + + + True + False + False + + + True + False + True + select-folder + + + + + + True + + 3 - 4 - + 0 + 1 + 1 - + True False - direntry - True - + False + 1 + + + + True + False + False + + + True + False + True + select-folder + + + + + + True + + 5 - 6 - + 0 + 1 + 1 - + True False - 0 + 6 - 7 - GTK_FILL - + 0 + 1 + 1 True + False + True 6 - 7 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 + + + + + True + False + + + + 4 + 0 + 1 + 1 @@ -91,25 +262,56 @@ True False GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True 4 - 5 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 + + + + + True + False + + + + 0 + 0 + 1 + 1 True + False + True + 0 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 + + + + + True + False + + + + 2 + 0 + 1 + 1 @@ -118,14 +320,13 @@ True False GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True 2 - 3 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 @@ -135,8 +336,10 @@ 0 - GTK_FILL - + 0 + 0 + 1 + 1 @@ -147,9 +350,9 @@ 2 - 3 - GTK_FILL - + 0 + 1 + 1 @@ -160,15 +363,29 @@ 4 - 5 - GTK_FILL - + 0 + 1 + 1 + + + + + True + False + 0 + + + 6 + 0 + 1 + 1 True False + True True @@ -187,6 +404,7 @@ True True + True top-right True @@ -195,12 +413,15 @@ True False + - - + + + + @@ -213,15 +434,16 @@ 1 - 2 1 - 2 + 1 + 1 True False + True True @@ -240,18 +462,22 @@ True True + True True True False + - - + + + + @@ -264,15 +490,16 @@ 3 - 4 1 - 2 + 1 + 1 True False + True True @@ -291,18 +518,22 @@ True True + True True True False + - - + + + + @@ -315,9 +546,9 @@ 5 - 6 1 - 2 + 1 + 1 diff -Nru meld-1.5.3/data/ui/dirdiff-ui.xml meld-3.11.0/data/ui/dirdiff-ui.xml --- meld-1.5.3/data/ui/dirdiff-ui.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/dirdiff-ui.xml 2013-12-07 19:30:09.000000000 +0000 @@ -31,9 +31,6 @@ - - - diff -Nru meld-1.5.3/data/ui/EditableList.ui meld-3.11.0/data/ui/EditableList.ui --- meld-1.5.3/data/ui/EditableList.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/EditableList.ui 2014-02-08 21:03:00.000000000 +0000 @@ -1,7 +1,167 @@ - + + + + + + + + + + + + + False + Editable List + + + True + False + + + True + False + + + True + True + automatic + automatic + in + + + True + True + ColumnsListStore + False + True + 0 + False + True + + + Active + + + + + + 0 + + + + + + + Column Name + + + + 1 + + + + + + + + + True + True + 0 + + + + + True + False + icons + False + 1 + True + + + False + False + _Add + True + list-add + + + + False + True + + + + + False + False + _Remove + True + list-remove + + + + False + True + + + + + False + + + False + True + + + + + True + False + Move item up + False + Move _Up + True + go-up + + + + False + True + + + + + True + False + Move item down + False + Move _Down + True + go-down + + + + False + True + + + + + False + True + 1 + + + + + + + diff -Nru meld-1.5.3/data/ui/filediff.ui meld-3.11.0/data/ui/filediff.ui --- meld-1.5.3/data/ui/filediff.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/filediff.ui 2014-02-16 20:23:22.000000000 +0000 @@ -1,243 +1,487 @@ - - + + + + + False + 5 + dialog + True + warning + Save changes to documents before closing? + If you don't save, changes will be permanently lost. + + + True + False + vertical + 6 + + + True + False + end + + + Close _without Saving + True + True + True + True + + + False + False + 0 + + + + + _Cancel + True + True + True + True + + + False + False + 1 + + + + + _Save + True + True + True + True + + + False + False + 2 + + + + + False + True + end + 0 + + + + + True + False + + + + + + + + + + + + True + True + 3 + + + + + + close_button + cancel_button + save_button + + True + False window1 - + True + False + + - + True - 2 - 7 + False + 0 + 0 + + + + + + + + + + + + + + + + + + - + True - fileentry - + False + False + 1 + + + + False + False + This file can not be written to. You may click here to unlock this file and make changes anyway, but these changes must be saved to a new file. + emblem-readonly + + + + + + gtk-save + True + True + False + True + + + + + + True + False + False + + + True + False + + + + + + True + + 5 - 6 - GTK_EXPAND | GTK_SHRINK | GTK_FILL - + 1 + 1 - + True - fileentry - + False + False + 1 + + + + False + False + This file can not be written to. You may click here to unlock this file and make changes anyway, but these changes must be saved to a new file. + emblem-readonly + + + + + + gtk-save + True + True + False + True + + + + + + True + False + False + + + True + False + + + + + + True + + 3 - 4 - GTK_EXPAND | GTK_SHRINK | GTK_FILL - + 1 + 1 - + True - fileentry - + False + False + 1 + + + + False + False + This file can not be written to. You may click here to unlock this file and make changes anyway, but these changes must be saved to a new file. + emblem-readonly + + + + + + gtk-save + True + True + False + True + + + + + + True + False + False + + + True + False + + + + + + True + + 1 - 2 - GTK_EXPAND | GTK_SHRINK | GTK_FILL - + 1 + 1 True + False True + False False + True + 0 True False - GTK_CORNER_TOP_RIGHT + True + True + always + top-right True + True True - - - - - - + + + + + + + + + True + True + 1 + 1 - 2 1 - 2 - - - - - 20 - True - 1 - gtk-missing-image - - - 4 - 5 - GTK_SHRINK | GTK_FILL - GTK_SHRINK | GTK_FILL - - - - - True - 1 - gtk-missing-image - - - 2 - 3 - GTK_SHRINK | GTK_FILL - GTK_SHRINK | GTK_FILL - - - - - True - 1 - gtk-missing-image - - - GTK_FILL - GTK_FILL True + False True + False False + True + 0 True False + True + True + always + True True - - - - - - + + + + + + + + + True + True + 1 + 5 - 6 1 - 2 True + False True + False False + True + 0 True False + True + True + always + True True - - - - - - + + + + + + + + + True + True + 1 + 3 - 4 1 - 2 + + + + + True + False + + + + 6 + 0 + 1 + 1 True + False 6 - 7 1 - 2 - 0 + 1 + 1 - + True False - none - - - - True - meld-locked - - + - 6 - 7 + 2 0 - 1 - GTK_FILL - GTK_FILL + 1 + 1 @@ -245,222 +489,168 @@ 50 True False - False - GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK + GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_SCROLL_MASK 2 - 3 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 - + True + False + - 1 - 2 - 0 + 0 + 0 + 1 + 1 - - 50 + True False - False - GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK - 4 - 5 + 0 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 - - - - - - - Save modified files? - False - GDK_WINDOW_TYPE_HINT_DIALOG - False - - - True - 12 - - - True - 12 - + True - 0 - 12 - 12 - gtk-dialog-warning - 6 + False + + + 4 + 0 + 1 + 1 + - + + 50 True - - - True - 12 - 12 - Some files have been modified. -Which ones would you like to save? - True - - - - - - - False - False - - + False + GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_SCROLL_MASK - 1 + 4 + 1 + 1 + 1 + True + True + 0 + + + + + True + 12 + + + False + True 1 + + + + + False + 5 + dialog + True + question + Revert unsaved changes to documents? + Changes made to the following documents will be permanently lost: + + + + True + False + vertical + 6 - + True - True - True - GTK_BUTTONBOX_END + False + end - - True - True - - - True - 0 - 0 - - - True - 2 - - - True - gtk-quit - - - False - False - - - - - True - _Discard Changes - True - - - False - False - 1 - - - - - - - - - - + + gtk-cancel True True - True - True - True - gtk-cancel + True + True True - 1 + False + False + 0 - + + gtk-revert-to-saved True True - True - - - True - 0 - 0 - - - True - 2 - - - True - gtk-save - - - False - False - - - - - True - _Save Selected - True - - - False - False - 1 - - - - - - + True + True + True - 2 + False + False + 1 False - GTK_PACK_END + True + end + 0 + + + + + False + + + + + + True + True + 3 - button_quit - button_cancel - button_ok + cancel_button1 + revert_button diff -Nru meld-1.5.3/data/ui/filediff-ui.xml meld-3.11.0/data/ui/filediff-ui.xml --- meld-1.5.3/data/ui/filediff-ui.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/filediff-ui.xml 2014-02-08 21:03:00.000000000 +0000 @@ -9,10 +9,20 @@ + + + + + + + + + + @@ -54,6 +64,9 @@ + + + diff -Nru meld-1.5.3/data/ui/findbar.ui meld-3.11.0/data/ui/findbar.ui --- meld-1.5.3/data/ui/findbar.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/findbar.ui 2014-02-16 20:23:22.000000000 +0000 @@ -1,121 +1,131 @@ - - + + + + True + False + left + + + True + False + + False - - 2 - 6 - - - - - - + + False + 6 True - GTK_BUTTONBOX_START + False + start + _Replace True True True - _Replace + none True False + + + False + False + 0 + - True + Replace _All True + True True - Replace _All + none True False + + False + False 1 - 3 - 5 + 2 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 True - GTK_BUTTONBOX_START + False + start + _Previous True True True - _Previous + arrow_left + none True False + + + False + True + 0 + + _Next True True True - _Next + arrow_right + none True False + + False + False 1 - 3 - 5 - GTK_FILL - GTK_FILL - - - - - True - True - True - False - - - True - gtk-cancel - 1 - - - - - GTK_FILL - GTK_FILL + 2 + 0 + 1 + 1 True - _Search for + False + 0 + Find: True find_entry - 1 - 2 - GTK_FILL - GTK_FILL - 3 + 0 + 0 + 1 + 1 @@ -123,29 +133,32 @@ True True 32 + False + False + + - 2 - 3 - GTK_FILL - GTK_FILL + 1 + 0 + 1 + 1 True - Replace _With + False + 0 + Replace _with: True replace_entry - 1 - 2 + 0 1 - 2 - GTK_FILL - GTK_FILL - 3 + 1 + 1 @@ -153,68 +166,125 @@ True True 32 + False + False + - 2 - 3 + 1 1 - 2 - GTK_FILL - GTK_FILL + 1 + 1 True + False + 6 + _Match case True - _Match Case + False + False True False + 0.5 True False + True + 0 + Who_le word True True - Who_le word + False True False + 0.5 True False + True 1 + Regular e_xpression True True - Regular E_xpression + False True False + 0.5 True False + True 2 - 5 - 6 - GTK_FILL - GTK_FILL - 7 + 3 + 0 + 1 + 1 + + + False + 6 + + + True + False + gtk-info + + + False + False + 0 + + + + + True + False + 0 + Wrapped + True + + + False + False + 1 + + + + + 4 + 0 + 1 + 1 + + + + + + + + diff -Nru meld-1.5.3/data/ui/meldapp.ui meld-3.11.0/data/ui/meldapp.ui --- meld-1.5.3/data/ui/meldapp.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/meldapp.ui 2014-02-16 20:23:22.000000000 +0000 @@ -1,466 +1,49 @@ - - + - + + 400 + False Meld - meld - - + meld + + True + False - - True - True - True - True - - - - - - - - - 1 - GTK_PACK_END - - - - + True - - - True - 0.109999999404 - - - - False - - - - - True - False - - - 1 - - - - - 175 - True - - - False - False - 2 - - False - False - 0 - GTK_PACK_END + True + end + 1 - - - - - True - 5 - True - meld - Meld - GDK_WINDOW_TYPE_HINT_DIALOG - Copyright © 2002-2009 Stephen Kennedy -Copyright © 2009-2011 Kai Willadsen - http://meldmerge.org/ - Stephen Kennedy -Kai Willadsen -Vincent Legoll - - GNOME Project -Josef Vybíral - translator-credits - - - True - Choose Files - 600 - GDK_WINDOW_TYPE_HINT_DIALOG - - - - True - + True True - - - True - 10 - 3 - 3 - 10 - 10 - - - - - - - - - True - True - _Three Way Compare - True - True - - - - GTK_FILL - - - - - - True - fileentry - False - - - - 2 - 3 - 2 - 3 - - - - - - True - fileentry - False - - - - 2 - 3 - 1 - 2 - - - - - - True - False - fileentry - False - - - - 2 - 3 - - - - - - True - 1 - 5 - 5 - Mine - - - 1 - 2 - 2 - 3 - GTK_FILL - - - - - - True - 1 - 5 - 5 - Original - - - 1 - 2 - 1 - 2 - GTK_FILL - - - - - - True - 1 - 5 - 5 - Other - - - 1 - 2 - GTK_FILL - - - - - - - - True - _File Comparison - True - - - False - - - - - True - 10 - 3 - 3 - 10 - 10 - - - - - - - - - True - True - _Three Way Compare - True - True - - - - GTK_FILL - - - - - - True - direntry - True - - - - 2 - 3 - 2 - 3 - - - - - - True - direntry - True - - - - 2 - 3 - 1 - 2 - - - - - - True - False - direntry - True - - - - 2 - 3 - - - - - - True - 1 - 5 - 5 - Mine - - - 1 - 2 - 2 - 3 - GTK_FILL - - - - - - True - 1 - 5 - 5 - Original - - - 1 - 2 - 1 - 2 - GTK_FILL - - - - - - True - 1 - 5 - 5 - Other - - - 1 - 2 - GTK_FILL - - - - - - - - True - _Directory Comparison - True - - - 1 - False - - - - - True - 10 - 1 - 2 - 10 - 10 - - - True - vc_directory - Select VC Directory - True - - - - 1 - 2 - - - - - - True - 1 - 5 - 5 - Directory - - - GTK_FILL - - - - - - - - True - _Version Control Browser - True - - - 2 - False - - - - - 2 - - - - - True - GTK_BUTTONBOX_END - - - True - True - True - gtk-cancel - True - - - - - True - True - True - True - True - gtk-ok - True - - - 1 - - + True + True + + + + + + - False - GTK_PACK_END + True + True + end + 0 - - button_cancel - button_ok - diff -Nru meld-1.5.3/data/ui/meldapp-ui.xml meld-3.11.0/data/ui/meldapp-ui.xml --- meld-1.5.3/data/ui/meldapp-ui.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/meldapp-ui.xml 2014-02-16 20:23:22.000000000 +0000 @@ -4,11 +4,12 @@ + + - @@ -24,8 +25,6 @@ - - @@ -35,12 +34,13 @@ - + + @@ -49,7 +49,6 @@ - @@ -60,11 +59,6 @@ - - - - - diff -Nru meld-1.5.3/data/ui/patch-dialog.ui meld-3.11.0/data/ui/patch-dialog.ui --- meld-1.5.3/data/ui/patch-dialog.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/patch-dialog.ui 2014-02-08 21:03:00.000000000 +0000 @@ -5,7 +5,7 @@ True 12 - Create Patch + Format as Patch dialog True True @@ -15,157 +15,121 @@ True 6 - - True - 0 - Create a patch - - - - - - False - 1 - - - - + True + 6 - + True + 0 + Use differences between: False - False - 12 0 - + True - 6 - + True - 0 - Use differences between: False + False + 12 0 - + True + 6 - + + Left and middle panes True + True + False + False + True + True + False - False - 12 0 - + + Middle and right panes True - 6 - - - Left and middle panes - True - True - False - False - True - True - - - - False - 0 - - - - - Middle and right panes - True - True - False - False - True - True - left_radiobutton - - - - False - 1 - - + True + False + False + True + True + left_radiobutton + + False 1 - False 1 + + + False + 1 + + + + + _Reverse patch direction + True + True + False + False + True + True + + + + False + 2 + + + + + 600 + 400 + True + True + automatic + automatic + in - - _Reverse patch direction - True - True - False - False - True - True - - - - False - 2 - - - - - 600 - 400 + True True - automatic - automatic - in - - - True - True - False - - + False - - 6 - 3 - - 1 + 6 + 3 - - 2 - @@ -176,7 +140,7 @@ Copy to Clipboard True True - True + True False @@ -203,12 +167,12 @@ - gtk-save-as + Save Patch True True True - False - True + True + False False diff -Nru meld-1.5.3/data/ui/preferences.ui meld-3.11.0/data/ui/preferences.ui --- meld-1.5.3/data/ui/preferences.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/preferences.ui 2014-02-16 20:23:22.000000000 +0000 @@ -1,7 +1,6 @@ - - + 1 8 @@ -9,19 +8,70 @@ 1 10 + + 70 + 120 + 72 + 1 + 10 + + + + + + + + + + + False + Left is remote, right is local + + + True + Left is local, right is remote + + + + + + + + + + + + + 1 + 1ns (ext4) + + + 100 + 100ns (NTFS) + + + 1000000000 + 1s (ext2/ext3) + + + 2000000000 + 2s (VFAT) + + + False 5 Meld Preferences dialog - False - + True False + vertical - + True False end @@ -31,7 +81,6 @@ True True False - False True @@ -47,7 +96,6 @@ True True False - False True @@ -126,11 +174,10 @@ True True False - False True + 0 True True - False @@ -144,7 +191,7 @@ False 6 - + True False 0 @@ -163,10 +210,8 @@ True True False - False Monospace 12 True - True @@ -251,7 +296,7 @@ False 6 - + True False 0 @@ -271,7 +316,6 @@ True adjustment1 1 - False @@ -292,10 +336,9 @@ True True False - False True + 0 True - False @@ -309,15 +352,15 @@ True True False - False True + 0 True True True - 3 + 2 @@ -326,14 +369,14 @@ False 18 - + Do not _split words over two lines True False True False - False True + 0 True True @@ -347,20 +390,35 @@ + + Highlight _current line + True + True + False + True + 0 + True + + + False + False + 4 + + + Show _line numbers True True False - False True + 0 True - False False - 4 + 5 @@ -369,15 +427,15 @@ True True False - False True + 0 True False False - 5 + 6 @@ -386,15 +444,14 @@ True True False - False True + 0 True - False False - 6 + 7 @@ -428,7 +485,7 @@ True False 0 - External editor + External Editor True @@ -467,10 +524,9 @@ True True False - False True + 0 True - True @@ -484,7 +540,7 @@ False 6 - + True False 0 @@ -502,8 +558,6 @@ True True - - True @@ -552,39 +606,153 @@ - + True False 12 12 - + True False - 0 - When performing directory comparisons, you may filter out files and directories by name. Each pattern is a list of shell style wildcards separated by spaces. - True + 6 + + + True + False + 0 + Shallow Comparison + True + + + + + + False + False + 0 + + + + + True + False + + + True + False + 12 + + + False + False + 0 + + + + + True + False + 6 + + + C_ompare files based only on size and timestamp + True + True + False + True + 0 + True + + + False + False + 0 + + + + + True + False + 6 + + + True + False + 0 + _Timestamp resolution: + True + combo_timestamp + + + False + False + 0 + + + + + True + False + timestampstore + 0 + 0 + + + + 1 + + + + + False + True + 1 + + + + + False + False + 1 + + + + + False + True + 1 + + + + + False + True + 1 + + False - False + True 0 - + True False + 6 - - Ignore symbolic links + True - True - False - False - True - True - + False + 0 + Symbolic Links + True + + + False @@ -592,15 +760,117 @@ 0 + + + True + False + + + True + False + 12 + + + False + False + 0 + + + + + Ignore symbolic links + True + True + False + True + 0 + True + + + False + False + 1 + + + + + False + False + 1 + + False - False + True 1 - + + True + False + 6 + + + True + False + 0 + Visible Columns + True + + + + + + False + False + 0 + + + + + True + False + + + True + False + 12 + + + False + False + 0 + + + + + True + False + + + + + + True + True + 1 + + + + + True + True + 1 + + + + + True + True + 2 + @@ -609,10 +879,10 @@ - + True False - File Filters + Folder Comparisons 2 @@ -620,41 +890,26 @@ - + True False 12 12 - - True - False - 0 - When performing file comparisons, you may ignore certain types of changes. Each pattern here is a python regular expression which replaces matching text with the empty string before comparison is performed. If the expression contains groups, only the groups are replaced. See the user manual for more details. - True - fill - True - - - False - False - 0 - - - - + True False + 6 - - Ignore changes which insert or delete blank lines + True - True - False - False - True - True - + False + 0 + Version Comparisons + True + + + False @@ -662,49 +917,106 @@ 0 + + + True + False + + + True + False + 12 + + + False + False + 0 + + + + + True + False + 6 + + + True + False + 6 + + + True + False + 0 + _When comparing file revisions: + True + combo_file_order + + + False + False + 0 + + + + + True + False + fileorderstore + 0 + 0 + + + + 1 + + + + + False + True + 1 + + + + + False + False + 0 + + + + + False + True + 1 + + + + + False + True + 1 + + False - False - 1 + True + 0 - - - - - 2 - - - - - True - False - Text Filters - - - 3 - False - - - - - True - False - 12 - 12 - - + True False 6 - + True False 0 - Loading + Commit Messages True @@ -717,11 +1029,11 @@ - + True False - + True False 12 @@ -733,21 +1045,24 @@ - + True False + 6 - + True False + 6 - + + Show _right margin at: True - False + True + False + True 0 - 4 - 4 - When loading, try these codecs in order. (e.g. utf8, iso8859) + True False @@ -756,12 +1071,11 @@ - + True True - utf8 iso8859 - - + adjustment2 + 1 False @@ -776,6 +1090,29 @@ 0 + + + True + False + 18 + + + Automatically _break lines at right margin on commit + True + True + False + True + 0 + True + + + + + False + True + 1 + + False @@ -794,19 +1131,130 @@ False True + 1 + + + + + + + + 2 + False + + + + + True + False + Version Control + + + 2 + False + + + + + True + False + 12 + 12 + + + True + False + 0 + When performing directory comparisons, you may filter out files and directories by name. Each pattern is a list of shell style wildcards separated by spaces. + True + + + False + False 0 + + + + + + 3 + False + + + + + True + False + File Filters 3 + False + + + + + True + False + 12 + 12 + + + True + False + 0 + When performing file comparisons, you may ignore certain types of changes. Each pattern here is a python regular expression which replaces matching text with the empty string before comparison is performed. If the expression contains groups, only the groups are replaced. See the user manual for more details. + True + True + + + False + False + 0 + + + + + True + False + + + Ignore changes which insert or delete blank lines + True + True + False + True + 0.5 + True + + + False + False + 0 + + + + + False + False + 1 + + + + + + + + 4 - + True False - Encoding + Text Filters 4 @@ -827,4 +1275,11 @@ closebutton1 + + + + + + + diff -Nru meld-1.5.3/data/ui/tab-placeholder.ui meld-3.11.0/data/ui/tab-placeholder.ui --- meld-1.5.3/data/ui/tab-placeholder.ui 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/data/ui/tab-placeholder.ui 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,507 @@ + + + + + + False + + + True + False + 0.25 + 0 + 0 + + + True + False + 12 + + + True + False + 0 + New comparison + + + + + + True + True + 0 + + + + + True + False + 12 + + + True + False + 12 + + + True + False + 12 + True + + + True + True + True + False + + + + True + False + 6 + + + True + False + gtk-new + 6 + + + True + True + 0 + + + + + True + False + File comparison + + + True + True + 1 + + + + + + + True + True + 0 + + + + + True + True + True + False + + + + True + False + 6 + + + True + False + gtk-directory + 6 + + + True + True + 0 + + + + + True + False + Directory comparison + + + True + True + 1 + + + + + + + True + True + 1 + + + + + True + True + True + False + + + + True + False + 6 + + + True + False + meld-version-control + 6 + + + True + True + 0 + + + + + True + False + Version control view + + + True + True + 1 + + + + + + + True + True + 2 + + + + + True + True + 0 + + + + + True + True + False + False + + + True + False + 12 + True + + + + + + + + + + + + False + + + + + + + + True + False + 6 + 12 + True + + + _3-way comparison + True + True + False + False + True + True + + + + 2 + 1 + 1 + 1 + + + + + True + False + False + False + Select Third File + + + + 2 + 0 + 1 + 1 + + + + + True + False + False + Select Second File + + + + 1 + 0 + 1 + 1 + + + + + True + False + False + Select First File + + + + 0 + 0 + 1 + 1 + + + + + + + + + + + 1 + + + + + + + + True + False + 6 + 12 + True + + + True + False + False + select-folder + Select First Folder + + + 0 + 0 + 1 + 1 + + + + + True + False + False + select-folder + Select Second Folder + + + 1 + 0 + 1 + 1 + + + + + True + False + False + False + select-folder + Select Third Folder + + + 2 + 0 + 1 + 1 + + + + + _3-way comparison + True + True + False + False + True + True + + + + 2 + 1 + 1 + 1 + + + + + + + + + + + 2 + + + + + + + + True + False + 6 + 12 + True + + + True + False + False + select-folder + Select A Version-Controlled Folder + + + 0 + 0 + 1 + 1 + + + + + 3 + + + + + True + True + 1 + + + + + + + True + True + 1 + + + + + True + False + 6 + end + + + gtk-help + + False + True + True + False + True + + + False + False + 0 + True + + + + + _Blank comparison + True + False + True + True + False + True + + + + False + False + 1 + + + + + C_ompare + True + False + True + True + False + True + + + + False + False + 2 + + + + + False + False + 2 + + + + + + + + diff -Nru meld-1.5.3/data/ui/vcview.ui meld-3.11.0/data/ui/vcview.ui --- meld-1.5.3/data/ui/vcview.ui 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/vcview.ui 2014-02-16 20:23:22.000000000 +0000 @@ -1,473 +1,647 @@ - - + - - True - window1 - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - False + + + - + + _Compare + Compare selected files + gtk-dialog-info + True + + + + + + Co_mmit... + Commit changes to version control + vc-commit-24 + + + + + + + _Update + Update working copy from version control + vc-update-24 + + + + + + _Push + Push local changes to remote + vc-push-24 + + + + + + _Add + Add to version control + vc-add-24 + + + + + + _Remove + Remove from version control + vc-remove-24 + + + + + + Mar_k as Resolved + Mark as resolved in version control + vc-resolve-24 + + + + + + Re_vert + Revert working copy to original state + gtk-revert-to-saved + + + + + + Delete from working copy + gtk-delete + + + + + + Console + Show or hide the version control console output pane + + + + + + _Flatten + Flatten directories + gtk-goto-bottom + True + + + + + + _Modified + Show modified files + filter-modified-24 + True + + + + + + _Normal + Show normal files + filter-normal-24 + True + + + + + + Un_versioned + Show unversioned files + filter-nonvc-24 + True + + + + + + Ignored + Show ignored files + filter-ignored-24 + True + + + + + + True + False + 12 + Commit + True + center + 450 + dialog + + True - False - 0 - - - True - False - 6 - - - True - vc_directory - True - - - - 0 - True - True - - - - - 0 - False - False - GTK_PACK_START - - + False + vertical + 18 - + True - True - 250 + False + 18 - + True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT + False + 6 - + True - True - True - False - False - True - False - False - False - - - - - - - - - False - True - - - - - 70 - True - False - 0 - - - True - True - False - - - - 14 - 14 - True - GTK_ARROW_DOWN - GTK_SHADOW_OUT - 0.5 - 0 - 0 - 0 - - + False + 0 + Commit Files + + + - 0 False - False + True + 0 - + True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT + False - + True + False + 12 + + + False + False + 0 + + + + + 150 True - False - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - False - 0 - 0 - 0 - 0 - 0 - 0 - + in + + + False + none + + + True + True + 0 + 0 + True + True + + + + + + True + True + 1 + - 0 True True + 1 - True - True + True + True + 0 - - - 0 - True - True - 1 - GTK_PACK_END - - - - - True - False - - + True - False - 0 + False + 6 - - 14 - 14 + True - GTK_ARROW_RIGHT - GTK_SHADOW_OUT - 0.5 - 0.5 - 0 - 0 + False + 0 + Log Message + + + - 0 False True + 2 - + True + False + + + True + False + 12 + + + False + False + 0 + + + + + True + False + 6 + + + 200 + True + True + in + + + True + True + word + + + + + True + True + 0 + + + + + True + False + 12 + + + True + False + Previous logs: + + + False + False + 0 + + + + + True + False + commit-messages + + + + True + True + 1 + + + + + False + True + 1 + + + + + True + True + 1 + + - 0 True True + 3 + + True + True + 1 + - 0 - False - False + True + True 0 - GTK_PACK_END - - - - - 450 - True - VC Log - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER - True - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - False - False - - - True - False - 0 - + True - GTK_BUTTONBOX_END + False + end + gtk-cancel True - True True - gtk-cancel + True + False True - GTK_RELIEF_NORMAL - True + + False + False + 0 + + Co_mmit True - True True - gtk-ok - True - GTK_RELIEF_NORMAL - True - - + True + False + True + + + + False + False + 1 + - 0 False True - GTK_PACK_END + end + 0 + + + + cancelbutton1 + okbutton1 + + + + True + False + window1 + + + True + False - - 5 + True - False - 0 + False + False + 1 + - + True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN + False + 4 + 12 - + True - True - - False - False - GTK_JUSTIFY_LEFT - True - True - 0 - 0 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 + False + select-folder + - - + + + True + + + + + True + False + 4 + + True - Commit Files - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 + False + liststore_vcs + - 0 - True - True + False + + + False + True + 0 + + + + + True + False + + + False + True + 1 + + + + + True + True + 250 + - + True - 0 - 0.5 - GTK_SHADOW_ETCHED_IN + True - + True - False - 0 - - - 10 - 320 - 200 - True - True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_NONE - GTK_CORNER_TOP_LEFT - - - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_NONE - True - 0 - 0 - 0 - 0 - 0 - 0 - - - - - 0 - True - True - + True + + + + + + + + + + + True + False + + + + + True + False + 6 + 6 + vertical + + + True + False + 0 + Console output + + + + + + False + True + 0 + + + + + True + True + in - + True - False - 0 - - - True - Previous Logs - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 5 - 5 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 5 - True - previousentry - - - - 5 - True - True - - + True + False + False + - - 0 - True - True - - - - - True - Log Message - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - + + True + True + 6 + 1 + - 0 - True - True + True + True - 0 True True + end + 2 + + + + + + + + + + + + + + + + + False + 5 + dialog + True + question + Push local commits to remote? + The commits to be pushed are determined by your version control system. + + + True + False + vertical + 2 + + + True + False + end + + + gtk-cancel + True + True + True + True + + + False + False + 0 + + + + + _Push commits + True + True + True + True + + + False + False + 1 + + + + + False + True + end + 0 - cancelbutton1 - okbutton1 + cancelbutton + pushbutton diff -Nru meld-1.5.3/data/ui/vcview-ui.xml meld-3.11.0/data/ui/vcview-ui.xml --- meld-1.5.3/data/ui/vcview-ui.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/data/ui/vcview-ui.xml 2014-02-16 20:23:22.000000000 +0000 @@ -6,18 +6,22 @@ - - + - - + + + + + + + @@ -37,14 +41,18 @@ + + - + + + @@ -57,15 +65,14 @@ - - - - - + + + + diff -Nru meld-1.5.3/debian/changelog meld-3.11.0/debian/changelog --- meld-1.5.3/debian/changelog 2012-03-25 18:58:14.000000000 +0000 +++ meld-3.11.0/debian/changelog 2014-04-19 17:21:45.000000000 +0000 @@ -1,10 +1,178 @@ -meld (1.5.3-1ubuntu1) precise; urgency=low +meld (3.11.0-1.1~aroth~ppa1~precise1) precise; urgency=low - * cherrypick patches from upstream git: - - Fix-refresh-action-to-not-reset-modified-flags-close.patch (619de18270) - - Improve-popup-right-click-behaviour-in-tree-views-cl.patch (fbbb890013) + * testing version 3.11.0 on saucy - -- Julian Taylor Sun, 25 Mar 2012 20:55:39 +0200 + -- Andreas Roth Sat, 19 Apr 2014 19:14:01 +0200 + +meld (3.11.0-1) experimental; urgency=low + + * New upstream development release: + - Features: + * Supporting hiding empty filtered folders in folder comparison + (Gianni Trovisi, Kai Willadsen) + * Notify user when files change externally in file comparison + (Kai Willadsen) + * Use standard GIO file trash handling when deleting files (Kai Willadsen) + * Newly written Mallard-based help (Kai Willadsen) + - User interface updates: + * Support GNOME 3-style application menu (Kai Willadsen) + * Visual improvements to several icons (Kai Willadsen) + * Update Meld's colour scheme (Kai Willadsen) + * Many visual styling updates, layout tweaks and UI polish (Kai Willadsen) + - Internal changes: + * Port to GObject introspection, GTK+ 3, GApplication, GSettings and other + new things starting with 'G' (Kai Willadsen) + * Port to distutils, based on python-distutils-extra (Kai Willadsen) + * Move to using CSS for styling and colour definitions (Kai Willadsen) + * Update to use more modern GTK widgets (Peter Tyser, Kai Willadsen) + * Move a lot of extra UI construction into glade/UI files (Kai Willadsen) + * Make several custom icons themeable (Kai Willadsen) + * Make Meld a single-instance application, and add support for multiple + windows (Kai Willadsen) + * Update dependencies to use GTK 3 libraries and GObject introspection, + namely libgtk-3-0, python-gi, libgtksourceview-3.0-1, + gir1.2-gtksource-3.0, python-gi-cairo and libcanberra-gtk3-module + * Depend on GtkSourceView instead of just recommending it + * Build depend on dh-python, itstool and libxml2-utils + * Drop obsolete empty-directory.patch and sourceview-package.patch patches + + -- Balint Reczey Thu, 23 Jan 2014 21:03:05 +0100 + +meld (1.8.4-1) unstable; urgency=low + + * New upstream release: + - Fix crash when scanning CVS-only folders (Kai Willadsen) + - Fix crash on Windows when missing cdll.intl (Bartosz Dziewoński) + - Fix crash with Italian (it_IT.utf8) locale (Balint Reczey) + - Updated translations + * Drop obsolete 0001-Fix-crash-with-Italian-it_IT.utf8-locale.patch + + -- Balint Reczey Thu, 23 Jan 2014 20:46:42 +0100 + +meld (1.8.3-2.1~aroth~ppa) saucy; urgency=low + + * backport latest version + + -- Andreas Roth Sun, 29 Dec 2013 15:34:22 +0100 + +meld (1.8.3-2) unstable; urgency=low + + * Fix crash with Italian locale + + -- Balint Reczey Thu, 26 Dec 2013 22:00:31 +0100 + +meld (1.8.3-1) unstable; urgency=low + + * New upstream release: + - Fix subdirectory comparisons for Subversion 1.6 (Ben Ross) + - Fix git status parsing for some statuses (Tom Scytale) + - Don't disable updating when syncpoints aren't yet active (Kai Willadsen) + - Fix modifying column properties causing crashes when using .ini config + backend (Kai Willadsen) + + -- Balint Reczey Sun, 15 Dec 2013 01:46:21 +0100 + +meld (1.8.2-1) unstable; urgency=medium + + * New upstream release: + - Fix regression selecting Subversion 1.6 repositories + - Updated translations + - Minor fixes + + -- Balint Reczey Fri, 18 Oct 2013 10:27:59 +0200 + +meld (1.8.2-0.1~aroth~ppa1) saucy; urgency=low + + * New upstream release 1.8.2 + + -- Andreas Roth Sun, 20 Oct 2013 13:33:06 +0200 + +meld (1.8.1-1) unstable; urgency=low + + * New upstream release: + - Change order of version control selection for CVS and old SVN + - Fix escaped markup in folder comparisons + - Updated translations + * debian/copyright + - update FSF's address + + -- Balint Reczey Mon, 23 Sep 2013 15:10:40 +0200 + +meld (1.8.0-1) unstable; urgency=low + + * New upstream release: + - Open new tab in existing Meld instance using --new-tab option + (Closes: #457552) + - Better handling of version controlled directories (Closes: #687111) + - Improved theme colour handling (Closes: #444996) + - Minor fixes (Closes: #685164, #296553, #688058) + + -- Balint Reczey Sun, 15 Sep 2013 11:22:09 +0200 + +meld (1.7.5-1) experimental; urgency=low + + * New upstream development snapshot release 1.7.5 + * Drop Arch, Codeville and RCS as supported VCS-es in the package + documentation + * Drop copyright-fsf-address.patch and man1-hyphen-to-minus.patch since + they have been integrated upstream + + -- Balint Reczey Sun, 01 Sep 2013 10:01:57 +0200 + +meld (1.7.4-1) experimental; urgency=low + + * New upstream development snapshot release 1.7.4 + + -- Balint Reczey Sun, 28 Jul 2013 11:35:53 +0200 + +meld (1.7.3-1) experimental; urgency=low + + * New upstream development snapshot release 1.7.3 + * Setting myself as the maintainer of the package with Ross's agreement + Many thanks to Ross Burton for taking care of the package for long years! + * debian/control.in: + - drop DM-Upload-Allowed field + + -- Balint Reczey Wed, 12 Jun 2013 18:59:51 -0600 + +meld (1.7.2-1) experimental; urgency=low + + [Boruch Baum ] + * New upstream development snapshot release + I have to note here that Gianfranco Costamagna + sent me patches updating the Debian + package in very similar ways, too. + * debian/control.in: + - Standards-Version is 3.9.4, no changes needed. + - debhelper updated to 9 + - expanded length of long description + * debian/compat + - updated from 5 to 9 + * debian/copyright + - updated to format 1.0 + - added copyright and license details + + -- Balint Reczey Thu, 23 May 2013 16:37:08 -0500 + +meld (1.6.1-1) unstable; urgency=low + + * New upstream release + + -- Balint Reczey Wed, 07 Nov 2012 14:52:01 +0100 + +meld (1.6.0-1) unstable; urgency=low + + * New upstream release + * debian/control.in: + - Standards-Version is 3.9.3, no changes needed. + + -- Balint Reczey Sat, 28 Apr 2012 13:34:10 +0200 + +meld (1.5.4-1) unstable; urgency=low + + * New upstream development release + + -- Balint Reczey Mon, 02 Apr 2012 23:29:36 +0200 meld (1.5.3-1) experimental; urgency=low @@ -60,6 +228,12 @@ -- Balint Reczey Thu, 30 Dec 2010 15:11:35 +0100 +meld (1.4.0-2) unstable; urgency=low + + * Re-upload to unstable + + -- Balint Reczey Mon, 07 Feb 2011 13:10:48 +0100 + meld (1.4.0-1) experimental; urgency=low * New upstream release diff -Nru meld-1.5.3/debian/compat meld-3.11.0/debian/compat --- meld-1.5.3/debian/compat 2011-08-15 16:03:36.000000000 +0000 +++ meld-3.11.0/debian/compat 2013-05-25 06:09:26.000000000 +0000 @@ -1 +1 @@ -5 +9 diff -Nru meld-1.5.3/debian/control meld-3.11.0/debian/control --- meld-1.5.3/debian/control 2012-03-25 18:58:19.000000000 +0000 +++ meld-3.11.0/debian/control 2014-04-19 17:21:47.000000000 +0000 @@ -2,23 +2,23 @@ # # Modifications should be made to debian/control.in instead. # This file is regenerated automatically in the clean target. - Source: meld Section: gnome Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Ross Burton -Build-Depends: debhelper (>= 5), +Maintainer: Balint Reczey +Build-Depends: debhelper (>= 9), cdbs (>= 0.4.90~), + python (>=2.6.6-3~), + dh-python, + itstool, + libxml2-utils, gnome-pkg-tools -Build-Depends-Indep: python (>=2.6.6-3~), - intltool, +Build-Depends-Indep: intltool, scrollkeeper -Uploaders: Debian GNOME Maintainers , Emilio Pozuelo Monfort , Balint Reczey -DM-Upload-Allowed: yes -Standards-Version: 3.9.2 -Vcs-Svn: svn://svn.debian.org/svn/pkg-gnome/packages/unstable/meld -Vcs-Browser: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/meld/ +Uploaders: Debian GNOME Maintainers +Standards-Version: 3.9.5 +Vcs-Svn: svn://svn.debian.org/pkg-gnome/packages/unstable/meld +Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-gnome/packages/unstable/meld/ Homepage: http://meldmerge.org X-Python-Version: >= 2.6 @@ -26,14 +26,18 @@ Architecture: all Depends: ${python:Depends}, ${misc:Depends}, - python-gtk2 (>= 2.14), - python-glade2 (>= 2.14), - python-gobject-2 (>= 2.16), + libgtk-3-0 (>= 3.6), + python-gi (>= 3.8), + libgtksourceview-3.0-1 (>= 3.6), + gir1.2-gtksource-3.0 (>= 3.6), + python-gi-cairo, + libcanberra-gtk3-module, patch Recommends: yelp, - python-gnome2, - python-gconf, - python-gtksourceview2 (>= 2.4) + gir1.2-gconf-2.0, Description: graphical tool to diff and merge files - Meld is a tool which allows the user to see the changes in, and merge between, - either two files, two directories, or two files with a common ancestor. + Meld is a graphical diff viewer and merge application for the Gnome + desktop. It supports 2 and 3-file diffs, recursive directory diffs, + diffing of directories under version control (Bazaar, Codeville, CVS, + Darcs, Fossil SCM, Git, Mercurial, Monotone, Subversion), as well as + the ability to manually and automatically merge file differences. diff -Nru meld-1.5.3/debian/control.in meld-3.11.0/debian/control.in --- meld-1.5.3/debian/control.in 2012-03-25 18:44:59.000000000 +0000 +++ meld-3.11.0/debian/control.in 2014-04-19 17:11:49.000000000 +0000 @@ -1,19 +1,20 @@ Source: meld Section: gnome Priority: optional -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Ross Burton -Build-Depends: debhelper (>= 5), +Maintainer: Balint Reczey +Build-Depends: debhelper (>= 9), cdbs (>= 0.4.90~), + python (>=2.6.6-3~), + dh-python, + itstool, + libxml2-utils, gnome-pkg-tools -Build-Depends-Indep: python (>=2.6.6-3~), - intltool, +Build-Depends-Indep: intltool, scrollkeeper -Uploaders: @GNOME_TEAM@, Balint Reczey -DM-Upload-Allowed: yes -Standards-Version: 3.9.2 -Vcs-Svn: svn://svn.debian.org/svn/pkg-gnome/packages/unstable/meld -Vcs-Browser: http://svn.debian.org/wsvn/pkg-gnome/packages/unstable/meld/ +Uploaders: @GNOME_TEAM@ +Standards-Version: 3.9.5 +Vcs-Svn: svn://svn.debian.org/pkg-gnome/packages/unstable/meld +Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-gnome/packages/unstable/meld/ Homepage: http://meldmerge.org X-Python-Version: >= 2.6 @@ -21,14 +22,18 @@ Architecture: all Depends: ${python:Depends}, ${misc:Depends}, - python-gtk2 (>= 2.14), - python-glade2 (>= 2.14), - python-gobject-2 (>= 2.16), + libgtk-3-0 (>= 3.6), + python-gi (>= 3.8), + libgtksourceview-3.0-1 (>= 3.6), + gir1.2-gtksource-3.0 (>= 3.6), + python-gi-cairo, + libcanberra-gtk3-module, patch Recommends: yelp, - python-gnome2, - python-gconf, - python-gtksourceview2 (>= 2.4) + gir1.2-gconf-2.0, Description: graphical tool to diff and merge files - Meld is a tool which allows the user to see the changes in, and merge between, - either two files, two directories, or two files with a common ancestor. + Meld is a graphical diff viewer and merge application for the Gnome + desktop. It supports 2 and 3-file diffs, recursive directory diffs, + diffing of directories under version control (Bazaar, Codeville, CVS, + Darcs, Fossil SCM, Git, Mercurial, Monotone, Subversion), as well as + the ability to manually and automatically merge file differences. diff -Nru meld-1.5.3/debian/copyright meld-3.11.0/debian/copyright --- meld-1.5.3/debian/copyright 2011-08-15 16:03:36.000000000 +0000 +++ meld-3.11.0/debian/copyright 2013-09-23 13:18:51.000000000 +0000 @@ -1,26 +1,157 @@ -This package was debianized by Ross Burton on -Fri, 20 Sep 2002 18:46:55 +0100. +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: meld +Upstream-Contact: Kai Willadsen +Source: http://ftp.gnome.org/pub/GNOME/sources/meld/1.7/meld-1.7.0.tar.xz +Copyright: 2009-2012 Kai Willadsen + 2002-2009 Stephen Kennedy + 2009, 2012 Piotr Piastucki + 2009 Vincent Legoll + 2007,2008 Colin Walters + 2005 VMware, Inc. + 2005 Daniel Thompson + 2005 Ali Afshar + 2005 Aaron Bentley + 2011 Jan Danielsson + 2007 José Fonseca +License: GPL-2 + +Files: * +Copyright: 2009-2012 Kai Willadsen + 2002-2009 Stephen Kennedy +License: GPL-2+ + +Files: debian/* +Copyright: 2002-2009 Ross Burton + 2009-2013 Balint Reczey + 2013 Boruch Baum +License: GPL-2 + +Files: ui/msgarea.py +Copyright: 2007,2008 Colin Walters +License: GPL-2+ + +Files: filemerge.py +Copyright: 2009, 2012 Piotr Piastucki + 2012 Kai Willadsen +License: GPL-2+ + +Files: matchers.py merge.py +Copyright: 2009 Piotr Piastucki +License: GPL-2+ + +Files: misc.py +Copyright: 2002-2006 Stephen Kennedy + 2009 Vincent Legoll +License: GPL-2+ + +Files: util/sourceviewer.py +Copyright: 2009 Vincent Legoll + 2010-2011 Kai Willadsen +License: GPL-2+ + +Files: vc/cdv.py +Copyright: 2009 Vincent Legoll +License: BSD-2-clause + +Files: vc/rcs.py +Copyright: 2002-2005 Stephen Kennedy , Oliver Gerlich + 2009 Vincent Legoll +License: BSD-2-clause + +Files: vc/git.py +Copyright: 2002-2005 Stephen Kennedy + 2005 Aaron Bentley + 2007 José Fonseca + 2010-2012 Kai Willadsen +License: BSD-2-clause + +Files: vc/tla.py +Copyright: 2005 Ali Afshar +License: Expat + +Files: vc/monotone.py +Copyright: 2002-2005 Stephen Kennedy + 2005 Daniel Thompson +License: BSD-2-clause + +Files: vc/fossil.py +Copyright: 2002-2005 Stephen Kennedy + 2005 Daniel Thompson + 2011 Jan Danielsson +License: BSD-2-clause + +Files: vc/bzr.py +Copyright: 2002-2005 Stephen Kennedy + 2005 Aaron Bentley +License: BSD-2-clause + +Files: vc/svk.py +Copyright: 2009 Vincent Legoll +License: BSD-2-clause + +Files: vc/darcs.py +Copyright: 2005 Ali Afshar +License: Expat + +Files: wraplabel.PY +Copyright: 2005 VMware, Inc. +License: Expat -It was downloaded from: - +License: GPL-2 + /usr/share/common-licenses/GPL-2 -Copyright (C) 2002 - 2008 Stephen Kennedy - -License: - - This package is free software; you can redistribute it and/or modify +License: GPL-2+ + 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; version 2 dated June, 1991. - - This package is distributed in the hope that it will be useful, + 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 package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - 02110-1301, USA. - -On Debian GNU/Linux systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL-2'. + . + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + . + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: Expat + 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 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. diff -Nru meld-1.5.3/debian/patches/Fix-refresh-action-to-not-reset-modified-flags-close.patch meld-3.11.0/debian/patches/Fix-refresh-action-to-not-reset-modified-flags-close.patch --- meld-1.5.3/debian/patches/Fix-refresh-action-to-not-reset-modified-flags-close.patch 2012-03-25 18:44:47.000000000 +0000 +++ meld-3.11.0/debian/patches/Fix-refresh-action-to-not-reset-modified-flags-close.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -From 619de1827034948f405b662ba870e98032208265 Mon Sep 17 00:00:00 2001 -From: Kai Willadsen -Date: Wed, 15 Feb 2012 06:06:13 +1000 -Subject: Fix refresh action to not reset modified flags -Bug: https://bugzilla.gnome.org/show_bug.cgi?id=670133 - -Our existing "Refresh" action piggy-backed on the reload code, using -a semantically-dubious empty list to indicate a lack of changes. One -upshot of this was that undo-related functionality like modified flags -were unintentionally cleared on refresh. - -This patch breaks out minimal required refresh functionality into a -new method, and replaces the old set-empty-files idiom with a call to -this method. ---- - meld/filediff.py | 17 ++++++++++++----- - 1 files changed, 12 insertions(+), 5 deletions(-) - -diff --git a/meld/filediff.py b/meld/filediff.py -index 64ebed6..b3bedbf 100644 ---- a/meld/filediff.py -+++ b/meld/filediff.py -@@ -360,7 +360,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): - def on_text_filters_changed(self, app): - relevant_change = self.create_text_filters() - if relevant_change: -- self.set_files([None] * self.num_panes) # Refresh -+ self.refresh_comparison() - - def create_text_filters(self): - # In contrast to file filters, ordering of text filters can matter -@@ -787,7 +787,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): - t.set_insert_spaces_instead_of_tabs(value) - elif key == "ignore_blank_lines": - self.linediffer.ignore_blanks = self.prefs.ignore_blank_lines -- self.set_files([None] * self.num_panes) # Refresh -+ self.refresh_comparison() - - def on_key_press_event(self, object, event): - x = self.keylookup.get(event.keyval, 0) -@@ -1119,6 +1119,14 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): - for i in self._diff_files(): - yield i - -+ def refresh_comparison(self): -+ """Refresh the view by clearing and redoing all comparisons""" -+ self._disconnect_buffer_handlers() -+ self._inline_cache = set() -+ self.linediffer.clear() -+ self.queue_draw() -+ self.scheduler.add_task(self._diff_files().next) -+ - def _set_merge_action_sensitivity(self): - pane = self._get_focused_pane() - editable = self.textview[pane].get_editable() -@@ -1176,8 +1184,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): - mgr.clear() - if respid == gtk.RESPONSE_OK: - self.text_filters = [] -- # Refresh -- self.set_files([None] * self.num_panes) -+ self.refresh_comparison() - - def update_highlighting(self): - if not self.undosequence.in_grouped_action(): -@@ -1471,7 +1478,7 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component): - self.set_files(files) - - def on_refresh_activate(self, *extra): -- self.set_files([None] * self.num_panes) -+ self.refresh_comparison() - - def queue_draw(self, junk=None): - for t in self.textview: --- -1.7.5.4 - diff -Nru meld-1.5.3/debian/patches/Improve-popup-right-click-behaviour-in-tree-views-cl.patch meld-3.11.0/debian/patches/Improve-popup-right-click-behaviour-in-tree-views-cl.patch --- meld-1.5.3/debian/patches/Improve-popup-right-click-behaviour-in-tree-views-cl.patch 2012-03-25 18:54:21.000000000 +0000 +++ meld-3.11.0/debian/patches/Improve-popup-right-click-behaviour-in-tree-views-cl.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -From fbbb8900131b00219c805bd14ed2120b07f3c74d Mon Sep 17 00:00:00 2001 -From: Kai Willadsen -Date: Sun, 12 Feb 2012 11:58:14 +1000 -Subject: Improve popup right-click behaviour in tree views -Bug: https://bugzilla.gnome.org/show_bug.cgi?id=669828 - -Existing behaviour when right-clicking on an unselected row was to not -select the row, but show a context menu for the other currently -selected rows, which is inconsistent with Nautilus, among others. - -This patch changes our behaviour to be more consistent with other file -management tools, in both Meld's directory and VC comparison views. -Right clicking an unselected file now selects it, moves the cursor to -it, and opens the context menu. The existing right-click behaviour for -already-selected files should be preserved. ---- - meld/dirdiff.py | 30 ++++++++++++++++-------------- - meld/vcview.py | 11 ++++++++++- - 2 files changed, 26 insertions(+), 15 deletions(-) - -diff --git a/meld/dirdiff.py b/meld/dirdiff.py -index 274b0ae..3ea9cbd 100644 ---- a/meld/dirdiff.py -+++ b/meld/dirdiff.py -@@ -975,22 +975,24 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): - return True - - def on_treeview_button_press_event(self, treeview, event): -- # unselect other panes -- for t in filter(lambda x:x!=treeview, self.treeview[:self.num_panes]): -+ # Unselect any selected files in other panes -+ for t in [v for v in self.treeview[:self.num_panes] if v != treeview]: - t.get_selection().unselect_all() -+ - if event.button == 3: -- try: -- path, col, cellx, celly = treeview.get_path_at_pos( int(event.x), int(event.y) ) -- except TypeError: -- pass # clicked outside tree -- else: -- treeview.grab_focus() -- selected = self._get_selected_paths( self.treeview.index(treeview) ) -- if len(selected) <= 1 and event.state == 0: -- treeview.set_cursor( path, col, 0) -- self.popup_in_pane(self.treeview.index(treeview), event) -- return event.state==0 -- return 0 -+ treeview.grab_focus() -+ path = treeview.get_path_at_pos(int(event.x), int(event.y)) -+ selection = treeview.get_selection() -+ model, rows = selection.get_selected_rows() -+ -+ if path[0] not in rows: -+ selection.unselect_all() -+ selection.select_path(path[0]) -+ treeview.set_cursor(path[0]) -+ -+ self.popup_in_pane(self.treeview.index(treeview), event) -+ return True -+ return False - - def get_state_traversal(self, diffmapindex): - def tree_state_iter(): -diff --git a/meld/vcview.py b/meld/vcview.py -index 8eeeaf5..8620640 100644 ---- a/meld/vcview.py -+++ b/meld/vcview.py -@@ -425,8 +425,17 @@ class VcView(melddoc.MeldDoc, gnomeglade.Component): - self.popup_menu.popup(None, None, None, 0, time) - return True - -- def on_button_press_event(self, text, event): -+ def on_button_press_event(self, treeview, event): - if event.button == 3: -+ path = treeview.get_path_at_pos(int(event.x), int(event.y)) -+ selection = treeview.get_selection() -+ model, rows = selection.get_selected_rows() -+ -+ if path[0] not in rows: -+ selection.unselect_all() -+ selection.select_path(path[0]) -+ treeview.set_cursor(path[0]) -+ - self.popup_menu.popup(None, None, None, event.button, event.time) - return True - return False --- -1.7.5.4 - diff -Nru meld-1.5.3/debian/patches/python-path.patch meld-3.11.0/debian/patches/python-path.patch --- meld-1.5.3/debian/patches/python-path.patch 2011-08-15 16:03:36.000000000 +0000 +++ meld-3.11.0/debian/patches/python-path.patch 2014-04-19 17:10:41.000000000 +0000 @@ -6,5 +6,5 @@ -#! /usr/bin/env python +#!/usr/bin/python - ### Copyright (C) 2002-2006 Stephen Kennedy - + # Copyright (C) 2002-2006 Stephen Kennedy + # Copyright (C) 2009-2014 Kai Willadsen diff -Nru meld-1.5.3/debian/patches/series meld-3.11.0/debian/patches/series --- meld-1.5.3/debian/patches/series 2012-03-25 18:53:51.000000000 +0000 +++ meld-3.11.0/debian/patches/series 2014-04-19 17:10:49.000000000 +0000 @@ -1,4 +1 @@ -sourceview-package.patch python-path.patch -Fix-refresh-action-to-not-reset-modified-flags-close.patch -Improve-popup-right-click-behaviour-in-tree-views-cl.patch diff -Nru meld-1.5.3/debian/patches/sourceview-package.patch meld-3.11.0/debian/patches/sourceview-package.patch --- meld-1.5.3/debian/patches/sourceview-package.patch 2011-08-15 16:03:36.000000000 +0000 +++ meld-3.11.0/debian/patches/sourceview-package.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -=== modified file 'preferences.py' ---- a/meld/preferences.py -+++ b/meld/preferences.py -@@ -139,7 +139,7 @@ - self.checkbutton_use_syntax_highlighting.set_active( self.prefs.use_syntax_highlighting ) - else: - no_sourceview_text = \ -- _("Only available if you have gnome-python-desktop installed") -+ _("Only available if you have python-gtksourceview2 installed") - for w in (self.checkbutton_spaces_instead_of_tabs, - self.checkbutton_show_line_numbers, - self.checkbutton_use_syntax_highlighting, diff -Nru meld-1.5.3/debian/rules meld-3.11.0/debian/rules --- meld-1.5.3/debian/rules 2012-02-27 23:07:38.000000000 +0000 +++ meld-3.11.0/debian/rules 2014-04-19 17:20:17.000000000 +0000 @@ -1,16 +1,14 @@ #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk -include /usr/share/cdbs/1/class/makefile.mk +DEB_PYTHON2_MODULE_PACKAGES=meld +include /usr/share/cdbs/1/class/python-distutils.mk include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk -include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk -DEB_MAKE_INVOKE += prefix=/usr -DEB_MAKE_BUILD_TARGET := all -DEB_MAKE_INSTALL_TARGET := DESTDIR=$(CURDIR)/debian/meld install - -binary-install/meld:: - dh_python2 -p$(cdbs_curpkg) binary-post-install/meld:: - rm -rf debian/$(cdbs_curpkg)/usr/share/application-registry + rm -rf debian/$(cdbs_curpkg)/usr/share/doc/meld-* \ + debian/$(cdbs_curpkg)/usr/share/meld/icons/COPYING \ + debian/$(cdbs_curpkg)/usr/share/pyshared/meld/vc/COPYING + diff -Nru meld-1.5.3/.gitignore meld-3.11.0/.gitignore --- meld-1.5.3/.gitignore 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/.gitignore 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -*.pyc -*.orig -*.rej -*.desktop -*.install diff -Nru meld-1.5.3/help/C/command-line.page meld-3.11.0/help/C/command-line.page --- meld-1.5.3/help/C/command-line.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/command-line.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,45 @@ + + + 2 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +Command line usage + +

+If you start Meld from the command line, you can tell it what to do when it starts. +

+

+For a two- or three-way file comparison, start Meld with +meld file1 file2 or +meld file1 file2 file3 respectively. +

+ +

+For a two- or three-way directory comparison, start Meld with +meld dir1 dir2 or meld dir1 dir2 dir3. +

+ +

+You can start a version control comparison by just +giving a single argument; if that file or directory is managed by a +recognized version control system, it will +start a version control comparison on that argument. For example, +meld . would start a version control view of the current directory. +

+ + +

+Run meld --help for a list of all command line options. +

+
+ +
diff -Nru meld-1.5.3/help/C/file-changes.page meld-3.11.0/help/C/file-changes.page --- meld-1.5.3/help/C/file-changes.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/file-changes.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,68 @@ + + + 2 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + + +Dealing with changes + +

+Meld deals with differences between files as a list of change +blocks or more simply changes. Each change is a group of lines +which correspond between files. Since these changes are what you're usually +interested in, Meld gives you specific tools to navigate between +these changes and to edit them. You can find these tools in the +Changes menu. +

+ + + +
+Navigating between changes + +

+You can navigate between changes with the +ChangesPrevious change +and +ChangesNext change +menu items. You can also use your mouse's scroll wheel to move between changes, +by scrolling on the central change bar. +

+ +
+ + + +
+Changing changes + +

+In addition to directly editing text files, Meld gives you tools to move, copy or delete individual differences between files. The bar between two files not only shows you what parts of the two files correspond, but also lets you selectively merge or delete differing changes by clicking the arrow or cross icons next to the start of each change. +

+ +

+The default action is replace. This action replaces the contents of the corresponding change with the current change. +

+ + Kai +

It would be nice to have small video clips inlined that demonstrated exactly what each action did.

+
+

+Hold down the Shift key to change the current action to delete. This action deletes the current change. +

+

+Hold down the Ctrl key to change the current action to insert. This action inserts the current change above or below (as selected) the corresponding change. +

+ +
+ +
diff -Nru meld-1.5.3/help/C/file-filters.page meld-3.11.0/help/C/file-filters.page --- meld-1.5.3/help/C/file-filters.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/file-filters.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,196 @@ + + + 2 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +Filtering out files + +

+When you compare folders, you may want to be able to ignore some files. +For example, you may wish to only see files that are present and different +in both folders, ignoring those that are the same or only exist in one +folder. Alternatively, you might want to ignore all the files in your +.git directory, or ignore all images. +

+ +

+Meld has several different ways of controlling which files +and what kind of differences you see. You can filter based on +differences between a file across +folders or file and folder +names. You can also tell Meld to treat filenames +as being case insensitive. +Finally, you can use text filters to +change what both folder and file comparisons see. +

+ + +

+ Any text filters you've defined + automatically apply when comparing folders. Files that are + identical after all of the text filters are applied are not + highlighted as being different, but are shown in italics. +

+
+ + + +
+File differences filtering + +

+In a folder comparison, each line contains a single file or folder +that is present in at least one of the folders being compared. Each of +these lines is classified as being either Modifed, New +or Same: +

+ + + Modified +

The file exists in multiple folders, but the files are different

+
+ + New +

The file exists in one folder but not in the others

+
+ + Same +

The file exists in all folders, and is the same everywhere

+
+
+

+You can change which types of differences you see in your current +comparison by using the Same, +New and Modified +buttons on the toolbar or the +ViewFile Status +menu. +

+ + +

+ Currently, you can only filter files based on their state; folders + can't be filtered in this way. For example, you can't tell + Meld to ignore all folders that contain only new files. A + folder containing only "New" files would show up as empty, but still + present. +

+
+ +
+ + + +
+Filename filtering + +

+Meld comes with a useful set of filename filters that let you +ignore uninteresting files and folders like common backup files and the +metadata folders of version control systems. Each filename filter can be +separately activated or deactivated from the +Filters button on the toolbar or the +ViewFile Filters +menu. +

+ +

+You can add, remove or change filename filters from the +File Filters section of the Preferences +dialog. Filename filters specify patterns of filenames that will +not be looked at when performing a folder comparison. Any file +that matches an active filter won't even show up in the tree comparison. +Filename filters match both files and folders; if a folder matches +a filter, it and all of its contents are ignored. +

+ +

+Filename filters match according to shell glob patterns. For example, +*.jpg will match all filenames ending in .jpg. +The following table lists all of the shell glob characters that +Meld recognises. +

+ + + Shell glob patterns + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Wildcard

Matches

*

anything (i.e., zero or more characters)

?

exactly one character

[abc]

any one of the listed characters

[!abc]

anything except one of the listed characters

{cat,dog}

either "cat" or "dog"

+ + +

+ Changing a filter's Active setting in the + Preferences dialog changes whether that filter is active + by default. +

+ +

+ Activating a filter from the menu or the toolbar turns the filter on + or off for this comparison only. +

+
+ +
+ + + +
+Case insensitive filenames + +

+Files are compared across directories according to their name. This +comparison is case sensitive by default; that is, the files +README, readme and ReadMe would +all be seen as different files. +

+ +

+When comparing folders on some filesystems (e.g., HFS+ or FAT) you may +wish to make Meld treat filenames as case insensitive. You +can do this by selecting +ViewIgnore filename case +from the menus. +

+
+ + + +
+ + diff -Nru meld-1.5.3/help/C/file-mode.page meld-3.11.0/help/C/file-mode.page --- meld-1.5.3/help/C/file-mode.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/file-mode.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,90 @@ + + + 1 + + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + + +Getting started comparing files + +

+Meld lets you compare two or three text files side-by-side. You can +start a new file comparison by selecting the +FileNew... +menu item. +

+ +

+Once you've selected your files, Meld will show them side-by-side. +Differences between the files will be highlighted to make individual changes +easier to see. Editing the files will cause the comparison to update +on-the-fly. For details on navigating between individual changes, and on +how to use change-based editing, see . +

+ +
+<app>Meld</app>'s file comparisons + +

+There are several different parts to a file comparison. The most important +parts are the editors where your files appear. In addition to these editors, +the areas around and between your files give you a visual overview and actions +to help you handle changes between the files. +

+

+On the left and right-hand sides of the window, there are two small vertical +bars showing various coloured blocks. These bars are designed to give you an +overview of all of the differences between your two files. Each coloured block +represents a section that is inserted, deleted, changed or in conflict between +your files, depending on the block's colour used. +

+

+In between each pair of files is a segment that shows how the changed sections +between your files correspond to each other. You can click on the arrows in a +segment to replace sections in one file with sections from the other. You can +also delete, copy or merge changes. For details on what you can do with +individual change segments, see . +

+ +
+ + +
+Saving your changes + +

+Once you've finished editing your files, you need to save each file you've +changed. +

+

+You can tell whether your files have been saved since they last changed by +the save icon that appears next to the file name above each file. Also, the +notebook label will show an asterisk (*) after any file that +hasn't been saved. +

+

+You can save the current file by selecting the +FileSave +menu item, or using the CtrlS keyboard +shortcut. +

+ +

+ Saving only saves the currently focussed file, which is the file + containing the cursor. If you can't tell which file is focussed, you can + click on the file to focus it before saving. +

+
+ +
+ +
diff -Nru meld-1.5.3/help/C/flattened-view.page meld-3.11.0/help/C/flattened-view.page --- meld-1.5.3/help/C/flattened-view.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/flattened-view.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,35 @@ + + + 2 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +Flattened view + +

+When viewing large folders, you may be interested in only a few files +among the thousands in the folder itself. For this reason, +Meld includes a flattened view of a folder; only +files that have not been filtered out (e.g., by +) are shown, and the folder +heirarchy is stripped away, with file paths shown in the +Location column. +

+ +

+You can turn this flattened view on or off by unchecking the +ViewFlatten +menu item, or by clicking the corresponding Flatten +button on the toolbar. +

+
+ + diff -Nru meld-1.5.3/help/C/folder-mode.page meld-3.11.0/help/C/folder-mode.page --- meld-1.5.3/help/C/folder-mode.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/folder-mode.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,229 @@ + + + 1 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + + +Getting started comparing folders + +

+Meld lets you compare two or three folders side-by-side. You can +start a new folder comparison by selecting the +FileNew... +menu item, and clicking on the Directory Comparison +tab. +

+ +

+Your selected folders will be shown as side-by-side trees, with +differences between files in each folder highlighted. You can copy +or delete files from either folder, or compare individual text files +in more detail. +

+ + + +
+The folder comparison view + +

+The main parts of a folder comparison are the trees showing the folders +you're comparing. You can easily move +around these comparisons to find changes that you're interested +in. When you select a file or folder, more detailed information is +given in the status bar at the bottom of the window. Pressing +Enter on a selected file, or double-clicking any file in the +tree will open a side-by-side file +comparison of the files in a new tab, but this will only work +properly if they're text files! +

+ +

+There are bars on the left and right-hand sides of the window that show +you a simple coloured summary of the comparison results. Each file or +folder in the comparison corresponds to a small section of these bars, +though Meld doesn't show Same files so that it's +easier to see any actually important differences. You can click anywhere +on this bar to jump straight to that place in the comparison. +

+
+ + + +
+Navigating folder comparisons + +

+You can jump between changed files (that is, any files/folders that +are not classified as being identical) with the +ChangesPrevious change +and +ChangesNext change +menu items, or using the corresponding buttons on the toolbar. +

+

+You can use the Left and Right arrow keys to move +between the folders you're comparing. This is useful so that you can +select an individual file for copying or deletion. +

+
+ + + +
+States in folder comparisons + +

+Each file or folder in a tree has its own state, telling you +how it differed from its corresponding files/folders. The possible +states are: +

+ + + Kai +

+ The following table would be much more effective if we could style + entries in the Appearance column to show what they would actually + look like. +

+

+ Ideally we would pull these colours and other details from the + theme/gtkrc, but even an illustration of the default would help a lot. +

+
+ + + + Folder comparison states + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

State

Appearance

Meaning

Same

+

+ Normal font + +

+
+

+ The file/folder is the same across all compared folders. +

+

Same when filtered

+

+ Italics + +

+
+

+ These files are different across folders, but once + text filters are applied, these + files become identical. +

+

Modified

+

+ Red and bold + +

+
+

+ These files differ between the folders being compared. +

+

New

+

+ Green and bold + +

+
+

+ This file/folder exists in this folder, but not in the others. +

+

Missing

+

+ Greyed out text with a line through the middle + +

+
+

+ This file/folder doesn't exist in this folder, but does in one + of the others. +

+

Error

+

+ Bright red with a yellow background and bold + +

+
+

+ When comparing this file, an error occurred. The most common + error causes are file permissions (i.e., Meld was not + allowed to open the file) and filename encoding errors. +

+
+ + + + Kai +

+ The emblem attached is entirely theme-dependant... +

+
+ +

+You can filter out files based on these states, for example, to show only +files that have are Modified. You can read more about this in +. +

+ +

+Finally, the most recently modified file/folder has an emblem +attached to it. +

+
+ +
diff -Nru meld-1.5.3/help/C/index.page meld-3.11.0/help/C/index.page --- meld-1.5.3/help/C/index.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/index.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,35 @@ + + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + + + Meld Help + +
+ Introduction +
+ +
+ Comparing Files +
+ +
+ Comparing Folders +
+ +
+ Using Meld with Version Control +
+ +
+ Advanced Usage +
+
diff -Nru meld-1.5.3/help/C/introduction.page meld-3.11.0/help/C/introduction.page --- meld-1.5.3/help/C/introduction.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/introduction.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,30 @@ + + + 1 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +What is Meld? +

+Meld is a tool for comparing files and directories, and for +resolving differences between them. It is also useful for comparing changes +captured by version control systems. +

+ +

+Meld shows differences between two or three files (or two or three +directories) and allows you to move content between them, or edit the files +manually. Meld's focus is on helping developers compare and merge +source files, and get a visual overview of changes in their favourite version +control system. +

+ +
diff -Nru meld-1.5.3/help/C/keyboard-shortcuts.page meld-3.11.0/help/C/keyboard-shortcuts.page --- meld-1.5.3/help/C/keyboard-shortcuts.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/keyboard-shortcuts.page 2014-02-08 21:03:00.000000000 +0000 @@ -0,0 +1,144 @@ + + + 2 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +Keyboard shortcuts + + + Shortcuts for working with files and comparisons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Shortcut

Description

CtrlN

Start a new comparison.

CtrlS

Save the current document to disk.

CtrlShiftS

Save the current document with a new filename.

CtrlW

Close the current comparison.

CtrlQ

Quit Meld.

+ + + Shortcuts for editing documents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Shortcut

Description

CtrlZ

Undo the last action.

CtrlShiftZ

Redo the last undone action.

CtrlX

Cut the selected text or region and place it on the clipboard.

CtrlC

Copy the selected text or region onto the clipboard.

CtrlV

Paste the contents of the clipboard.

CtrlF

Find a string.

CtrlG

Find the next instance of the string.

AltUp

Go to the next difference. + (Also CtrlD) +

AltUp

Go to the previous difference. + (Also CtrlE) +

+ + + Shortcuts for view settings + + + + + + + + + + + + + + + + + +

Shortcut

Description

Escape

Stop the current comparison.

CtrlR

Refresh the current comparison.

+ + + + Shortcuts for help + + + + + + + + + + + + + +

Shortcut

Description

F1

Open Meld's user manual.

+ +
+ diff -Nru meld-1.5.3/help/C/legal.xml meld-3.11.0/help/C/legal.xml --- meld-1.5.3/help/C/legal.xml 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/legal.xml 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,9 @@ + +

This work is licensed under a +Creative Commons +Attribution-Share Alike 3.0 Unported License.

+

As a special exception, the copyright holders give you permission to copy, +modify, and distribute the example code contained in this document under the +terms of your choosing, without restriction.

+
diff -Nru meld-1.5.3/help/C/Makefile meld-3.11.0/help/C/Makefile --- meld-1.5.3/help/C/Makefile 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/C/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ - -.SUFFIXES : -include ../../INSTALL - -LANG := $(notdir $(CURDIR)) -XML_DIR_ := $(DESTDIR)$(helpdir)/meld/$(LANG) -OMF_NAME := meld-$(LANG).omf -OMF_DIR_ := $(DESTDIR)$(sharedir)/omf/meld -OMF_STATE:= $(DESTDIR)$(localstatedir)/lib/scrollkeeper -INST_XML := $(helpdir_)/$(LANG)/meld.xml - -.PHONY : all -all $(OMF_NAME).install : $(OMF_NAME) - scrollkeeper-preinstall $(INST_XML) $(OMF_NAME) $(OMF_NAME).install - -.PHONY : install -install : $(OMF_NAME).install - -mkdir -m 755 -p $(OMF_DIR_) $(XML_DIR_) - install -m 644 meld.xml $(XML_DIR_)/meld.xml - -install -m 644 $< $(OMF_DIR_)/$(OMF_NAME) - -scrollkeeper-update -p $(OMF_STATE) -o $(OMF_DIR_) - -.PHONY : uninstall -uninstall : - -rm -f $(OMF_DIR_)/$(OMF_NAME) \ - $(XML_DIR_)/meld.xml - -rmdir $(XML_DIR_) - -scrollkeeper-update -p $(OMF_STATE) -o $(OMF_DIR_) - -.PHONY : clean -clean : - -rm -f $(OMF_NAME).install - diff -Nru meld-1.5.3/help/C/meld-C.omf meld-3.11.0/help/C/meld-C.omf --- meld-1.5.3/help/C/meld-C.omf 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/C/meld-C.omf 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ - - - - - - Stephen Kennedy - - - Stephen Kennedy - - - Meld Manual - - - 2004-10-16 - - - - - This document describes the use of meld, a graphical diff, merge, - cvs and subversion tool. - - - manual - - - - - - - - diff -Nru meld-1.5.3/help/C/meld.xml meld-3.11.0/help/C/meld.xml --- meld-1.5.3/help/C/meld.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/C/meld.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,627 +0,0 @@ - - - - Meld Users Manual - - - Meld Users Manual - - - - Stephen - - Kennedy - - stevek@gnome.org - - - - - 2004 - - Stephen Kennedy - - - - - Meld Manual 0.9.4 - 2004 - - - - - This is version 0.1 of the meld manual, describing meld 0.9.6 - - - This document describes the use of meld, a graphical diff, merge, - and version control tool. - - - - - Introduction - - - What is meld - - Meld views differences between files and between directories. Meld - makes it easy to isolate and merge these differences. - - - - Starting meld - - - Command line arguments - - - - meld - - - start meld with the new document dialog - - - - - meld <file> <file> [file] - - - start meld with either a two way or three way - comparison - - - - - meld <dir> <dir> [dir] - - - start meld with either a two way or three way - comparison - - - - - meld <dir|file> - - - start meld with the source control browser - - - - - - "<>" surround required arguments, "[]" - surround optional arguments and "|" indicates a choice. - - - - Run meld --help for a complete list of - options - - - - - - - File Comparison - - - Starting - - To compare files, choose FileNew - and select the File Comparison tab. You can compare two or three files. - - For two way comparisons the original is shown in the left pane and - the modified version in the right pane by convention. - - For three way comparisons, the original is shown in the centre - pane and the left and right panes show the modified versions. By - convention we put the locally modified file in the right pane. - - - - Change Summary - - The location of the changes is summarised in the window margins at - the far left and right. By default green marks insertions and deletions - and blue marks changes. - - You can jump to an individual change by clicking in the margin or - using the scrollbar. - - - - Detailed View - - Detailed differences are shown in the text and central pane. - Inserted text is shown with a solid background. Lines containing changes - are marked with a light background with the individual changes - highlighted with a stronger colour. - - The area between each file shows where each change occurs in the - other file. You can scroll through the changes by rolling the mouse - wheel over this area or with keyboard shortcuts CtrlD, - CtrlE. - - - - Editing - - You can edit the files as you would in a normal text editor. The - differences will update automatically. Use CtrlF to - search and CtrlG to repeat the last search. - - You can also apply changes by clicking the merge buttons ("->" - and "<-"). Holding Shift - allows blocks to be deleted. Holding Control allows the - current change to be inserted before or after the other change. - - You can apply all the changes from a given file by - right clicking a text pane and choosing - Copy all left or Copy all right. - You can also launch an external editor from this menu. Configure the - external editor in SettingsPreferences. - - - - Filtering - - You can ignore certain types of differences in order to locate - important differences. All these settings are available in the Text Filters section of the Preferences dialog. - - - Regular Expressions - - When comparing files, each selected regular expression is run in - turn over each line of input. Anything matching the expression is - removed from the input.See the python re module for more - information on regular expressionsDifferences - are computed line-by-line so multiline regulare expressions will - likely have unintended consequences. - - - - Blank Lines - - Changes which insert or remove blank lines can be ignored. This - option is most useful in conjunction with one or more regular - expression filters. - - - - - Saving - - When you have unsaved changes, a disk icon will appear beside the - file name of the changed file. The tab label and window title also have - an asterix after the file name. - - To save a file, choose - FileSave, - press CtrlS, - or press the toolbar save - button. All of these save the currently focussed file (the file - containing the edit cursor). - - - - Status Bar - - The status bar shows the cursor location (line and column) and - also progress messages as files are initially loaded and compared. - - - - - Folder Comparison - - - Starting - - To compare directories, choose FileNew and select the Directory Comparison tab. You can compare two or three - directories. - - For two way comparisons the original is shown in the left pane and - the modified version in the right pane by convention. - - For three way comparisons, the original is shown in the centre - pane and the left and right panes show the modified versions. By - convention we put the locally modified file in the right pane. - - - - Change Summary - - Similarly to the file comparison, the window margins mark file - deletions, creations and modifications. - - You can jump to an individual change by clicking in the margin or - using the scrollbar. - - - - Detailed View - - Modified files are highlighted with red, created files with green - and deleted files with a strikethrough. See also - - The file or folder most recently modified has a red dot - superimposed on its icon. More detailed information such as file - permission and modification time can be seen in the status bar when a - file is selected. - - Use the mouse or the the cursor keys Up, - Down, Left and Right - to navigate. Additionally CtrlD and - CtrlE move to the next and previous modification - respectively. - - - - Editing - - Activate an item with double click or - Return to start an individual file comparison. - - Additional options are available from a - right click context menu. - - Use Shift+Click and - Control+Click to select multiple items. - - - - Filtering - - Often the initial comparison will contain too much spurious - information. You can use filters to isolate the differences which are - important to you. - - - Explicit Hiding - - Use the toolbar button to hide an item (and all subitems for - directories). - - - - Case Sensitivity - - By default filename comparisons are case sensitive. Use the - toolbar button to toggle case sensitivty of filenames. - - - - State Filtering - - All items have a state which is one of: - Modified (there is some content - difference between files which are present)New - (there is no content difference between present files, but the file is - missing from at least one directory)Identical - (all files have equal content and are all present) - - Use the toolbar buttons to control which items are shown by - their state.In the current version, only files are - filtered by state. Directories are always shown. - - - - Name Filtering - - Meld can hide certain filename patterns from the comparison - using the toolbar buttons. Customise the file patterns that - are hidden in the File Filters section of the Preferences dialog. - - - - Content Filtering - - If differences between files exist, but all differences match - the active regular expressions specified in Text - Filters section of the Preferences dialog, then the filename is not highlighted in red, but is - insted italicised in regular font. - - - - - - Source Control - - - Starting - - To browse a working copy of a source control repository, - choose FileNew and select the Version Control Browser tab. - - The browser is used for examining and commiting or reverting local - changes. It is not intended to be a complete source control client. - - - - Filtering - - The browser can filter on four states. To show or hide all files in a particular state, select or deselect the corresponding toggle button in the toolbar. - - - Normal - The file has not changed since it was checked out or committed. - - Modified - The file has been locally changed, added, or removed. - - Non VC - The file is non-version controlled: it exists locally but was not checked out from a repository. - - Ignored - The file is explicitly ignored e.g. though a .cvsignore file. - - - - The Flatten toggle displays the directory - listing as a plain list, showing all subdirectory contents together. - This makes it easier to see several changes scattered in several directories or in - a large tree. This is especially useful in conjunction with only the modified - filter active. - - - - Viewing Differences - - Activating an unmodified file opens it in the file viewer. - Activating a modified file opens up a two way diff to examine your - changes. - - You can examine many changes at once using - Shift+Click and Control+Click - to select multiple items. - - - - Making Changes - - The toolbar contains commands to perform the most common source - control operations. These operations are also accessible through a - context menu. - - - - Viewing Console - - At the bottom of the source control window is an expander - containing all the source control operations and their output. Click the - expander bar to toggle between hiding and showing the console. - - - - - Shortcut Keys - - For more on shortcut keys, see the Desktop User Guide. - - - - Shortcuts for working with files and comparisons - - - - - - - Shortcut - - Description - - - - - - - CtrlN - - - Start a new comparison. - - - - - CtrlS - - - Save the current document to disk. - - - - - CtrlShiftS - - - Save the current document with a new filename. - - - - - CtrlW - - - Close the current comparison. - - - - - CtrlQ - - - Quit Meld. - - - -
- - - - Shortcuts for editing documents - - - - - - - Shortcut - - Description - - - - - - - CtrlZ - - - Undo the last action. - - - - - CtrlShiftZ - - - Redo the last undone action. - - - - - CtrlX - - - Cut the selected text or region and place it on the clipboard. - - - - - CtrlC - - - Copy the selected text or region onto the clipboard. - - - - - CtrlV - - - Paste the contents of the clipboard. - - - - - CtrlF - - - Find a string. - - - - - CtrlG - - - Find the next instance of the string. - - - - - CtrlD - - - Go to the next difference. - - - - - CtrlE - - - Go to the previous difference. - - - -
- - - - Shortcuts for view settings - - - - - - - Shortcut - - Description - - - - - - - Escape - - - Stop the current comparison. - - - - - CtrlR - - - Refresh the current comparison. - - - - - CtrlShiftR - - - Reload the current comparison. - - - -
- - - - Shortcuts for help - - - - - - - Shortcut - - Description - - - - - - - F1 - - - Open Meld's user manual. - - - -
- -
- -
diff -Nru meld-1.5.3/help/C/missing-functionality.page meld-3.11.0/help/C/missing-functionality.page --- meld-1.5.3/help/C/missing-functionality.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/missing-functionality.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,40 @@ + + + 1 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +Things that <app>Meld</app> doesn't do + +

+Have you ever spent half an hour poking around an application trying to +find out how to do something, thinking that surely there must be +an option for this? +

+ +

+This section lists a few of the common things that Meld +doesn't do, either as a deliberate choice, or because we just +haven't had time. +

+ +
+Aligning changes by adding lines +

+When Meld shows differences between files, it shows both files +as they would appear in a normal text editor. It does not insert +additional lines so that the left and right sides of a particular change +are the same size. There is no option to do this. +

+
+ + +
diff -Nru meld-1.5.3/help/C/preferences.page meld-3.11.0/help/C/preferences.page --- meld-1.5.3/help/C/preferences.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/preferences.page 2014-02-08 21:03:00.000000000 +0000 @@ -0,0 +1,31 @@ + + + 1 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2013 + + +Meld's preferences + + + Editor preferences + + Editor command +

The name of the command to run to open text files in an external editor. + This may be just the command (e.g., gedit) in which case the + file to be opened will be passed as the last argument. Alternatively, + you can add {file} and {line} elements to the + command, in which case Meld will substitute the file path and + current line number respectively (e.g., gedit {file}:{line}). +

+
+
+ +
diff -Nru meld-1.5.3/help/C/resolving-conflicts.page meld-3.11.0/help/C/resolving-conflicts.page --- meld-1.5.3/help/C/resolving-conflicts.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/resolving-conflicts.page 2014-01-04 21:40:03.000000000 +0000 @@ -0,0 +1,36 @@ + + + 2 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +Resolving merge conflicts + +

+One of the best uses of Meld is to resolve conflicts that occur +while merging different branches. +

+ +

+For example, when using Git, git mergetool will start +a 'merge helper'; Meld is one such helper. If you want to make +git mergetool use Meld by default, you can add +

+ +[merge] + tool = meld + +

+to .git/gitconfig. See the git mergetool manual for +details. +

+ +
diff -Nru meld-1.5.3/help/C/text-filters.page meld-3.11.0/help/C/text-filters.page --- meld-1.5.3/help/C/text-filters.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/text-filters.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,134 @@ + + + 2 + + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + + +Filtering out text + +

+When comparing several files, you may have sections of text where differences +aren't really important. For example, you may want to focus on changed sections +of code, and ignore any changes in comment lines. With text filters you can +tell Meld to ignore text that matches a pattern (i.e., a regular +expression) when showing differences between files. +

+ + +

+ Text filters don't just affect file comparisons, but also folder comparisons. + Check the file filtering notes for more + details. +

+
+ + +
+Adding and using text filters + +

+You can turn text filters on or off from the the Text Filters tab in +Preferences dialog. Meld comes with a few simple filters +that you might find useful, but you can add your own as well. +

+ +

+In Meld, text filters are regular expressions that are matched +against the text of files you're comparing. Any text that is matched is ignored +during the comparsion; you'll still see this text in the comparison view, but +it won't be taken into account when finding differences. Text filters are +applied in order, so it's possible for the first filter to remove text that now +makes the second filter match, and so on. +

+ + +

+ If you're not familiar with regular expressions, you might want to check out + the Python Regular + Expression HOWTO. +

+
+ +
+ + + +
+Getting text filters right + +

+It's easy to get text filtering wrong, and Meld's support for filtering isn't +complete. In particular, a text filter can't change the number of lines in a +file. For example, if we had the built-in Script comment filter +enabled, and compared the following files: +

+ + + + + + + +
+ + <file>comment1.txt</file> + + + + + <file>comment2.txt</file> + + +
+

+then the lines starting with b would be shown as identical (the +comment is stripped out) but the d line would be shown as +different to the comment line on the right. This happens because the +#comment is removed from the right-hand side, but the line itself +can not be removed; Meld will show the d line as being +different to what it sees as a blank line on the other side. +

+ +
+ + +
+Blank lines and filters + +

+The Ignore changes which insert or delete blank lines preference +in the Text Filters tab requires special explanation. If this +special filter is enabled, then any change consisting only of blank lines is +completely ignored. This may occur because there was an actual whitespace +change in the text, but it may also arise if your active text filters have +removed all of the other content from a change, leaving only blank lines. +

+ +

+You can use this option to get around some of the +problems and limitations resulting +from filters not being able to remove whole lines, but it can also be useful +in and of itself. +

+ +
+ +
diff -Nru meld-1.5.3/help/C/vc-mode.page meld-3.11.0/help/C/vc-mode.page --- meld-1.5.3/help/C/vc-mode.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/vc-mode.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,243 @@ + + + 0 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + + +Viewing version-controlled files + +

+Meld integrates with many version +control systems to let you review local changes and perform +simple version control tasks. You can start a new version control +comparison by selecting the +FileNew... +menu item, and clicking on the Version Control +tab. +

+ + +
+Version control comparisons + +

+Version control comparisons show the differences between the contents +of your folder and the current repository version. Each file in your +local copy has a state that indicates +how it differs from the repository copy. +

+ + + Kai +

+ Interacting with VC systems should have its own page. +

+
+ +

+If you want to look at a particular file's differences, you can select +it and press Enter, or double-click the file to start a +file comparison. You can also interact +with your version control system using the +Changes menu. +

+
+ +
+Version control states + +

+Each file or folder in a version control comparison has a state, +obtained from the version control system itself. Meld maps +these different states into a standard set of very similar concepts. +As such, Meld might use slightly different names for states +than your version control system does. The possible states are: +

+ + + Kai +

+ The following table would be much more effective if we could style + entries in the Appearance column to show what they would actually + look like. +

+

+ Ideally we would pull these colours and other details from the + theme/gtkrc, but even an illustration of the default would help a lot. +

+
+ + + + Version control states + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

State

Appearance

Meaning

Same

+

+ Normal font + +

+
+

+ The file/folder is the same as the repository version. +

+

Modified

+

+ Red and bold + +

+
+

+ This file is different to the repository version. +

+

New

+

+ Green and bold + +

+
+

+ This file/folder is new, and is scheduled to be added to + the repository. +

+

Removed

+

+ Red bold text with a line through the middle + +

+
+

+ This file/folder existed, but is scheduled to be removed from + the repository. +

+

Conflict

+

+ Bright red bold text + +

+
+

+ When trying to merge with the repository, the differences between + the local file and the repository could not be resolved, and the + file is now in conflict with the repository contents +

+

Missing

+

+ Blue bold text with a line through the middle + +

+
+

+ This file/folder should be present, but isn't. +

+

Ignored

+

+ Greyed out text + +

+
+

+ This file/folder has been explicitly ignored (e.g., by an entry + in .gitignore) and is not being tracked by version + control. +

+

Non VC

+

+ Greyed out text + +

+
+

+ This file is not in the version control system; it is only in + the local copy. +

+

Error

+

+ Bright red with a yellow background and bold + +

+
+

+ The version control system has reported a problem with this file. +

+
+
+ +
+Version control state filtering + +

+Most often, you will only want to see files that are identified as being +in some way different; this is the default setting in Meld. +You can change which file states you see by using the +ViewVersion Status +menu, or by clicking the corresponding Modified, +Normal, Non VC and +Ignored buttons on the toolbar. +

+
+ +
diff -Nru meld-1.5.3/help/C/vc-supported.page meld-3.11.0/help/C/vc-supported.page --- meld-1.5.3/help/C/vc-supported.page 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/help/C/vc-supported.page 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,41 @@ + + + 3 + + + + + Kai Willadsen + kai.willadsen@gmail.com + 2012 + + +Supported version control systems + +

+Meld supports a wide range of version control systems: +

+ + +

Arch

+

Bazaar

+

Codeville

+

CVS

+

Fossil

+

Git

+

Mercurial

+

Monotone

+

RCS

+

SVK

+

SVN

+
+ +

+Less common version control systems or unusual configurations may not be +properly tested; please report any version control support bugs to GNOME bugzilla. +

+ +
diff -Nru meld-1.5.3/help/de/de.po meld-3.11.0/help/de/de.po --- meld-1.5.3/help/de/de.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/de/de.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,778 +0,0 @@ -# German translation of the meld manual. -# Mario Blättermann , 2009. -# -msgid "" -msgstr "" -"Project-Id-Version: meld\n" -"POT-Creation-Date: 2009-04-19 16:22+0200\n" -"PO-Revision-Date: 2009-04-19 17:41+0100\n" -"Last-Translator: Mario Blättermann \n" -"Language-Team: German \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Poedit-Language: German\n" -"X-Poedit-Country: GERMANY\n" - -#: C/meld.xml:5(title) C/meld.xml:8(title) -msgid "Meld Users Manual" -msgstr "Meld-Benutzerhandbuch" - -#: C/meld.xml:12(firstname) -msgid "Stephen" -msgstr "Stephen" - -#: C/meld.xml:14(surname) -msgid "Kennedy" -msgstr "Kennedy" - -#: C/meld.xml:16(email) -msgid "stevek@gnome.org" -msgstr "stevek@gnome.org" - -#: C/meld.xml:21(year) -msgid "2004" -msgstr "2004" - -#: C/meld.xml:23(holder) -msgid "Stephen Kennedy" -msgstr "Stephen Kennedy" - -#: C/meld.xml:26(releaseinfo) -msgid "This is version 0.1 of the meld manual, describing meld 0.9.6" -msgstr "" -"Die vorliegende Version 0.1 des Meld-Handbuchs beschreibt die " -"Anwendungsversion 0.9.6." - -#: C/meld.xml:30(title) -msgid "Introduction" -msgstr "Einführung" - -#: C/meld.xml:33(title) -msgid "What is meld" -msgstr "Was ist Meld?" - -#: C/meld.xml:35(para) -msgid "" -"Meld views differences between files and between directories. Meld makes it " -"easy to isolate and merge these differences." -msgstr "" -"Meld zeigt Unterschiede zwischen Dateien und zwischen Ordnern an. Meld " -"erleichtert Ihnen die Herauslösung oder Zusammenführung dieser Unterschiede." - -#: C/meld.xml:40(title) -msgid "Starting meld" -msgstr "Starten von Meld" - -#: C/meld.xml:43(title) -msgid "Command line arguments" -msgstr "Befehlszeilenargumente" - -#: C/meld.xml:47(userinput) -#, no-wrap -msgid "meld" -msgstr "meld" - -#: C/meld.xml:50(para) -msgid "start meld with the new document dialog" -msgstr "" - -#: C/meld.xml:55(userinput) -#, no-wrap -msgid "meld <file> <file> [file]" -msgstr "" - -#: C/meld.xml:58(para) C/meld.xml:67(para) -msgid "start meld with either a two way or three way comparison" -msgstr "" - -#: C/meld.xml:64(userinput) -#, no-wrap -msgid "meld <dir> <dir> [dir]" -msgstr "" - -#: C/meld.xml:73(userinput) -#, no-wrap -msgid "meld <dir|file>" -msgstr "" - -#: C/meld.xml:76(para) -msgid "start meld with the source control browser" -msgstr "" - -#: C/meld.xml:82(para) -msgid "" -"\"<>\" surround required arguments, \"[]\" surround optional arguments " -"and \"|\" indicates a choice." -msgstr "" - -#: C/meld.xml:87(para) -msgid "Run meld --help for a complete list of options" -msgstr "" -"Um eine vollständige Liste von Optionen zu erhalten, rufen Sie " -"meld --help auf." - -#: C/meld.xml:95(title) -msgid "File Comparison" -msgstr "Dateivergleich" - -#: C/meld.xml:98(title) C/meld.xml:208(title) C/meld.xml:322(title) -msgid "Starting" -msgstr "Starten" - -#: C/meld.xml:100(para) -msgid "" -"To compare files, choose FileNew and select the File Comparison " -"tab. You can compare two or three files." -msgstr "" -"Zum Vergleichen von Dateien wählen Sie DateiNeu und wählen den Reiter " -"Dateien vergleichen. Sie können zwei oder drei Dateien " -"miteinander vergleichen." - -#: C/meld.xml:103(para) C/meld.xml:213(para) -msgid "" -"For two way comparisons the original is shown in the left pane and the " -"modified version in the right pane by convention." -msgstr "" -"Per Vorgabe wird bei Zweiwege-Vergleichen das Original in der linken Ansicht " -"und die geänderte Version in der rechten Ansicht dargestellt." - -#: C/meld.xml:106(para) C/meld.xml:216(para) -msgid "" -"For three way comparisons, the original is shown in the centre pane and the " -"left and right panes show the modified versions. By convention we put the " -"locally modified file in the right pane." -msgstr "" -"Bei Dreiwege-Vergleichen wird das Original in der mittleren Ansicht und die " -"geänderten Versionen in der linken und rechten Ansicht dargestellt. Per " -"Vorgabe wird die lokal geänderte Version in der linken Ansicht dargestellt." - -#: C/meld.xml:112(title) C/meld.xml:222(title) -msgid "Change Summary" -msgstr "Änderungs-Zusammenfassung" - -#: C/meld.xml:114(para) -msgid "" -"The location of the changes is summarised in the window margins at the far " -"left and right. By default green marks insertions and deletions and blue " -"marks changes." -msgstr "" -"Die Orte der Änderungen werden an den linken und rechten Rändern des Fensters " -"zusammengefasst. Einfügungen werden standardmäßig grün markiert, Löschungen " -"dagegen blau." - -#: C/meld.xml:118(para) C/meld.xml:227(para) -msgid "" -"You can jump to an individual change by clicking in the margin or using the " -"scrollbar." -msgstr "" -"Sie können zu einer bestimmten Änderung springen, indem Sie auf diese Ränder " -"klicken oder die Bildlaufleiste bewegen." - -#: C/meld.xml:123(title) C/meld.xml:232(title) -msgid "Detailed View" -msgstr "Detailansicht" - -#: C/meld.xml:125(para) -msgid "" -"Detailed differences are shown in the text and central pane. Inserted text is " -"shown with a solid background. Lines containing changes are marked with a " -"light background with the individual changes highlighted with a stronger " -"colour." -msgstr "" - -#: C/meld.xml:130(para) -msgid "" -"The area between each file shows where each change occurs in the other file. " -"You can scroll through the changes by rolling the mouse wheel over this area " -"or with keyboard shortcuts CtrlD, CtrlE." -msgstr "" - -#: C/meld.xml:137(title) C/meld.xml:251(title) -msgid "Editing" -msgstr "Bearbeiten" - -#: C/meld.xml:139(para) -msgid "" -"You can edit the files as you would in a normal text editor. The differences " -"will update automatically. Use CtrlF to search and CtrlG to repeat the last search." -msgstr "" - -#: C/meld.xml:143(para) -msgid "" -"You can also apply changes by clicking the merge buttons (\"->\" and \"<-\"). Holding Shift " -"allows blocks to be deleted. Holding Control allows the " -"current change to be inserted before or after the other change." -msgstr "" - -#: C/meld.xml:148(para) -msgid "" -"You can apply all the changes from a given file by right clicking a text pane " -"and choosing Copy all left or Copy " -"all right. You can also launch an external editor from this " -"menu. Configure the external editor in SettingsPreferences." -msgstr "" - -#: C/meld.xml:156(title) C/meld.xml:264(title) C/meld.xml:332(title) -msgid "Filtering" -msgstr "Filterung" - -#: C/meld.xml:158(para) -msgid "" -"You can ignore certain types of differences in order to locate important " -"differences. All these settings are available in the Text Filters section of " -"the Preferences dialog." -msgstr "" - -#: C/meld.xml:162(title) -msgid "Regular Expressions" -msgstr "Reguläre Ausdrücke" - -#: C/meld.xml:166(para) -msgid "See the python re module for more information on regular expressions" -msgstr "" - -#: C/meld.xml:167(para) -msgid "" -"Differences are computed line-by-line so multiline regulare expressions will " -"likely have unintended consequences." -msgstr "" -"Unterschiede werden zeilenweise erkannt, so dass sich über mehrere Zeilen " -"erstreckende reguläre Ausdrücke vielleicht unerwartete Konsequenzen haben " -"könnten." - -#: C/meld.xml:164(para) -msgid "" -"When comparing files, each selected regular expression is run in turn over " -"each line of input. Anything matching the expression is removed from the " -"input." -msgstr "" - -#: C/meld.xml:173(title) -msgid "Blank Lines" -msgstr "Leerzeilen" - -#: C/meld.xml:175(para) -msgid "" -"Changes which insert or remove blank lines can be ignored. This option is " -"most useful in conjunction with one or more regular expression filters." -msgstr "" -"Änderungen, die lediglich Leerzeilen einfügen oder löschen, werden ignoriert. " -"Diese Option ist am nützlichsten in Verbindung mit einem oder mehreren " -"Filtern für reguläre Ausdrücke." - -#: C/meld.xml:182(title) -msgid "Saving" -msgstr "speichern" - -#: C/meld.xml:184(para) -msgid "" -"When you have unsaved changes, a disk icon will appear beside the file name " -"of the changed file. The tab label and window title also have an asterix " -"after the file name." -msgstr "" - -#: C/meld.xml:188(para) -msgid "" -"To save a file, choose FileSave, press CtrlS, or press the toolbar save button. All of these save the " -"currently focussed file (the file containing the edit cursor)." -msgstr "" -"Um eine Datei zu speichern, wählen Sie DateiSpeichern, drücken " -"StrgS, oder klicken " -"auf den Knopf Speichern in der Werkzeugleiste. Auf alle " -"diese Arten speichern Sie die aktuelle ausgewählte Datei, also jene, die den " -"Cursor enthält." - -#: C/meld.xml:197(title) -msgid "Status Bar" -msgstr "Statuszeile" - -#: C/meld.xml:199(para) -msgid "" -"The status bar shows the cursor location (line and column) and also progress " -"messages as files are initially loaded and compared." -msgstr "" -"Die Statuszeile zeigt die aktuelle Position des Cursors an (Zeile und Spalte) " -"sowie Fortschrittsmeldungen beim erstmaligen Laden von Dateien und " -"Vergleichsvorgängen." - -#: C/meld.xml:205(title) -msgid "Folder Comparison" -msgstr "Ordnervergleich" - -#: C/meld.xml:210(para) -msgid "" -"To compare directories, choose FileNew and select the " -"Directory Comparison tab. You can compare two or three " -"directories." -msgstr "" -"Zum Vergleichen von Ordnern wählen Sie DateiNeu und wählen den Reiter " -"Ordner vergleichen. Sie können zwei oder drei Ordner " -"miteinander vergleichen." - -#: C/meld.xml:224(para) -msgid "" -"Similarly to the file comparison, the window margins mark file deletions, " -"creations and modifications." -msgstr "" - -#: C/meld.xml:234(para) -msgid "" -"Modified files are highlighted with red, created files with green and deleted " -"files with a strikethrough. See also " -msgstr "" -"Geänderte Dateien werden rot hervorgehoben, erzeugte Dateien grün und " -"gelöschte Dateien blau. Siehe auch ." - -#: C/meld.xml:238(para) -msgid "" -"The file or folder most recently modified has a red dot superimposed on its " -"icon. More detailed information such as file permission and modification time " -"can be seen in the status bar when a file is selected." -msgstr "" - -#: C/meld.xml:243(para) -msgid "" -"Use the mouse or the the cursor keys Up, Down, Left and Right to navigate. " -"Additionally CtrlD and " -"CtrlE move to the next " -"and previous modification respectively." -msgstr "" - -#: C/meld.xml:253(para) -msgid "" -"Activate an item with double click or Return to start an " -"individual file comparison." -msgstr "" -"Aktivieren Sie ein Objekt mittels Doppelklick oder durch Drücken der " -"Eingabetaste, um einen individuellen Dateivergleich zu " -"starten." - -#: C/meld.xml:256(para) -msgid "Additional options are available from a right click context menu." -msgstr "" -"Zusätzliche Optionen sind über das Kontextmenü (durch Klick mit der rechten " -"Maustaste) erreichbar." - -#: C/meld.xml:259(para) -msgid "Use Shift+Click and Control+Click to select multiple items." -msgstr "" -"Halten Sie beim Anklicken die Umschalttaste oder die " -"Strg-Taste gedrückt, um mehrere Dateien auszuwählen." - -#: C/meld.xml:266(para) -msgid "" -"Often the initial comparison will contain too much spurious information. You " -"can use filters to isolate the differences which are important to you." -msgstr "" -"Oft enthält ein erstmaliger Vergleich zu viele unnötige Informationen. Sie " -"können Filter verwenden, um nur die für Sie wichtigen Informationen anzeigen " -"zu lassen." - -#: C/meld.xml:271(title) -msgid "Explicit Hiding" -msgstr "Ausdrückliches Verbergen" - -#: C/meld.xml:273(para) -msgid "" -"Use the toolbar button to hide an item (and all subitems for directories)." -msgstr "" -"Verwenden Sie den Knopf in der Werkzeugleiste, um ein Objekt (und alle in " -"einem Ordner enthaltenen Objekte) zu verbergen." - -#: C/meld.xml:278(title) -msgid "Case Sensitivity" -msgstr "Groß-/Kleinschreibung" - -#: C/meld.xml:280(para) -msgid "" -"By default filename comparisons are case sensitive. Use the toolbar button to " -"toggle case sensitivty of filenames." -msgstr "" -"Per Vorgabe wird bei Vergleichen auf die Groß- und Kleinschreibung von " -"Dateinamen geachtet. Verwenden Sie den Knopf in der Werkzeugleiste, um dieses " -"Verhalten an- oder abzuschalten." - -#: C/meld.xml:285(title) -msgid "State Filtering" -msgstr "Filterung nach Status" - -#: C/meld.xml:288(para) -msgid "" -"Modified (there is some content difference between files which are present)" -msgstr "" -"Geändert (Es gibt inhaltliche Unterschiede zwischen den vorhandenen Dateien)" - -#: C/meld.xml:289(para) -msgid "" -"New (there is no content difference between present files, but the file is " -"missing from at least one directory)" -msgstr "" -"Neu (Es gibt keine inhaltlichen Unterschiede zwischen den vorhandenen " -"Dateien, die Datei fehlt aber in mindestens einem Ordner)" - -#: C/meld.xml:291(para) -msgid "Identical (all files have equal content and are all present)" -msgstr "Identisch (Alle Dateien sind inhaltlich gleich und sind alle vorhanden)" - -#: C/meld.xml:287(para) -msgid "All items have a state which is one of: " -msgstr "Der Status aller Objekte ist einer von diesen: " - -#: C/meld.xml:295(para) -msgid "" -"In the current version, only files are filtered by state. Directories are " -"always shown." -msgstr "" -"In der aktuellen Version werden nur Dateien nach deren Status gefiltert. " -"Ordner werden immer angezeigt." - -#: C/meld.xml:294(para) -msgid "" -"Use the toolbar buttons to control which items are shown by their state." -"" -msgstr "" -"Verwenden Sie die Knöpfe in der Werkzeugleiste, um festzulegen, welche " -"Objekte anhand deren Status angezeigt werden sollen." - -#: C/meld.xml:300(title) -msgid "Name Filtering" -msgstr "Filterung nach Namen" - -#: C/meld.xml:302(para) -msgid "" -"Meld can hide certain filename patterns from the comparison using the toolbar " -"buttons. Customise the file patterns that are hidden in the File Filters " -"section of the Preferences dialog." -msgstr "" - -#: C/meld.xml:308(title) -msgid "Content Filtering" -msgstr "Filterung nach Inhalt" - -#: C/meld.xml:310(para) -msgid "" -"If differences between files exist, but all differences match the active " -"regular expressions specified in Text Filters section of the " -"Preferences dialog, then the filename is not highlighted " -"in red, but is insted italicised in regular font." -msgstr "" - -#: C/meld.xml:319(title) -msgid "Source Control" -msgstr "" - -#: C/meld.xml:324(para) -msgid "" -"To browse a working copy of a source control repository, choose " -"FileNew and select the Version Control Browser tab." -msgstr "" -"Um eine Arbeitskopie eines unter Versionskontrolle stehenden " -"Softwarebestandes zu durchsuchen, wählen Sie DateiNeu und wählen den Reiter " -"Versionskontrolle." - -#: C/meld.xml:327(para) -msgid "" -"The browser is used for examining and commiting or reverting local changes. " -"It is not intended to be a complete source control client." -msgstr "" - -#: C/meld.xml:334(para) -msgid "" -"The browser can filter on four states. To show or hide all files in a " -"particular state, select or deselect the corresponding toggle button in the " -"toolbar." -msgstr "" - -#: C/meld.xml:337(guibutton) -msgid "Normal" -msgstr "Normal" - -#: C/meld.xml:338(para) -msgid "The file has not changed since it was checked out or committed." -msgstr "" -"Die Datei wurde nicht geändert, seit sie zuletzt ausgecheckt oder eingespielt " -"wurde." - -#: C/meld.xml:340(guibutton) -msgid "Modified" -msgstr "Geändert" - -#: C/meld.xml:341(para) -msgid "The file has been locally changed, added, or removed." -msgstr "Die Datei wurde lokal geändert, hinzugefügt oder entfernt." - -#: C/meld.xml:343(guibutton) -msgid "Non VC" -msgstr "Nicht-VC" - -#: C/meld.xml:344(para) -msgid "" -"The file is non-version controlled: it exists locally but was not checked out " -"from a repository." -msgstr "" -"Die Datei steht nicht unter Versionskontrolle. Sie ist lokal vorhanden, wurde " -"aber nicht aus einem Softwarebestand ausgecheckt." - -#: C/meld.xml:346(guibutton) -msgid "Ignored" -msgstr "Ignoriert" - -#: C/meld.xml:347(para) -msgid "" -"The file is explicitly ignored e.g. though a .cvsignore " -"file." -msgstr "" -"Die Datei wird ausdrücklich ignoriert, z.B. in der Datei ." -"cvsignore." - -#: C/meld.xml:351(para) -msgid "" -"The Flatten toggle displays the directory listing as a " -"plain list, showing all subdirectory contents together. This makes it easier " -"to see several changes scattered in several directories or in a large tree. " -"This is especially useful in conjunction with only the modified filter active." -msgstr "" - -#: C/meld.xml:359(title) -msgid "Viewing Differences" -msgstr "Anzeigen von Unterschieden" - -#: C/meld.xml:361(para) -msgid "" -"Activating an unmodified file opens it in the file viewer. Activating a " -"modified file opens up a two way diff to examine your changes." -msgstr "" - -#: C/meld.xml:365(para) -msgid "" -"You can examine many changes at once using Shift+Click and Control+Click to " -"select multiple items." -msgstr "" - -#: C/meld.xml:371(title) -msgid "Making Changes" -msgstr "" - -#: C/meld.xml:373(para) -msgid "" -"The toolbar contains commands to perform the most common source control " -"operations. These operations are also accessible through a context menu." -msgstr "" - -#: C/meld.xml:379(title) -msgid "Viewing Console" -msgstr "" - -#: C/meld.xml:381(para) -msgid "" -"At the bottom of the source control window is an expander containing all the " -"source control operations and their output. Click the expander bar to toggle " -"between hiding and showing the console." -msgstr "" - -#: C/meld.xml:388(title) -msgid "Shortcut Keys" -msgstr "Tastenkombination" - -#: C/meld.xml:390(para) -msgid "" -"For more on shortcut keys, see the Desktop User Guide." -msgstr "" -"Weitere Informationen über Tastenkürzel finden Sie im Desktop-Benutzerhandbuch." - -#: C/meld.xml:394(title) -msgid "Shortcuts for working with files and comparisons" -msgstr "Tastenkürzel zum Arbeiten mit Dateien und Vergleichen" - -#: C/meld.xml:401(para) C/meld.xml:460(para) C/meld.xml:551(para) -#: C/meld.xml:594(para) -msgid "Shortcut" -msgstr "Tastenkürzel" - -#: C/meld.xml:403(para) C/meld.xml:462(para) C/meld.xml:553(para) -#: C/meld.xml:596(para) -msgid "Description" -msgstr "Beschreibung" - -#: C/meld.xml:410(keycap) C/meld.xml:418(keycap) C/meld.xml:426(keycap) -#: C/meld.xml:434(keycap) C/meld.xml:442(keycap) C/meld.xml:469(keycap) -#: C/meld.xml:477(keycap) C/meld.xml:485(keycap) C/meld.xml:493(keycap) -#: C/meld.xml:501(keycap) C/meld.xml:509(keycap) C/meld.xml:517(keycap) -#: C/meld.xml:525(keycap) C/meld.xml:533(keycap) C/meld.xml:568(keycap) -#: C/meld.xml:576(keycap) -msgid "Ctrl" -msgstr "Strg" - -#: C/meld.xml:410(keycap) -msgid "N" -msgstr "N" - -#: C/meld.xml:413(para) -msgid "Start a new comparison." -msgstr "Startet einen neuen Vergleich." - -#: C/meld.xml:418(keycap) C/meld.xml:426(keycap) -msgid "S" -msgstr "S" - -#: C/meld.xml:421(para) -msgid "Save the current document to disk." -msgstr "Speichert das aktuelle Dokument auf Festplatte." - -#: C/meld.xml:426(keycap) C/meld.xml:477(keycap) C/meld.xml:576(keycap) -msgid "Shift" -msgstr "Umschalt" - -#: C/meld.xml:429(para) -msgid "Save the current document with a new filename." -msgstr "Speichert das aktuelle Dokument unter einem neuen Namen." - -#: C/meld.xml:434(keycap) -msgid "W" -msgstr "W" - -#: C/meld.xml:437(para) -msgid "Close the current comparison." -msgstr "Schließt den aktuellen Vergleich" - -#: C/meld.xml:442(keycap) -msgid "Q" -msgstr "Q" - -#: C/meld.xml:445(para) -msgid "Quit Meld." -msgstr "Beendet Meld." - -#: C/meld.xml:453(title) -msgid "Shortcuts for editing documents" -msgstr "Tastenkürzel zum Bearbeiten von Dokumenten" - -#: C/meld.xml:469(keycap) C/meld.xml:477(keycap) -msgid "Z" -msgstr "Z" - -#: C/meld.xml:472(para) -msgid "Undo the last action." -msgstr "Macht die letzte Aktion rückgängig." - -#: C/meld.xml:480(para) -msgid "Redo the last undone action." -msgstr "Wiederholt die letzte rückgängig gemachte Aktion." - -#: C/meld.xml:485(keycap) -msgid "X" -msgstr "X" - -#: C/meld.xml:488(para) -msgid "Cut the selected text or region and place it on the clipboard." -msgstr "" -"Schneidet den markierten Text oder den markierten Bereich aus und verschiebt " -"ihn in die Zwischenablage." - -#: C/meld.xml:493(keycap) -msgid "C" -msgstr "C" - -#: C/meld.xml:496(para) -msgid "Copy the selected text or region onto the clipboard." -msgstr "" -"Kopiert den markierten Text oder den markierten Bereich in die Zwischenablage." - -#: C/meld.xml:501(keycap) -msgid "V" -msgstr "V" - -#: C/meld.xml:504(para) -msgid "Paste the contents of the clipboard." -msgstr "Fügt den Inhalt der Zwischenablage ein." - -#: C/meld.xml:509(keycap) -msgid "F" -msgstr "F" - -#: C/meld.xml:512(para) -msgid "Find a string." -msgstr "Sucht nach einer Zeichenkette." - -#: C/meld.xml:517(keycap) -msgid "G" -msgstr "G" - -#: C/meld.xml:520(para) -msgid "Find the next instance of the string." -msgstr "Findet das nächste Vorkommen der Zeichenkette." - -#: C/meld.xml:525(keycap) -msgid "D" -msgstr "D" - -#: C/meld.xml:528(para) -msgid "Go to the next difference." -msgstr "Springt zum nächsten Unterschied." - -#: C/meld.xml:533(keycap) -msgid "E" -msgstr "E" - -#: C/meld.xml:536(para) -msgid "Go to the previous difference." -msgstr "Springt zum vorherigen Unterschied." - -#: C/meld.xml:544(title) -msgid "Shortcuts for view settings" -msgstr "Tastenkürzel für Anzeigeoptionen" - -#: C/meld.xml:560(keycap) -msgid "Escape" -msgstr "Esc" - -#: C/meld.xml:563(para) -msgid "Stop the current comparison." -msgstr "Stoppt den aktuellen Vergleich." - -#: C/meld.xml:568(keycap) C/meld.xml:576(keycap) -msgid "R" -msgstr "R" - -#: C/meld.xml:571(para) -msgid "Refresh the current comparison." -msgstr "Aktualisiert den aktuellen Vergleich." - -#: C/meld.xml:579(para) -msgid "Reload the current comparison." -msgstr "Lädt den aktuellen Vergleich neu." - -#: C/meld.xml:587(title) -msgid "Shortcuts for help" -msgstr "Tastenkürzel für Hilfe" - -#: C/meld.xml:603(keycap) -msgid "F1" -msgstr "F1" - -#: C/meld.xml:606(para) -msgid "Open Meld's user manual." -msgstr "Öffnet das Benutzerhandbuch von Meld." - -#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. -#: C/meld.xml:0(None) -msgid "translator-credits" -msgstr "Mario Blättermann , 2009" diff -Nru meld-1.5.3/help/es/es.po meld-3.11.0/help/es/es.po --- meld-1.5.3/help/es/es.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/es/es.po 2014-02-08 21:03:00.000000000 +0000 @@ -1,386 +1,1504 @@ -# Spanish translation of Meld's manual -# Traducción al español del manual de Meld -# Jorge Gonzalez , 2005. +# Spanish translation for meld. +# Copyright (C) 2014 meld's COPYRIGHT HOLDER +# This file is distributed under the same license as the meld package. +# Daniel Mustieles , 2014. +# msgid "" msgstr "" -"Project-Id-Version: manual_meld\n" -"POT-Creation-Date: 2005-07-12 11:42+0200\n" -"PO-Revision-Date: 2005-07-14 21:13+0200\n" -"Last-Translator: Jorge Gonzalez \n" -"Language-Team: \n" +"Project-Id-Version: meld master\n" +"POT-Creation-Date: 2014-01-11 09:15+0000\n" +"PO-Revision-Date: 2014-01-13 16:09+0100\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Español \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Gtranslator 2.91.5\n" -#: meld.xml:4(title) meld.xml:7(title) -msgid "Meld Users Manual" -msgstr "Manual del usuario de Meld" +#. Put one translator per line, in the form NAME , YEAR1, YEAR2 +msgctxt "_" +msgid "translator-credits" +msgstr "Daniel Mustieles , 2014" -#: meld.xml:11(firstname) -msgid "Stephen" -msgstr "Stephen" +#. (itstool) path: info/title +#: C/vc-supported.page:5 +msgctxt "sort" +msgid "3" +msgstr "3" + +#. (itstool) path: credit/name +#: C/vc-supported.page:10 C/file-filters.page:10 C/text-filters.page:11 +#: C/resolving-conflicts.page:10 C/preferences.page:10 C/file-changes.page:10 +#: C/file-mode.page:11 C/flattened-view.page:10 C/index.page:8 +#: C/vc-mode.page:10 C/keyboard-shortcuts.page:10 C/introduction.page:10 +#: C/folder-mode.page:10 C/missing-functionality.page:10 +#: C/command-line.page:10 +msgid "Kai Willadsen" +msgstr "Kai Willadsen" + +#. (itstool) path: credit/years +#: C/vc-supported.page:12 C/file-filters.page:12 C/text-filters.page:13 +#: C/resolving-conflicts.page:12 C/file-changes.page:12 C/file-mode.page:13 +#: C/flattened-view.page:12 C/index.page:10 C/vc-mode.page:12 +#: C/keyboard-shortcuts.page:12 C/introduction.page:12 C/folder-mode.page:12 +#: C/missing-functionality.page:12 C/command-line.page:12 +msgid "2012" +msgstr "2012" + +#. (itstool) path: page/title +#: C/vc-supported.page:15 +msgid "Supported version control systems" +msgstr "Sistemas de control de versiones controlados" + +#. (itstool) path: page/p +#: C/vc-supported.page:17 +msgid "Meld supports a wide range of version control systems:" +msgstr "" +"Meld soporta un amplio rango de sistemas de control de versiones:" -#: meld.xml:13(surname) -msgid "Kennedy" -msgstr "Kennedy" +#. (itstool) path: item/p +#: C/vc-supported.page:22 +msgid "Arch" +msgstr "Arch" + +#. (itstool) path: item/p +#: C/vc-supported.page:23 +msgid "Bazaar" +msgstr "Bazaar" + +#. (itstool) path: item/p +#: C/vc-supported.page:24 +msgid "Codeville" +msgstr "Codeville" + +#. (itstool) path: item/p +#: C/vc-supported.page:25 +msgid "CVS" +msgstr "CVS" + +#. (itstool) path: item/p +#: C/vc-supported.page:26 +msgid "Fossil" +msgstr "Fossil" + +#. (itstool) path: item/p +#: C/vc-supported.page:27 +msgid "Git" +msgstr "Git" + +#. (itstool) path: item/p +#: C/vc-supported.page:28 +msgid "Mercurial" +msgstr "Mercurial" + +#. (itstool) path: item/p +#: C/vc-supported.page:29 +msgid "Monotone" +msgstr "Monotone" + +#. (itstool) path: item/p +#: C/vc-supported.page:30 +msgid "RCS" +msgstr "RCS" + +#. (itstool) path: item/p +#: C/vc-supported.page:31 +msgid "SVK" +msgstr "SVK" + +#. (itstool) path: item/p +#: C/vc-supported.page:32 +msgid "SVN" +msgstr "SVN" -#: meld.xml:15(email) -msgid "stevek@gnome.org" -msgstr "stevek@gnome.org" +#. (itstool) path: page/p +#: C/vc-supported.page:35 +msgid "" +"Less common version control systems or unusual configurations may not be " +"properly tested; please report any version control support bugs to GNOME bugzilla." +msgstr "" -#: meld.xml:20(year) -msgid "2004" -msgstr "2004" +#. (itstool) path: info/title +#: C/file-filters.page:5 C/text-filters.page:5 C/resolving-conflicts.page:5 +#: C/file-changes.page:5 C/flattened-view.page:5 C/keyboard-shortcuts.page:5 +#: C/command-line.page:5 +msgctxt "sort" +msgid "2" +msgstr "2" + +#. (itstool) path: page/title +#: C/file-filters.page:15 +msgid "Filtering out files" +msgstr "Filtrar archivos" -#: meld.xml:22(holder) -msgid "Stephen Kennedy" -msgstr "Stephen Kennedy" +#. (itstool) path: page/p +#: C/file-filters.page:17 +msgid "" +"When you compare folders, you may want to be able to ignore some files. For " +"example, you may wish to only see files that are present and different in " +"both folders, ignoring those that are the same or only exist in one folder. " +"Alternatively, you might want to ignore all the files in your .git directory, or ignore all images." +msgstr "" -#: meld.xml:25(releaseinfo) -msgid "This is version 0.1 of the meld manual, describing meld 0.9.6" -msgstr "Esta es la versión 0.1 del manual de meld y describe la versión 0.9.6 de meld" +#. (itstool) path: page/p +#: C/file-filters.page:25 +msgid "" +"Meld has several different ways of controlling which files and " +"what kind of differences you see. You can filter based on differences between a file across folders or file and folder names. You can also tell " +"Meld to treat filenames as being case insensitive. Finally, you can use text filters to change what both folder and file comparisons see." +msgstr "" -#: meld.xml:30(title) -msgid "Introduction" -msgstr "Introducción" +#. (itstool) path: note/p +#: C/file-filters.page:37 +msgid "" +"Any text filters you've defined " +"automatically apply when comparing folders. Files that are " +"identical after all of the text filters are applied are not highlighted as " +"being different, but are shown in italics." +msgstr "" -#: meld.xml:33(title) -msgid "What is meld" -msgstr "¿Qué es meld?" - -#: meld.xml:35(para) -msgid "Meld views differences between files and between directories. Meld makes it easy to isolate and merge these differences." -msgstr "Meld muestra las diferencias entre archivos y directorios. Meld hace sencillo aislar y mezclar estas diferencias." - -#: meld.xml:40(title) -msgid "Starting meld" -msgstr "Iniciar meld" - -#: meld.xml:43(title) -msgid "Command line arguments" -msgstr "Argumentos para la línea de comandos" +#. (itstool) path: section/title +#: C/file-filters.page:48 +msgid "File differences filtering" +msgstr "Filtrado por diferencias de archivo" -#: meld.xml:47(userinput) -#, no-wrap -msgid "meld" -msgstr "meld" +#. (itstool) path: section/p +#: C/file-filters.page:50 +msgid "" +"In a folder comparison, each line contains a single file or folder that is " +"present in at least one of the folders being compared. Each of these lines " +"is classified as being either Modifed, New or Same:" +msgstr "" -#: meld.xml:50(para) -msgid "start meld with the new document dialog" -msgstr "iniciar meld con el diálogo de documento nuevo" +#. (itstool) path: item/title +#. (itstool) path: td/p +#: C/file-filters.page:58 C/vc-mode.page:107 C/folder-mode.page:148 +msgid "Modified" +msgstr "Modificado" + +#. (itstool) path: item/p +#: C/file-filters.page:59 +msgid "The file exists in multiple folders, but the files are different" +msgstr "El archivo existe en varias carpetas, pero los archivos son diferentes" + +#. (itstool) path: item/title +#. (itstool) path: td/p +#: C/file-filters.page:62 C/vc-mode.page:121 C/folder-mode.page:162 +msgid "New" +msgstr "Nuevo" + +#. (itstool) path: item/p +#: C/file-filters.page:63 +msgid "The file exists in one folder but not in the others" +msgstr "El archivo existe en una carpeta pero no en otras" + +#. (itstool) path: item/title +#. (itstool) path: td/p +#: C/file-filters.page:66 C/vc-mode.page:93 C/folder-mode.page:118 +msgid "Same" +msgstr "El mismo" + +#. (itstool) path: item/p +#: C/file-filters.page:67 +msgid "The file exists in all folders, and is the same everywhere" +msgstr "El archivo existe en todas las carpetas y es el mismo en todas ellas" -#: meld.xml:55(userinput) -#, no-wrap -msgid "meld <file> <file>\n [file]" -msgstr "meld <archivo> <archivo>\n [archivo]" +#. (itstool) path: section/p +#: C/file-filters.page:70 +msgid "" +"You can change which types of differences you see in your current comparison " +"by using the Same, New and Modified buttons on the toolbar or the " +"ViewFile Status menu." +msgstr "" + +#. (itstool) path: note/p +#: C/file-filters.page:80 +msgid "" +"Currently, you can only filter files based on their state; folders can't be " +"filtered in this way. For example, you can't tell Meld to ignore " +"all folders that contain only new files. A folder containing only \"New\" " +"files would show up as empty, but still present." +msgstr "" + +#. (itstool) path: section/title +#: C/file-filters.page:94 +msgid "Filename filtering" +msgstr "Filtrado por nombre de archivo" + +#. (itstool) path: section/p +#: C/file-filters.page:96 +msgid "" +"Meld comes with a useful set of filename filters that let you " +"ignore uninteresting files and folders like common backup files and the " +"metadata folders of version control systems. Each filename filter can be " +"separately activated or deactivated from the Filters button on the toolbar or the ViewFile Filters menu." +msgstr "" + +#. (itstool) path: section/p +#: C/file-filters.page:106 +msgid "" +"You can add, remove or change filename filters from the File Filters section of the Preferences dialog. Filename " +"filters specify patterns of filenames that will not be looked at " +"when performing a folder comparison. Any file that matches an active filter " +"won't even show up in the tree comparison. Filename filters match both files " +"and folders; if a folder matches a filter, it and all of its contents are " +"ignored." +msgstr "" + +#. (itstool) path: section/p +#: C/file-filters.page:116 +msgid "" +"Filename filters match according to shell glob patterns. For example, " +"*.jpg will match all filenames ending in .jpg. The " +"following table lists all of the shell glob characters that Meld " +"recognises." +msgstr "" + +#. (itstool) path: table/title +#: C/file-filters.page:124 +msgid "Shell glob patterns" +msgstr "" + +#. (itstool) path: td/p +#: C/file-filters.page:128 +msgid "Wildcard" +msgstr "Comodín" + +#. (itstool) path: td/p +#: C/file-filters.page:128 +msgid "Matches" +msgstr "Coincidencias" + +#. (itstool) path: td/p +#: C/file-filters.page:134 +msgid "*" +msgstr "*" + +#. (itstool) path: td/p +#: C/file-filters.page:135 +msgid "anything (i.e., zero or more characters)" +msgstr "cualquier cosa (cero o más caracteres)" + +#. (itstool) path: td/p +#: C/file-filters.page:138 +msgid "?" +msgstr "?" + +#. (itstool) path: td/p +#: C/file-filters.page:139 +msgid "exactly one character" +msgstr "exactamente un carácter" + +#. (itstool) path: td/p +#: C/file-filters.page:142 +msgid "[abc]" +msgstr "[abc]" + +#. (itstool) path: td/p +#: C/file-filters.page:143 +msgid "any one of the listed characters" +msgstr "cualquiera de los caracteres listados" + +#. (itstool) path: td/p +#: C/file-filters.page:146 +msgid "[!abc]" +msgstr "[!abc]" + +#. (itstool) path: td/p +#: C/file-filters.page:147 +msgid "anything except one of the listed characters" +msgstr "cualquier carácter excepto los listados" + +#. (itstool) path: td/p +#: C/file-filters.page:150 +msgid "{cat,dog}" +msgstr "{gato,perro}" + +#. (itstool) path: td/p +#: C/file-filters.page:151 +msgid "either \"cat\" or \"dog\"" +msgstr "cualquiera de «gato» o «perro»" + +#. (itstool) path: note/p +#: C/file-filters.page:157 +msgid "" +"Changing a filter's Active setting in the Preferences " +"dialog changes whether that filter is active by default." +msgstr "" + +#. (itstool) path: note/p +#: C/file-filters.page:163 +msgid "" +"Activating a filter from the menu or the toolbar turns the filter on or off " +"for this comparison only." +msgstr "" + +#. (itstool) path: section/title +#: C/file-filters.page:174 +msgid "Case insensitive filenames" +msgstr "Nombres de archivo no sensibles a capitalización" + +#. (itstool) path: section/p +#: C/file-filters.page:176 +msgid "" +"Files are compared across directories according to their name. This " +"comparison is case sensitive by default; that is, the files README, readme and ReadMe would all be seen as " +"different files." +msgstr "" + +#. (itstool) path: section/p +#: C/file-filters.page:183 +msgid "" +"When comparing folders on some filesystems (e.g., HFS+ or FAT) you may wish " +"to make Meld treat filenames as case insensitive. You can do this " +"by selecting ViewIgnore filename case from the menus." +msgstr "" + +#. (itstool) path: page/title +#: C/text-filters.page:17 +msgid "Filtering out text" +msgstr "Filtrado de texto" + +#. (itstool) path: page/p +#: C/text-filters.page:19 +msgid "" +"When comparing several files, you may have sections of text where " +"differences aren't really important. For example, you may want to focus on " +"changed sections of code, and ignore any changes in comment lines. With text " +"filters you can tell Meld to ignore text that matches a pattern " +"(i.e., a regular expression) when showing differences between files." +msgstr "" + +#. (itstool) path: note/p +#: C/text-filters.page:28 +msgid "" +"Text filters don't just affect file comparisons, but also folder " +"comparisons. Check the file filtering notes for more details." +msgstr "" + +#. (itstool) path: section/title +#: C/text-filters.page:37 +msgid "Adding and using text filters" +msgstr "" + +#. (itstool) path: section/p +#: C/text-filters.page:39 +msgid "" +"You can turn text filters on or off from the the Text Filters tab " +"in Preferences dialog. Meld comes with a few simple " +"filters that you might find useful, but you can add your own as well." +msgstr "" + +#. (itstool) path: section/p +#: C/text-filters.page:45 +msgid "" +"In Meld, text filters are regular expressions that are matched " +"against the text of files you're comparing. Any text that is matched is " +"ignored during the comparsion; you'll still see this text in the comparison " +"view, but it won't be taken into account when finding differences. Text " +"filters are applied in order, so it's possible for the first filter to " +"remove text that now makes the second filter match, and so on." +msgstr "" + +#. (itstool) path: note/p +#: C/text-filters.page:55 +msgid "" +"If you're not familiar with regular expressions, you might want to check out " +"the Python Regular " +"Expression HOWTO." +msgstr "" + +#. (itstool) path: section/title +#: C/text-filters.page:67 +msgid "Getting text filters right" +msgstr "" -#: meld.xml:59(para) meld.xml:69(para) -msgid "start meld with either a two way or three way file comparison" -msgstr "iniciar meld con el modo de comparación para 2 o 3 archivos" +#. (itstool) path: section/p +#: C/text-filters.page:69 +msgid "" +"It's easy to get text filtering wrong, and Meld's support for filtering " +"isn't complete. In particular, a text filter can't change the number of " +"lines in a file. For example, if we had the built-in Script comment filter enabled, and compared the following files:" +msgstr "" -#: meld.xml:65(userinput) +#. (itstool) path: listing/title +#: C/text-filters.page:80 +msgid "comment1.txt" +msgstr "comentario1.txt" + +#. (itstool) path: listing/code +#: C/text-filters.page:81 #, no-wrap -msgid "meld <dir> <dir>\n [dir]" -msgstr "meld <dir> <dir>\n [dir]" +msgid "" +"\n" +"a\n" +"b#comment\n" +"c\n" +"d" +msgstr "" +"\n" +"a\n" +"b#comentario\n" +"c\n" +"d" + +#. (itstool) path: listing/title +#: C/text-filters.page:90 +msgid "comment2.txt" +msgstr "comentario2.txt" -#: meld.xml:75(userinput) +#. (itstool) path: listing/code +#: C/text-filters.page:91 #, no-wrap -msgid "meld <dir|file>" -msgstr "meld <dir|archivo>" +msgid "" +"\n" +"a\n" +"b\n" +"c\n" +"#comment" +msgstr "" +"\n" +"a\n" +"b\n" +"c\n" +"#comentario" -#: meld.xml:78(para) -msgid "start meld with the source control browser" -msgstr "iniciar meld con el visor de control de código" - -#: meld.xml:84(para) -msgid "\"<>\" demote required arguments, \"[]\" denote optional arguments and \"|\" a choice." -msgstr "«<>» denotan argumentos requeridos, «[]» denotan argumentos opcionales y «|» una opción." - -#: meld.xml:89(para) -msgid "Run meld --help for a complete list of options" -msgstr "Ejecute meld --help para obtener una lista completa de las opciones" - -#: meld.xml:97(title) -msgid "File Comparison" -msgstr "Comparación de archivos" - -#: meld.xml:100(title) meld.xml:226(title) meld.xml:355(title) -msgid "Starting" -msgstr "Comenzar" - -#: meld.xml:102(para) -msgid "Use File...->New...->File Comparison to start a new file comparison. You can compare two or three files." -msgstr "Para comenzar una comparación nueva use Archivo...->Nuevo...->Comparación de archivos. Puede comparar dos o tres archivos." - -#: meld.xml:105(para) meld.xml:232(para) -msgid "For two way comparisons the original is shown in the left pane and the modified version in the right pane by convention." -msgstr "Para una comparación de dos archivos, por convenio, el original se muestra en el panel de la izquierda y la versión modificada en el panel de la derecha." - -#: meld.xml:108(para) meld.xml:235(para) -msgid "For three way comparisons, the original is shown in the centre pane and the left and right panes show the modified versions. By convention we put the locally modified file in the right pane." -msgstr "Para una comparación de tres archivos, el original se muestra en el panel del centro y los paneles a izquierda y derecha muestran las versiones modificadas. Por convenio se pone en el panel de la derecha la copia local modificada." - -#: meld.xml:114(title) meld.xml:241(title) -msgid "Change Summary" -msgstr "Resumen de cambios" - -#: meld.xml:116(para) -msgid "The location of the changes is summarised in the window margins at the far left and right. By default green marks insertions and deletions and blue marks changes." -msgstr "La posición de los cambios se resume en los márgenes de la ventana a izquierda y derecha. Por omisión el verde marca los añadidos y borrados mientras que el azul son cambios." - -#: meld.xml:120(para) meld.xml:246(para) -msgid "You can jump to an individual change by clicking in the margin or using the scrollbar." -msgstr "Puede saltar a un cambio individual pulsando en el margen o usando la barra de desplazamiento." - -#: meld.xml:125(title) meld.xml:251(title) -msgid "Detailed View" -msgstr "Vista detallada" - -#: meld.xml:127(para) -msgid "Detailed differences are shown in the text and central pane. Inserted text is shown with a solid background. Lines containing changes are marked with a light background with the individual changes highlighted with a stronger colour." -msgstr "Los detalles de las diferencias se muestran en el texto y en el panel central. El texto insertado se muestra sobre un fondo sólido. Las líneas que contienen cambios se marcan sobre un fondo claro con los cambios individuales resaltados en un color más fuerte." - -#: meld.xml:132(para) -msgid "The area between each file shows where each change occurs in the other file. You can scroll through the changes by rolling the mouse wheel over this area or with keyboard shortcuts Control+D, Control+E." -msgstr "El área entre cada archivo muestra dónde ocurre cada cambio en el otro archivos. Puede desplazarse a través de los cambios utilizando la rueda del ratón sobre este área o bien usando las combinaciones de teclas Control+D, Control+E." - -#: meld.xml:139(title) meld.xml:269(title) -msgid "Editing" -msgstr "Edición" - -#: meld.xml:141(para) -msgid "You can edit the files as you would in a normal text editor. The differences will update automatically. Use Control+F to search and Control+G to repeat the last search." -msgstr "Puede editar los archivos al igual que si fuese un editor de textos normal. Las diferencias se actualizarán automáticamente. Utilice Control+F para buscar y Control+G para repetir la última búsqueda." - -#: meld.xml:145(para) -msgid "You can also apply changes by clicking the merge buttons (\"->\" and \"<-\"). Holding Shift allows blocks to be deleted. Holding Control allows the current change to be inserted before or after the other change." -msgstr "Puede aplicar cambios pulsando los botones de combinar (\"->\" y \"<-\"). Manteniendo pulsada la tecla Mayús. se pueden borrar bloques. Manteniendo pulsada la tecla Control se puede hacer que el cambio actual se inserte antes o después de otro cambio." - -#: meld.xml:151(para) -msgid "You can apply all the changes from a given file by right clicking a text pane and choosing Copy all left or Copy all right. You can also launch an external editor from this menu. Configure the external editor in Settings->Preferences->Editor" -msgstr "Puede aplicar todos los cambios desde un archivo pulsando con el botón derecho sobre uno de los paneles de texto y eligiendo Copiar todo lo de la izquierda o Copiar todo lo de la derecha. También puede lanzar un editor externo desde este menú. Configure el editor externo en Configuración->Preferencias->Editor" - -#: meld.xml:160(title) meld.xml:283(title) meld.xml:367(title) -msgid "Filtering" -msgstr "Filtrado" - -#: meld.xml:162(para) -msgid "You can ignore certain types of differences in order to locate important differences. All these settings are available from Settings->Preferences->Text Filters." -msgstr "Puede ignorar cierto tipo de diferencias para encontrar diferencias más importantes. Todas estas opciones están disponibles en Configuración->Preferencias->Filtros de texto." - -#: meld.xml:167(title) -msgid "Regular Expressions" -msgstr "Expresiones regulares" - -#: meld.xml:169(para) -msgid "When comparing files, each selected regular expression is run in turn over each file. If the expression does not contain groups then anything matching the expression is replaced by the empty string before comparison is performed. If there are one or more groups then only the groups are replaced by the empty string instead of the entire match." -msgstr "Al comparar archivos, cada una de las expresiones regulares seleccionadas se ejecuta alternadamente sobre cada archivo. Si la expresión no contiene grupos entonces cualquier cosa que coincida con la expresión regular se sustituye por una cadena vacía antes de que comience la comparación. Si hay uno o más grupos entonces sólo estos grupos son sustituidos por la cadena vacía en lugar de la coincidencia completa." - -#: meld.xml:177(para) -msgid "Replacement typically happens on several lines at a time. The input string will likely contain newline characters (\\n). If your regular expression matches newlines the comparison will be incorrect. (The technical reason is that incremental difference updates with multiline text replacement is tricky and not yet implemented.)" -msgstr "El reemplazo ocurre a menudo en varias líneas a la vez. La cadena de entrada puede que contenga caracteres de línea nueva (\\n). Si su expresión regular coincide con líneas nuevas la comparación será incorrecta. (La razón técnica es que las actualizaciones de diferencias incrementales en textos multilínea es complicada y no está implementada.)" - -#: meld.xml:186(para) -msgid "See the python re module for more information on regular expressions" -msgstr "Vea el módulo «re» de python para obtener más información acerca de expresiones regulares" - -#: meld.xml:192(title) -msgid "Blank Lines" -msgstr "Líneas en blanco" - -#: meld.xml:194(para) -msgid "Changes which insert or remove blank lines can be ignored. This option is most useful in conjunction with one or more regular expression filters." -msgstr "Los cambios que introducen o eliminan líneas en blanco pueden ignorarse. Esta opción es más útil si se usa combinada con uno o más filtros de expresiones regulares." - -#: meld.xml:201(title) -msgid "Saving" -msgstr "Guardar" - -#: meld.xml:203(para) -msgid "When you have unsaved changes, a disk icon will appear beside the file name of the changed file. The tab label and window title also have an asterix after the file name." -msgstr "Cuando se tienen cambios sin guardar, un icono con un disco aparecerá al lado del nombre del archivo que se ha modificado. La etiqueta de la solapa y la ventana contendrán un asterisco después del nombre del archivo." - -#: meld.xml:207(para) -msgid "Save a file pressing Control+s, by selecting File->Save from the menu or by the toolbar save button. All of these save the currently focussed file (the file containing the edit cursor)" -msgstr "Guarde un archivo pulsando Control+s, seleccionando Archivo->Guardar desde el menú o bien con el botón de guardar de la barra de herramientas. Todas estas opciones guardan el archivo con el que se está trabajando actualmente (el que contiene el cursor)" - -#: meld.xml:214(title) -msgid "Status Bar" -msgstr "Barra de estado" - -#: meld.xml:216(para) -msgid "The status bar shows the cursor location (line and column) and also progress messages as files are initially loaded and compared." -msgstr "La barra de estado muestra la posición del cursor (línea y columna) y también el progreso de los mensajes mientras se cargan y comparan archivos." - -#: meld.xml:223(title) -msgid "Folder Comparison" -msgstr "Comparación de carpetas" - -#: meld.xml:228(para) -msgid "Use File...->New...->Directory Comparison to start a new directory comparison. You can compare two or three directories." -msgstr "Para comenzar una nueva comparación de directorios use Archivo->Nuevo...->Comparación de directorios. Puede comparar dos o tres directorios." - -#: meld.xml:243(para) -msgid "Similarly to the file comparison, the window margins mark file deletions, creations and modifications." -msgstr "Similar a la comparación de archivos, en los márgenes de las ventanas se marcan los directorios nuevos, borrados y/o modificados." - -#: meld.xml:253(para) -msgid "Modified files are highlighted with red, created files with green and deleted files with a strikethrough. See also " -msgstr "Los archivos modificados se resaltan en rojo, los nuevos en verde y los borrados se tachan. Vea también " - -#: meld.xml:256(para) -msgid "The file or folder most recently modified has a red dot superimposed on its icon. More detailed information such as file permission and modification time can be seen in the status bar when a file is selected." -msgstr "El archivo o carpeta más recientemente modificado tiene un punto rojo superpuesto en el icono. Se puede ver información detallada acerca de los permisos y la hora de modificación en la barra de estado al seleccionar el archivo o directorio." - -#: meld.xml:261(para) -msgid "Use the mouse or the the cursor keys Up, Down, Left and Right to navigate. Additionally Control+D and Control+E move to the next and previous modification respectively." -msgstr "Para navegar utilice el ratón o las teclas Arriba, Abajo, Izquierda y Derecha. Adicionalmente puede usar Control+D y Control+E para moverse por las modificaciones siguiente y previa respectivamente." - -#: meld.xml:271(para) -msgid "Activate an item with double click or Return to start an individual file comparison." -msgstr "Active un objeto con una pulsación doble del ratón o bien pulsando la tecla Intropara comenzar una comparación de archivos individual." - -#: meld.xml:274(para) -msgid "Additional options are available from a right click context menu." -msgstr "Existen opciones adiciones disponibles en el menú contextual al pulsar con el botón derecho del ratón." - -#: meld.xml:277(para) -msgid "Use Shift+Click and Control+Click to select multiple items." -msgstr "Para seleccionar múltiples objetos utilice Mayús.+pulsación del ratón y Control+pulsación del ratón." - -#: meld.xml:285(para) -msgid "Often the initial comparison will contain too much spurious information. You can use filters to isolate the differences which are important to you." -msgstr "A menudo la comparación inicial contiene demasiada información espúrea. Puede usar los filtros para aislar las diferencias que considere importantes." - -#: meld.xml:290(title) -msgid "Explicit Hiding" -msgstr "Ocultar explícitamente" - -#: meld.xml:292(para) -msgid "Use the toolbar button to hide an item (and all subitems for directories)." -msgstr "Para ocultar un objeto (y todos los subdirectorios para directorios) use el botón de ocultar de la barra de herramientas." - -#: meld.xml:297(title) -msgid "Case Sensitivity" -msgstr "Sensibilidad a capitalización" - -#: meld.xml:299(para) -msgid "By default filename comparisons are case sensitive. Use the toolbar button to toggle case sensitivty of filenames." -msgstr "Por omisión las comparaciones de archivos por nombre son sensibles a capitalización. Utilice el botón de la barra de herramientas para cambiar esta opción." - -#: meld.xml:304(title) -msgid "State Filtering" -msgstr "Filtrado por estado" - -#: meld.xml:308(para) -msgid "Modified (there is some content difference between files which are present)" -msgstr "Modificado (hay alguna diferencia de contenido entre los archivos presentes)" - -#: meld.xml:313(para) -msgid "New (there is no content difference between present files, but the file is missing from at least one directory)" -msgstr "Nuevo (no hay diferencias de contenido entre los archivos presentes pero el archivo falta en, al menos, un directorio)" - -#: meld.xml:318(para) -msgid "Identical (all files have equal content and are all present)" -msgstr "Idéntico (los archivos tienen el mismo contenido y todos existen)" - -#: meld.xml:306(para) -msgid "All items have a state which is one of: " -msgstr "Todos los objetos tienen un estado que es uno de: " - -#: meld.xml:325(para) -msgid "In the current version, only files are filtered by state. Directories are always shown." -msgstr "En la versión actual sólo los archivos se filtran por estado. Los directorios siempre se muestran." - -#: meld.xml:323(para) -msgid "Use the toolbar buttons to control which items are shown by their state." -msgstr "Para controlar qué objetos se muestran por su estado use los botones de la barra de herramientas." - -#: meld.xml:331(title) -msgid "Name Filtering" -msgstr "Filtrado por nombre" - -#: meld.xml:333(para) -msgid "You can hide selected filename patterns from the comparison using the toolbar buttons. Use Settings->Preferences->File Filters to customise the file patterns." -msgstr "Puede ocultar de la comparación los patrones de nombres de archivo seleccionados usando la barra de herramientas. Utilice Configuración->Preferencias->Filtros de archivo para personalizar los patrones." - -#: meld.xml:340(title) -msgid "Content Filtering" -msgstr "Filtrado por contenido" - -#: meld.xml:342(para) -msgid "If differences between files exist, but all differences match the active regular expressions specified in Settings->Preferences->Text Filters, then the filename is not highlighted in red, but is insted italicised in regular font." -msgstr "Si existen diferencias entre archivos, pero todas ellas coinciden con las expresiones regulares especificadas en Configuración->Preferencias->Filtros de texto, entonces el nombre de archivo no se resalta en rojo pero aparece en cursiva." - -#: meld.xml:352(title) -msgid "Source Control" -msgstr "Control de código" - -#: meld.xml:357(para) -msgid "Use File...->New...->CVS Browser or File...->New...->SVN Browser to start browsing a working copy." -msgstr "Para visualizar una copia de trabajo utilice Archivo->Nuevo...->Visor CVS o Archivo->Nuevo...->Visor SVN." - -#: meld.xml:361(para) -msgid "The browser is used for examining and commiting or reverting local changes. It is not intended to be a complete source control client." -msgstr "El visor se usa para examinar y efectuar o revertir cambios locales. No está desarrollado para ser un cliente de control de código completo." - -#: meld.xml:371(para) -msgid "Normal (the file is unchanged since it was checked out)" -msgstr "Normal (el archivo no ha sufrido cambios desde la última vez que se revisó)" - -#: meld.xml:376(para) -msgid "Non controlled (the file exists locally but was not checked out)" -msgstr "No controlados (el archivo existe localmente pero no se ha revisado)" - -#: meld.xml:381(para) -msgid "Ignored (the file is explicitly ignored e.g. though .cvsignore)" -msgstr "Ignorados (el archivo se ignora explícitamente e.j. a través de .cvsignore)" - -#: meld.xml:386(para) -msgid "Modified (locally changed, added or removed)" -msgstr "Modificados (localmente, añadidos o eliminados)" - -#: meld.xml:369(para) -msgid "The browser can filter on four states:" -msgstr "El visor puede filtrar sobre cuatro estados: " - -#: meld.xml:390(para) -msgid "If you have several changes scattered in several directories or in a large tree, the 'Recurse' tooggle is flattens the directory listing. This is especially useful in conjunction with only the modified filter active." -msgstr "Si existen varios cambios en varios directorios o en un árbol grande, el conmutador «Recursivo» aplanar el listado de directorios. Es especialmente útil usarlo junto con el filtro de «modificados»." - -#: meld.xml:397(title) -msgid "Viewing Differences" -msgstr "Ver las diferencias" - -#: meld.xml:399(para) -msgid "Activating an unmodified file opens it in the file viewer. Activating a modified file opens up a two way diff to examine your changes." -msgstr "Activar un archivo sin modificar lo abre en el visor de archivos. Activar un archivo modificado abre una comparación de dos vías para examinar los cambios." - -#: meld.xml:403(para) -msgid "You can examine many changes at once using Shift+Click and Control+Click to select multiple items." -msgstr "Puede examinar varios cambios a la vez usando Mayús+pulsación del ratón y Control+pulsación del ratón para seleccionar múltiples objetos." - -#: meld.xml:410(title) -msgid "Making Changes" -msgstr "Cambios" - -#: meld.xml:412(para) -msgid "The toolbar contains commands to perform the most common source control operations. These operations are also accessible through a context menu." -msgstr "La barra de herramientas contiene comandos para realizar las operaciones más comunes sobre el control del código. También se puede acceder a estas operaciones a través de un menú contextual." - -#: meld.xml:418(title) -msgid "Viewing Console" -msgstr "Mostrar la consola" - -#: meld.xml:420(para) -msgid "At the bottom of the source control window is an expander containing all the source control operations and their output. Click the expander bar to toggle between hiding and showing the console." -msgstr "En la parte inferior de la ventana de control de código se puede expandir una ventana que contiene todas las operaciones de control de código y su salida. Pulse en la barra del expansor para cambiar entre ocultar y mostrar la consola." +#. (itstool) path: section/p +#: C/text-filters.page:101 +msgid "" +"then the lines starting with b would be shown as identical (the " +"comment is stripped out) but the d line would be shown as " +"different to the comment line on the right. This happens because the " +"#comment is removed from the right-hand side, but the line " +"itself can not be removed; Meld will show the d line " +"as being different to what it sees as a blank line on the other side." +msgstr "" -#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. -#: meld.xml:0(None) -msgid "translator-credits" +#. (itstool) path: section/title +#: C/text-filters.page:114 +msgid "Blank lines and filters" +msgstr "Líneas en blanco y filtros" + +#. (itstool) path: section/p +#: C/text-filters.page:116 +msgid "" +"The Ignore changes which insert or delete blank lines preference " +"in the Text Filters tab requires special explanation. If this " +"special filter is enabled, then any change consisting only of blank lines is " +"completely ignored. This may occur because there was an actual whitespace " +"change in the text, but it may also arise if your active text filters have " +"removed all of the other content from a change, leaving only blank lines." +msgstr "" + +#. (itstool) path: section/p +#: C/text-filters.page:125 +msgid "" +"You can use this option to get around some of the problems and limitations resulting from filters not being " +"able to remove whole lines, but it can also be useful in and of itself." +msgstr "" + +#. (itstool) path: page/title +#: C/resolving-conflicts.page:15 +msgid "Resolving merge conflicts" +msgstr "Resolver conflictos al combinar" + +#. (itstool) path: page/p +#: C/resolving-conflicts.page:17 +msgid "" +"One of the best uses of Meld is to resolve conflicts that occur " +"while merging different branches." +msgstr "" + +#. (itstool) path: page/p +#: C/resolving-conflicts.page:22 +msgid "" +"For example, when using Git, git mergetool will start " +"a 'merge helper'; Meld is one such helper. If you want to make " +"git mergetool use Meld by default, you can add" +msgstr "" + +#. (itstool) path: page/code +#: C/resolving-conflicts.page:27 +#, no-wrap +msgid "" +"\n" +"[merge]\n" +" tool = meld\n" +msgstr "" +"\n" +"[merge]\n" +" tool = meld\n" + +#. (itstool) path: page/p +#: C/resolving-conflicts.page:31 +msgid "" +"to .git/gitconfig. See the git mergetool manual for " +"details." +msgstr "" +"al archivo .git/gitconfig. Consulte el manual de git " +"mergetool para obtener más detalles." + +#. (itstool) path: info/title +#: C/preferences.page:5 C/file-mode.page:5 C/introduction.page:5 +#: C/folder-mode.page:5 C/missing-functionality.page:5 +msgctxt "sort" +msgid "1" +msgstr "1" + +#. (itstool) path: credit/years +#: C/preferences.page:12 +msgid "2013" +msgstr "2013" + +#. (itstool) path: page/title +#: C/preferences.page:15 +msgid "Meld's preferences" +msgstr "Preferencias de Meld" + +#. (itstool) path: terms/title +#: C/preferences.page:18 +msgid "Editor preferences" +msgstr "Preferencias del editor" + +#. (itstool) path: item/title +#: C/preferences.page:20 +msgid "Editor command" +msgstr "Comando del editor" + +#. (itstool) path: item/p +#: C/preferences.page:21 +msgid "" +"The name of the command to run to open text files in an external editor. " +"This may be just the command (e.g., gedit) in which case the file " +"to be opened will be passed as the last argument. Alternatively, you can add " +"{file} and {line} elements to the command, in " +"which case Meld will substitute the file path and current line " +"number respectively (e.g., gedit {file}:{line})." +msgstr "" + +#. (itstool) path: page/title +#: C/file-changes.page:16 +msgid "Dealing with changes" +msgstr "" + +#. (itstool) path: page/p +#: C/file-changes.page:18 +msgid "" +"Meld deals with differences between files as a list of change " +"blocks or more simply changes. Each change is a group of lines " +"which correspond between files. Since these changes are what you're usually " +"interested in, Meld gives you specific tools to navigate between " +"these changes and to edit them. You can find these tools in the Changes menu." +msgstr "" + +#. (itstool) path: section/title +#: C/file-changes.page:30 +msgid "Navigating between changes" +msgstr "" + +#. (itstool) path: section/p +#: C/file-changes.page:32 +msgid "" +"You can navigate between changes with the ChangesPrevious change and " +"ChangesNext " +"change menu items. You can also use your mouse's scroll wheel " +"to move between changes, by scrolling on the central change bar." +msgstr "" + +#. (itstool) path: section/title +#: C/file-changes.page:46 +msgid "Changing changes" +msgstr "" + +#. (itstool) path: section/p +#: C/file-changes.page:48 +msgid "" +"In addition to directly editing text files, Meld gives you tools " +"to move, copy or delete individual differences between files. The bar " +"between two files not only shows you what parts of the two files correspond, " +"but also lets you selectively merge or delete differing changes by clicking " +"the arrow or cross icons next to the start of each change." +msgstr "" + +#. (itstool) path: section/p +#: C/file-changes.page:52 +msgid "" +"The default action is replace. This action replaces the contents of " +"the corresponding change with the current change." +msgstr "" + +#. (itstool) path: section/p +#: C/file-changes.page:59 +msgid "" +"Hold down the Shift key to change the current action to " +"delete. This action deletes the current change." +msgstr "" + +#. (itstool) path: section/p +#: C/file-changes.page:62 +msgid "" +"Hold down the Ctrl key to change the current action to " +"insert. This action inserts the current change above or below (as " +"selected) the corresponding change." +msgstr "" + +#. (itstool) path: page/title +#: C/file-mode.page:17 +msgid "Getting started comparing files" +msgstr "" + +#. (itstool) path: page/p +#: C/file-mode.page:19 +msgid "" +"Meld lets you compare two or three text files side-by-side. You " +"can start a new file comparison by selecting the FileNew... menu item." +msgstr "" + +#. (itstool) path: page/p +#: C/file-mode.page:26 +msgid "" +"Once you've selected your files, Meld will show them side-by-" +"side. Differences between the files will be highlighted to make individual " +"changes easier to see. Editing the files will cause the comparison to update " +"on-the-fly. For details on navigating between individual changes, and on how " +"to use change-based editing, see ." +msgstr "" + +#. (itstool) path: section/title +#: C/file-mode.page:35 +msgid "Meld's file comparisons" +msgstr "" + +#. (itstool) path: section/p +#: C/file-mode.page:37 +msgid "" +"There are several different parts to a file comparison. The most important " +"parts are the editors where your files appear. In addition to these editors, " +"the areas around and between your files give you a visual overview and " +"actions to help you handle changes between the files." +msgstr "" + +#. (itstool) path: section/p +#: C/file-mode.page:43 +msgid "" +"On the left and right-hand sides of the window, there are two small vertical " +"bars showing various coloured blocks. These bars are designed to give you an " +"overview of all of the differences between your two files. Each coloured " +"block represents a section that is inserted, deleted, changed or in conflict " +"between your files, depending on the block's colour used." +msgstr "" + +#. (itstool) path: section/p +#: C/file-mode.page:50 +msgid "" +"In between each pair of files is a segment that shows how the changed " +"sections between your files correspond to each other. You can click on the " +"arrows in a segment to replace sections in one file with sections from the " +"other. You can also delete, copy or merge changes. For details on what you " +"can do with individual change segments, see ." +msgstr "" + +#. (itstool) path: section/title +#: C/file-mode.page:62 +msgid "Saving your changes" +msgstr "Guardar los cambios" + +#. (itstool) path: section/p +#: C/file-mode.page:64 +msgid "" +"Once you've finished editing your files, you need to save each file you've " +"changed." +msgstr "" + +#. (itstool) path: section/p +#: C/file-mode.page:68 +msgid "" +"You can tell whether your files have been saved since they last changed by " +"the save icon that appears next to the file name above each file. Also, the " +"notebook label will show an asterisk (*) after any file that " +"hasn't been saved." +msgstr "" + +#. (itstool) path: section/p +#: C/file-mode.page:74 +msgid "" +"You can save the current file by selecting the FileSave menu item, or using " +"the CtrlS keyboard shortcut." +msgstr "" + +#. (itstool) path: note/p +#: C/file-mode.page:81 +msgid "" +"Saving only saves the currently focussed file, which is the file " +"containing the cursor. If you can't tell which file is focussed, you can " +"click on the file to focus it before saving." +msgstr "" + +#. (itstool) path: page/title +#: C/flattened-view.page:15 +msgid "Flattened view" +msgstr "" + +#. (itstool) path: page/p +#: C/flattened-view.page:17 +msgid "" +"When viewing large folders, you may be interested in only a few files among " +"the thousands in the folder itself. For this reason, Meld " +"includes a flattened view of a folder; only files that have not " +"been filtered out (e.g., by ) are " +"shown, and the folder heirarchy is stripped away, with file paths shown in " +"the Location column." +msgstr "" + +#. (itstool) path: page/p +#: C/flattened-view.page:27 +msgid "" +"You can turn this flattened view on or off by unchecking the ViewFlatten menu " +"item, or by clicking the corresponding Flatten " +"button on the toolbar." +msgstr "" + +#. (itstool) path: page/title +#: C/index.page:14 +msgid "Meld Help" +msgstr "Ayuda de Meld" + +#. (itstool) path: section/title +#: C/index.page:17 +msgid "Introduction" +msgstr "Introducción" + +#. (itstool) path: section/title +#: C/index.page:21 +msgid "Comparing Files" +msgstr "Comparar archivos" + +#. (itstool) path: section/title +#: C/index.page:25 +msgid "Comparing Folders" +msgstr "Comparar carpetas" + +#. (itstool) path: section/title +#: C/index.page:29 +msgid "Using Meld with Version Control" +msgstr "Usar Meld con un sistema de control de versiones" + +#. (itstool) path: section/title +#: C/index.page:33 +msgid "Advanced Usage" +msgstr "Uso avanzado" + +#. (itstool) path: info/title +#: C/vc-mode.page:5 +msgctxt "sort" +msgid "0" +msgstr "0" + +#. (itstool) path: page/title +#: C/vc-mode.page:16 +msgid "Viewing version-controlled files" +msgstr "Ver archivos bajo control de versiones" + +#. (itstool) path: page/p +#: C/vc-mode.page:18 +msgid "" +"Meld integrates with many version " +"control systems to let you review local changes and perform simple " +"version control tasks. You can start a new version control comparison by " +"selecting the FileNew... menu item, and clicking on the Version Control tab." +msgstr "" + +#. (itstool) path: section/title +#: C/vc-mode.page:30 +msgid "Version control comparisons" +msgstr "" + +#. (itstool) path: section/p +#: C/vc-mode.page:32 +msgid "" +"Version control comparisons show the differences between the contents of " +"your folder and the current repository version. Each file in your local copy " +"has a state that indicates how it differs " +"from the repository copy." +msgstr "" + +#. (itstool) path: section/p +#: C/vc-mode.page:46 +msgid "" +"If you want to look at a particular file's differences, you can select it " +"and press Enter, or double-click the file to start a file comparison. You can also interact with your " +"version control system using the Changes menu." +msgstr "" + +#. (itstool) path: section/title +#. (itstool) path: table/title +#: C/vc-mode.page:56 C/vc-mode.page:81 +msgid "Version control states" +msgstr "Estados del control de versiones" + +#. (itstool) path: section/p +#: C/vc-mode.page:58 +msgid "" +"Each file or folder in a version control comparison has a state, " +"obtained from the version control system itself. Meld maps these " +"different states into a standard set of very similar concepts. As such, " +"Meld might use slightly different names for states than your " +"version control system does. The possible states are:" +msgstr "" + +#. (itstool) path: td/p +#: C/vc-mode.page:85 C/folder-mode.page:110 +msgid "State" +msgstr "Estado" + +#. (itstool) path: td/p +#: C/vc-mode.page:86 C/folder-mode.page:111 +msgid "Appearance" +msgstr "Apariencia" + +#. (itstool) path: td/p +#: C/vc-mode.page:87 C/folder-mode.page:112 +msgid "Meaning" +msgstr "Significado" + +#. (itstool) path: td/p +#: C/vc-mode.page:95 C/folder-mode.page:120 +msgid "Normal font" +msgstr "Tipografía normal" + +#. (itstool) path: td/p +#: C/vc-mode.page:101 +msgid "The file/folder is the same as the repository version." +msgstr "El archivo o carpeta es el mismo que el del repositorio" + +#. (itstool) path: td/p +#: C/vc-mode.page:109 C/folder-mode.page:150 +msgid "Red and bold" +msgstr "Rojo y en negrita" + +#. (itstool) path: td/p +#: C/vc-mode.page:115 +msgid "This file is different to the repository version." +msgstr "El archivo difiere respecto a la versión del repositorio." + +#. (itstool) path: td/p +#: C/vc-mode.page:123 C/folder-mode.page:164 +msgid "Green and bold" +msgstr "Verde y en negrita" + +#. (itstool) path: td/p +#: C/vc-mode.page:129 +msgid "" +"This file/folder is new, and is scheduled to be added to the repository." +msgstr "" +"El archivo o carpeta es nuevo, y está programado para añadirlo al " +"repositorio." + +#. (itstool) path: td/p +#: C/vc-mode.page:136 +msgid "Removed" +msgstr "Eliminado" + +#. (itstool) path: td/p +#: C/vc-mode.page:138 +msgid "Red bold text with a line through the middle" +msgstr "Rojo en negrita y con una línea en el medio" + +#. (itstool) path: td/p +#: C/vc-mode.page:144 +msgid "" +"This file/folder existed, but is scheduled to be removed from the repository." +msgstr "" +"El archivo o carpeta existe, pero está programado para quitarlo del " +"repositorio." + +#. (itstool) path: td/p +#: C/vc-mode.page:151 +msgid "Conflict" +msgstr "Conflicto" + +#. (itstool) path: td/p +#: C/vc-mode.page:153 +msgid "Bright red bold text" +msgstr "Texto en negrita rojo claro" + +#. (itstool) path: td/p +#: C/vc-mode.page:159 +msgid "" +"When trying to merge with the repository, the differences between the local " +"file and the repository could not be resolved, and the file is now in " +"conflict with the repository contents" +msgstr "" + +#. (itstool) path: td/p +#: C/vc-mode.page:167 C/folder-mode.page:176 +msgid "Missing" +msgstr "Faltante" + +#. (itstool) path: td/p +#: C/vc-mode.page:169 +msgid "Blue bold text with a line through the middle" +msgstr "Negrita azul con una línea en el medio" + +#. (itstool) path: td/p +#: C/vc-mode.page:175 +msgid "This file/folder should be present, but isn't." +msgstr "" + +#. (itstool) path: td/p +#: C/vc-mode.page:181 +msgid "Ignored" +msgstr "Ignorado" + +#. (itstool) path: td/p +#: C/vc-mode.page:183 C/vc-mode.page:199 +msgid "Greyed out text" +msgstr "Texto en gris" + +#. (itstool) path: td/p +#: C/vc-mode.page:189 +msgid "" +"This file/folder has been explicitly ignored (e.g., by an entry in ." +"gitignore) and is not being tracked by version control." +msgstr "" + +#. (itstool) path: td/p +#: C/vc-mode.page:197 +msgid "Non VC" +msgstr "" + +#. (itstool) path: td/p +#: C/vc-mode.page:205 +msgid "" +"This file is not in the version control system; it is only in the local copy." +msgstr "" + +#. (itstool) path: td/p +#: C/vc-mode.page:212 C/folder-mode.page:191 +msgid "Error" +msgstr "Error" + +#. (itstool) path: td/p +#: C/vc-mode.page:214 C/folder-mode.page:193 +msgid "Bright red with a yellow background and bold" +msgstr "" + +#. (itstool) path: td/p +#: C/vc-mode.page:220 +msgid "The version control system has reported a problem with this file." +msgstr "" + +#. (itstool) path: section/title +#: C/vc-mode.page:230 +msgid "Version control state filtering" +msgstr "" + +#. (itstool) path: section/p +#: C/vc-mode.page:232 +msgid "" +"Most often, you will only want to see files that are identified as being in " +"some way different; this is the default setting in Meld. You can " +"change which file states you see by using the ViewVersion Status menu, or " +"by clicking the corresponding Modified, Normal, Non VC and Ignored buttons on the toolbar." +msgstr "" + +#. (itstool) path: page/title +#: C/keyboard-shortcuts.page:15 +msgid "Keyboard shortcuts" +msgstr "" + +#. (itstool) path: table/title +#: C/keyboard-shortcuts.page:18 +msgid "Shortcuts for working with files and comparisons" +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:22 C/keyboard-shortcuts.page:56 +#: C/keyboard-shortcuts.page:109 C/keyboard-shortcuts.page:131 +msgid "Shortcut" +msgstr "Atajo" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:22 C/keyboard-shortcuts.page:56 +#: C/keyboard-shortcuts.page:109 C/keyboard-shortcuts.page:131 +msgid "Description" +msgstr "Descripción" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:29 +msgid "CtrlN" +msgstr "CtrlN" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:30 +msgid "Start a new comparison." +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:33 +msgid "CtrlS" +msgstr "CtrlS" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:34 +msgid "Save the current document to disk." +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:37 +msgid "CtrlShiftS" +msgstr "CtrlMayúsS" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:38 +msgid "Save the current document with a new filename." +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:41 +msgid "CtrlW" +msgstr "CtrlW" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:42 +msgid "Close the current comparison." +msgstr "Cerrar la comparación actual." + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:45 +msgid "CtrlQ" +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:46 +msgid "Quit Meld." +msgstr "Salir de Meld." + +#. (itstool) path: table/title +#: C/keyboard-shortcuts.page:52 +msgid "Shortcuts for editing documents" +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:62 +msgid "CtrlZ" +msgstr "CtrlZ" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:63 +msgid "Undo the last action." +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:66 +msgid "CtrlShiftZ" +msgstr "CtrlMayúsZ" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:67 +msgid "Redo the last undone action." +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:70 +msgid "CtrlX" +msgstr "CtrlX" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:71 +msgid "Cut the selected text or region and place it on the clipboard." +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:74 +msgid "CtrlC" +msgstr "CtrlC" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:75 +msgid "Copy the selected text or region onto the clipboard." +msgstr "" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:78 +msgid "CtrlV" +msgstr "CtrlV" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:79 +msgid "Paste the contents of the clipboard." +msgstr "Pegar el contenido del portapapeles." + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:82 +msgid "CtrlF" +msgstr "CtrlF" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:83 +msgid "Find a string." +msgstr "Buscar una cadena." + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:86 +msgid "CtrlG" +msgstr "CtrlG" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:87 +msgid "Find the next instance of the string." +msgstr "Buscar la siguiente instancia de la cadena" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:90 C/keyboard-shortcuts.page:96 +msgid "AltUp" +msgstr "AltArriba" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:91 +msgid "" +"Go to the next difference. (Also CtrlD)" +msgstr "" +"Ir a la siguiente diferencia. (También CtrlD)" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:97 +msgid "" +"Go to the previous difference. (Also CtrlE)" +msgstr "" +"Ir a la diferencia anterior. (También CtrlE)" + +#. (itstool) path: table/title +#: C/keyboard-shortcuts.page:105 +msgid "Shortcuts for view settings" +msgstr "Atajos para la configuración de la vista." + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:115 +msgid "Escape" +msgstr "Esc" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:116 +msgid "Stop the current comparison." +msgstr "Detener la comparación actual." + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:119 +msgid "CtrlR" +msgstr "CtrlR" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:120 +msgid "Refresh the current comparison." +msgstr "Actualizar la comparación actual." + +#. (itstool) path: table/title +#: C/keyboard-shortcuts.page:127 +msgid "Shortcuts for help" +msgstr "Atajos para la ayuda" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:137 +msgid "F1" +msgstr "F1" + +#. (itstool) path: td/p +#: C/keyboard-shortcuts.page:138 +msgid "Open Meld's user manual." +msgstr "Abrir en manual de usuario de Meld." + +#. (itstool) path: page/title +#: C/introduction.page:15 +msgid "What is Meld?" +msgstr "¿Qué es Meld?" + +#. (itstool) path: page/p +#: C/introduction.page:16 +msgid "" +"Meld is a tool for comparing files and directories, and for " +"resolving differences between them. It is also useful for comparing changes " +"captured by version control systems." +msgstr "" + +#. (itstool) path: page/p +#: C/introduction.page:22 +msgid "" +"Meld shows differences between two or three files (or two or " +"three directories) and allows you to move content between them, or edit the " +"files manually. Meld's focus is on helping developers compare and " +"merge source files, and get a visual overview of changes in their favourite " +"version control system." msgstr "" -"Jorge González , 2005\n" -"Francisco Javier F. Serrador , 2005" +#. (itstool) path: page/title +#: C/folder-mode.page:16 +msgid "Getting started comparing folders" +msgstr "" + +#. (itstool) path: page/p +#: C/folder-mode.page:18 +msgid "" +"Meld lets you compare two or three folders side-by-side. You can " +"start a new folder comparison by selecting the FileNew... menu item, and " +"clicking on the Directory Comparison tab." +msgstr "" + +#. (itstool) path: page/p +#: C/folder-mode.page:26 +msgid "" +"Your selected folders will be shown as side-by-side trees, with differences " +"between files in each folder highlighted. You can copy or delete files from " +"either folder, or compare individual text files in more detail." +msgstr "" + +#. (itstool) path: section/title +#: C/folder-mode.page:36 +msgid "The folder comparison view" +msgstr "La vista de comparación de carpetas" + +#. (itstool) path: section/p +#: C/folder-mode.page:38 +msgid "" +"The main parts of a folder comparison are the trees showing the folders " +"you're comparing. You can easily move " +"around these comparisons to find changes that you're interested in. " +"When you select a file or folder, more detailed information is given in the " +"status bar at the bottom of the window. Pressing Enter on a " +"selected file, or double-clicking any file in the tree will open a side-by-" +"side file comparison of the files in a new " +"tab, but this will only work properly if they're text files!" +msgstr "" + +#. (itstool) path: section/p +#: C/folder-mode.page:50 +msgid "" +"There are bars on the left and right-hand sides of the window that show you " +"a simple coloured summary of the comparison results. Each file or folder in " +"the comparison corresponds to a small section of these bars, though " +"Meld doesn't show Same files so that it's easier to see " +"any actually important differences. You can click anywhere on this bar to " +"jump straight to that place in the comparison." +msgstr "" + +#. (itstool) path: section/title +#: C/folder-mode.page:63 +msgid "Navigating folder comparisons" +msgstr "Navegar entre comparaciones" + +#. (itstool) path: section/p +#: C/folder-mode.page:65 +msgid "" +"You can jump between changed files (that is, any files/folders that are " +"not classified as being identical) with the ChangesPrevious change " +"and ChangesNext " +"change menu items, or using the corresponding buttons on the " +"toolbar." +msgstr "" + +#. (itstool) path: section/p +#: C/folder-mode.page:73 +msgid "" +"You can use the Left and Right arrow keys to move " +"between the folders you're comparing. This is useful so that you can select " +"an individual file for copying or deletion." +msgstr "" + +#. (itstool) path: section/title +#: C/folder-mode.page:83 +msgid "States in folder comparisons" +msgstr "" + +#. (itstool) path: section/p +#: C/folder-mode.page:85 +msgid "" +"Each file or folder in a tree has its own state, telling you how it " +"differed from its corresponding files/folders. The possible states are:" +msgstr "" + +#. (itstool) path: table/title +#: C/folder-mode.page:106 +msgid "Folder comparison states" +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:126 +msgid "The file/folder is the same across all compared folders." +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:132 +msgid "Same when filtered" +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:134 +msgid "Italics" +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:140 +msgid "" +"These files are different across folders, but once text filters are applied, these files become identical." +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:156 +msgid "These files differ between the folders being compared." +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:170 +msgid "This file/folder exists in this folder, but not in the others." +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:178 +msgid "Greyed out text with a line through the middle" +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:184 +msgid "" +"This file/folder doesn't exist in this folder, but does in one of the others." +msgstr "" + +#. (itstool) path: td/p +#: C/folder-mode.page:199 +msgid "" +"When comparing this file, an error occurred. The most common error causes " +"are file permissions (i.e., Meld was not allowed to open the " +"file) and filename encoding errors." +msgstr "" + +#. (itstool) path: section/p +#: C/folder-mode.page:217 +msgid "" +"You can filter out files based on these states, for example, to show only " +"files that have are Modified. You can read more about this in ." +msgstr "" + +#. (itstool) path: section/p +#: C/folder-mode.page:223 +msgid "" +"Finally, the most recently modified file/folder has an emblem attached to it." +msgstr "" + +#. (itstool) path: page/title +#: C/missing-functionality.page:15 +msgid "Things that Meld doesn't do" +msgstr "" + +#. (itstool) path: page/p +#: C/missing-functionality.page:17 +msgid "" +"Have you ever spent half an hour poking around an application trying to find " +"out how to do something, thinking that surely there must be an " +"option for this?" +msgstr "" + +#. (itstool) path: page/p +#: C/missing-functionality.page:23 +msgid "" +"This section lists a few of the common things that Meld " +"doesn't do, either as a deliberate choice, or because we just " +"haven't had time." +msgstr "" + +#. (itstool) path: section/title +#: C/missing-functionality.page:30 +msgid "Aligning changes by adding lines" +msgstr "" + +#. (itstool) path: section/p +#: C/missing-functionality.page:31 +msgid "" +"When Meld shows differences between files, it shows both files as " +"they would appear in a normal text editor. It does not insert " +"additional lines so that the left and right sides of a particular change are " +"the same size. There is no option to do this." +msgstr "" + +#. (itstool) path: page/title +#: C/command-line.page:15 +msgid "Command line usage" +msgstr "" + +#. (itstool) path: page/p +#: C/command-line.page:17 +msgid "" +"If you start Meld from the command line, you can tell it what to " +"do when it starts." +msgstr "" + +#. (itstool) path: page/p +#: C/command-line.page:20 +msgid "" +"For a two- or three-way file comparison, " +"start Meld with meld file1 file2 " +"or meld file1 file2 file3 " +"respectively." +msgstr "" + +#. (itstool) path: page/p +#: C/command-line.page:26 +msgid "" +"For a two- or three-way directory comparison, start Meld with meld dir1 dir2 or meld dir1 dir2 dir3." +msgstr "" + +#. (itstool) path: page/p +#: C/command-line.page:31 +msgid "" +"You can start a version control comparison by " +"just giving a single argument; if that file or directory is managed by a " +"recognized version control system, it " +"will start a version control comparison on that argument. For example, " +"meld . would start a version control view of the current " +"directory." +msgstr "" + +#. (itstool) path: note/p +#: C/command-line.page:40 +msgid "Run meld --help for a list of all command line options." +msgstr "" diff -Nru meld-1.5.3/help/es/Makefile meld-3.11.0/help/es/Makefile --- meld-1.5.3/help/es/Makefile 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/es/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ - -.SUFFIXES : -include ../../INSTALL - -LANG := $(notdir $(CURDIR)) -XML_DIR_ := $(DESTDIR)$(helpdir)/meld/$(LANG) -OMF_NAME := meld-$(LANG).omf -OMF_DIR_ := $(DESTDIR)$(sharedir)/omf/meld -OMF_STATE:= $(DESTDIR)$(localstatedir)/lib/scrollkeeper -INST_XML := $(helpdir_)/$(LANG)/meld.xml - -.PHONY : all -all $(OMF_NAME).install : $(OMF_NAME) - scrollkeeper-preinstall $(INST_XML) $(OMF_NAME) $(OMF_NAME).install - -.PHONY : install -install : $(OMF_NAME).install - -mkdir -m 755 -p $(OMF_DIR_) $(XML_DIR_) - install -m 644 meld.$(LANG).xml $(XML_DIR_)/meld.xml - -install -m 644 $< $(OMF_DIR_)/$(OMF_NAME) - -scrollkeeper-update -p $(OMF_STATE) -o $(OMF_DIR_) - -.PHONY : uninstall -uninstall : - -rm -f $(OMF_DIR_)/$(OMF_NAME) \ - $(XML_DIR_)/meld.xml - -rmdir $(XML_DIR_) - -scrollkeeper-update -p $(OMF_STATE) -o $(OMF_DIR_) - -.PHONY : clean -clean : - -rm -f $(OMF_NAME).install - diff -Nru meld-1.5.3/help/es/meld-es.omf meld-3.11.0/help/es/meld-es.omf --- meld-1.5.3/help/es/meld-es.omf 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/es/meld-es.omf 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ - - - - - - Stephen Kennedy - - - Aloriel - - - Manual de Meld - - - 2004-10-16 - - - - - Este documento describe el uso de meld, una herramienta gráfica para diff, merge cvs y subversion. - - - manual - - - - - - - - diff -Nru meld-1.5.3/help/es/meld.es.xml meld-3.11.0/help/es/meld.es.xml --- meld-1.5.3/help/es/meld.es.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/es/meld.es.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,289 +0,0 @@ - - - - Manual del usuario de Meld - - - Manual del usuario de Meld - - - - Stephen - - Kennedy - - stevek@gnome.org - - - - - 2004 - - Stephen Kennedy - 2005Jorge González (jorge.gonzalez.gonzalez@hispalinux.es)2005Francisco Javier F. Serrador (serrador@gnome.org) - - Esta es la versión 0.1 del manual de meld y describe la versión 0.9.6 de meld - - - - Introducción - - - ¿Qué es meld? - - Meld muestra las diferencias entre archivos y directorios. Meld hace sencillo aislar y mezclar estas diferencias. - - - - Iniciar meld - - - Argumentos para la línea de comandos - - - - meld - - - iniciar meld con el diálogo de documento nuevo - - - - - meld <file> <file> - [file] - - - iniciar meld con el modo de comparación para 2 o 3 archivos - - - - - meld <dir> <dir> - [dir] - - - iniciar meld con el modo de comparación para 2 o 3 archivos - - - - - meld <dir|file> - - - iniciar meld con el visor de control de código - - - - - - «<>» denotan argumentos requeridos, «[]» denotan argumentos opcionales y «|» una opción. - - - - Ejecute meld --help para obtener una lista completa de las opciones - - - - - - - Comparación de archivos - - - Comenzar - - Para comenzar una comparación nueva use Archivo...->Nuevo...->Comparación de archivos. Puede comparar dos o tres archivos. - - Para una comparación de dos archivos, por convenio, el original se muestra en el panel de la izquierda y la versión modificada en el panel de la derecha. - - Para una comparación de tres archivos, el original se muestra en el panel del centro y los paneles a izquierda y derecha muestran las versiones modificadas. Por convenio se pone en el panel de la derecha la copia local modificada. - - - - Resumen de cambios - - La posición de los cambios se resume en los márgenes de la ventana a izquierda y derecha. Por omisión el verde marca los añadidos y borrados mientras que el azul son cambios. - - Puede saltar a un cambio individual pulsando en el margen o usando la barra de desplazamiento. - - - - Vista detallada - - Los detalles de las diferencias se muestran en el texto y en el panel central. El texto insertado se muestra sobre un fondo sólido. Las líneas que contienen cambios se marcan sobre un fondo claro con los cambios individuales resaltados en un color más fuerte. - - El área entre cada archivo muestra dónde ocurre cada cambio en el otro archivos. Puede desplazarse a través de los cambios utilizando la rueda del ratón sobre este área o bien usando las combinaciones de teclas Control+D, Control+E. - - - - Edición - - Puede editar los archivos al igual que si fuese un editor de textos normal. Las diferencias se actualizarán automáticamente. Utilice Control+F para buscar y Control+G para repetir la última búsqueda. - - Puede aplicar cambios pulsando los botones de combinar ("->" y "<-"). Manteniendo pulsada la tecla Mayús. se pueden borrar bloques. Manteniendo pulsada la tecla Control se puede hacer que el cambio actual se inserte antes o después de otro cambio. - - Puede aplicar todos los cambios desde un archivo pulsando con el botón derecho sobre uno de los paneles de texto y eligiendo Copiar todo lo de la izquierda o Copiar todo lo de la derecha. También puede lanzar un editor externo desde este menú. Configure el editor externo en Configuración->Preferencias->Editor - - - - Filtrado - - Puede ignorar cierto tipo de diferencias para encontrar diferencias más importantes. Todas estas opciones están disponibles en Configuración->Preferencias->Filtros de texto. - - - Expresiones regulares - - Al comparar archivos, cada una de las expresiones regulares seleccionadas se ejecuta alternadamente sobre cada archivo. Si la expresión no contiene grupos entonces cualquier cosa que coincida con la expresión regular se sustituye por una cadena vacía antes de que comience la comparación. Si hay uno o más grupos entonces sólo estos grupos son sustituidos por la cadena vacía en lugar de la coincidencia completa. - - - El reemplazo ocurre a menudo en varias líneas a la vez. La cadena de entrada puede que contenga caracteres de línea nueva (\n). Si su expresión regular coincide con líneas nuevas la comparación será incorrecta. (La razón técnica es que las actualizaciones de diferencias incrementales en textos multilínea es complicada y no está implementada.) - - - - Vea el módulo «re» de python para obtener más información acerca de expresiones regulares - - - - - Líneas en blanco - - Los cambios que introducen o eliminan líneas en blanco pueden ignorarse. Esta opción es más útil si se usa combinada con uno o más filtros de expresiones regulares. - - - - - Guardar - - Cuando se tienen cambios sin guardar, un icono con un disco aparecerá al lado del nombre del archivo que se ha modificado. La etiqueta de la solapa y la ventana contendrán un asterisco después del nombre del archivo. - - Guarde un archivo pulsando Control+s, seleccionando Archivo->Guardar desde el menú o bien con el botón de guardar de la barra de herramientas. Todas estas opciones guardan el archivo con el que se está trabajando actualmente (el que contiene el cursor) - - - - Barra de estado - - La barra de estado muestra la posición del cursor (línea y columna) y también el progreso de los mensajes mientras se cargan y comparan archivos. - - - - - Comparación de carpetas - - - Comenzar - - Para comenzar una nueva comparación de directorios use Archivo->Nuevo...->Comparación de directorios. Puede comparar dos o tres directorios. - - Para una comparación de dos archivos, por convenio, el original se muestra en el panel de la izquierda y la versión modificada en el panel de la derecha. - - Para una comparación de tres archivos, el original se muestra en el panel del centro y los paneles a izquierda y derecha muestran las versiones modificadas. Por convenio se pone en el panel de la derecha la copia local modificada. - - - - Resumen de cambios - - Similar a la comparación de archivos, en los márgenes de las ventanas se marcan los directorios nuevos, borrados y/o modificados. - - Puede saltar a un cambio individual pulsando en el margen o usando la barra de desplazamiento. - - - - Vista detallada - - Los archivos modificados se resaltan en rojo, los nuevos en verde y los borrados se tachan. Vea también - - El archivo o carpeta más recientemente modificado tiene un punto rojo superpuesto en el icono. Se puede ver información detallada acerca de los permisos y la hora de modificación en la barra de estado al seleccionar el archivo o directorio. - - Para navegar utilice el ratón o las teclas Arriba, Abajo, Izquierda y Derecha. Adicionalmente puede usar Control+D y Control+E para moverse por las modificaciones siguiente y previa respectivamente. - - - - Edición - - Active un objeto con una pulsación doble del ratón o bien pulsando la tecla Intropara comenzar una comparación de archivos individual. - - Existen opciones adiciones disponibles en el menú contextual al pulsar con el botón derecho del ratón. - - Para seleccionar múltiples objetos utilice Mayús.+pulsación del ratón y Control+pulsación del ratón. - - - - Filtrado - - A menudo la comparación inicial contiene demasiada información espúrea. Puede usar los filtros para aislar las diferencias que considere importantes. - - - Ocultar explícitamente - - Para ocultar un objeto (y todos los subdirectorios para directorios) use el botón de ocultar de la barra de herramientas. - - - - Sensibilidad a capitalización - - Por omisión las comparaciones de archivos por nombre son sensibles a capitalización. Utilice el botón de la barra de herramientas para cambiar esta opción. - - - - Filtrado por estado - - Todos los objetos tienen un estado que es uno de: Modificado (hay alguna diferencia de contenido entre los archivos presentes)Nuevo (no hay diferencias de contenido entre los archivos presentes pero el archivo falta en, al menos, un directorio)Idéntico (los archivos tienen el mismo contenido y todos existen) - - Use the toolbar buttons to control which items are shown by their state.En la versión actual sólo los archivos se filtran por estado. Los directorios siempre se muestran. - - - - Filtrado por nombre - - Puede ocultar de la comparación los patrones de nombres de archivo seleccionados usando la barra de herramientas. Utilice Configuración->Preferencias->Filtros de archivo para personalizar los patrones. - - - - Filtrado por contenido - - Si existen diferencias entre archivos, pero todas ellas coinciden con las expresiones regulares especificadas en Configuración->Preferencias->Filtros de texto, entonces el nombre de archivo no se resalta en rojo pero aparece en cursiva. - - - - - - Control de código - - - Comenzar - - Para visualizar una copia de trabajo utilice Archivo->Nuevo...->Visor CVS o Archivo->Nuevo...->Visor SVN. - - El visor se usa para examinar y efectuar o revertir cambios locales. No está desarrollado para ser un cliente de control de código completo. - - - - Filtrado - - El visor puede filtrar sobre cuatro estados: Normal (el archivo no ha sufrido cambios desde la última vez que se revisó)No controlados (el archivo existe localmente pero no se ha revisado)Ignorados (el archivo se ignora explícitamente e.j. a través de .cvsignore)Modificados (localmente, añadidos o eliminados) - - Si existen varios cambios en varios directorios o en un árbol grande, el conmutador «Recursivo» aplanar el listado de directorios. Es especialmente útil usarlo junto con el filtro de «modificados». - - - - Ver las diferencias - - Activar un archivo sin modificar lo abre en el visor de archivos. Activar un archivo modificado abre una comparación de dos vías para examinar los cambios. - - Puede examinar varios cambios a la vez usando Mayús+pulsación del ratón y Control+pulsación del ratón para seleccionar múltiples objetos. - - - - Cambios - - La barra de herramientas contiene comandos para realizar las operaciones más comunes sobre el control del código. También se puede acceder a estas operaciones a través de un menú contextual. - - - - Mostrar la consola - - En la parte inferior de la ventana de control de código se puede expandir una ventana que contiene todas las operaciones de control de código y su salida. Pulse en la barra del expansor para cambiar entre ocultar y mostrar la consola. - - - diff -Nru meld-1.5.3/help/fr/fr.po meld-3.11.0/help/fr/fr.po --- meld-1.5.3/help/fr/fr.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/fr/fr.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,421 +0,0 @@ -# French translation of meld documentation. -# Copyright (C) 2008 Free Software Foundation, Inc. -# This file is distributed under the same license as the meld -# documentation package. -# -# Bruno Brouard , 2008. -# Claude Paroz , 2008. -# -msgid "" -msgstr "" -"Project-Id-Version: meld doc fr\n" -"POT-Creation-Date: 2008-03-07 03:45+0000\n" -"PO-Revision-Date: 2008-03-31 22:15+0200\n" -"Last-Translator: Claude Paroz \n" -"Language-Team: GNOME French Team \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: C/meld.xml:5(title) -#: C/meld.xml:8(title) -msgid "Meld Users Manual" -msgstr "Manuel d'utilisation de Meld" - -#: C/meld.xml:12(firstname) -msgid "Stephen" -msgstr "Stephen" - -#: C/meld.xml:14(surname) -msgid "Kennedy" -msgstr "Kennedy" - -#: C/meld.xml:16(email) -msgid "stevek@gnome.org" -msgstr "stevek@gnome.org" - -#: C/meld.xml:21(year) -msgid "2004" -msgstr "2004" - -#: C/meld.xml:23(holder) -msgid "Stephen Kennedy" -msgstr "Stephen Kennedy" - -#: C/meld.xml:26(releaseinfo) -msgid "This is version 0.1 of the meld manual, describing meld 0.9.6" -msgstr "Ceci est la version 0.1 du manuel de meld, décrivant meld 0.9.6" - -#: C/meld.xml:30(title) -msgid "Introduction" -msgstr "Introduction" - -#: C/meld.xml:33(title) -msgid "What is meld" -msgstr "Qu'est-ce que meld ?" - -#: C/meld.xml:35(para) -msgid "Meld views differences between files and between directories. Meld makes it easy to isolate and merge these differences." -msgstr "Meld permet d'afficher les différences entre des fichiers ou des répertoires. Meld facilite la localisation et la fusion de ces différences." - -#: C/meld.xml:40(title) -msgid "Starting meld" -msgstr "Démarrage de meld" - -#: C/meld.xml:43(title) -msgid "Command line arguments" -msgstr "Paramètres de la ligne de commande" - -#: C/meld.xml:47(userinput) -#, no-wrap -msgid "meld" -msgstr "meld" - -#: C/meld.xml:50(para) -msgid "start meld with the new document dialog" -msgstr "démarre meld avec la boîte de dialogue « nouveau document »" - -#: C/meld.xml:55(userinput) -#, no-wrap -msgid "meld <file> <file> [file]" -msgstr "meld <fichier> <fichier> [fichier]" - -# BUG dans la version anglaise -#: C/meld.xml:58(para) -#: C/meld.xml:67(para) -msgid "start meld with either a two way or three way file comparison" -msgstr "démarre meld pour une comparaison entre deux ou trois fichiers" - -#: C/meld.xml:64(userinput) -#, no-wrap -msgid "meld <dir> <dir> [dir]" -msgstr "meld <rép> <rép> [rép]" - -#: C/meld.xml:73(userinput) -#, no-wrap -msgid "meld <dir|file>" -msgstr "meld <rép|fichier>" - -#: C/meld.xml:76(para) -msgid "start meld with the source control browser" -msgstr "démarre meld avec le navigateur du gestionnaire de source" - -#: C/meld.xml:82(para) -msgid "\"<>\" surround required arguments, \"[]\" surround optional arguments and \"|\" indicates a choice." -msgstr "« <> » entoure les paramètres obligatoires, « [] » entoure les paramètres optionnels et « | » indique un choix." - -#: C/meld.xml:87(para) -msgid "Run meld --help for a complete list of options" -msgstr "Saisissez meld --help pour obtenir la liste complète des options" - -#: C/meld.xml:95(title) -msgid "File Comparison" -msgstr "Comparaison de fichiers" - -#: C/meld.xml:98(title) -#: C/meld.xml:208(title) -#: C/meld.xml:322(title) -msgid "Starting" -msgstr "Démarrage" - -#: C/meld.xml:100(para) -msgid "To compare files, choose FileNew and select the File Comparison tab. You can compare two or three files." -msgstr "Pour comparer des fichiers, choisissez FichierNouveau et sélectionnez l'onglet Comparaison de fichiers. Vous pouvez comparer deux ou trois fichiers." - -#: C/meld.xml:103(para) -#: C/meld.xml:213(para) -# BUG dans la version anglaise -msgid "For two way comparisons the original is shown in the left pane and the modified version in the right pane by convention." -msgstr "Pour une comparaison à deux éléments, l'original est affiché par convention dans le panneau de gauche et la version modifiée dans celui de droite." - -#: C/meld.xml:106(para) -#: C/meld.xml:216(para) -# BUG dans la version anglaise -msgid "For three way comparisons, the original is shown in the centre pane and the left and right panes show the modified versions. By convention we put the locally modified file in the right pane." -msgstr "Pour une comparaison à trois éléments, l'original est affiché dans le panneau du centre et les panneaux gauche et droite affichent les versions modifiées. Par convention, le fichier modifié local est dans le panneau de droite." - -#: C/meld.xml:112(title) -#: C/meld.xml:222(title) -msgid "Change Summary" -msgstr "Résumé des changements" - -#: C/meld.xml:114(para) -msgid "The location of the changes is summarised in the window margins at the far left and right. By default green marks insertions and deletions and blue marks changes." -msgstr "L'emplacement des changements est résumé dans les marges de la fenêtre à l'extrême gauche et droite. Par défaut, les insertions et les suppressions sont signalées en vert et les modifications en bleu." - -#: C/meld.xml:118(para) -#: C/meld.xml:227(para) -msgid "You can jump to an individual change by clicking in the margin or using the scrollbar." -msgstr "Vous pouvez vous déplacer à un changement particulier en cliquant dans la marge ou en utilisant l'ascenseur." - -#: C/meld.xml:123(title) -#: C/meld.xml:232(title) -msgid "Detailed View" -msgstr "Affichage détaillé" - -#: C/meld.xml:125(para) -msgid "Detailed differences are shown in the text and central pane. Inserted text is shown with a solid background. Lines containing changes are marked with a light background with the individual changes highlighted with a stronger colour." -msgstr "Le détail des différences est affiché dans le texte et dans le panneau central. Le texte inséré est affiché avec un arrière-plan de couleur. Les lignes modifiées sont marquées d'une couleur d'arrière-plan claire avec les modifications mis en évidence à l'aide d'une couleur plus foncée." - -#: C/meld.xml:130(para) -msgid "The area between each file shows where each change occurs in the other file. You can scroll through the changes by rolling the mouse wheel over this area or with keyboard shortcuts CtrlD, CtrlE." -msgstr "La zone entre chaque fichier affiche l'emplacement des modifications dans l'autre fichier. Vous pouvez faire défiler les modifications en utilisant la molette de la souris sur cette zone ou en utilisant les raccourcis clavier CtrlD, CtrlE." - -#: C/meld.xml:137(title) -#: C/meld.xml:251(title) -msgid "Editing" -msgstr "Édition" - -#: BUG : Ctrl + G is for GOTO -#: C/meld.xml:139(para) -msgid "You can edit the files as you would in a normal text editor. The differences will update automatically. Use CtrlF to search and CtrlG to repeat the last search." -msgstr "Vous pouvez modifier les fichiers comme vous le feriez à l'aide d'un éditeur de texte normal. Les différences se mettent à jour automatiquement. Utilisez CtrlF pour faire des recherches et CtrlG pour répéter la dernière recherche." - -#: C/meld.xml:143(para) -msgid "You can also apply changes by clicking the merge buttons (\"->\" and \"<-\"). Holding Shift allows blocks to be deleted. Holding Control allows the current change to be inserted before or after the other change." -msgstr "Vous pouvez également appliquer les modifications en cliquant sur les boutons de fusion (« -> » et « <- »). En appuyant sur la touche Maj, vous pouvez supprimer des blocs entiers. En appuyant sur la touche Ctrl, vous pouvez insérer la modification actuelle avant ou après l'autre modification." - -#: C/meld.xml:148(para) -msgid "You can apply all the changes from a given file by right clicking a text pane and choosing Copy all left or Copy all right. You can also launch an external editor from this menu. Configure the external editor in SettingsPreferences." -msgstr "Vous pouvez appliquer toutes les modifications à partir d'un des fichiers en cliquant avec le bouton droit sur un volet de texte et en choisissant Tout copier à gauche ou Tout copier à droite. Vous pouvez également lancer un éditeur externe à partir de ce menu. Configurez l'éditeur externe grâce au menu ParamètresPréférences." - -#: C/meld.xml:156(title) -#: C/meld.xml:264(title) -#: C/meld.xml:332(title) -msgid "Filtering" -msgstr "Filtre" - -#: C/meld.xml:158(para) -msgid "You can ignore certain types of differences in order to locate important differences. All these settings are available in the Text Filters section of the Preferences dialog." -msgstr "Vous pouvez ignorer certaines sortes de différences afin de localiser les différences importantes. Tous ces réglages sont disponibles dans la section Filtres de texte de la boîte de dialogue Préférences." - -#: C/meld.xml:162(title) -msgid "Regular Expressions" -msgstr "Expressions régulières" - -#: C/meld.xml:166(para) -msgid "See the python re module for more information on regular expressions" -msgstr "Voir le module Python des expressions régulières (« re ») pour plus d'informations sur les expressions régulières" - -#: C/meld.xml:167(para) -msgid "Differences are computed line-by-line so multiline regulare expressions will likely have unintended consequences." -msgstr "Les différences sont évaluées ligne par ligne. Les expressions régulières sur plusieurs lignes auront donc certainement des conséquences inattendues." - -#: C/meld.xml:164(para) -msgid "When comparing files, each selected regular expression is run in turn over each line of input. Anything matching the expression is removed from the input." -msgstr "Quand vous comparez des fichiers, chaque expression régulière sélectionnée est lancée successivement sur chaque ligne d'entrée. Tout ce qui correspond à l'expression régulière est effacé de l'entrée." - -#: C/meld.xml:173(title) -msgid "Blank Lines" -msgstr "Lignes vides" - -#: C/meld.xml:175(para) -msgid "Changes which insert or remove blank lines can be ignored. This option is most useful in conjunction with one or more regular expression filters." -msgstr "Les modifications qui insèrent ou suppriment des lignes vides peuvent être ignorées. Cette option est très utile conjointement avec un ou plusieurs filtres avec expressions régulières." - -#: C/meld.xml:182(title) -msgid "Saving" -msgstr "Enregistrement" - -#: C/meld.xml:184(para) -msgid "When you have unsaved changes, a disk icon will appear beside the file name of the changed file. The tab label and window title also have an asterix after the file name." -msgstr "Quand des modifications ne sont pas enregistrées, une icône de disque apparaît à côté du nom du fichier modifié. L'étiquette de l'onglet et le titre de la fenêtre ont également un astérisque à la suite du nom du fichier." - -#: C/meld.xml:188(para) -msgid "To save a file, choose FileSave, press CtrlS, or press the toolbar save button. All of these save the currently focussed file (the file containing the edit cursor)." -msgstr "Pour enregistrer un fichier, choisissez FichierEnregistrer, tapez CtrlS ou cliquez sur le bouton Enregistrer de la barre d'outils. Toutes ces actions enregistrent le fichier qui est actuellement actif (le fichier qui contient le curseur)." - -#: C/meld.xml:197(title) -msgid "Status Bar" -msgstr "Barre d'état" - -#: C/meld.xml:199(para) -msgid "The status bar shows the cursor location (line and column) and also progress messages as files are initially loaded and compared." -msgstr "La barre d'état affiche la position du curseur (ligne et colonne) ainsi que des messages de progression lorsque les fichiers sont initialement chargés et comparés." - -#: C/meld.xml:205(title) -msgid "Folder Comparison" -msgstr "Comparaison de dossiers" - -#: C/meld.xml:210(para) -msgid "To compare directories, choose FileNew and select the Directory Comparison tab. You can compare two or three directories." -msgstr "Pour comparer des répertoires, choisissez FichierNouveau puis l'onglet Comparaison de répertoires. Vous pouvez comparer deux ou trois répertoires." - -#: C/meld.xml:224(para) -msgid "Similarly to the file comparison, the window margins mark file deletions, creations and modifications." -msgstr "De la même manière que pour les comparaisons de fichiers, les marges des fenêtres indiquent les destructions, créations et modifications de fichiers." - -#: C/meld.xml:234(para) -msgid "Modified files are highlighted with red, created files with green and deleted files with a strikethrough. See also " -msgstr "Les fichiers modifiés sont mis en évidence en rouge, ceux créés en vert et ceux détruits sont barrés. Voir également ." - -#: C/meld.xml:238(para) -msgid "The file or folder most recently modified has a red dot superimposed on its icon. More detailed information such as file permission and modification time can be seen in the status bar when a file is selected." -msgstr "Le fichier ou le dossier dont la modification est la plus récente est marqué d'un point rouge sur son icône. Des informations plus détaillées telles que les permissions de fichiers et la date de modification sont affichées dans la barre d'état quand un fichier est sélectionné." - -#: C/meld.xml:243(para) -msgid "Use the mouse or the the cursor keys Up, Down, Left and Right to navigate. Additionally CtrlD and CtrlE move to the next and previous modification respectively." -msgstr "Utilisez la souris ou les touches fléchées Haut, Bas, Gauche et Droite pour vous déplacer. De plus, CtrlD et CtrlE effectuent un déplacement vers la prochaine ou la précédente modification respectivement." - -#: C/meld.xml:253(para) -msgid "Activate an item with double click or Return to start an individual file comparison." -msgstr "Activez un élément en double-cliquant ou tapez Entrée pour démarrer une comparaison de fichiers individuelle." - -#: C/meld.xml:256(para) -msgid "Additional options are available from a right click context menu." -msgstr "Des options supplémentaires sont disponibles via le menu contextuel du bouton droit." - -#: C/meld.xml:259(para) -msgid "Use Shift+Click and Control+Click to select multiple items." -msgstr "Utilisez Maj+Clic et Ctrl+Clic pour sélectionner plusieurs éléments." - -#: C/meld.xml:266(para) -msgid "Often the initial comparison will contain too much spurious information. You can use filters to isolate the differences which are important to you." -msgstr "La première comparaison contient souvent trop d'informations erronées. Vous pouvez utiliser les filtres pour isoler les différences qui sont importantes pour vous." - -#: C/meld.xml:271(title) -msgid "Explicit Hiding" -msgstr "Masquage explicite" - -#: C/meld.xml:273(para) -msgid "Use the toolbar button to hide an item (and all subitems for directories)." -msgstr "Utilisez le bouton de la barre d'outils pour cacher un élément (et tous les sous-éléments pour les répertoires)." - -#: C/meld.xml:278(title) -msgid "Case Sensitivity" -msgstr "Sensibilité à la casse" - -#: C/meld.xml:280(para) -msgid "By default filename comparisons are case sensitive. Use the toolbar button to toggle case sensitivty of filenames." -msgstr "Par défaut, les comparaisons de noms de fichiers sont sensibles à la casse. Utilisez le bouton de la barre d'outils pour modifier la sensibilité à la casse des noms de fichiers." - -#: C/meld.xml:285(title) -msgid "State Filtering" -msgstr "Filtre sur l'état" - -#: C/meld.xml:288(para) -msgid "Modified (there is some content difference between files which are present)" -msgstr "Modifié (il y a des différences de contenu entre les fichiers présents)" - -#: C/meld.xml:289(para) -msgid "New (there is no content difference between present files, but the file is missing from at least one directory)" -msgstr "Nouveau (il n'y a pas de différence de contenu entre les fichiers présents mais le fichier manque dans au moins un répertoire)" - -#: C/meld.xml:291(para) -msgid "Identical (all files have equal content and are all present)" -msgstr "Identique (tous les fichiers ont des contenus identiques et sont tous présents)" - -#: C/meld.xml:287(para) -msgid "All items have a state which is one of: " -msgstr "Tous les éléments ont un état qui est l'un des suivants : " - -#: C/meld.xml:295(para) -msgid "In the current version, only files are filtered by state. Directories are always shown." -msgstr "Dans la version actuelle, seuls les fichiers sont filtrés par état. Les répertoires sont toujours affichés." - -#: C/meld.xml:294(para) -msgid "Use the toolbar buttons to control which items are shown by their state." -msgstr "Utilisez les boutons de la barre d'outils pour contrôler quels éléments sont affichés en fonction de leur état." - -#: C/meld.xml:300(title) -msgid "Name Filtering" -msgstr "Filtre sur les noms" - -#: C/meld.xml:302(para) -msgid "Meld can hide certain filename patterns from the comparison using the toolbar buttons. Customise the file patterns that are hidden in the File Filters section of the Preferences dialog." -msgstr "Meld permet de cacher certains modèles de nom de fichier de la comparaison en utilisant les boutons de la barre d'outils. Personnalisez vos modèles de fichiers cachés dans la section Filtrage de fichiers de la boîte de dialogue Préférences." - -#: C/meld.xml:308(title) -msgid "Content Filtering" -msgstr "Filtre sur le contenu" - -#: C/meld.xml:310(para) -msgid "If differences between files exist, but all differences match the active regular expressions specified in Text Filters section of the Preferences dialog, then the filename is not highlighted in red, but is insted italicised in regular font." -msgstr "Si des différences entre fichiers existent mais que toutes ces différences correspondent à l'expression régulière actuelle indiquée dans la section Filtre de texte de la boîte de dialogue Préférences, alors le nom du fichier n'est pas mis en évidence en rouge mais est plutôt mis en italique de la police standard." - -#: C/meld.xml:319(title) -msgid "Source Control" -msgstr "Contrôle de source" - -#: C/meld.xml:324(para) -msgid "To browse a working copy of a source control repository, choose FileNew and select the Version Control Browser tab." -msgstr "Pour faire des recherches dans une copie de travail d'un dépôt de gestion de version, choisissez FichierNouveau puis l'onglet Navigateur du gestionnaire de versions." - -#: C/meld.xml:327(para) -msgid "The browser is used for examining and commiting or reverting local changes. It is not intended to be a complete source control client." -msgstr "Le navigateur est utilisé pour examiner et valider ou rétablir des modifications locales. Son but n'est pas d'être un outil de gestion de versions complet." - -#: C/meld.xml:334(para) -msgid "The browser can filter on four states. To show or hide all files in a particular state, select or deselect the corresponding toggle button in the toolbar." -msgstr "Le navigateur peut filtrer sur quatre états. Pour montrer ou cacher tous les fichiers dans un état particulier, sélectionnez ou désélectionnez le bouton correspondant dans la barre d'outils." - -#: C/meld.xml:337(guibutton) -msgid "Normal" -msgstr "Normal" - -#: C/meld.xml:338(para) -msgid "The file has not changed since it was checked out or committed." -msgstr "Le fichier n'a pas été modifié depuis qu'il a été extrait ou commité." - -#: C/meld.xml:340(guibutton) -msgid "Modified" -msgstr "Modifié" - -#: C/meld.xml:341(para) -msgid "The file has been locally changed, added, or removed." -msgstr "Le fichier a été modifié localement, ajouté ou supprimé." - -#: C/meld.xml:343(guibutton) -msgid "Non VC" -msgstr "Non contrôlé par version" - -#: C/meld.xml:344(para) -msgid "The file is non-version controlled: it exists locally but was not checked out from a repository." -msgstr "Le fichier n'est pas contrôlé par version : il existe localement mais n'a pas été extrait d'un dépôt." - -#: C/meld.xml:346(guibutton) -msgid "Ignored" -msgstr "Ignoré" - -#: C/meld.xml:347(para) -msgid "The file is explicitly ignored e.g. though a .cvsignore file." -msgstr "Le fichier est explicitement ignoré, par exemple au travers d'un fichier .cvsignore." - -#: C/meld.xml:351(para) -msgid "The Flatten toggle displays the directory listing as a plain list, showing all subdirectory contents together. This makes it easier to see several changes scattered in several directories or in a large tree. This is especially useful in conjunction with only the modified filter active." -msgstr "Le bouton Aplatir affiche la liste des répertoires comme une liste simple, montrant en même temps tous les contenus des sous-répertoires. Ceci rend plus aisée la vision de nombreux changements éparpillés dans de nombreux répertoires ou dans une grande arborescence. Ceci est plus spécialement utile si le filtre modifié est activé simultanément. " - -#: C/meld.xml:359(title) -msgid "Viewing Differences" -msgstr "Affichage des différences" - -#: C/meld.xml:361(para) -msgid "Activating an unmodified file opens it in the file viewer. Activating a modified file opens up a two way diff to examine your changes." -msgstr "L'activation d'un fichier non modifié ouvre celui-ci dans le visionneur. L'activation d'un fichier modifié affiche une comparaison des deux fichiers afin d'examiner leurs différences." - -#: C/meld.xml:365(para) -msgid "You can examine many changes at once using Shift+Click and Control+Click to select multiple items." -msgstr "Vous pouvez examiner plusieurs modifications à la fois en utilisant Maj+Clic et Ctrl+Clic pour sélectionner plusieurs éléments." - -#: C/meld.xml:371(title) -msgid "Making Changes" -msgstr "Modifications" - -#: C/meld.xml:373(para) -msgid "The toolbar contains commands to perform the most common source control operations. These operations are also accessible through a context menu." -msgstr "La barre d'outils contient les commandes pour réaliser les opérations de gestion de versions les plus courantes. Ces opérations sont également accessibles grâce au menu contextuel." - -#: C/meld.xml:379(title) -msgid "Viewing Console" -msgstr "Affichage de la console" - -#: C/meld.xml:381(para) -msgid "At the bottom of the source control window is an expander containing all the source control operations and their output. Click the expander bar to toggle between hiding and showing the console." -msgstr "En bas de la fenêtre de contrôle de source, une icône d'extension contient toutes les opérations de gestion de versions et leur sortie. Cliquez sur la barre de l'icône d'extension pour cacher ou montrer la console." - -#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. -#: C/meld.xml:0(None) -msgid "translator-credits" -msgstr "" -"Bruno Brouard , 2008\n" -"Claude Paroz , 2008" diff -Nru meld-1.5.3/help/fr/Makefile meld-3.11.0/help/fr/Makefile --- meld-1.5.3/help/fr/Makefile 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/fr/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ - -.SUFFIXES : -include ../../INSTALL - -LANG := $(notdir $(CURDIR)) -XML_DIR_ := $(DESTDIR)$(helpdir)/meld/$(LANG) -OMF_NAME := meld-$(LANG).omf -OMF_DIR_ := $(DESTDIR)$(sharedir)/omf/meld -OMF_STATE:= $(DESTDIR)$(localstatedir)/lib/scrollkeeper -INST_XML := $(helpdir_)/$(LANG)/meld.xml - -.PHONY : all -all $(OMF_NAME).install : $(OMF_NAME) - scrollkeeper-preinstall $(INST_XML) $(OMF_NAME) $(OMF_NAME).install - -.PHONY : install -install : $(OMF_NAME).install - -mkdir -m 755 -p $(OMF_DIR_) $(XML_DIR_) - install -m 644 meld.$(LANG).xml $(XML_DIR_)/meld.xml - -install -m 644 $< $(OMF_DIR_)/$(OMF_NAME) - -scrollkeeper-update -p $(OMF_STATE) -o $(OMF_DIR_) - -.PHONY : uninstall -uninstall : - -rm -f $(OMF_DIR_)/$(OMF_NAME) \ - $(XML_DIR_)/meld.xml - -rmdir $(XML_DIR_) - -scrollkeeper-update -p $(OMF_STATE) -o $(OMF_DIR_) - -.PHONY : clean -clean : - -rm -f $(OMF_NAME).install - diff -Nru meld-1.5.3/help/fr/meld-fr.omf meld-3.11.0/help/fr/meld-fr.omf --- meld-1.5.3/help/fr/meld-fr.omf 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/fr/meld-fr.omf 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ - - - - - - Stephen Kennedy - - - Stephen Kennedy - - - Manuel de Meld - - - 2004-10-16 - - - - - Ce document décrit l'utilisation de meld, un outil graphique pour afficher ou fusionner des différences, - intégré avec cvs et subversion. - - - manuel - - - - - - - - diff -Nru meld-1.5.3/help/fr/meld.fr.xml meld-3.11.0/help/fr/meld.fr.xml --- meld-1.5.3/help/fr/meld.fr.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/fr/meld.fr.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,294 +0,0 @@ - - - - Manuel d'utilisation de Meld - - - Manuel d'utilisation de Meld - - - - Stephen - - Kennedy - - stevek@gnome.org - - - - - 2004 - - Stephen Kennedy - 2008Bruno Brouard (annoa.b@gmail.com)2008Claude Paroz (claude@2xlibre.net) - - Ceci est la version 0.1 du manuel de meld, décrivant meld 0.9.6 - - - - Introduction - - - Qu'est-ce que meld ? - - Meld permet d'afficher les différences entre des fichiers ou des répertoires. Meld facilite la localisation et la fusion de ces différences. - - - - Démarrage de meld - - - Paramètres de la ligne de commande - - - - meld - - - démarre meld avec la boîte de dialogue « nouveau document » - - - - - meld <fichier> <fichier> [fichier] - - - démarre meld pour une comparaison entre deux ou trois fichiers - - - - - meld <rép> <rép> [rép] - - - démarre meld pour une comparaison entre deux ou trois fichiers - - - - - meld <rép|fichier> - - - démarre meld avec le navigateur du gestionnaire de source - - - - - - « <> » entoure les paramètres obligatoires, « [] » entoure les paramètres optionnels et « | » indique un choix. - - - - Saisissez meld --help pour obtenir la liste complète des options - - - - - - - Comparaison de fichiers - - - Démarrage - - Pour comparer des fichiers, choisissez FichierNouveau et sélectionnez l'onglet Comparaison de fichiers. Vous pouvez comparer deux ou trois fichiers. - - Pour une comparaison à deux éléments, l'original est affiché par convention dans le panneau de gauche et la version modifiée dans celui de droite. - - Pour une comparaison à trois éléments, l'original est affiché dans le panneau du centre et les panneaux gauche et droite affichent les versions modifiées. Par convention, le fichier modifié local est dans le panneau de droite. - - - - Résumé des changements - - L'emplacement des changements est résumé dans les marges de la fenêtre à l'extrême gauche et droite. Par défaut, les insertions et les suppressions sont signalées en vert et les modifications en bleu. - - Vous pouvez vous déplacer à un changement particulier en cliquant dans la marge ou en utilisant l'ascenseur. - - - - Affichage détaillé - - Le détail des différences est affiché dans le texte et dans le panneau central. Le texte inséré est affiché avec un arrière-plan de couleur. Les lignes modifiées sont marquées d'une couleur d'arrière-plan claire avec les modifications mis en évidence à l'aide d'une couleur plus foncée. - - La zone entre chaque fichier affiche l'emplacement des modifications dans l'autre fichier. Vous pouvez faire défiler les modifications en utilisant la molette de la souris sur cette zone ou en utilisant les raccourcis clavier CtrlD, CtrlE. - - - - Édition - - Vous pouvez modifier les fichiers comme vous le feriez à l'aide d'un éditeur de texte normal. Les différences se mettent à jour automatiquement. Utilisez CtrlF pour faire des recherches et CtrlG pour répéter la dernière recherche. - - Vous pouvez également appliquer les modifications en cliquant sur les boutons de fusion (« -> » et « <- »). En appuyant sur la touche Maj, vous pouvez supprimer des blocs entiers. En appuyant sur la touche Ctrl, vous pouvez insérer la modification actuelle avant ou après l'autre modification. - - Vous pouvez appliquer toutes les modifications à partir d'un des fichiers en cliquant avec le bouton droit sur un volet de texte et en choisissant Tout copier à gauche ou Tout copier à droite. Vous pouvez également lancer un éditeur externe à partir de ce menu. Configurez l'éditeur externe grâce au menu ParamètresPréférences. - - - - Filtre - - Vous pouvez ignorer certaines sortes de différences afin de localiser les différences importantes. Tous ces réglages sont disponibles dans la section Filtres de texte de la boîte de dialogue Préférences. - - - Expressions régulières - - Quand vous comparez des fichiers, chaque expression régulière sélectionnée est lancée successivement sur chaque ligne d'entrée. Tout ce qui correspond à l'expression régulière est effacé de l'entrée.Voir le module Python des expressions régulières (« re ») pour plus d'informations sur les expressions régulièresLes différences sont évaluées ligne par ligne. Les expressions régulières sur plusieurs lignes auront donc certainement des conséquences inattendues. - - - - Lignes vides - - Les modifications qui insèrent ou suppriment des lignes vides peuvent être ignorées. Cette option est très utile conjointement avec un ou plusieurs filtres avec expressions régulières. - - - - - Enregistrement - - Quand des modifications ne sont pas enregistrées, une icône de disque apparaît à côté du nom du fichier modifié. L'étiquette de l'onglet et le titre de la fenêtre ont également un astérisque à la suite du nom du fichier. - - Pour enregistrer un fichier, choisissez FichierEnregistrer, tapez CtrlS ou cliquez sur le bouton Enregistrer de la barre d'outils. Toutes ces actions enregistrent le fichier qui est actuellement actif (le fichier qui contient le curseur). - - - - Barre d'état - - La barre d'état affiche la position du curseur (ligne et colonne) ainsi que des messages de progression lorsque les fichiers sont initialement chargés et comparés. - - - - - Comparaison de dossiers - - - Démarrage - - Pour comparer des répertoires, choisissez FichierNouveau puis l'onglet Comparaison de répertoires. Vous pouvez comparer deux ou trois répertoires. - - Pour une comparaison à deux éléments, l'original est affiché par convention dans le panneau de gauche et la version modifiée dans celui de droite. - - Pour une comparaison à trois éléments, l'original est affiché dans le panneau du centre et les panneaux gauche et droite affichent les versions modifiées. Par convention, le fichier modifié local est dans le panneau de droite. - - - - Résumé des changements - - De la même manière que pour les comparaisons de fichiers, les marges des fenêtres indiquent les destructions, créations et modifications de fichiers. - - Vous pouvez vous déplacer à un changement particulier en cliquant dans la marge ou en utilisant l'ascenseur. - - - - Affichage détaillé - - Les fichiers modifiés sont mis en évidence en rouge, ceux créés en vert et ceux détruits sont barrés. Voir également . - - Le fichier ou le dossier dont la modification est la plus récente est marqué d'un point rouge sur son icône. Des informations plus détaillées telles que les permissions de fichiers et la date de modification sont affichées dans la barre d'état quand un fichier est sélectionné. - - Utilisez la souris ou les touches fléchées Haut, Bas, Gauche et Droite pour vous déplacer. De plus, CtrlD et CtrlE effectuent un déplacement vers la prochaine ou la précédente modification respectivement. - - - - Édition - - Activez un élément en double-cliquant ou tapez Entrée pour démarrer une comparaison de fichiers individuelle. - - Des options supplémentaires sont disponibles via le menu contextuel du bouton droit. - - Utilisez Maj+Clic et Ctrl+Clic pour sélectionner plusieurs éléments. - - - - Filtre - - La première comparaison contient souvent trop d'informations erronées. Vous pouvez utiliser les filtres pour isoler les différences qui sont importantes pour vous. - - - Masquage explicite - - Utilisez le bouton de la barre d'outils pour cacher un élément (et tous les sous-éléments pour les répertoires). - - - - Sensibilité à la casse - - Par défaut, les comparaisons de noms de fichiers sont sensibles à la casse. Utilisez le bouton de la barre d'outils pour modifier la sensibilité à la casse des noms de fichiers. - - - - Filtre sur l'état - - Tous les éléments ont un état qui est l'un des suivants : Modifié (il y a des différences de contenu entre les fichiers présents)Nouveau (il n'y a pas de différence de contenu entre les fichiers présents mais le fichier manque dans au moins un répertoire)Identique (tous les fichiers ont des contenus identiques et sont tous présents) - - Utilisez les boutons de la barre d'outils pour contrôler quels éléments sont affichés en fonction de leur état.Dans la version actuelle, seuls les fichiers sont filtrés par état. Les répertoires sont toujours affichés. - - - - Filtre sur les noms - - Meld permet de cacher certains modèles de nom de fichier de la comparaison en utilisant les boutons de la barre d'outils. Personnalisez vos modèles de fichiers cachés dans la section Filtrage de fichiers de la boîte de dialogue Préférences. - - - - Filtre sur le contenu - - Si des différences entre fichiers existent mais que toutes ces différences correspondent à l'expression régulière actuelle indiquée dans la section Filtre de texte de la boîte de dialogue Préférences, alors le nom du fichier n'est pas mis en évidence en rouge mais est plutôt mis en italique de la police standard. - - - - - - Contrôle de source - - - Démarrage - - Pour faire des recherches dans une copie de travail d'un dépôt de gestion de version, choisissez FichierNouveau puis l'onglet Navigateur du gestionnaire de versions. - - Le navigateur est utilisé pour examiner et valider ou rétablir des modifications locales. Son but n'est pas d'être un outil de gestion de versions complet. - - - - Filtre - - Le navigateur peut filtrer sur quatre états. Pour montrer ou cacher tous les fichiers dans un état particulier, sélectionnez ou désélectionnez le bouton correspondant dans la barre d'outils. - - - Normal - Le fichier n'a pas été modifié depuis qu'il a été extrait ou commité. - - Modifié - Le fichier a été modifié localement, ajouté ou supprimé. - - Non contrôlé par version - Le fichier n'est pas contrôlé par version : il existe localement mais n'a pas été extrait d'un dépôt. - - Ignoré - Le fichier est explicitement ignoré, par exemple au travers d'un fichier .cvsignore. - - - - Le bouton Aplatir affiche la liste des répertoires comme une liste simple, montrant en même temps tous les contenus des sous-répertoires. Ceci rend plus aisée la vision de nombreux changements éparpillés dans de nombreux répertoires ou dans une grande arborescence. Ceci est plus spécialement utile si le filtre modifié est activé simultanément. - - - - Affichage des différences - - L'activation d'un fichier non modifié ouvre celui-ci dans le visionneur. L'activation d'un fichier modifié affiche une comparaison des deux fichiers afin d'examiner leurs différences. - - Vous pouvez examiner plusieurs modifications à la fois en utilisant Maj+Clic et Ctrl+Clic pour sélectionner plusieurs éléments. - - - - Modifications - - La barre d'outils contient les commandes pour réaliser les opérations de gestion de versions les plus courantes. Ces opérations sont également accessibles grâce au menu contextuel. - - - - Affichage de la console - - En bas de la fenêtre de contrôle de source, une icône d'extension contient toutes les opérations de gestion de versions et leur sortie. Cliquez sur la barre de l'icône d'extension pour cacher ou montrer la console. - - - diff -Nru meld-1.5.3/help/Makefile meld-3.11.0/help/Makefile --- meld-1.5.3/help/Makefile 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ - -.SUFFIXES : - -LANGUAGES := C es fr - -.PHONY : all install uninstall clean - -all install uninstall clean : - for lang in $(LANGUAGES); do \ - $(MAKE) -C $$lang $@ ; \ - done - diff -Nru meld-1.5.3/help/oc/oc.po meld-3.11.0/help/oc/oc.po --- meld-1.5.3/help/oc/oc.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/oc/oc.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,384 +0,0 @@ -# Spanish translation of Meld's manual -# Traducción al español del manual de Meld -# Jorge Gonzalez , 2005. -msgid "" -msgstr "" -"Project-Id-Version: manual_meld\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-07-12 11:42+0200\n" -"PO-Revision-Date: 2007-12-31 21:09+0100\n" -"Last-Translator: Jorge Gonzalez \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit" - -#: meld.xml:4(title) meld.xml:7(title) -msgid "Meld Users Manual" -msgstr "" - -#: meld.xml:11(firstname) -msgid "Stephen" -msgstr "Stephen" - -#: meld.xml:13(surname) -msgid "Kennedy" -msgstr "Kennedy" - -#: meld.xml:15(email) -msgid "stevek@gnome.org" -msgstr "stevek@gnome.org" - -#: meld.xml:20(year) -msgid "2004" -msgstr "2004" - -#: meld.xml:22(holder) -msgid "Stephen Kennedy" -msgstr "Stephen Kennedy" - -#: meld.xml:25(releaseinfo) -msgid "This is version 0.1 of the meld manual, describing meld 0.9.6" -msgstr "" - -#: meld.xml:30(title) -msgid "Introduction" -msgstr "Introduccion" - -#: meld.xml:33(title) -msgid "What is meld" -msgstr "" - -#: meld.xml:35(para) -msgid "Meld views differences between files and between directories. Meld makes it easy to isolate and merge these differences." -msgstr "" - -#: meld.xml:40(title) -msgid "Starting meld" -msgstr "" - -#: meld.xml:43(title) -msgid "Command line arguments" -msgstr "" - -#: meld.xml:47(userinput) -#, no-wrap -msgid "meld" -msgstr "meld" - -#: meld.xml:50(para) -msgid "start meld with the new document dialog" -msgstr "" - -#: meld.xml:55(userinput) -#, no-wrap -msgid "meld <file> <file>\n [file]" -msgstr "" - -#: meld.xml:59(para) meld.xml:69(para) -msgid "start meld with either a two way or three way file comparison" -msgstr "" - -#: meld.xml:65(userinput) -#, no-wrap -msgid "meld <dir> <dir>\n [dir]" -msgstr "" - -#: meld.xml:75(userinput) -#, no-wrap -msgid "meld <dir|file>" -msgstr "" - -#: meld.xml:78(para) -msgid "start meld with the source control browser" -msgstr "" - -#: meld.xml:84(para) -msgid "\"<>\" demote required arguments, \"[]\" denote optional arguments and \"|\" a choice." -msgstr "" - -#: meld.xml:89(para) -msgid "Run meld --help for a complete list of options" -msgstr "" - -#: meld.xml:97(title) -msgid "File Comparison" -msgstr "" - -#: meld.xml:100(title) meld.xml:226(title) meld.xml:355(title) -msgid "Starting" -msgstr "Aviada" - -#: meld.xml:102(para) -msgid "Use File...->New...->File Comparison to start a new file comparison. You can compare two or three files." -msgstr "" - -#: meld.xml:105(para) meld.xml:232(para) -msgid "For two way comparisons the original is shown in the left pane and the modified version in the right pane by convention." -msgstr "" - -#: meld.xml:108(para) meld.xml:235(para) -msgid "For three way comparisons, the original is shown in the centre pane and the left and right panes show the modified versions. By convention we put the locally modified file in the right pane." -msgstr "" - -#: meld.xml:114(title) meld.xml:241(title) -msgid "Change Summary" -msgstr "" - -#: meld.xml:116(para) -msgid "The location of the changes is summarised in the window margins at the far left and right. By default green marks insertions and deletions and blue marks changes." -msgstr "" - -#: meld.xml:120(para) meld.xml:246(para) -msgid "You can jump to an individual change by clicking in the margin or using the scrollbar." -msgstr "" - -#: meld.xml:125(title) meld.xml:251(title) -msgid "Detailed View" -msgstr "" - -#: meld.xml:127(para) -msgid "Detailed differences are shown in the text and central pane. Inserted text is shown with a solid background. Lines containing changes are marked with a light background with the individual changes highlighted with a stronger colour." -msgstr "" - -#: meld.xml:132(para) -msgid "The area between each file shows where each change occurs in the other file. You can scroll through the changes by rolling the mouse wheel over this area or with keyboard shortcuts Control+D, Control+E." -msgstr "" - -#: meld.xml:139(title) meld.xml:269(title) -msgid "Editing" -msgstr "Modificacion" - -#: meld.xml:141(para) -msgid "You can edit the files as you would in a normal text editor. The differences will update automatically. Use Control+F to search and Control+G to repeat the last search." -msgstr "" - -#: meld.xml:145(para) -msgid "You can also apply changes by clicking the merge buttons (\"->\" and \"<-\"). Holding Shift allows blocks to be deleted. Holding Control allows the current change to be inserted before or after the other change." -msgstr "" - -#: meld.xml:151(para) -msgid "You can apply all the changes from a given file by right clicking a text pane and choosing Copy all left or Copy all right. You can also launch an external editor from this menu. Configure the external editor in Settings->Preferences->Editor" -msgstr "" - -#: meld.xml:160(title) meld.xml:283(title) meld.xml:367(title) -msgid "Filtering" -msgstr "" - -#: meld.xml:162(para) -msgid "You can ignore certain types of differences in order to locate important differences. All these settings are available from Settings->Preferences->Text Filters." -msgstr "" - -#: meld.xml:167(title) -msgid "Regular Expressions" -msgstr "" - -#: meld.xml:169(para) -msgid "When comparing files, each selected regular expression is run in turn over each file. If the expression does not contain groups then anything matching the expression is replaced by the empty string before comparison is performed. If there are one or more groups then only the groups are replaced by the empty string instead of the entire match." -msgstr "" - -#: meld.xml:177(para) -msgid "Replacement typically happens on several lines at a time. The input string will likely contain newline characters (\\n). If your regular expression matches newlines the comparison will be incorrect. (The technical reason is that incremental difference updates with multiline text replacement is tricky and not yet implemented.)" -msgstr "" - -#: meld.xml:186(para) -msgid "See the python re module for more information on regular expressions" -msgstr "" - -#: meld.xml:192(title) -msgid "Blank Lines" -msgstr "" - -#: meld.xml:194(para) -msgid "Changes which insert or remove blank lines can be ignored. This option is most useful in conjunction with one or more regular expression filters." -msgstr "" - -#: meld.xml:201(title) -msgid "Saving" -msgstr "A enregistrar" - -#: meld.xml:203(para) -msgid "When you have unsaved changes, a disk icon will appear beside the file name of the changed file. The tab label and window title also have an asterix after the file name." -msgstr "" - -#: meld.xml:207(para) -msgid "Save a file pressing Control+s, by selecting File->Save from the menu or by the toolbar save button. All of these save the currently focussed file (the file containing the edit cursor)" -msgstr "" - -#: meld.xml:214(title) -msgid "Status Bar" -msgstr "Barra d'estat" - -#: meld.xml:216(para) -msgid "The status bar shows the cursor location (line and column) and also progress messages as files are initially loaded and compared." -msgstr "" - -#: meld.xml:223(title) -msgid "Folder Comparison" -msgstr "" - -#: meld.xml:228(para) -msgid "Use File...->New...->Directory Comparison to start a new directory comparison. You can compare two or three directories." -msgstr "" - -#: meld.xml:243(para) -msgid "Similarly to the file comparison, the window margins mark file deletions, creations and modifications." -msgstr "" - -#: meld.xml:253(para) -msgid "Modified files are highlighted with red, created files with green and deleted files with a strikethrough. See also " -msgstr "" - -#: meld.xml:256(para) -msgid "The file or folder most recently modified has a red dot superimposed on its icon. More detailed information such as file permission and modification time can be seen in the status bar when a file is selected." -msgstr "" - -#: meld.xml:261(para) -msgid "Use the mouse or the the cursor keys Up, Down, Left and Right to navigate. Additionally Control+D and Control+E move to the next and previous modification respectively." -msgstr "" - -#: meld.xml:271(para) -msgid "Activate an item with double click or Return to start an individual file comparison." -msgstr "" - -#: meld.xml:274(para) -msgid "Additional options are available from a right click context menu." -msgstr "" - -#: meld.xml:277(para) -msgid "Use Shift+Click and Control+Click to select multiple items." -msgstr "" - -#: meld.xml:285(para) -msgid "Often the initial comparison will contain too much spurious information. You can use filters to isolate the differences which are important to you." -msgstr "" - -#: meld.xml:290(title) -msgid "Explicit Hiding" -msgstr "" - -#: meld.xml:292(para) -msgid "Use the toolbar button to hide an item (and all subitems for directories)." -msgstr "" - -#: meld.xml:297(title) -msgid "Case Sensitivity" -msgstr "" - -#: meld.xml:299(para) -msgid "By default filename comparisons are case sensitive. Use the toolbar button to toggle case sensitivty of filenames." -msgstr "" - -#: meld.xml:304(title) -msgid "State Filtering" -msgstr "" - -#: meld.xml:308(para) -msgid "Modified (there is some content difference between files which are present)" -msgstr "" - -#: meld.xml:313(para) -msgid "New (there is no content difference between present files, but the file is missing from at least one directory)" -msgstr "" - -#: meld.xml:318(para) -msgid "Identical (all files have equal content and are all present)" -msgstr "" - -#: meld.xml:306(para) -msgid "All items have a state which is one of: " -msgstr "" - -#: meld.xml:325(para) -msgid "In the current version, only files are filtered by state. Directories are always shown." -msgstr "" - -#: meld.xml:323(para) -msgid "Use the toolbar buttons to control which items are shown by their state." -msgstr "" - -#: meld.xml:331(title) -msgid "Name Filtering" -msgstr "" - -#: meld.xml:333(para) -msgid "You can hide selected filename patterns from the comparison using the toolbar buttons. Use Settings->Preferences->File Filters to customise the file patterns." -msgstr "" - -#: meld.xml:340(title) -msgid "Content Filtering" -msgstr "" - -#: meld.xml:342(para) -msgid "If differences between files exist, but all differences match the active regular expressions specified in Settings->Preferences->Text Filters, then the filename is not highlighted in red, but is insted italicised in regular font." -msgstr "" - -#: meld.xml:352(title) -msgid "Source Control" -msgstr "" - -#: meld.xml:357(para) -msgid "Use File...->New...->CVS Browser or File...->New...->SVN Browser to start browsing a working copy." -msgstr "" - -#: meld.xml:361(para) -msgid "The browser is used for examining and commiting or reverting local changes. It is not intended to be a complete source control client." -msgstr "" - -#: meld.xml:371(para) -msgid "Normal (the file is unchanged since it was checked out)" -msgstr "" - -#: meld.xml:376(para) -msgid "Non controlled (the file exists locally but was not checked out)" -msgstr "" - -#: meld.xml:381(para) -msgid "Ignored (the file is explicitly ignored e.g. though .cvsignore)" -msgstr "" - -#: meld.xml:386(para) -msgid "Modified (locally changed, added or removed)" -msgstr "" - -#: meld.xml:369(para) -msgid "The browser can filter on four states:" -msgstr "" - -#: meld.xml:390(para) -msgid "If you have several changes scattered in several directories or in a large tree, the 'Recurse' tooggle is flattens the directory listing. This is especially useful in conjunction with only the modified filter active." -msgstr "" - -#: meld.xml:397(title) -msgid "Viewing Differences" -msgstr "" - -#: meld.xml:399(para) -msgid "Activating an unmodified file opens it in the file viewer. Activating a modified file opens up a two way diff to examine your changes." -msgstr "" - -#: meld.xml:403(para) -msgid "You can examine many changes at once using Shift+Click and Control+Click to select multiple items." -msgstr "" - -#: meld.xml:410(title) -msgid "Making Changes" -msgstr "" - -#: meld.xml:412(para) -msgid "The toolbar contains commands to perform the most common source control operations. These operations are also accessible through a context menu." -msgstr "" - -#: meld.xml:418(title) -msgid "Viewing Console" -msgstr "" - -#: meld.xml:420(para) -msgid "At the bottom of the source control window is an expander containing all the source control operations and their output. Click the expander bar to toggle between hiding and showing the console." -msgstr "" - -#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. -#: meld.xml:0(None) -msgid "translator-credits" -msgstr "Yannig Marchegay (Kokoyaya) " - diff -Nru meld-1.5.3/help/sv/sv.po meld-3.11.0/help/sv/sv.po --- meld-1.5.3/help/sv/sv.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/help/sv/sv.po 1970-01-01 00:00:00.000000000 +0000 @@ -1,408 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2008-02-23 03:47+0000\n" -"PO-Revision-Date: 2008-02-23 19:36+0100\n" -"Last-Translator: Daniel Nylander \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: C/meld.xml:5(title) -#: C/meld.xml:8(title) -msgid "Meld Users Manual" -msgstr "Användarhandbok för meld" - -#: C/meld.xml:12(firstname) -msgid "Stephen" -msgstr "Stephen" - -#: C/meld.xml:14(surname) -msgid "Kennedy" -msgstr "Kennedy" - -#: C/meld.xml:16(email) -msgid "stevek@gnome.org" -msgstr "stevek@gnome.org" - -#: C/meld.xml:21(year) -msgid "2004" -msgstr "2004" - -#: C/meld.xml:23(holder) -msgid "Stephen Kennedy" -msgstr "Stephen Kennedy" - -#: C/meld.xml:26(releaseinfo) -msgid "This is version 0.1 of the meld manual, describing meld 0.9.6" -msgstr "Det här är version 0.1 av handboken för meld, som beskriver meld 0.9.6" - -#: C/meld.xml:30(title) -msgid "Introduction" -msgstr "Introduktion" - -#: C/meld.xml:33(title) -msgid "What is meld" -msgstr "Vad är meld" - -#: C/meld.xml:35(para) -msgid "Meld views differences between files and between directories. Meld makes it easy to isolate and merge these differences." -msgstr "" - -#: C/meld.xml:40(title) -msgid "Starting meld" -msgstr "Starta meld" - -#: C/meld.xml:43(title) -msgid "Command line arguments" -msgstr "Kommandoradsargument" - -#: C/meld.xml:47(userinput) -#, no-wrap -msgid "meld" -msgstr "meld" - -#: C/meld.xml:50(para) -msgid "start meld with the new document dialog" -msgstr "" - -#: C/meld.xml:55(userinput) -#, no-wrap -msgid "meld <file> <file> [file]" -msgstr "meld <fil> <fil> [fil]" - -#: C/meld.xml:58(para) -#: C/meld.xml:67(para) -msgid "start meld with either a two way or three way file comparison" -msgstr "" - -#: C/meld.xml:64(userinput) -#, no-wrap -msgid "meld <dir> <dir> [dir]" -msgstr "meld <kat> <kat> [kat]" - -#: C/meld.xml:73(userinput) -#, no-wrap -msgid "meld <dir|file>" -msgstr "meld <kat|fil>" - -#: C/meld.xml:76(para) -msgid "start meld with the source control browser" -msgstr "" - -#: C/meld.xml:82(para) -msgid "\"<>\" surround required arguments, \"[]\" surround optional arguments and \"|\" indicates a choice." -msgstr "" - -#: C/meld.xml:87(para) -msgid "Run meld --help for a complete list of options" -msgstr "" - -#: C/meld.xml:95(title) -msgid "File Comparison" -msgstr "Filjämförelse" - -#: C/meld.xml:98(title) -#: C/meld.xml:208(title) -#: C/meld.xml:322(title) -msgid "Starting" -msgstr "" - -#: C/meld.xml:100(para) -msgid "To compare files, choose FileNew and select the File Comparison tab. You can compare two or three files." -msgstr "" - -#: C/meld.xml:103(para) -#: C/meld.xml:213(para) -msgid "For two way comparisons the original is shown in the left pane and the modified version in the right pane by convention." -msgstr "" - -#: C/meld.xml:106(para) -#: C/meld.xml:216(para) -msgid "For three way comparisons, the original is shown in the centre pane and the left and right panes show the modified versions. By convention we put the locally modified file in the right pane." -msgstr "" - -#: C/meld.xml:112(title) -#: C/meld.xml:222(title) -msgid "Change Summary" -msgstr "" - -#: C/meld.xml:114(para) -msgid "The location of the changes is summarised in the window margins at the far left and right. By default green marks insertions and deletions and blue marks changes." -msgstr "" - -#: C/meld.xml:118(para) -#: C/meld.xml:227(para) -msgid "You can jump to an individual change by clicking in the margin or using the scrollbar." -msgstr "" - -#: C/meld.xml:123(title) -#: C/meld.xml:232(title) -msgid "Detailed View" -msgstr "" - -#: C/meld.xml:125(para) -msgid "Detailed differences are shown in the text and central pane. Inserted text is shown with a solid background. Lines containing changes are marked with a light background with the individual changes highlighted with a stronger colour." -msgstr "" - -#: C/meld.xml:130(para) -msgid "The area between each file shows where each change occurs in the other file. You can scroll through the changes by rolling the mouse wheel over this area or with keyboard shortcuts CtrlD, CtrlE." -msgstr "" - -#: C/meld.xml:137(title) -#: C/meld.xml:251(title) -msgid "Editing" -msgstr "Redigering" - -#: C/meld.xml:139(para) -msgid "You can edit the files as you would in a normal text editor. The differences will update automatically. Use CtrlF to search and CtrlG to repeat the last search." -msgstr "" - -#: C/meld.xml:143(para) -msgid "You can also apply changes by clicking the merge buttons (\"->\" and \"<-\"). Holding Shift allows blocks to be deleted. Holding Control allows the current change to be inserted before or after the other change." -msgstr "" - -#: C/meld.xml:148(para) -msgid "You can apply all the changes from a given file by right clicking a text pane and choosing Copy all left or Copy all right. You can also launch an external editor from this menu. Configure the external editor in SettingsPreferences." -msgstr "" - -#: C/meld.xml:156(title) -#: C/meld.xml:264(title) -#: C/meld.xml:332(title) -msgid "Filtering" -msgstr "Filtrering" - -#: C/meld.xml:158(para) -msgid "You can ignore certain types of differences in order to locate important differences. All these settings are available in the Text Filters section of the Preferences dialog." -msgstr "" - -#: C/meld.xml:162(title) -msgid "Regular Expressions" -msgstr "Reguljära uttryck" - -#: C/meld.xml:166(para) -msgid "See the python re module for more information on regular expressions" -msgstr "" - -#: C/meld.xml:167(para) -msgid "Differences are computed line-by-line so multiline regulare expressions will likely have unintended consequences." -msgstr "" - -#: C/meld.xml:164(para) -msgid "When comparing files, each selected regular expression is run in turn over each line of input. Anything matching the expression is removed from the input." -msgstr "" - -#: C/meld.xml:173(title) -msgid "Blank Lines" -msgstr "" - -#: C/meld.xml:175(para) -msgid "Changes which insert or remove blank lines can be ignored. This option is most useful in conjunction with one or more regular expression filters." -msgstr "" - -#: C/meld.xml:182(title) -msgid "Saving" -msgstr "" - -#: C/meld.xml:184(para) -msgid "When you have unsaved changes, a disk icon will appear beside the file name of the changed file. The tab label and window title also have an asterix after the file name." -msgstr "" - -#: C/meld.xml:188(para) -msgid "To save a file, choose FileSave, press CtrlS, or press the toolbar save button. All of these save the currently focussed file (the file containing the edit cursor)." -msgstr "" - -#: C/meld.xml:197(title) -msgid "Status Bar" -msgstr "Statusrad" - -#: C/meld.xml:199(para) -msgid "The status bar shows the cursor location (line and column) and also progress messages as files are initially loaded and compared." -msgstr "" - -#: C/meld.xml:205(title) -msgid "Folder Comparison" -msgstr "Mappjämförelse" - -#: C/meld.xml:210(para) -msgid "To compare directories, choose FileNew and select the Directory Comparison tab. You can compare two or three directories." -msgstr "" - -#: C/meld.xml:224(para) -msgid "Similarly to the file comparison, the window margins mark file deletions, creations and modifications." -msgstr "" - -#: C/meld.xml:234(para) -msgid "Modified files are highlighted with red, created files with green and deleted files with a strikethrough. See also " -msgstr "" - -#: C/meld.xml:238(para) -msgid "The file or folder most recently modified has a red dot superimposed on its icon. More detailed information such as file permission and modification time can be seen in the status bar when a file is selected." -msgstr "" - -#: C/meld.xml:243(para) -msgid "Use the mouse or the the cursor keys Up, Down, Left and Right to navigate. Additionally CtrlD and CtrlE move to the next and previous modification respectively." -msgstr "" - -#: C/meld.xml:253(para) -msgid "Activate an item with double click or Return to start an individual file comparison." -msgstr "" - -#: C/meld.xml:256(para) -msgid "Additional options are available from a right click context menu." -msgstr "" - -#: C/meld.xml:259(para) -msgid "Use Shift+Click and Control+Click to select multiple items." -msgstr "" - -#: C/meld.xml:266(para) -msgid "Often the initial comparison will contain too much spurious information. You can use filters to isolate the differences which are important to you." -msgstr "" - -#: C/meld.xml:271(title) -msgid "Explicit Hiding" -msgstr "" - -#: C/meld.xml:273(para) -msgid "Use the toolbar button to hide an item (and all subitems for directories)." -msgstr "" - -#: C/meld.xml:278(title) -msgid "Case Sensitivity" -msgstr "" - -#: C/meld.xml:280(para) -msgid "By default filename comparisons are case sensitive. Use the toolbar button to toggle case sensitivty of filenames." -msgstr "" - -#: C/meld.xml:285(title) -msgid "State Filtering" -msgstr "" - -#: C/meld.xml:288(para) -msgid "Modified (there is some content difference between files which are present)" -msgstr "" - -#: C/meld.xml:289(para) -msgid "New (there is no content difference between present files, but the file is missing from at least one directory)" -msgstr "" - -#: C/meld.xml:291(para) -msgid "Identical (all files have equal content and are all present)" -msgstr "" - -#: C/meld.xml:287(para) -msgid "All items have a state which is one of: " -msgstr "" - -#: C/meld.xml:295(para) -msgid "In the current version, only files are filtered by state. Directories are always shown." -msgstr "" - -#: C/meld.xml:294(para) -msgid "Use the toolbar buttons to control which items are shown by their state." -msgstr "" - -#: C/meld.xml:300(title) -msgid "Name Filtering" -msgstr "" - -#: C/meld.xml:302(para) -msgid "Meld can hide certain filename patterns from the comparison using the toolbar buttons. Customise the file patterns that are hidden in the File Filters section of the Preferences dialog." -msgstr "" - -#: C/meld.xml:308(title) -msgid "Content Filtering" -msgstr "" - -#: C/meld.xml:310(para) -msgid "If differences between files exist, but all differences match the active regular expressions specified in Text Filters section of the Preferences dialog, then the filename is not highlighted in red, but is insted italicised in regular font." -msgstr "" - -#: C/meld.xml:319(title) -msgid "Source Control" -msgstr "" - -#: C/meld.xml:324(para) -msgid "To browse a working copy of a source control repository, choose FileNew and select the Version Control Browser tab." -msgstr "" - -#: C/meld.xml:327(para) -msgid "The browser is used for examining and commiting or reverting local changes. It is not intended to be a complete source control client." -msgstr "" - -#: C/meld.xml:334(para) -msgid "The browser can filter on four states. To show or hide all files in a particular state, select or deselect the corresponding toggle button in the toolbar." -msgstr "" - -#: C/meld.xml:337(guibutton) -msgid "Normal" -msgstr "" - -#: C/meld.xml:338(para) -msgid "The file has not changed since it was checked out or committed." -msgstr "" - -#: C/meld.xml:340(guibutton) -msgid "Modified" -msgstr "Ändrad" - -#: C/meld.xml:341(para) -msgid "The file has been locally changed, added, or removed." -msgstr "" - -#: C/meld.xml:343(guibutton) -msgid "Non VC" -msgstr "" - -#: C/meld.xml:344(para) -msgid "The file is non-version controlled: it exists locally but was not checked out from a repository." -msgstr "" - -#: C/meld.xml:346(guibutton) -msgid "Ignored" -msgstr "Ignorerad" - -#: C/meld.xml:347(para) -msgid "The file is explicitly ignored e.g. though a .cvsignore file." -msgstr "" - -#: C/meld.xml:351(para) -msgid "The Flatten toggle displays the directory listing as a plain list, showing all subdirectory contents together. This makes it easier to see several changes scattered in several directories or in a large tree. This is especially useful in conjunction with only the modified filter active." -msgstr "" - -#: C/meld.xml:359(title) -msgid "Viewing Differences" -msgstr "" - -#: C/meld.xml:361(para) -msgid "Activating an unmodified file opens it in the file viewer. Activating a modified file opens up a two way diff to examine your changes." -msgstr "" - -#: C/meld.xml:365(para) -msgid "You can examine many changes at once using Shift+Click and Control+Click to select multiple items." -msgstr "" - -#: C/meld.xml:371(title) -msgid "Making Changes" -msgstr "" - -#: C/meld.xml:373(para) -msgid "The toolbar contains commands to perform the most common source control operations. These operations are also accessible through a context menu." -msgstr "" - -#: C/meld.xml:379(title) -msgid "Viewing Console" -msgstr "" - -#: C/meld.xml:381(para) -msgid "At the bottom of the source control window is an expander containing all the source control operations and their output. Click the expander bar to toggle between hiding and showing the console." -msgstr "" - -#. Put one translator per line, in the form of NAME , YEAR1, YEAR2. -#: C/meld.xml:0(None) -msgid "translator-credits" -msgstr "Daniel Nylander , 2008" - diff -Nru meld-1.5.3/INSTALL meld-3.11.0/INSTALL --- meld-1.5.3/INSTALL 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/INSTALL 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -## -## Running uninstalled -## =================== -## -## Meld does not need to be installed in order to be used. You can run Meld -## directly from the directory you downloaded and extracted it to. From the -## extracted directory, run: -## -## bin/meld -## -## In order to have translations work, you need to generate them first. Do -## this by running (also from the extracted directory): -## -## make -## -## If you want to be able to run Meld uninstalled just by typing 'meld' then -## create a symbolic link somewhere in your path, pointing to the executable. -## e.g., -## -## ln -s ~/Download/meld/bin/meld ~/.local/bin/meld -## -## -## -## Installing -## ========== -## -## Install Meld by changing to the extracted directory and then running, e.g.,: -## -## make prefix=/usr/local install -## -## which will install Meld under /usr/local; the Meld executable will end up -## at /usr/local/bin/meld. -## -## If you need to, you can customise the install paths used here: -## -PYTHON ?= python -prefix := /usr/local -bindir := $(prefix)/bin -libdir := $(prefix)/lib -docdir := $(prefix)/share/doc -sharedir := $(prefix)/share -helpdir := $(sharedir)/gnome/help -localedir := $(prefix)/share/locale -localstatedir := $(prefix)/var -libdir_ := $(libdir)/meld -docdir_ := $(docdir)/meld -sharedir_ := $(sharedir)/meld -helpdir_ := $(helpdir)/meld -## -## Python Version -## ************** -## -## Meld requires at least python 2.5. -## -## Dependencies -## ************ -## -## At the very least you will need: -## * pygtk-2.14.0 -## * pygobject-2.16.0 -## -## Optional: -## * pygtksourceview 2.4 or higher -## (http://sourceforge.net/projects/pygtksourceview) -## -## They are all available from your favourite gnome mirror. -## Alternatively many distributions provide binary packages. -## diff -Nru meld-1.5.3/Makefile meld-3.11.0/Makefile --- meld-1.5.3/Makefile 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ - -.SUFFIXES : - -# default install directories -include INSTALL - -# -VERSION := $(shell grep "^version" meld/meldapp.py | cut -d \" -f 2) -RELEASE := meld-$(VERSION) -MELD_CMD := ./meld #--profile -SPECIALS := bin/meld meld/paths.py -BROWSER := firefox - -.PHONY:all -all: $(addsuffix .install,$(SPECIALS)) meld.desktop - $(MAKE) -C po - $(MAKE) -C help - -.PHONY:clean -clean: - @find ./meld -type f \( -name '*.pyc' -o -name '*.install' \) -print0 |\ - xargs -0 rm -f - @find ./bin -type f \( -name '*.install' \) -print0 | xargs -0 rm -f - @rm -f data/meld.desktop - $(MAKE) -C po clean - $(MAKE) -C help clean - -.PHONY:install -install: $(addsuffix .install,$(SPECIALS)) meld.desktop - mkdir -m 755 -p \ - $(DESTDIR)$(bindir) \ - $(DESTDIR)$(libdir_) \ - $(DESTDIR)$(libdir_)/meld \ - $(DESTDIR)$(libdir_)/meld/ui \ - $(DESTDIR)$(libdir_)/meld/util \ - $(DESTDIR)$(libdir_)/meld/vc \ - $(DESTDIR)$(sharedir_)/ui \ - $(DESTDIR)$(sharedir_)/icons \ - $(DESTDIR)$(docdir_) \ - $(DESTDIR)$(sharedir)/applications \ - $(DESTDIR)$(sharedir)/pixmaps \ - $(DESTDIR)$(sharedir)/icons/hicolor/16x16/apps \ - $(DESTDIR)$(sharedir)/icons/hicolor/22x22/apps \ - $(DESTDIR)$(sharedir)/icons/hicolor/32x32/apps \ - $(DESTDIR)$(sharedir)/icons/hicolor/48x48/apps \ - $(DESTDIR)$(sharedir)/icons/hicolor/scalable/apps \ - $(DESTDIR)$(helpdir_) - install -m 755 bin/meld.install \ - $(DESTDIR)$(bindir)/meld - install -m 644 meld/*.py \ - $(DESTDIR)$(libdir_)/meld - install -m 644 meld/ui/*.py \ - $(DESTDIR)$(libdir_)/meld/ui - install -m 644 meld/util/*.py \ - $(DESTDIR)$(libdir_)/meld/util - install -m 644 meld/vc/*.py \ - $(DESTDIR)$(libdir_)/meld/vc - install -m 644 meld/paths.py.install \ - $(DESTDIR)$(libdir_)/meld/paths.py - install -m 644 data/meld.desktop \ - $(DESTDIR)$(sharedir)/applications - $(PYTHON) -c 'import compileall; compileall.compile_dir("$(DESTDIR)$(libdir_)",10,"$(libdir_)")' - $(PYTHON) -O -c 'import compileall; compileall.compile_dir("$(DESTDIR)$(libdir_)",10,"$(libdir_)")' - install -m 644 \ - data/ui/*.ui \ - $(DESTDIR)$(sharedir_)/ui - install -m 644 \ - data/ui/*.xml \ - $(DESTDIR)$(sharedir_)/ui - install -m 644 \ - data/icons/*.xpm \ - data/icons/*.png \ - $(DESTDIR)$(sharedir_)/icons - install -m 644 data/icons/hicolor/16x16/apps/meld.png \ - $(DESTDIR)$(sharedir)/icons/hicolor/16x16/apps/meld.png - install -m 644 data/icons/hicolor/22x22/apps/meld.png \ - $(DESTDIR)$(sharedir)/icons/hicolor/22x22/apps/meld.png - install -m 644 data/icons/hicolor/32x32/apps/meld.png \ - $(DESTDIR)$(sharedir)/icons/hicolor/32x32/apps/meld.png - install -m 644 data/icons/hicolor/48x48/apps/meld.png \ - $(DESTDIR)$(sharedir)/icons/hicolor/48x48/apps/meld.png - install -m 644 data/icons/hicolor/scalable/apps/meld.svg \ - $(DESTDIR)$(sharedir)/icons/hicolor/scalable/apps/meld.svg - $(MAKE) -C po install - $(MAKE) -C help install - -meld.desktop: data/meld.desktop.in - intltool-merge -d po data/meld.desktop.in data/meld.desktop - -%.install: % - $(PYTHON) tools/install_paths \ - libdir=$(libdir_) \ - localedir=$(localedir) \ - helpdir=$(helpdir_) \ - sharedir=$(sharedir_) \ - < $< > $@ - -.PHONY:uninstall -uninstall: - -rm -rf \ - $(sharedir_) \ - $(docdir_) \ - $(helpdir_) \ - $(libdir_) \ - $(bindir)/meld \ - $(sharedir)/applications/meld.desktop \ - $(sharedir)/pixmaps/meld.png - $(MAKE) -C po uninstall - $(MAKE) -C help uninstall - diff -Nru meld-1.5.3/MANIFEST.in meld-3.11.0/MANIFEST.in --- meld-1.5.3/MANIFEST.in 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/MANIFEST.in 2014-02-22 20:42:53.000000000 +0000 @@ -0,0 +1,17 @@ +recursive-include po *.po LINGUAS POTFILES.in + +recursive-include data/icons/hicolor *.png +recursive-include data/icons/hicolor/scalable *.svg +recursive-include data/icons/HighContrast *.png +recursive-include data/icons/HighContrast/scalable *.svg + +recursive-include help *.page *.xml *.po + +include MANIFEST.in +include meld.doap +include data/meld.appdata.xml.in +include data/meld.css +include data/meld.desktop.in +include data/mime/meld.xml.in +include data/org.gnome.meld.gschema.xml +include meld/ui/catalog.xml diff -Nru meld-1.5.3/meld/build_helpers.py meld-3.11.0/meld/build_helpers.py --- meld-1.5.3/meld/build_helpers.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/build_helpers.py 2014-02-22 20:41:47.000000000 +0000 @@ -0,0 +1,268 @@ +# 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, see . + +# Copied and adapted from the DistUtilsExtra project +# Created by Sebastian Heinlein and Martin Pitt +# Copyright Canonical Ltd. + +# Modified by Kai Willadsen for the Meld project +# Copyright (C) 2013-2014 Kai Willadsen + + +import distutils.cmd +import distutils.command.build +import distutils.dir_util +import glob +import os.path + + +class build_extra(distutils.command.build.build): + + def __init__(self, dist): + distutils.command.build.build.__init__(self, dist) + + def has_help(command): + return "build_help" in self.distribution.cmdclass + + def has_icons(command): + return "build_icons" in self.distribution.cmdclass + + def has_i18n(command): + return "build_i18n" in self.distribution.cmdclass + + def has_data(command): + return "build_data" in self.distribution.cmdclass + + self.sub_commands.append(("build_i18n", has_i18n)) + self.sub_commands.append(("build_icons", has_icons)) + self.sub_commands.append(("build_help", has_help)) + self.sub_commands.append(("build_data", has_data)) + + +class build_data(distutils.cmd.Command): + + gschemas = [ + ('share/glib-2.0/schemas/', ['data/org.gnome.meld.gschema.xml']) + ] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def get_data_files(self): + return self.gschemas + + def run(self): + data_files = self.distribution.data_files + data_files.extend(self.get_data_files()) + + +class build_help(distutils.cmd.Command): + + help_dir = 'help' + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def get_data_files(self): + data_files = [] + name = self.distribution.metadata.name + + if "LINGUAS" in os.environ: + self.selected_languages = os.environ["LINGUAS"].split() + else: + self.selected_languages = os.listdir(self.help_dir) + + self.C_PAGES = glob.glob(os.path.join(self.help_dir, 'C', '*.page')) + self.C_EXTRA = glob.glob(os.path.join(self.help_dir, 'C', '*.xml')) + + for lang in self.selected_languages: + source_path = os.path.join(self.help_dir, lang) + build_path = os.path.join('build', self.help_dir, lang) + if not os.path.exists(build_path): + os.makedirs(build_path) + + if lang != 'C': + po_file = os.path.join(source_path, lang + '.po') + mo_file = os.path.join(build_path, lang + '.mo') + + msgfmt = ['msgfmt', po_file, '-o', mo_file] + self.spawn(msgfmt) + for page in self.C_PAGES: + itstool = ['itstool', '-m', mo_file, '-o', build_path, page] + self.spawn(itstool) + for extra in self.C_EXTRA: + extra_path = os.path.join(build_path, os.path.basename(extra)) + if os.path.exists(extra_path): + os.unlink(extra_path) + os.symlink(os.path.relpath(extra, source_path), extra_path) + else: + distutils.dir_util.copy_tree(source_path, build_path) + + xml_files = glob.glob('%s/*.xml' % build_path) + mallard_files = glob.glob('%s/*.page' % build_path) + path_help = os.path.join('share', 'help', lang, name) + path_figures = os.path.join(path_help, 'figures') + data_files.append((path_help, xml_files + mallard_files)) + data_files.append((path_figures, glob.glob('%s/figures/*.png' % build_path))) + + return data_files + + def run(self): + data_files = self.distribution.data_files + data_files.extend(self.get_data_files()) + self.check_help() + + def check_help(self): + for lang in self.selected_languages: + build_path = os.path.join('build', self.help_dir, lang) + pages = [os.path.basename(p) for p in self.C_PAGES] + for page in pages: + page_path = os.path.join(build_path, page) + if not os.path.exists(page_path): + print "Skipping missing file", page_path + continue + lint = ['xmllint', '--noout', '--noent', '--path', build_path, + '--xinclude', page_path] + self.spawn(lint) + + +class build_icons(distutils.cmd.Command): + + icon_dir = os.path.join("data", "icons") + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + data_files = self.distribution.data_files + + for theme in glob.glob(os.path.join(self.icon_dir, "*")): + for size in glob.glob(os.path.join(theme, "*")): + for category in glob.glob(os.path.join(size, "*")): + icons = (glob.glob(os.path.join(category, "*.png")) + + glob.glob(os.path.join(category, "*.svg"))) + icons = [icon for icon in icons if not os.path.islink(icon)] + if not icons: + continue + data_files.append(("share/icons/%s/%s/%s" % + (os.path.basename(theme), + os.path.basename(size), + os.path.basename(category)), + icons)) + + +class build_i18n(distutils.cmd.Command): + + bug_contact = None + domain = "meld" + po_dir = "po" + merge_po = False + + # FIXME: It's ridiculous to specify these here, but I know of no other + # way except magically extracting them from self.distribution.data_files + desktop_files = [('share/applications', glob.glob("data/*.desktop.in"))] + xml_files = [ + ('share/appdata', glob.glob("data/*.appdata.xml.in")), + ('share/mime/packages', glob.glob("data/mime/*.xml.in")) + ] + schemas_files = [] + key_files = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def _rebuild_po(self): + # If there is a po/LINGUAS file, or the LINGUAS environment variable + # is set, only compile the languages listed there. + selected_languages = None + linguas_file = os.path.join(self.po_dir, "LINGUAS") + if "LINGUAS" in os.environ: + selected_languages = os.environ["LINGUAS"].split() + elif os.path.isfile(linguas_file): + selected_languages = open(linguas_file).read().split() + + # Update po(t) files and print a report + # We have to change the working dir to the po dir for intltool + cmd = ["intltool-update", (self.merge_po and "-r" or "-p"), "-g", self.domain] + wd = os.getcwd() + os.chdir(self.po_dir) + self.spawn(cmd) + os.chdir(wd) + max_po_mtime = 0 + for po_file in glob.glob("%s/*.po" % self.po_dir): + lang = os.path.basename(po_file[:-3]) + if selected_languages and not lang in selected_languages: + continue + mo_dir = os.path.join("build", "mo", lang, "LC_MESSAGES") + mo_file = os.path.join(mo_dir, "%s.mo" % self.domain) + if not os.path.exists(mo_dir): + os.makedirs(mo_dir) + cmd = ["msgfmt", po_file, "-o", mo_file] + po_mtime = os.path.getmtime(po_file) + mo_mtime = os.path.exists(mo_file) and os.path.getmtime(mo_file) or 0 + if po_mtime > max_po_mtime: + max_po_mtime = po_mtime + if po_mtime > mo_mtime: + self.spawn(cmd) + + targetpath = os.path.join("share/locale", lang, "LC_MESSAGES") + self.distribution.data_files.append((targetpath, (mo_file,))) + self.max_po_mtime = max_po_mtime + + def run(self): + if self.bug_contact is not None: + os.environ["XGETTEXT_ARGS"] = "--msgid-bugs-address=%s " % \ + self.bug_contact + + self._rebuild_po() + + intltool_switches = [ + (self.xml_files, "-x"), + (self.desktop_files, "-d"), + (self.schemas_files, "-s"), + (self.key_files, "-k"), + ] + + for file_set, switch in intltool_switches: + for target, files in file_set: + build_target = os.path.join("build", target) + if not os.path.exists(build_target): + os.makedirs(build_target) + files_merged = [] + for file in files: + file_merged = os.path.basename(file) + if file_merged.endswith(".in"): + file_merged = file_merged[:-3] + file_merged = os.path.join(build_target, file_merged) + cmd = ["intltool-merge", switch, self.po_dir, file, + file_merged] + mtime_merged = (os.path.exists(file_merged) and + os.path.getmtime(file_merged) or 0) + mtime_file = os.path.getmtime(file) + if mtime_merged < self.max_po_mtime or mtime_merged < mtime_file: + # Only build if output is older than input (.po,.in) + self.spawn(cmd) + files_merged.append(file_merged) + self.distribution.data_files.append((target, files_merged)) diff -Nru meld-1.5.3/meld/conf.py meld-3.11.0/meld/conf.py --- meld-1.5.3/meld/conf.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/conf.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,24 @@ + +import os +import sys + +__package__ = "meld" +__version__ = "3.11.0" + +DATADIR = os.path.join(sys.prefix, "share", "meld") +LOCALEDIR = os.path.join(sys.prefix, "share", "locale") + + +def uninstalled(): + global DATADIR, LOCALEDIR + melddir = os.path.abspath(os.path.join( + os.path.dirname(os.path.realpath(__file__)), "..")) + + DATADIR = os.path.join(melddir, "data") + LOCALEDIR = os.path.join(melddir, "build", "mo") + + # This first bit should be unnecessary, but some things (GTK icon theme + # location, GSettings schema location) don't fall back correctly. + data_dir = os.environ.get('XDG_DATA_DIRS', "/usr/local/share/:/usr/share/") + data_dir = ":".join((melddir, data_dir)) + os.environ['XDG_DATA_DIRS'] = data_dir diff -Nru meld-1.5.3/meld/diffmap.py meld-3.11.0/meld/diffmap.py --- meld-1.5.3/meld/diffmap.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/diffmap.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,37 +1,35 @@ -### Copyright (C) 2002-2009 Stephen Kennedy -### Copyright (C) 2009-2010 Kai Willadsen +# Copyright (C) 2002-2009 Stephen Kennedy +# Copyright (C) 2009-2013 Kai Willadsen +# +# 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, see . + +import collections + +import cairo + +from gi.repository import GObject +from gi.repository import Gdk +from gi.repository import Gtk -### 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 gobject -import gtk - - -class DiffMap(gtk.DrawingArea): +class DiffMap(Gtk.DrawingArea): __gtype_name__ = "DiffMap" - __gsignals__ = { - 'expose-event': 'override', - 'button-press-event': 'override', - 'size-request': 'override', - } - def __init__(self): - gtk.DrawingArea.__init__(self) - self.add_events(gtk.gdk.BUTTON_PRESS_MASK) + GObject.GObject.__init__(self) + self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK) self._scrolladj = None self._difffunc = lambda: None self._handlers = [] @@ -39,21 +37,23 @@ self._h_offset = 0 self._scroll_y = 0 self._scroll_height = 0 - self.ctab = {} + self._setup = False + self._width = 10 - def setup(self, scrollbar, change_chunk_fn, colour_map): + def setup(self, scrollbar, change_chunk_fn, color_map): for (o, h) in self._handlers: o.disconnect(h) self._scrolladj = scrollbar.get_adjustment() - self.on_scrollbar_style_set(scrollbar, None) - self.on_scrollbar_size_allocate(scrollbar, scrollbar.allocation) - scroll_style_hid = scrollbar.connect("style-set", - self.on_scrollbar_style_set) + self.on_scrollbar_style_updated(scrollbar) + self.on_scrollbar_size_allocate(scrollbar, scrollbar.get_allocation()) + scrollbar.ensure_style() + scroll_style_hid = scrollbar.connect("style-updated", + self.on_scrollbar_style_updated) scroll_size_hid = scrollbar.connect("size-allocate", self.on_scrollbar_size_allocate) adj_change_hid = self._scrolladj.connect("changed", - lambda w: self.queue_draw()) + lambda w: self.queue_draw()) adj_val_hid = self._scrolladj.connect("value-changed", lambda w: self.queue_draw()) self._handlers = [(scrollbar, scroll_style_hid), @@ -61,15 +61,35 @@ (self._scrolladj, adj_change_hid), (self._scrolladj, adj_val_hid)] self._difffunc = change_chunk_fn - self.ctab = colour_map + self.set_color_scheme(color_map) + self._setup = True + self._cached_map = None self.queue_draw() - def on_scrollbar_style_set(self, scrollbar, previous_style): - stepper_size = scrollbar.style_get_property("stepper-size") - steppers = [scrollbar.style_get_property(x) for x in - ("has-backward-stepper", "has-secondary-forward-stepper", - "has-secondary-backward-stepper", "has-forward-stepper")] - stepper_spacing = scrollbar.style_get_property("stepper-spacing") + def on_diffs_changed(self, *args): + self._cached_map = None + + def set_color_scheme(self, color_map): + self.fill_colors, self.line_colors = color_map + self.queue_draw() + + def on_scrollbar_style_updated(self, scrollbar): + value = GObject.Value(int) + scrollbar.style_get_property("stepper-size", value) + stepper_size = value.get_int() + scrollbar.style_get_property("stepper-spacing", value) + stepper_spacing = value.get_int() + + bool_value = GObject.Value(bool) + scrollbar.style_get_property("has-backward-stepper", bool_value) + has_backward = bool_value.get_boolean() + scrollbar.style_get_property("has-secondary-forward-stepper", bool_value) + has_secondary_forward = bool_value.get_boolean() + scrollbar.style_get_property("has-secondary-backward-stepper", bool_value) + has_secondary_backward = bool_value.get_boolean() + scrollbar.style_get_property("has-forward-stepper", bool_value) + has_foreward = bool_value.get_boolean() + steppers = [has_backward, has_secondary_forward, has_secondary_backward, has_foreward] offset = stepper_size * steppers[0:2].count(True) shorter = stepper_size * steppers.count(True) @@ -85,37 +105,54 @@ def on_scrollbar_size_allocate(self, scrollbar, allocation): self._scroll_y = allocation.y self._scroll_height = allocation.height - self.queue_draw() - - def do_expose_event(self, event): + self._width = max(allocation.width, 10) + self._cached_map = None + self.queue_resize() + + def do_draw(self, context): + if not self._setup: + return height = self._scroll_height - self._h_offset - 1 - y_start = self._scroll_y - self.allocation.y + self._y_offset + 1 - xpad = self.style_get_property('x-padding') + y_start = self._scroll_y - self.get_allocation().y - self._y_offset + 1 + width = self.get_allocated_width() + xpad = 2.5 x0 = xpad - x1 = self.allocation.width - 2 * xpad + x1 = width - 2 * xpad - context = self.window.cairo_create() context.translate(0, y_start) context.set_line_width(1) context.rectangle(x0 - 3, -1, x1 + 6, height + 1) context.clip() - darken = lambda color: [x * 0.8 for x in color] + if self._cached_map is None: + surface = cairo.Surface.create_similar( + context.get_target(), cairo.CONTENT_COLOR_ALPHA, + width, height) + cache_ctx = cairo.Context(surface) + cache_ctx.set_line_width(1) + + tagged_diffs = collections.defaultdict(list) + for c, y0, y1 in self._difffunc(): + tagged_diffs[c].append((y0, y1)) + + for tag, diffs in tagged_diffs.items(): + cache_ctx.set_source_rgba(*self.fill_colors[tag]) + for y0, y1 in diffs: + y0, y1 = round(y0 * height) - 0.5, round(y1 * height) - 0.5 + cache_ctx.rectangle(x0, y0, x1, y1 - y0) + cache_ctx.fill_preserve() + cache_ctx.set_source_rgba(*self.line_colors[tag]) + cache_ctx.stroke() + self._cached_map = surface - for c, y0, y1 in self._difffunc(): - color = self.ctab[c] - y0, y1 = round(y0 * height) - 0.5, round(y1 * height) - 0.5 - context.set_source_rgb(*color) - context.rectangle(x0, y0, x1, int(y1 - y0)) - context.fill_preserve() - context.set_source_rgb(*darken(color)) - context.stroke() + context.set_source_surface(self._cached_map, 0., 0.) + context.paint() page_color = (0., 0., 0., 0.1) page_outline_color = (0.0, 0.0, 0.0, 0.3) adj = self._scrolladj - s = round(height * (adj.value / adj.upper)) - 0.5 - e = round(height * (adj.page_size / adj.upper)) + s = round(height * (adj.get_value() / adj.get_upper())) - 0.5 + e = round(height * (adj.get_page_size() / adj.get_upper())) context.set_source_rgba(*page_color) context.rectangle(x0 - 2, s, x1 + 4, e) context.fill_preserve() @@ -124,34 +161,16 @@ def do_button_press_event(self, event): if event.button == 1: - y_start = self.allocation.y - self._scroll_y - self._y_offset + y_start = self.get_allocation().y - self._scroll_y - self._y_offset total_height = self._scroll_height - self._h_offset fraction = (event.y + y_start) / total_height adj = self._scrolladj - val = fraction * adj.upper - adj.page_size / 2 - upper = adj.upper - adj.page_size - adj.set_value(max(min(upper, val), adj.lower)) + val = fraction * adj.get_upper() - adj.get_page_size() / 2 + upper = adj.get_upper() - adj.get_page_size() + adj.set_value(max(min(upper, val), adj.get_lower())) return True return False - def do_size_request(self, request): - request.width = self.style_get_property('width') - -gtk.widget_class_install_style_property(DiffMap, - ('width', float, - 'Width', - 'Width of the bar', - 0.0, gobject.G_MAXFLOAT, 20, - gobject.PARAM_READABLE)) -gtk.widget_class_install_style_property(DiffMap, - ('x-padding', float, - 'Width-wise padding', - 'Padding to be left between left and ' - 'right edges and change blocks', - 0.0, gobject.G_MAXFLOAT, 3.5, - gobject.PARAM_READABLE)) - - -def create_diffmap(str1, str2, int1, int2): - return DiffMap() + def do_get_preferred_width(self): + return self._width, self._width diff -Nru meld-1.5.3/meld/diffutil.py meld-3.11.0/meld/diffutil.py --- meld-1.5.3/meld/diffutil.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/diffutil.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,99 +1,95 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2009 Kai Willadsen +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009, 2012-2013 Kai Willadsen +# +# 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, see . -### 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. +from gi.repository import GObject -### 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. +from .matchers import DiffChunk, MyersSequenceMatcher, \ + SyncPointMyersSequenceMatcher -### 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 difflib +opcode_reverse = { + "replace": "replace", + "insert": "delete", + "delete": "insert", + "conflict": "conflict", + "equal": "equal" +} -import gobject -from matchers import MyersSequenceMatcher +def reverse_chunk(chunk): + tag = opcode_reverse[chunk[0]] + return DiffChunk._make((tag, chunk[3], chunk[4], chunk[1], chunk[2])) -################################################################################ -# -# Differ -# -################################################################################ -class IncrementalSequenceMatcher(difflib.SequenceMatcher): - def __init__(self, isjunk=None, a="", b=""): - difflib.SequenceMatcher.__init__(self, isjunk, a, b) - - def initialise(self): - la, lb = len(self.a), len(self.b) - todo = [(0, la, 0, lb)] - done = [] - while len(todo): - alo, ahi, blo, bhi = todo.pop(0) - i, j, k = x = self.find_longest_match(alo, ahi, blo, bhi) - if k: - yield None - done.append( (i,x) ) - if alo < i and blo < j: - todo.append( (alo, i, blo, j) ) - if i+k < ahi and j+k < bhi: - todo.append( (i+k, ahi, j+k, bhi) ) - done.append( (la, (la, lb, 0)) ) - done.sort() - self.matching_blocks = [x[1] for x in done] - yield 1 - def get_difference_opcodes(self): - return filter(lambda x: x[0]!="equal", self.get_opcodes()) +def consume_blank_lines(chunk, texts, pane1, pane2): + if chunk is None: + return None + def _find_blank_lines(txt, lo, hi): + while lo < hi and not txt[lo]: + lo += 1 + while lo < hi and not txt[hi - 1]: + hi -= 1 + return lo, hi -opcode_reverse = { - "replace" : "replace", - "insert" : "delete", - "delete" : "insert", - "conflict" : "conflict", - "equal" : "equal" -} + tag = chunk.tag + c1, c2 = _find_blank_lines(texts[pane1], chunk[1], chunk[2]) + c3, c4 = _find_blank_lines(texts[pane2], chunk[3], chunk[4]) + + if c1 == c2 and c3 == c4: + return None + if c1 == c2 and tag == "replace": + tag = "insert" + elif c3 == c4 and tag == "replace": + tag = "delete" + return DiffChunk._make((tag, c1, c2, c3, c4)) -def reverse_chunk(chunk): - return opcode_reverse[chunk[0]], chunk[3], chunk[4], chunk[1], chunk[2] -################################################################################ -# -# Differ -# -################################################################################ -class Differ(gobject.GObject): +class Differ(GObject.GObject): """Utility class to hold diff2 or diff3 chunks""" __gsignals__ = { - 'diffs-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ()), + 'diffs-changed': (GObject.SignalFlags.RUN_FIRST, None, + (object,)), } _matcher = MyersSequenceMatcher + _sync_matcher = SyncPointMyersSequenceMatcher def __init__(self): # Internally, diffs are stored from text1 -> text0 and text1 -> text2. - gobject.GObject.__init__(self) + GObject.GObject.__init__(self) self.num_sequences = 0 self.seqlength = [0, 0, 0] self.diffs = [[], []] + self.syncpoints = [] self.conflicts = [] + self._old_merge_cache = set() + self._changed_chunks = tuple() self._merge_cache = [] self._line_cache = [[], [], []] self.ignore_blanks = False self._initialised = False - self._has_mergeable_changes = (False, False) + self._has_mergeable_changes = (False, False, False, False) def _update_merge_cache(self, texts): if self.num_sequences == 3: - self._merge_cache = [c for c in self._merge_diffs(self.diffs[0], self.diffs[1], texts)] + self._merge_cache = [c for c in self._merge_diffs(self.diffs[0], + self.diffs[1], + texts)] else: self._merge_cache = [(c, None) for c in self.diffs[0]] @@ -101,9 +97,21 @@ # We don't handle altering the chunk-type of conflicts in three-way # comparisons where e.g., pane 1 and 3 differ in blank lines for i, c in enumerate(self._merge_cache): - self._merge_cache[i] = (self._consume_blank_lines(c[0], texts, 1, 0), - self._consume_blank_lines(c[1], texts, 1, 2)) - self._merge_cache = [x for x in self._merge_cache if x != (None, None)] + self._merge_cache[i] = (consume_blank_lines(c[0], texts, 1, 0), + consume_blank_lines(c[1], texts, 1, 2)) + self._merge_cache = [x for x in self._merge_cache if any(x)] + + # Calculate chunks that were added (in the new but not the old merge + # cache), removed (in the old but not the new merge cache) and changed + # (where the edit actually occurred, *and* the chunk is still around). + # This information is used by the inline highlighting mechanism to + # avoid re-highlighting existing chunks. + removed_chunks = self._old_merge_cache - set(self._merge_cache) + added_chunks = set(self._merge_cache) - self._old_merge_cache + modified_chunks = self._changed_chunks + if modified_chunks in removed_chunks: + modified_chunks = tuple() + chunk_changes = (removed_chunks, added_chunks, modified_chunks) mergeable0, mergeable1 = False, False for (c0, c1) in self._merge_cache: @@ -111,7 +119,7 @@ mergeable1 = mergeable1 or (c1 is not None and c1[0] != 'conflict') if mergeable0 and mergeable1: break - self._has_mergeable_changes = (mergeable0, mergeable1) + self._has_mergeable_changes = (False, mergeable0, mergeable1, False) # Conflicts can only occur when there are three panes, and will always # involve the middle pane. @@ -122,7 +130,7 @@ self.conflicts.append(i) self._update_line_cache() - self.emit("diffs-changed") + self.emit("diffs-changed", chunk_changes) def _update_line_cache(self): for i, l in enumerate(self.seqlength): @@ -130,6 +138,7 @@ self._line_cache[i] = [(None, None, None)] * (l + 1) last_chunk = len(self._merge_cache) + def find_next(diff, seq, current): next_chunk = None if seq == 1 and current + 1 < last_chunk: @@ -156,45 +165,23 @@ start, end, last = c[diff][lo], c[diff][hi], old_end[seq] if (start > last): - self._line_cache[seq][last:start] = [(None, prev[seq], next[seq])] * (start - last) + chunk_ids = [(None, prev[seq], next[seq])] * (start - last) + self._line_cache[seq][last:start] = chunk_ids # For insert chunks, claim the subsequent line. if start == end: end += 1 next[seq] = find_next(diff, seq, i) - self._line_cache[seq][start:end] = [(i, prev[seq], next[seq])] * (end - start) + chunk_ids = [(i, prev[seq], next[seq])] * (end - start) + self._line_cache[seq][start:end] = chunk_ids prev[seq], old_end[seq] = i, end for seq in range(3): last, end = old_end[seq], len(self._line_cache[seq]) if (last < end): - self._line_cache[seq][last:end] = [(None, prev[seq], next[seq])] * (end - last) - - def _consume_blank_lines(self, c, texts, pane1, pane2): - if c is None: - return None - c0 = c[0] - c1, c2 = self._find_blank_lines(texts[pane1], c[1], c[2]) - c3, c4 = self._find_blank_lines(texts[pane2], c[3], c[4]) - if c1 == c2 and c3 == c4: - return None - if c1 == c2 and c[0] == "replace": - c0 = "insert" - elif c3 == c4 and c[0] == "replace": - c0 = "delete" - return (c0, c1, c2, c3, c4) - - def _find_blank_lines(self, txt, lo, hi): - for line in range(lo, hi): - if txt[line]: - break - lo += 1 - for line in range(hi, lo, -1): - if txt[line - 1]: - break - hi -= 1 - return lo, hi + chunk_ids = [(None, prev[seq], next[seq])] * (end - last) + self._line_cache[seq][last:end] = chunk_ids def change_sequence(self, sequence, startidx, sizechange, texts): assert sequence in (0, 1, 2) @@ -203,6 +190,44 @@ if sequence == 2 or (sequence == 1 and self.num_sequences == 3): self._change_sequence(1, sequence, startidx, sizechange, texts) self.seqlength[sequence] += sizechange + + def offset(c, start, o1, o2): + """Offset a chunk by o1/o2 if it's after the inserted lines""" + if c is None: + return None + start_a = c.start_a + (o1 if c.start_a > start else 0) + end_a = c.end_a + (o1 if c.end_a > start else 0) + start_b = c.start_b + (o2 if c.start_b > start else 0) + end_b = c.end_b + (o2 if c.end_b > start else 0) + return DiffChunk._make((c.tag, start_a, end_a, start_b, end_b)) + + # Calculate the expected differences in the chunk set if no cascading + # changes occur, making sure to not include the changed chunk itself + self._old_merge_cache = set() + self._changed_chunks = tuple() + chunk_changed = False + for (c1, c2) in self._merge_cache: + if sequence == 0: + if c1 and c1.start_b <= startidx < c1.end_b: + chunk_changed = True + c1 = offset(c1, startidx, 0, sizechange) + elif sequence == 2: + if c2 and c2.start_b <= startidx < c2.end_b: + chunk_changed = True + c2 = offset(c2, startidx, 0, sizechange) + else: + # Middle sequence changes alter both chunks + if c1 and c1.start_a <= startidx < c1.end_a: + chunk_changed = True + c1 = offset(c1, startidx, sizechange, 0) + if self.num_sequences == 3: + c2 = offset(c2, startidx, sizechange, 0) + if chunk_changed: + assert not self._changed_chunks + self._changed_chunks = (c1, c2) + chunk_changed = False + self._old_merge_cache.add((c1, c2)) + self._update_merge_cache(texts) def _locate_chunk(self, whichdiffs, sequence, line): @@ -215,7 +240,7 @@ def get_chunk(self, index, from_pane, to_pane=None): """Return the index-th change in from_pane - + If to_pane is provided, then only changes between from_pane and to_pane are considered, otherwise all changes starting at from_pane are used. """ @@ -241,51 +266,45 @@ return len(self._merge_cache) def has_mergeable_changes(self, which): - if which == 0: - return (False, self._has_mergeable_changes[0]) - elif which == 1: - if self.num_sequences == 2: - return (self._has_mergeable_changes[0], False) - else: - return self._has_mergeable_changes - else: # which == 2 - return (self._has_mergeable_changes[1], False) + return self._has_mergeable_changes[which:which + 2] def _change_sequence(self, which, sequence, startidx, sizechange, texts): diffs = self.diffs[which] - lines_added = [0,0,0] + lines_added = [0, 0, 0] lines_added[sequence] = sizechange loidx = self._locate_chunk(which, sequence, startidx) if sizechange < 0: - hiidx = self._locate_chunk(which, sequence, startidx-sizechange) + hiidx = self._locate_chunk(which, sequence, startidx - sizechange) else: hiidx = loidx if loidx > 0: loidx -= 1 lorange = diffs[loidx][3], diffs[loidx][1] else: - lorange = (0,0) - x = which*2 + lorange = (0, 0) + x = which * 2 if hiidx < len(diffs): hiidx += 1 - hirange = diffs[hiidx-1][4], diffs[hiidx-1][2] + hirange = diffs[hiidx - 1][4], diffs[hiidx - 1][2] else: hirange = self.seqlength[x], self.seqlength[1] - #print "diffs", loidx, hiidx, len(diffs), lorange, hirange #diffs[loidx], diffs[hiidx-1] rangex = lorange[0], hirange[0] + lines_added[x] range1 = lorange[1], hirange[1] + lines_added[1] - #print "^^^^^", rangex, range1 assert rangex[0] <= rangex[1] and range1[0] <= range1[1] linesx = texts[x][rangex[0]:rangex[1]] lines1 = texts[1][range1[0]:range1[1]] - #print "<<<\n%s\n===\n%s\n>>>" % ("\n".join(linesx),"\n".join(lines1)) + + def offset(c, o1, o2): + return DiffChunk._make((c[0], c[1] + o1, c[2] + o1, + c[3] + o2, c[4] + o2)) + newdiffs = self._matcher(None, lines1, linesx).get_difference_opcodes() - newdiffs = [ (c[0], c[1]+range1[0],c[2]+range1[0], c[3]+rangex[0],c[4]+rangex[0]) for c in newdiffs] + newdiffs = [offset(c, range1[0], rangex[0]) for c in newdiffs] + if hiidx < len(self.diffs[which]): - self.diffs[which][hiidx:] = [ (c[0], - c[1] + lines_added[1], c[2] + lines_added[1], - c[3] + lines_added[x], c[4] + lines_added[x]) - for c in self.diffs[which][hiidx:] ] + offset_diffs = [offset(c, lines_added[1], lines_added[x]) for c + in self.diffs[which][hiidx:]] + self.diffs[which][hiidx:] = offset_diffs self.diffs[which][loidx:hiidx] = newdiffs def _range_from_lines(self, textindex, lines): @@ -319,12 +338,12 @@ merge_cache = self._merge_cache if fromindex == 1: - seq = toindex/2 + seq = toindex // 2 for c in merge_cache: if c[seq]: yield c[seq] else: - seq = fromindex/2 + seq = fromindex // 2 for c in merge_cache: if c[seq]: yield reverse_chunk(c[seq]) @@ -339,8 +358,8 @@ merge_cache = self._merge_cache[start:end + 1] else: merge_cache = self._merge_cache - if textindex in (0,2): - seq = textindex/2 + if textindex in (0, 2): + seq = textindex // 2 for cs in merge_cache: if cs[seq]: yield reverse_chunk(cs[seq]) @@ -353,22 +372,22 @@ return self.diffs == [[], []] and self._initialised def _merge_blocks(self, using): - LO, HI = 1,2 - lowc = min(using[0][ 0][LO], using[1][ 0][LO]) - highc = max(using[0][-1][HI], using[1][-1][HI]) + LO, HI = 1, 2 + lowc = min(using[0][0][LO], using[1][0][LO]) + highc = max(using[0][-1][HI], using[1][-1][HI]) low = [] high = [] - for i in (0,1): + for i in (0, 1): d = using[i][0] - low.append(lowc - d[LO] + d[2+LO]) + low.append(lowc - d[LO] + d[2 + LO]) d = using[i][-1] - high.append(highc - d[HI] + d[2+HI]) + high.append(highc - d[HI] + d[2 + HI]) return low[0], high[0], lowc, highc, low[1], high[1] def _auto_merge(self, using, texts): """Automatically merge two sequences of change blocks""" l0, h0, l1, h1, l2, h2 = self._merge_blocks(using) - if h0-l0 == h2-l2 and texts[0][l0:h0] == texts[2][l2:h2]: + if h0 - l0 == h2 - l2 and texts[0][l0:h0] == texts[2][l2:h2]: if l1 != h1 and l0 == h0: tag = "delete" elif l1 != h1: @@ -377,53 +396,53 @@ tag = "insert" else: tag = "conflict" - out0 = (tag, l1, h1, l0, h0) - out1 = (tag, l1, h1, l2, h2) + out0 = DiffChunk._make((tag, l1, h1, l0, h0)) + out1 = DiffChunk._make((tag, l1, h1, l2, h2)) yield out0, out1 def _merge_diffs(self, seq0, seq1, texts): seq0, seq1 = seq0[:], seq1[:] seq = seq0, seq1 - LO, HI = 1,2 while len(seq0) or len(seq1): - if len(seq0) == 0: + if not seq0: high_seq = 1 - elif len(seq1) == 0: + elif not seq1: high_seq = 0 else: - high_seq = int(seq0[0][LO] > seq1[0][LO]) - if seq0[0][LO] == seq1[0][LO]: - if seq0[0][0] == "insert": + high_seq = int(seq0[0].start_a > seq1[0].start_a) + if seq0[0].start_a == seq1[0].start_a: + if seq0[0].tag == "insert": high_seq = 0 - elif seq1[0][0] == "insert": + elif seq1[0].tag == "insert": high_seq = 1 high_diff = seq[high_seq].pop(0) - high_mark = high_diff[HI] - other_seq = high_seq ^ 1 + high_mark = high_diff.end_a + other_seq = 0 if high_seq == 1 else 1 using = [[], []] using[high_seq].append(high_diff) while seq[other_seq]: other_diff = seq[other_seq][0] - if high_mark < other_diff[LO]: + if high_mark < other_diff.start_a: break - if high_mark == other_diff[LO] and not (high_diff[0] == other_diff[0] == "insert"): + if high_mark == other_diff.start_a and \ + not (high_diff.tag == other_diff.tag == "insert"): break using[other_seq].append(other_diff) seq[other_seq].pop(0) - if high_mark < other_diff[HI]: - (high_seq, other_seq) = (other_seq, high_seq) - high_mark = other_diff[HI] + if high_mark < other_diff.end_a: + high_seq, other_seq = other_seq, high_seq + high_mark = other_diff.end_a - if len(using[0])==0: - assert len(using[1])==1 + if len(using[0]) == 0: + assert len(using[1]) == 1 yield None, using[1][0] - elif len(using[1])==0: - assert len(using[0])==1 + elif len(using[1]) == 0: + assert len(using[0]) == 1 yield using[0][0], None else: for c in self._auto_merge(using, texts): @@ -436,9 +455,15 @@ self.seqlength = [len(s) for s in sequences] for i in range(self.num_sequences - 1): - matcher = self._matcher(None, sequences[1], sequences[i*2]) + if self.syncpoints: + syncpoints = [(s[i][0](), s[i][1]()) for s in self.syncpoints] + matcher = self._sync_matcher(None, + sequences[1], sequences[i * 2], + syncpoints=syncpoints) + else: + matcher = self._matcher(None, sequences[1], sequences[i * 2]) work = matcher.initialise() - while work.next() is None: + while next(work) is None: yield None self.diffs[i] = matcher.get_difference_opcodes() self._initialised = True @@ -448,6 +473,6 @@ def clear(self): self.diffs = [[], []] self.seqlength = [0] * self.num_sequences - texts = [""] * self.num_sequences self._initialised = False - self._update_merge_cache(texts) + self._old_merge_cache = set() + self._update_merge_cache([""] * self.num_sequences) diff -Nru meld-1.5.3/meld/dirdiff.py meld-3.11.0/meld/dirdiff.py --- meld-1.5.3/meld/dirdiff.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/dirdiff.py 2014-02-22 03:14:57.000000000 +0000 @@ -1,44 +1,49 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2009-2011 Kai Willadsen - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009-2013 Kai Willadsen +# +# 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, see . import collections import copy +import datetime import errno -import paths -from ui import gnomeglade -import gtk -import gtk.keysyms -import misc +import functools import os -from gettext import gettext as _ -from gettext import ngettext -import shutil -import melddoc -import tree import re +import shutil import stat -import time +import sys -import ui.emblemcellrenderer +from gi.repository import GLib +from gi.repository import Gio +from gi.repository import GObject +from gi.repository import Gdk +from gi.repository import Gtk + +from . import melddoc +from . import tree +from . import misc +from . import recent +from .ui import gnomeglade +from .ui import emblemcellrenderer -from util.namedtuple import namedtuple -from meldapp import app +from collections import namedtuple +from decimal import Decimal +from gettext import gettext as _ + +from meld.settings import meldsettings, settings -gdk = gtk.gdk ################################################################################ # @@ -46,8 +51,6 @@ # ################################################################################ -# For compatibility with Python 2.5, we use the Python 2.4 compatible version of -# namedtuple. The class is included in the collections module as of Python 2.6. class StatItem(namedtuple('StatItem', 'mode size time')): __slots__ = () @@ -56,12 +59,29 @@ return StatItem(stat.S_IFMT(stat_result.st_mode), stat_result.st_size, stat_result.st_mtime) + def shallow_equal(self, other, time_resolution_ns): + if self.size != other.size: + return False + + # Shortcut to avoid expensive Decimal calculations. 2 seconds is our + # current accuracy threshold (for VFAT), so should be safe for now. + if abs(self.time - other.time) > 2: + return False + + dectime1 = Decimal(str(self.time)).scaleb(Decimal(9)).quantize(1) + dectime2 = Decimal(str(other.time)).scaleb(Decimal(9)).quantize(1) + mtime1 = dectime1 // time_resolution_ns + mtime2 = dectime2 // time_resolution_ns + + return mtime1 == mtime2 + CacheResult = namedtuple('CacheResult', 'stats result') _cache = {} -Same, SameFiltered, DodgySame, DodgyDifferent, Different, FileError = range(6) +Same, SameFiltered, DodgySame, DodgyDifferent, Different, FileError = \ + list(range(6)) # TODO: Get the block size from os.stat CHUNK_SIZE = 4096 @@ -70,7 +90,15 @@ return not lst or lst.count(lst[0]) == len(lst) -def _files_same(files, regexes): +def remove_blank_lines(text): + splits = text.splitlines() + lines = text.splitlines(True) + blanks = set([i for i, l in enumerate(splits) if not l]) + lines = [l for i, l in enumerate(lines) if i not in blanks] + return ''.join(lines) + + +def _files_same(files, regexes, comparison_args): """Determine whether a list of files are the same. Possible results are: @@ -89,6 +117,12 @@ regexes = tuple(regexes) stats = tuple([StatItem._make(os.stat(f)) for f in files]) + shallow_comparison = comparison_args['shallow-comparison'] + time_resolution_ns = comparison_args['time-resolution'] + ignore_blank_lines = comparison_args['ignore_blank_lines'] + + need_contents = regexes or ignore_blank_lines + # If all entries are directories, they are considered to be the same if all([stat.S_ISDIR(s.mode) for s in stats]): return Same @@ -97,12 +131,20 @@ if not all([stat.S_ISREG(s.mode) for s in stats]): return Different + # Compare files superficially if the options tells us to + if shallow_comparison: + if all(s.shallow_equal(stats[0], time_resolution_ns) for s in stats[1:]): + return DodgySame + else: + return Different + # If there are no text filters, unequal sizes imply a difference - if not regexes and not all_same([s.size for s in stats]): + if not need_contents and not all_same([s.size for s in stats]): return Different # Check the cache before doing the expensive comparison - cache = _cache.get((files, regexes)) + cache_key = (files, regexes, ignore_blank_lines) + cache = _cache.get(cache_key) if cache and cache.stats == stats: return cache.result @@ -116,9 +158,9 @@ data = [h.read(CHUNK_SIZE) for h in handles] # Rough test to see whether files are binary. If files are guessed - # to be binary, we unset regexes for speed and space reasons. + # to be binary, we don't examine contents for speed and space. if any(["\0" in d for d in data]): - regexes = tuple() + need_contents = False while True: if all_same(data): @@ -126,10 +168,10 @@ break else: result = Different - if not regexes: + if not need_contents: break - if regexes: + if need_contents: for i in range(len(data)): contents[i].append(data[i]) @@ -148,27 +190,25 @@ if result is None: result = Same - if result == Different and regexes: + if result == Different and need_contents: contents = ["".join(c) for c in contents] for r in regexes: contents = [re.sub(r, "", c) for c in contents] + if ignore_blank_lines: + contents = [remove_blank_lines(c) for c in contents] result = SameFiltered if all_same(contents) else Different - _cache[(files, regexes)] = CacheResult(stats, result) + _cache[cache_key] = CacheResult(stats, result) return result -COL_EMBLEM, COL_END = tree.COL_END, tree.COL_END + 1 +COL_EMBLEM, COL_SIZE, COL_TIME, COL_PERMS, COL_END = \ + range(tree.COL_END, tree.COL_END + 5) + -################################################################################ -# -# DirDiffTreeStore -# -################################################################################ class DirDiffTreeStore(tree.DiffTreeStore): def __init__(self, ntree): - types = [str] * COL_END * ntree - tree.DiffTreeStore.__init__(self, ntree, types) + tree.DiffTreeStore.__init__(self, ntree, [str, str, str, str]) class CanonicalListing(object): @@ -194,7 +234,7 @@ def get(self): first = lambda seq: next(s for s in seq if s) filled = lambda seq: tuple([s or first(seq) for s in seq]) - return sorted([filled(v) for v in self.items.itervalues()]) + return sorted(filled(v) for v in self.items.values()) ################################################################################ @@ -204,7 +244,41 @@ ################################################################################ class DirDiff(melddoc.MeldDoc, gnomeglade.Component): - """Two or three way diff of directories""" + """Two or three way folder comparison""" + + __gtype_name__ = "DirDiff" + + ignore_blank_lines = GObject.property( + type=bool, + nick="Ignore blank lines", + blurb="Whether to ignore blank lines when comparing file contents", + default=False, + ) + ignore_symlinks = GObject.property( + type=bool, + nick="Ignore symbolic links", + blurb="Whether to follow symbolic links when comparing folders", + default=False, + ) + shallow_comparison = GObject.property( + type=bool, + nick="Use shallow comparison", + blurb="Whether to compare files based solely on size and mtime", + default=False, + ) + status_filters = GObject.property( + type=GObject.TYPE_STRV, + nick="File status filters", + blurb="Files with these statuses will be shown by the comparison.", + ) + time_resolution = GObject.property( + type=int, + nick="Time resolution", + blurb="When comparing based on mtime, the minimum difference in " + "nanoseconds between two files before they're considered to " + "have different mtimes.", + default=100, + ) """Dictionary mapping tree states to corresponding difflib-like terms""" chunk_type_map = { @@ -214,8 +288,8 @@ tree.STATE_ERROR: "error", tree.STATE_EMPTY: None, tree.STATE_MODIFIED: "replace", - tree.STATE_CONFLICT: "conflict", tree.STATE_MISSING: "delete", + tree.STATE_NONEXIST: "delete", } state_actions = { @@ -224,45 +298,43 @@ tree.STATE_MODIFIED: ("modified", "ShowModified"), } - def __init__(self, prefs, num_panes): - melddoc.MeldDoc.__init__(self, prefs) - gnomeglade.Component.__init__(self, paths.ui_dir("dirdiff.ui"), "dirdiff") - - actions = ( - ("DirCompare", gtk.STOCK_DIALOG_INFO, _("_Compare"), None, _("Compare selected"), self.on_button_diff_clicked), - ("DirCopyLeft", gtk.STOCK_GO_BACK, _("Copy _Left"), "Left", _("Copy to left"), self.on_button_copy_left_clicked), - ("DirCopyRight", gtk.STOCK_GO_FORWARD, _("Copy _Right"), "Right", _("Copy to right"), self.on_button_copy_right_clicked), - ("DirDelete", gtk.STOCK_DELETE, None, "Delete", _("Delete selected"), self.on_button_delete_clicked), - ("Hide", gtk.STOCK_NO, _("Hide"), None, _("Hide selected"), self.on_filter_hide_current_clicked), - ) - - toggleactions = ( - ("IgnoreCase", gtk.STOCK_ITALIC, _("Case"), None, _("Ignore case of entries"), self.on_button_ignore_case_toggled, False), - ("ShowSame", gtk.STOCK_APPLY, _("Same"), None, _("Show identical"), self.on_filter_state_toggled, False), - ("ShowNew", gtk.STOCK_ADD, _("New"), None, _("Show new"), self.on_filter_state_toggled, False), - ("ShowModified", gtk.STOCK_REMOVE, _("Modified"), None, _("Show modified"), self.on_filter_state_toggled, False), - - ("CustomFilterMenu", None, _("Filters"), None, _("Set active filters"), self.on_custom_filter_menu_toggled, False), - ) - self.ui_file = paths.ui_dir("dirdiff-ui.xml") - self.actiongroup = gtk.ActionGroup('DirdiffToolbarActions') + def __init__(self, num_panes): + melddoc.MeldDoc.__init__(self) + gnomeglade.Component.__init__(self, "dirdiff.ui", "dirdiff", + ["DirdiffActions"]) + + self.ui_file = gnomeglade.ui_file("dirdiff-ui.xml") + self.actiongroup = self.DirdiffActions self.actiongroup.set_translation_domain("meld") - self.actiongroup.add_actions(actions) - self.actiongroup.add_toggle_actions(toggleactions) + self.main_actiongroup = None + self.name_filters = [] - self.create_name_filters() - app.connect("file-filters-changed", self.on_file_filters_changed) self.text_filters = [] + self.create_name_filters() self.create_text_filters() - app.connect("text-filters-changed", self.on_text_filters_changed) - for button in ("DirCompare", "DirCopyLeft", "DirCopyRight", - "DirDelete", "Hide", "IgnoreCase", "ShowSame", - "ShowNew", "ShowModified", "CustomFilterMenu"): - self.actiongroup.get_action(button).props.is_important = True + self.settings_handlers = [ + meldsettings.connect("file-filters-changed", + self.on_file_filters_changed), + meldsettings.connect("text-filters-changed", + self.on_text_filters_changed) + ] + self.map_widgets_into_lists(["treeview", "fileentry", "scrolledwindow", "diffmap", "linkmap", "msgarea_mgr", - "vbox"]) + "vbox", "dummy_toolbar_linkmap", + "file_toolbar"]) + + self.widget.ensure_style() + self.on_style_updated(self.widget) + self.widget.connect("style-updated", self.on_style_updated) + + self.custom_labels = [] self.set_num_panes(num_panes) + + self.widget.connect("style-updated", self.model.on_style_updated) + self.model.on_style_updated(self.widget) + + self.do_to_others_lock = False self.focus_in_events = [] self.focus_out_events = [] for treeview in self.treeview: @@ -270,42 +342,156 @@ self.focus_in_events.append(handler_id) handler_id = treeview.connect("focus-out-event", self.on_treeview_focus_out_event) self.focus_out_events.append(handler_id) - self.prev_path, self.next_path = None, None + treeview.set_search_equal_func(self.model.treeview_search_cb, None) + self.current_path, self.prev_path, self.next_path = None, None, None self.on_treeview_focus_out_event(None, None) - self.treeview_focussed = None + self.focus_pane = None + # One column-dict for each treeview, for changing visibility and order + self.columns_dict = [{}, {}, {}] for i in range(3): - self.treeview[i].get_selection().set_mode(gtk.SELECTION_MULTIPLE) - column = gtk.TreeViewColumn() - rentext = gtk.CellRendererText() - renicon = ui.emblemcellrenderer.EmblemCellRenderer() - column.pack_start(renicon, expand=0) - column.pack_start(rentext, expand=1) col_index = self.model.column_index - column.set_attributes(rentext, markup=col_index(tree.COL_TEXT,i)) + # Create icon and filename CellRenderer + column = Gtk.TreeViewColumn(_("Name")) + column.set_resizable(True) + rentext = Gtk.CellRendererText() + renicon = emblemcellrenderer.EmblemCellRenderer() + column.pack_start(renicon, False) + column.pack_start(rentext, True) + column.set_attributes(rentext, markup=col_index(tree.COL_TEXT, i), + foreground=col_index(tree.COL_FG, i), + style=col_index(tree.COL_STYLE, i), + weight=col_index(tree.COL_WEIGHT, i), + strikethrough=col_index(tree.COL_STRIKE, i)) column.set_attributes(renicon, icon_name=col_index(tree.COL_ICON, i), emblem_name=col_index(COL_EMBLEM, i), icon_tint=col_index(tree.COL_TINT, i)) self.treeview[i].append_column(column) - self.scrolledwindow[i].get_vadjustment().connect("value-changed", self._sync_vscroll ) - self.scrolledwindow[i].get_hadjustment().connect("value-changed", self._sync_hscroll ) + self.columns_dict[i]["name"] = column + # Create file size CellRenderer + column = Gtk.TreeViewColumn(_("Size")) + column.set_resizable(True) + rentext = Gtk.CellRendererText() + column.pack_start(rentext, True) + column.set_attributes(rentext, markup=col_index(COL_SIZE, i)) + self.treeview[i].append_column(column) + self.columns_dict[i]["size"] = column + # Create date-time CellRenderer + column = Gtk.TreeViewColumn(_("Modification time")) + column.set_resizable(True) + rentext = Gtk.CellRendererText() + column.pack_start(rentext, True) + column.set_attributes(rentext, markup=col_index(COL_TIME, i)) + self.treeview[i].append_column(column) + self.columns_dict[i]["modification time"] = column + # Create permissions CellRenderer + column = Gtk.TreeViewColumn(_("Permissions")) + column.set_resizable(True) + rentext = Gtk.CellRendererText() + column.pack_start(rentext, False) + column.set_attributes(rentext, markup=col_index(COL_PERMS, i)) + self.treeview[i].append_column(column) + self.columns_dict[i]["permissions"] = column + + for i in range(3): + selection = self.treeview[i].get_selection() + selection.set_mode(Gtk.SelectionMode.MULTIPLE) + selection.connect('changed', self.on_treeview_selection_changed, i) + self.scrolledwindow[i].get_vadjustment().connect( + "value-changed", self._sync_vscroll) + self.scrolledwindow[i].get_hadjustment().connect( + "value-changed", self._sync_hscroll) self.linediffs = [[], []] + self.update_treeview_columns(settings, 'folder-columns') + settings.connect('changed::folder-columns', + self.update_treeview_columns) + + settings.bind('folder-ignore-symlinks', self, 'ignore-symlinks', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('folder-shallow-comparison', self, 'shallow-comparison', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('folder-time-resolution', self, 'time-resolution', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('folder-status-filters', self, 'status-filters', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('ignore-blank-lines', self, 'ignore-blank-lines', + Gio.SettingsBindFlags.DEFAULT) + + self.update_comparator() + self.connect("notify::shallow-comparison", self.update_comparator) + self.connect("notify::time-resolution", self.update_comparator) + self.connect("notify::ignore-blank-lines", self.update_comparator) + self.state_filters = [] for s in self.state_actions: - if self.state_actions[s][0] in self.prefs.dir_status_filters: + if self.state_actions[s][0] in self.props.status_filters: self.state_filters.append(s) action_name = self.state_actions[s][1] self.actiongroup.get_action(action_name).set_active(True) + def on_style_updated(self, widget): + style = widget.get_style_context() + + def lookup(name, default): + found, colour = style.lookup_color(name) + if not found: + colour = Gdk.RGBA() + colour.parse(default) + return colour + + self.fill_colors = {"insert" : lookup("insert-bg", "DarkSeaGreen1"), + "delete" : lookup("delete-bg", "White"), + "replace" : lookup("replace-bg", "#ddeeff"), + "error" : lookup("error-bg", "#fce94f")} + self.line_colors = {"insert" : lookup("insert-outline", "#77f077"), + "delete" : lookup("delete-outline", "Grey"), + "replace" : lookup("replace-outline", "#8bbff3"), + "error" : lookup("error-outline", "#edd400")} + + for diffmap in self.diffmap: + diffmap.set_color_scheme([self.fill_colors, self.line_colors]) + self.queue_draw() + + def queue_draw(self): + for treeview in self.treeview: + treeview.queue_draw() + for diffmap in self.diffmap: + diffmap.queue_draw() + + def update_comparator(self, *args): + comparison_args = { + 'shallow-comparison': self.props.shallow_comparison, + 'time-resolution': self.props.time_resolution, + 'ignore_blank_lines': self.props.ignore_blank_lines, + } + self.file_compare = functools.partial( + _files_same, comparison_args=comparison_args) + self.refresh() + + def update_treeview_columns(self, settings, key): + """Update the visibility and order of columns""" + columns = settings.get_value(key) + for i, treeview in enumerate(self.treeview): + extra_cols = False + last_column = treeview.get_column(0) + for column_name, visible in columns: + extra_cols = extra_cols or visible + current_column = self.columns_dict[i][column_name] + current_column.set_visible(visible) + treeview.move_column_after(current_column, last_column) + last_column = current_column + treeview.set_headers_visible(extra_cols) + def on_custom_filter_menu_toggled(self, item): if item.get_active(): self.custom_popup.connect("deactivate", lambda popup: item.set_active(False)) - self.custom_popup.popup(None, None, misc.position_menu_under_widget, - 1, gtk.get_current_event_time(), - self.filter_menu_button) + self.custom_popup.popup(None, None, + misc.position_menu_under_widget, + self.filter_menu_button, 1, + Gtk.get_current_event_time()) def _cleanup_filter_menu_button(self, ui): if self.popup_deactivate_id: @@ -327,14 +513,12 @@ self.filter_menu_button.set_label_widget(label) def on_container_switch_in_event(self, ui): + self.main_actiongroup = [a for a in ui.get_action_groups() + if a.get_name() == "MainActions"][0] melddoc.MeldDoc.on_container_switch_in_event(self, ui) self._create_filter_menu_button(ui) self.ui_manager = ui - if self.treeview_focussed: - self.scheduler.add_task(self.treeview_focussed.grab_focus) - self.scheduler.add_task(self.on_treeview_cursor_changed) - def on_container_switch_out_event(self, ui): self._cleanup_filter_menu_button(ui) melddoc.MeldDoc.on_container_switch_out_event(self, ui) @@ -348,11 +532,13 @@ def create_name_filters(self): # Ordering of name filters is irrelevant - old_active = set([f.filter_string for f in self.name_filters if f.active]) - new_active = set([f.filter_string for f in app.file_filters if f.active]) + old_active = set([f.filter_string for f in self.name_filters + if f.active]) + new_active = set([f.filter_string for f in meldsettings.file_filters + if f.active]) active_filters_changed = old_active != new_active - self.name_filters = [copy.copy(f) for f in app.file_filters] + self.name_filters = [copy.copy(f) for f in meldsettings.file_filters] actions = [] disabled_actions = [] self.filter_ui = [] @@ -360,12 +546,12 @@ name = "Hide%d" % i callback = lambda b, i=i: self._update_name_filter(b, i) actions.append((name, None, f.label, None, _("Hide %s") % f.label, callback, f.active)) - self.filter_ui.append(["/CustomPopup" , name, name, gtk.UI_MANAGER_MENUITEM, False]) - self.filter_ui.append(["/Menubar/ViewMenu/FileFilters" , name, name, gtk.UI_MANAGER_MENUITEM, False]) + self.filter_ui.append(["/CustomPopup" , name, name, Gtk.UIManagerItemType.MENUITEM, False]) + self.filter_ui.append(["/Menubar/ViewMenu/FileFilters" , name, name, Gtk.UIManagerItemType.MENUITEM, False]) if f.filter is None: disabled_actions.append(name) - self.filter_actiongroup = gtk.ActionGroup("DirdiffFilterActions") + self.filter_actiongroup = Gtk.ActionGroup("DirdiffFilterActions") self.filter_actiongroup.add_toggle_actions(actions) for name in disabled_actions: self.filter_actiongroup.get_action(name).set_sensitive(False) @@ -380,37 +566,42 @@ def create_text_filters(self): # In contrast to file filters, ordering of text filters can matter old_active = [f.filter_string for f in self.text_filters if f.active] - new_active = [f.filter_string for f in app.text_filters if f.active] + new_active = [f.filter_string for f in meldsettings.text_filters + if f.active] active_filters_changed = old_active != new_active - self.text_filters = [copy.copy(f) for f in app.text_filters] + self.text_filters = [copy.copy(f) for f in meldsettings.text_filters] return active_filters_changed def _do_to_others(self, master, objects, methodname, args): - if not hasattr(self, "do_to_others_lock"): - self.do_to_others_lock = 1 - try: - for o in filter(lambda x:x!=master, objects[:self.num_panes]): - method = getattr(o,methodname) - method(*args) - finally: - delattr(self, "do_to_others_lock") + if self.do_to_others_lock: + return + + self.do_to_others_lock = True + try: + others = [o for o in objects[:self.num_panes] if o != master] + for o in others: + method = getattr(o, methodname) + method(*args) + finally: + self.do_to_others_lock = False def _sync_vscroll(self, adjustment): - adjs = map(lambda x: x.get_vadjustment(), self.scrolledwindow) - self._do_to_others( adjustment, adjs, "set_value", (adjustment.value,) ) + adjs = [sw.get_vadjustment() for sw in self.scrolledwindow] + self._do_to_others(adjustment, adjs, "set_value", + (adjustment.get_value(), )) def _sync_hscroll(self, adjustment): - adjs = map(lambda x: x.get_hadjustment(), self.scrolledwindow) - self._do_to_others( adjustment, adjs, "set_value", (adjustment.value,) ) + adjs = [sw.get_hadjustment() for sw in self.scrolledwindow] + self._do_to_others(adjustment, adjs, "set_value", + (adjustment.get_value(), )) def _get_focused_pane(self): - focus = [ t.is_focus() for t in self.treeview ] - try: - return focus.index(1) - except ValueError: - return None + for i, treeview in enumerate(self.treeview): + if treeview.is_focus(): + return i + return None def file_deleted(self, path, pane): # is file still extant in other pane? @@ -425,30 +616,48 @@ def file_created(self, path, pane): it = self.model.get_iter(path) - while it and self.model.get_path(it) != (0,): + root = Gtk.TreePath.new_first() + while it and self.model.get_path(it) != root: self._update_item_state( it ) it = self.model.iter_parent(it) self._update_diffmaps() - def on_fileentry_activate(self, entry): - locs = [e.get_full_path() for e in self.fileentry[:self.num_panes]] - self.set_locations(locs) + def on_fileentry_file_set(self, entry): + files = [e.get_file() for e in self.fileentry[:self.num_panes]] + paths = [f.get_path() for f in files] + self.set_locations(paths) def set_locations(self, locations): self.set_num_panes(len(locations)) + # This is difficult to trigger, and to test. Most of the time here we + # will actually have had UTF-8 from GTK, which has been unicode-ed by + # the time we get this far. This is a fallback, and may be wrong! + locations = list(locations) + for i, l in enumerate(locations): + if not isinstance(l, unicode): + locations[i] = l.decode(sys.getfilesystemencoding()) + # TODO: Support for blank folder comparisons should probably look here locations = [os.path.abspath(l or ".") for l in locations] + self.current_path = None self.model.clear() for pane, loc in enumerate(locations): self.fileentry[pane].set_filename(loc) - self.fileentry[pane].prepend_history(loc) child = self.model.add_entries(None, locations) self.treeview0.grab_focus() self._update_item_state(child) self.recompute_label() self.scheduler.remove_all_tasks() - self.recursively_update( (0,) ) + self.recursively_update(Gtk.TreePath.new_first()) self._update_diffmaps() + def get_comparison(self): + root = self.model.get_iter_first() + if root: + folders = self.model.value_paths(root) + else: + folders = [] + return recent.TYPE_FOLDER, folders + def recursively_update( self, path ): """Recursively update from tree path 'path'. """ @@ -458,14 +667,20 @@ self.model.remove(child) child = self.model.iter_children( it ) self._update_item_state(it) - self.scheduler.add_task( self._search_recursively_iter( path ).next ) + self.scheduler.add_task(self._search_recursively_iter(path)) def _search_recursively_iter(self, rootpath): - self.actiongroup.get_action("Hide").set_sensitive(False) + for t in self.treeview: + sel = t.get_selection() + sel.unselect_all() + yield _("[%s] Scanning %s") % (self.label_text, "") prefixlen = 1 + len( self.model.value_path( self.model.get_iter(rootpath), 0 ) ) symlinks_followed = set() - todo = [ rootpath ] + # TODO: This is horrible. + if isinstance(rootpath, tuple): + rootpath = Gtk.TreePath(rootpath) + todo = [rootpath] expanded = set() shadowed_entries = [] @@ -475,6 +690,12 @@ path = todo.pop(0) it = self.model.get_iter( path ) roots = self.model.value_paths( it ) + + # Buggy ordering when deleting rows means that we sometimes try to + # recursively update files; this fix seems the least invasive. + if not any(os.path.isdir(root) for root in roots): + continue + yield _("[%s] Scanning %s") % (self.label_text, roots[0][prefixlen:]) differences = False encoding_errors = [] @@ -491,7 +712,7 @@ try: entries = os.listdir(root) - except OSError, err: + except OSError as err: self.model.add_error(it, err.strerror, pane) differences = True continue @@ -503,8 +724,9 @@ for e in entries: try: - e = e.decode('utf8') - except UnicodeDecodeError, err: + if not isinstance(e, unicode): + e = e.decode('utf8') + except UnicodeDecodeError: approximate_name = e.decode('utf8', 'replace') encoding_errors.append((pane, approximate_name)) continue @@ -512,13 +734,13 @@ try: s = os.lstat(os.path.join(root, e)) # Covers certain unreadable symlink cases; see bgo#585895 - except OSError, err: + except OSError as err: error_string = e + err.strerror self.model.add_error(it, error_string, pane) continue if stat.S_ISLNK(s.st_mode): - if self.prefs.ignore_symlinks: + if self.props.ignore_symlinks: continue key = (s.st_dev, s.st_ino) if key in symlinks_followed: @@ -530,7 +752,7 @@ files.add(pane, e) elif stat.S_ISDIR(s.st_mode): dirs.add(pane, e) - except OSError, err: + except OSError as err: if err.errno == errno.ENOENT: error_string = e + ": Dangling symlink" else: @@ -551,11 +773,10 @@ for pane, f1, f2 in dirs.errors + files.errors: shadowed_entries.append((pane, roots[pane], f1, f2)) - alldirs = dirs.get() + alldirs = self._filter_on_state(roots, dirs.get()) allfiles = self._filter_on_state(roots, files.get()) - # then directories and files - if len(alldirs) + len(allfiles) != 0: + if alldirs or allfiles: for names in alldirs: entries = [os.path.join(r, n) for r, n in zip(roots, names)] child = self.model.add_entries(it, entries) @@ -565,8 +786,38 @@ entries = [os.path.join(r, n) for r, n in zip(roots, names)] child = self.model.add_entries(it, entries) differences |= self._update_item_state(child) - else: # directory is empty, add a placeholder - self.model.add_empty(it) + else: + # Our subtree is empty, or has been filtered to be empty + if (tree.STATE_NORMAL in self.state_filters or + not all(os.path.isdir(f) for f in roots)): + self.model.add_empty(it) + if self.model.iter_parent(it) is None: + expanded.add(rootpath) + else: + # At this point, we have an empty folder tree node; we can + # prune this and any ancestors that then end up empty. + while not self.model.iter_has_child(it): + parent = self.model.iter_parent(it) + + # In our tree, there is always a top-level parent with + # no siblings. If we're here, we have an empty tree. + if parent is None: + self.model.add_empty(it) + expanded.add(rootpath) + break + + # Remove the current row, and then revalidate all + # sibling paths on the stack by removing and + # readding them. + had_siblings = self.model.remove(it) + if had_siblings: + parent_path = self.model.get_path(parent) + for path in todo: + if parent_path.is_ancestor(path): + path.prev() + + it = parent + if differences: expanded.add(path) @@ -575,7 +826,10 @@ for path in sorted(expanded): self.treeview[0].expand_to_path(path) yield _("[%s] Done") % self.label_text - self.actiongroup.get_action("Hide").set_sensitive(True) + + self.scheduler.add_task(self.on_treeview_cursor_changed) + self.treeview[0].get_selection().select_path(Gtk.TreePath.new_first()) + self._update_diffmaps() def _show_tree_wide_errors(self, invalid_filenames, shadowed_entries): header = _("Multiple errors occurred while scanning this folder") @@ -615,37 +869,18 @@ else: continue secondary = "\n".join(messages) - self.add_dismissable_msg(pane, gtk.STOCK_DIALOG_ERROR, header, + self.add_dismissable_msg(pane, Gtk.STOCK_DIALOG_ERROR, header, secondary) def add_dismissable_msg(self, pane, icon, primary, secondary): msgarea = self.msgarea_mgr[pane].new_from_text_and_icon( icon, primary, secondary) - button = msgarea.add_stock_button_with_text(_("Hi_de"), - gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE) + msgarea.add_button(_("Hi_de"), Gtk.ResponseType.CLOSE) msgarea.connect("response", lambda *args: self.msgarea_mgr[pane].clear()) msgarea.show_all() return msgarea - def launch_comparison(self, it, pane, force=1): - """Launch comparison at 'it'. - If it is a file we launch a diff. - If it is a folder we recursively open diffs for each non equal file. - """ - paths = filter(os.path.exists, self.model.value_paths(it)) - self.emit("create-diff", paths) - - def launch_comparisons_on_selected(self): - """Launch comparisons on all selected elements. - """ - pane = self._get_focused_pane() - if pane is not None: - selected = self._get_selected_paths(pane) - get_iter = self.model.get_iter - for s in selected: - self.launch_comparison( get_iter(s), pane ) - def copy_selected(self, direction): assert direction in (-1,1) src_pane = self._get_focused_pane() @@ -673,12 +908,19 @@ if os.path.exists(dst): if misc.run_dialog( _("'%s' exists.\nOverwrite?") % os.path.basename(dst), parent = self, - buttonstype = gtk.BUTTONS_OK_CANCEL) != gtk.RESPONSE_OK: + buttonstype = Gtk.ButtonsType.OK_CANCEL) != Gtk.ResponseType.OK: continue misc.copytree(src, dst) self.recursively_update( path ) - except (OSError,IOError), e: - misc.run_dialog(_("Error copying '%s' to '%s'\n\n%s.") % (src, dst,e), self) + except (OSError, IOError, shutil.Error) as err: + misc.error_dialog( + _("Error copying file"), + _("Couldn't copy %s\nto %s.\n\n%s") % ( + GLib.markup_escape_text(src), + GLib.markup_escape_text(dst), + GLib.markup_escape_text(str(err)), + ) + ) def delete_selected(self): """Delete all selected files/folders recursively. @@ -692,69 +934,142 @@ it = self.model.get_iter(path) name = self.model.value_path(it, pane) try: - if os.path.isfile(name): - os.remove(name) - self.file_deleted( path, pane) - elif os.path.isdir(name): - if misc.run_dialog(_("'%s' is a directory.\nRemove recursively?") % os.path.basename(name), - parent = self, - buttonstype=gtk.BUTTONS_OK_CANCEL) == gtk.RESPONSE_OK: - shutil.rmtree(name) - self.recursively_update( path ) - self.file_deleted( path, pane) - except OSError, e: - misc.run_dialog(_("Error removing %s\n\n%s.") % (name,e), parent = self) + gfile = Gio.File.new_for_path(name) + gfile.trash(None) + self.file_deleted(path, pane) + except GLib.GError as e: + misc.error_dialog(_("Error deleting %s") % name, str(e)) + + def on_treemodel_row_deleted(self, model, path): + + # TODO: Move this and path tools to new tree helper module + def refocus_deleted_path(model, path): + # Since the passed path has been deleted, either the path is now a + # valid successor, or there are no successors. If valid, return it. + # If not, and the path has a predecessor sibling (immediate or + # otherwise), then return that. If there are no siblings, traverse + # parents until we get a valid path, and return that. + + def tree_path_prev(path): + if not path or path[-1] == 0: + return None + return path[:-1] + (path[-1] - 1,) + + def tree_path_up(path): + if not path: + return None + return path[:-1] + + def valid_path(model, path): + try: + model.get_iter(path) + return True + except ValueError: + return False + + if valid_path(model, path): + return path + + new_path = tree_path_prev(path) + while new_path: + if valid_path(model, new_path): + return new_path + new_path = tree_path_prev(new_path) + + new_path = tree_path_up(path) + while new_path: + if valid_path(model, new_path): + return new_path + new_path = tree_path_up(new_path) + + return None + + if self.current_path == path: + self.current_path = refocus_deleted_path(model, path) + if self.current_path and self.focus_pane: + self.focus_pane.set_cursor(self.current_path) + + def on_treeview_selection_changed(self, selection, pane): + if not self.treeview[pane].is_focus(): + return + have_selection = bool(selection.count_selected_rows()) + get_action = self.actiongroup.get_action + + if have_selection: + is_valid = True + for path in selection.get_selected_rows()[1]: + state = self.model.get_state(self.model.get_iter(path), pane) + if state in (tree.STATE_ERROR, tree.STATE_NONEXIST): + is_valid = False + break + + get_action("DirCompare").set_sensitive(True) + get_action("Hide").set_sensitive(True) + get_action("DirDelete").set_sensitive(is_valid) + get_action("DirCopyLeft").set_sensitive(is_valid and pane > 0) + get_action("DirCopyRight").set_sensitive( + is_valid and pane + 1 < self.num_panes) + if self.main_actiongroup: + act = self.main_actiongroup.get_action("OpenExternal") + act.set_sensitive(is_valid) + else: + for action in ("DirCompare", "DirCopyLeft", "DirCopyRight", + "DirDelete", "Hide"): + get_action(action).set_sensitive(False) + if self.main_actiongroup: + act = self.main_actiongroup.get_action("OpenExternal") + act.set_sensitive(False) def on_treeview_cursor_changed(self, *args): pane = self._get_focused_pane() - if pane is None: + if pane is None or len(self.model) == 0: return cursor_path, cursor_col = self.treeview[pane].get_cursor() if not cursor_path: self.emit("next-diff-changed", False, False) - else: - # TODO: Only recalculate when needed; - # not self.prev_path < cursor_path < self.next_path is a start, - # but fails when we move off a changed row. - prev_path, next_path = self.model._find_next_prev_diff(cursor_path) - self.prev_path, self.next_path = prev_path, next_path - have_next_diffs = (prev_path is not None, next_path is not None) - self.emit("next-diff-changed", *have_next_diffs) + self.current_path = cursor_path + return - paths = self._get_selected_paths(pane) - if len(paths) > 0: - def rwx(mode): - return "".join( [ ((mode& (1<= 0: tree = self.treeview[pane-1] if tree is not None: @@ -767,7 +1082,7 @@ for p in paths: tree.get_selection().select_path(p) tree.emit("cursor-changed") - return event.keyval in (gtk.keysyms.Left, gtk.keysyms.Right) #handled + return event.keyval in (Gdk.KEY_Left, Gdk.KEY_Right) #handled def on_treeview_row_activated(self, view, path, column): pane = self.treeview.index(view) @@ -782,7 +1097,8 @@ if not rows[pane]: return if os.path.isfile(rows[pane]): - self.emit("create-diff", [r for r in rows if os.path.isfile(r)]) + self.emit("create-diff", [r for r in rows if os.path.isfile(r)], + {}) elif os.path.isdir(rows[pane]): if view.row_expanded(path): view.collapse_row(path) @@ -803,24 +1119,31 @@ treeview.handler_unblock(outid) def on_treeview_focus_in_event(self, tree, event): - self.treeview_focussed = tree + self.focus_pane = tree pane = self.treeview.index(tree) - self.actiongroup.get_action("DirCopyLeft").set_sensitive(pane > 0) - self.actiongroup.get_action("DirCopyRight").set_sensitive(pane+1 < self.num_panes) - self.actiongroup.get_action("DirDelete").set_sensitive(True) + self.on_treeview_selection_changed(tree.get_selection(), pane) tree.emit("cursor-changed") def on_treeview_focus_out_event(self, tree, event): - self.actiongroup.get_action("DirCopyLeft").set_sensitive(False) - self.actiongroup.get_action("DirCopyRight").set_sensitive(False) - self.actiongroup.get_action("DirDelete").set_sensitive(False) - - # - # Toolbar handlers - # + for action in ("DirCompare", "DirCopyLeft", "DirCopyRight", + "DirDelete", "Hide"): + self.actiongroup.get_action(action).set_sensitive(False) + try: + self.main_actiongroup.get_action("OpenExternal").set_sensitive( + False) + except AttributeError: + pass def on_button_diff_clicked(self, button): - self.launch_comparisons_on_selected() + pane = self._get_focused_pane() + if pane is None: + return + + selected = self._get_selected_paths(pane) + for row in selected: + row_paths = self.model.value_paths(self.model.get_iter(row)) + paths = [p for p in row_paths if os.path.exists(p)] + self.emit("create-diff", paths, {}) def on_button_copy_left_clicked(self, button): self.copy_selected(-1) @@ -831,9 +1154,12 @@ def open_external(self): pane = self._get_focused_pane() - if pane is not None: - m = self.model - files = [ m.value_path( m.get_iter(p), pane ) for p in self._get_selected_paths(pane) ] + if pane is None: + return + path = lambda p: self.model.value_path(self.model.get_iter(p), pane) + files = [path(p) for p in self._get_selected_paths(pane)] + files = [f for f in files if f] + if files: self._open_files(files) def on_button_ignore_case_toggled(self, button): @@ -849,7 +1175,8 @@ state_strs = [self.state_actions[s][0] for s in active_filters] self.state_filters = active_filters - self.prefs.dir_status_filters = state_strs + # TODO: Updating the property won't have any effect on its own + self.props.status_filters = state_strs self.refresh() def _update_name_filter(self, button, idx): @@ -890,13 +1217,16 @@ is_present = [ os.path.exists( f ) for f in curfiles ] all_present = 0 not in is_present if all_present: - if _files_same(curfiles, regexes) in (Same, SameFiltered): + if self.file_compare(curfiles, regexes) in (Same, SameFiltered): state = tree.STATE_NORMAL else: state = tree.STATE_MODIFIED else: state = tree.STATE_NEW - if state in self.state_filters: + # Always retain NORMAL folders for comparison; we remove these + # later if they have no children. + if (state in self.state_filters or + all(os.path.isdir(f) for f in curfiles)): ret.append( files ) return ret @@ -906,19 +1236,23 @@ files = self.model.value_paths(it) regexes = [f.filter for f in self.text_filters if f.active] - def mtime(f): + def stat(f): try: - return os.stat(f).st_mtime + return os.stat(f) except OSError: - return 0 + return None + stats = [stat(f) for f in files[:self.num_panes]] + sizes = [s.st_size if s else 0 for s in stats] + perms = [s.st_mode if s else 0 for s in stats] + # find the newest file, checking also that they differ - mod_times = [ mtime(f) for f in files[:self.num_panes] ] + mod_times = [s.st_mtime if s else 0 for s in stats] newest_index = mod_times.index( max(mod_times) ) if mod_times.count( max(mod_times) ) == len(mod_times): newest_index = -1 # all same all_present = 0 not in mod_times if all_present: - all_same = _files_same(files, regexes) + all_same = self.file_compare(files, regexes) all_present_same = all_same else: lof = [] @@ -926,7 +1260,7 @@ if mod_times[j]: lof.append( files[j] ) all_same = Different - all_present_same = _files_same(lof, regexes) + all_present_same = self.file_compare(lof, regexes) different = 1 one_isdir = [None for i in range(self.model.ntree)] for j in range(self.model.ntree): @@ -934,26 +1268,63 @@ isdir = os.path.isdir( files[j] ) # TODO: Differentiate the DodgySame case if all_same == Same or all_same == DodgySame: - self.model.set_state(it, j, tree.STATE_NORMAL, isdir) + self.model.set_path_state(it, j, tree.STATE_NORMAL, isdir) different = 0 elif all_same == SameFiltered: - self.model.set_state(it, j, tree.STATE_NOCHANGE, isdir) + self.model.set_path_state(it, j, tree.STATE_NOCHANGE, isdir) different = 0 # TODO: Differentiate the SameFiltered and DodgySame cases elif all_present_same in (Same, SameFiltered, DodgySame): - self.model.set_state(it, j, tree.STATE_NEW, isdir) + self.model.set_path_state(it, j, tree.STATE_NEW, isdir) elif all_same == FileError or all_present_same == FileError: - self.model.set_state(it, j, tree.STATE_ERROR, isdir) + self.model.set_path_state(it, j, tree.STATE_ERROR, isdir) # Different and DodgyDifferent else: - self.model.set_state(it, j, tree.STATE_MODIFIED, isdir) + self.model.set_path_state(it, j, tree.STATE_MODIFIED, isdir) self.model.set_value(it, self.model.column_index(COL_EMBLEM, j), j == newest_index and "emblem-meld-newer-file" or None) one_isdir[j] = isdir + + # A DateCellRenderer would be nicer, but potentially very slow + TIME = self.model.column_index(COL_TIME, j) + mod_datetime = datetime.datetime.fromtimestamp(mod_times[j]) + time_str = mod_datetime.strftime("%a %d %b %Y %H:%M:%S") + self.model.set_value(it, TIME, time_str) + + def natural_size(bytes): + suffixes = ( + 'B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB' + ) + size = float(bytes) + unit = 0 + while size > 1000 and unit < len(suffixes) - 1: + size /= 1000 + unit += 1 + format_str = "%.1f %s" if unit > 0 else "%d %s" + return format_str % (size, suffixes[unit]) + + # A SizeCellRenderer would be nicer, but potentially very slow + SIZE = self.model.column_index(COL_SIZE, j) + size_str = natural_size(sizes[j]) + self.model.set_value(it, SIZE, size_str) + + def format_mode(mode): + perms = [] + rwx = ((4, 'r'), (2, 'w'), (1, 'x')) + for group_index in (6, 3, 0): + group = mode >> group_index & 7 + perms.extend([p if group & i else '-' for i, p in rwx]) + return "".join(perms) + + PERMS = self.model.column_index(COL_PERMS, j) + perm_str = format_mode(perms[j]) + self.model.set_value(it, PERMS, perm_str) + for j in range(self.model.ntree): if not mod_times[j]: - self.model.set_state(it, j, tree.STATE_MISSING, True in one_isdir) + self.model.set_path_state(it, j, tree.STATE_NONEXIST, + True in one_isdir) return different def popup_in_pane(self, pane, event): @@ -967,30 +1338,34 @@ time = event.time else: button = 0 - time = gtk.get_current_event_time() - self.popup_menu.popup(None, None, None, button, time) + time = Gtk.get_current_event_time() + self.popup_menu.popup(None, None, None, None, button, time) def on_treeview_popup_menu(self, treeview): self.popup_in_pane(self.treeview.index(treeview), None) return True def on_treeview_button_press_event(self, treeview, event): - # unselect other panes - for t in filter(lambda x:x!=treeview, self.treeview[:self.num_panes]): + # Unselect any selected files in other panes + for t in [v for v in self.treeview[:self.num_panes] if v != treeview]: t.get_selection().unselect_all() + if event.button == 3: - try: - path, col, cellx, celly = treeview.get_path_at_pos( int(event.x), int(event.y) ) - except TypeError: - pass # clicked outside tree - else: - treeview.grab_focus() - selected = self._get_selected_paths( self.treeview.index(treeview) ) - if len(selected) <= 1 and event.state == 0: - treeview.set_cursor( path, col, 0) - self.popup_in_pane(self.treeview.index(treeview), event) - return event.state==0 - return 0 + treeview.grab_focus() + path = treeview.get_path_at_pos(int(event.x), int(event.y)) + if path is None: + return False + selection = treeview.get_selection() + model, rows = selection.get_selected_rows() + + if path[0] not in rows: + selection.unselect_all() + selection.select_path(path[0]) + treeview.set_cursor(path[0]) + + self.popup_in_pane(self.treeview.index(treeview), event) + return True + return False def get_state_traversal(self, diffmapindex): def tree_state_iter(): @@ -1002,7 +1377,7 @@ if treeview.row_expanded(rowiter.path): for row in rowiter.iterchildren(): recurse_tree_states(row) - recurse_tree_states(iter(self.model).next()) + recurse_tree_states(next(iter(self.model))) row_states.append(None) numlines = float(len(row_states) - 1) @@ -1020,51 +1395,59 @@ self.model = DirDiffTreeStore(n) for i in range(n): self.treeview[i].set_model(self.model) - - colour_map = { - "conflict": (1.0, 0.75294117647058822, 0.79607843137254897), - "error": (0.9882352941176, 0.9137254901960, 0.30980392156862), - "insert": (0.75686274509803919, 1.0, 0.75686274509803919), - "replace": (0.8666666666666667, 0.93333333333333335, 1.0), - "delete": (1.0, 1.0, 1.0), - } + self.model.connect("row-deleted", self.on_treemodel_row_deleted) for (w, i) in zip(self.diffmap, (0, n - 1)): scroll = self.scrolledwindow[i].get_vscrollbar() idx = 1 if i else 0 - w.setup(scroll, self.get_state_traversal(idx), colour_map) + w.setup(scroll, self.get_state_traversal(idx), [self.fill_colors, self.line_colors]) + + for widget in ( + self.vbox[:n] + self.file_toolbar[:n] + self.diffmap[:n] + + self.linkmap[:n - 1] + self.dummy_toolbar_linkmap[:n - 1]): + widget.show() + + for widget in ( + self.vbox[n:] + self.file_toolbar[n:] + self.diffmap[n:] + + self.linkmap[n - 1:] + self.dummy_toolbar_linkmap[n - 1:]): + widget.hide() - toshow = self.scrolledwindow[:n] + self.fileentry[:n] - toshow += self.linkmap[:n-1] + self.diffmap[:n] - toshow += self.vbox[:n] + self.msgarea_mgr[:n] - map( lambda x: x.show(), toshow ) - tohide = self.scrolledwindow[n:] + self.fileentry[n:] - tohide += self.linkmap[n-1:] + self.diffmap[n:] - tohide += self.vbox[n:] + self.msgarea_mgr[n:] - map( lambda x: x.hide(), tohide ) if self.num_panes != 0: # not first time through self.num_panes = n - self.on_fileentry_activate(None) + self.on_fileentry_file_set(None) else: self.num_panes = n def refresh(self): - root = self.model.get_iter_root() + root = self.model.get_iter_first() if root: roots = self.model.value_paths(root) self.set_locations( roots ) def recompute_label(self): - root = self.model.get_iter_root() + root = self.model.get_iter_first() filenames = self.model.value_paths(root) - shortnames = misc.shorten_names(*filenames) + if self.custom_labels: + label_options = zip(self.custom_labels, filenames) + shortnames = [l[0] or l[1] for l in label_options] + else: + shortnames = misc.shorten_names(*filenames) self.label_text = " : ".join(shortnames) self.tooltip_text = self.label_text self.label_changed() + def set_labels(self, labels): + labels = labels[:self.num_panes] + extra = self.num_panes - len(labels) + if extra: + labels.extend([""] * extra) + self.custom_labels = labels + self.recompute_label() + def _update_diffmaps(self): - self.diffmap[0].queue_draw() - self.diffmap[1].queue_draw() + for diffmap in self.diffmap: + diffmap.on_diffs_changed() + diffmap.queue_draw() def on_file_changed(self, changed_filename): """When a file has changed, try to find it in our tree @@ -1074,7 +1457,7 @@ changed_paths = [] # search each panes tree for changed_filename for pane in range(self.num_panes): - it = model.get_iter_root() + it = model.get_iter_first() current = model.value_path(it, pane).split(os.sep) changed = changed_filename.split(os.sep) # early exit. does filename begin with root? @@ -1106,11 +1489,11 @@ self._update_item_state( model.get_iter(path) ) def next_diff(self, direction): - if self.treeview_focussed: - pane = self.treeview.index(self.treeview_focussed) + if self.focus_pane: + pane = self.treeview.index(self.focus_pane) else: pane = 0 - if direction == gtk.gdk.SCROLL_UP: + if direction == Gdk.ScrollDirection.UP: path = self.prev_path else: path = self.next_path @@ -1118,5 +1501,14 @@ self.treeview[pane].expand_to_path(path) self.treeview[pane].set_cursor(path) - def on_reload_activate(self, *extra): - self.on_fileentry_activate(None) + def on_refresh_activate(self, *extra): + self.on_fileentry_file_set(None) + + def on_delete_event(self, appquit=0): + for h in self.settings_handlers: + meldsettings.disconnect(h) + self.emit('close', 0) + return Gtk.ResponseType.OK + + def on_find_activate(self, *extra): + self.focus_pane.emit("start-interactive-search") diff -Nru meld-1.5.3/meld/filediff.py meld-3.11.0/meld/filediff.py --- meld-1.5.3/meld/filediff.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/filediff.py 2014-02-22 03:14:57.000000000 +0000 @@ -1,45 +1,53 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2009-2010 Kai Willadsen +# coding=UTF-8 -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009-2013 Kai Willadsen +# +# 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, see . -import codecs import copy +import functools +import io import os from gettext import gettext as _ -import sys import time -import pango -import glib -import gobject -import gtk -import gtk.keysyms - -import diffutil -from ui import findbar -from ui import gnomeglade -import matchers -import misc -import melddoc -import patchdialog -import paths -import merge +from multiprocessing import Pool +from multiprocessing.pool import ThreadPool -from meldapp import app -from util.sourceviewer import srcviewer + +from gi.repository import GLib +from gi.repository import GObject +from gi.repository import Gio +from gi.repository import Gdk +from gi.repository import Gtk + +from . import diffutil +from . import matchers +from . import meldbuffer +from . import melddoc +from . import merge +from . import misc +from . import patchdialog +from . import recent +from . import undo +from .ui import findbar +from .ui import gnomeglade + +from meld.settings import meldsettings, settings +from .util.compat import text_type +from meld.sourceview import LanguageManager class CachedSequenceMatcher(object): @@ -50,18 +58,33 @@ eviction is overly simplistic, but is okay for our usage pattern. """ + process_pool = None + def __init__(self): + if self.process_pool is None: + if os.name == "nt": + CachedSequenceMatcher.process_pool = ThreadPool(None) + else: + # maxtasksperchild is new in Python 2.7; this is for 2.6 compat + try: + CachedSequenceMatcher.process_pool = Pool( + None, matchers.init_worker, maxtasksperchild=1) + except TypeError: + CachedSequenceMatcher.process_pool = Pool( + None, matchers.init_worker) self.cache = {} - def __call__(self, text1, textn): + def match(self, text1, textn, cb): try: self.cache[(text1, textn)][1] = time.time() - return self.cache[(text1, textn)][0] + cb(self.cache[(text1, textn)][0]) except KeyError: - matcher = matchers.MyersSequenceMatcher(None, text1, textn) - opcodes = matcher.get_opcodes() - self.cache[(text1, textn)] = [opcodes, time.time()] - return opcodes + def inline_cb(opcodes): + self.cache[(text1, textn)] = [opcodes, time.time()] + GLib.idle_add(lambda: cb(opcodes)) + self.process_pool.apply_async(matchers.matcher_worker, + (text1, textn), + callback=inline_cb) def clean(self, size_hint): """Clean the cache if necessary @@ -76,101 +99,9 @@ del self.cache[item[0]] -class BufferLines(object): - """gtk.TextBuffer shim with line-based access and optional filtering - - This class allows a gtk.TextBuffer to be treated as a list of lines of - possibly-filtered text. If no filter is given, the raw output from the - gtk.TextBuffer is used. - - The logic here (and in places in FileDiff) requires that Python's - unicode splitlines() implementation and gtk.TextBuffer agree on where - linebreaks occur. Happily, this is usually the case. - """ - - def __init__(self, buf, textfilter=None): - self.buf = buf - if textfilter is not None: - self.textfilter = textfilter - else: - self.textfilter = lambda x: x - - def __getslice__(self, lo, hi): - # FIXME: If we ask for arbitrary slices past the end of the buffer, - # this will return the last line. - start = get_iter_at_line_or_eof(self.buf, lo) - end = get_iter_at_line_or_eof(self.buf, hi) - txt = unicode(self.buf.get_text(start, end, False), 'utf8') - - filter_txt = self.textfilter(txt) - lines = filter_txt.splitlines() - ends = filter_txt.splitlines(True) - - # The last line in a gtk.TextBuffer is guaranteed never to end in a - # newline. As splitlines() discards an empty line at the end, we need - # to artificially add a line if the requested slice is past the end of - # the buffer, and the last line in the slice ended in a newline. - if hi >= self.buf.get_line_count() and \ - (len(lines) == 0 or len(lines[-1]) != len(ends[-1])): - lines.append(u"") - ends.append(u"") - - hi = self.buf.get_line_count() if hi == sys.maxint else hi - if hi - lo != len(lines): - # These codepoints are considered line breaks by Python, but not - # by GtkTextStore. - additional_breaks = set((u'\x0c', u'\x85')) - i = 0 - while i < len(ends): - line, end = lines[i], ends[i] - # It's possible that the last line in a file would end in a - # line break character, which requires no joining. - if end and end[-1] in additional_breaks and \ - (not line or line[-1] not in additional_breaks): - assert len(ends) >= i + 1 - lines[i:i + 2] = [line + end[-1] + lines[i + 1]] - ends[i:i + 2] = [end + ends[i + 1]] - i += 1 - - return lines - - def __getitem__(self, i): - if i > len(self): - raise IndexError - line_start = get_iter_at_line_or_eof(self.buf, i) - line_end = line_start.copy() - if not line_end.ends_line(): - line_end.forward_to_line_end() - txt = self.buf.get_text(line_start, line_end, False) - return unicode(self.textfilter(txt), 'utf8') - - def __len__(self): - return self.buf.get_line_count() - - -################################################################################ -# -# FileDiff -# -################################################################################ - MASK_SHIFT, MASK_CTRL = 1, 2 - MODE_REPLACE, MODE_DELETE, MODE_INSERT = 0, 1, 2 -def get_iter_at_line_or_eof(buf, line): - if line >= buf.get_line_count(): - return buf.get_end_iter() - return buf.get_iter_at_line(line) - -def buffer_insert(buf, line, text): - if line >= buf.get_line_count(): - # TODO: We need to insert a linebreak here, but there is no - # way to be certain what kind of linebreak to use. - text = "\n" + text - it = get_iter_at_line_or_eof(buf, line) - buf.insert(it, text) - return it class CursorDetails(object): __slots__ = ("pane", "pos", "line", "offset", "chunk", "prev", "next", @@ -198,63 +129,85 @@ self.end_mark = mark1 self.start_rgba = rgba0 self.end_rgba = rgba1 - self.start_time = glib.get_current_time() + self.start_time = GLib.get_monotonic_time() self.duration = duration class FileDiff(melddoc.MeldDoc, gnomeglade.Component): - """Two or three way diff of text files. - """ + """Two or three way comparison of text files""" + + __gtype_name__ = "FileDiff" + + highlight_current_line = GObject.property(type=bool, default=False) + ignore_blank_lines = GObject.property( + type=bool, + nick="Ignore blank lines", + blurb="Whether to ignore blank lines when comparing file contents", + default=False, + ) differ = diffutil.Differ - keylookup = {gtk.keysyms.Shift_L : MASK_SHIFT, - gtk.keysyms.Control_L : MASK_CTRL, - gtk.keysyms.Shift_R : MASK_SHIFT, - gtk.keysyms.Control_R : MASK_CTRL} + keylookup = { + Gdk.KEY_Shift_L: MASK_SHIFT, + Gdk.KEY_Shift_R: MASK_SHIFT, + Gdk.KEY_Control_L: MASK_CTRL, + Gdk.KEY_Control_R: MASK_CTRL, + } # Identifiers for MsgArea messages - (MSG_SAME,) = range(1) + (MSG_SAME, MSG_SLOW_HIGHLIGHT, MSG_SYNCPOINTS) = list(range(3)) __gsignals__ = { - 'next-conflict-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (bool, bool)), - 'action-mode-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (int,)), + 'next-conflict-changed': (GObject.SignalFlags.RUN_FIRST, None, (bool, bool)), + 'action-mode-changed': (GObject.SignalFlags.RUN_FIRST, None, (int,)), } - def __init__(self, prefs, num_panes): + def __init__(self, num_panes): """Start up an filediff with num_panes empty contents. """ - melddoc.MeldDoc.__init__(self, prefs) - gnomeglade.Component.__init__(self, paths.ui_dir("filediff.ui"), "filediff") - self.map_widgets_into_lists(["textview", "fileentry", "diffmap", "scrolledwindow", "linkmap", "statusimage", "msgarea_mgr", "vbox"]) + melddoc.MeldDoc.__init__(self) + gnomeglade.Component.__init__(self, "filediff.ui", "filediff") + widget_lists = [ + "diffmap", "file_save_button", "file_toolbar", "fileentry", + "linkmap", "msgarea_mgr", "readonlytoggle", + "scrolledwindow", "selector_hbox", "textview", "vbox", + "dummy_toolbar_linkmap" + ] + self.map_widgets_into_lists(widget_lists) + + # This SizeGroup isn't actually necessary for FileDiff; it's for + # handling non-homogenous selectors in FileComp. It's also fragile. + column_sizes = Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL) + column_sizes.set_ignore_hidden(True) + for widget in self.selector_hbox: + column_sizes.add_widget(widget) + self.warned_bad_comparison = False - # Some sourceviews bind their own undo mechanism, which we replace - gtk.binding_entry_remove(srcviewer.GtkTextView, gtk.keysyms.z, - gtk.gdk.CONTROL_MASK) - gtk.binding_entry_remove(srcviewer.GtkTextView, gtk.keysyms.z, - gtk.gdk.CONTROL_MASK | gtk.gdk.SHIFT_MASK) for v in self.textview: - v.set_buffer(srcviewer.GtkTextBuffer()) - v.set_show_line_numbers(self.prefs.show_line_numbers) - v.set_insert_spaces_instead_of_tabs(self.prefs.spaces_instead_of_tabs) - v.set_wrap_mode(self.prefs.edit_wrap_lines) - if self.prefs.show_whitespace: - v.set_draw_spaces(srcviewer.spaces_flag) - srcviewer.set_tab_width(v, self.prefs.tab_size) + buf = meldbuffer.MeldBuffer() + buf.connect('begin_user_action', + self.on_textbuffer_begin_user_action) + buf.connect('end_user_action', self.on_textbuffer_end_user_action) + v.set_buffer(buf) + buf.data.connect('file-changed', self.notify_file_changed) self._keymask = 0 self.load_font() self.deleted_lines_pending = -1 self.textview_overwrite = 0 - self.textview_focussed = None + self.focus_pane = None self.textview_overwrite_handlers = [ t.connect("toggle-overwrite", self.on_textview_toggle_overwrite) for t in self.textview ] self.textbuffer = [v.get_buffer() for v in self.textview] - self.bufferdata = [MeldBufferData() for b in self.textbuffer] - self.buffer_texts = [BufferLines(b) for b in self.textbuffer] + self.buffer_texts = [meldbuffer.BufferLines(b) for b in self.textbuffer] + self.undosequence = undo.UndoSequence() self.text_filters = [] self.create_text_filters() - app.connect("text-filters-changed", self.on_text_filters_changed) - self.buffer_filtered = [BufferLines(b, self._filter_text) for - b in self.textbuffer] + self.settings_handlers = [ + meldsettings.connect("text-filters-changed", + self.on_text_filters_changed) + ] + self.buffer_filtered = [meldbuffer.BufferLines(b, self._filter_text) + for b in self.textbuffer] for (i, w) in enumerate(self.scrolledwindow): w.get_vadjustment().connect("value-changed", self._sync_vscroll, i) w.get_hadjustment().connect("value-changed", self._sync_hscroll) @@ -263,69 +216,109 @@ self._sync_hscroll_lock = False self._scroll_lock = False self.linediffer = self.differ() - self.linediffer.ignore_blanks = self.prefs.ignore_blank_lines + self.force_highlight = False + self.syncpoints = [] self.in_nested_textview_gutter_expose = False - self._inline_cache = set() self._cached_match = CachedSequenceMatcher() - self.anim_source_id = [] - self.animating_chunks = [] + self.anim_source_id = [None for buf in self.textbuffer] + self.animating_chunks = [[] for buf in self.textbuffer] for buf in self.textbuffer: - buf.create_tag("inline", background=self.prefs.color_inline_bg, - foreground=self.prefs.color_inline_fg) - self.anim_source_id.append(None) - self.animating_chunks.append([]) - - def parse_to_cairo(color_spec): - c = gtk.gdk.color_parse(color_spec) - return tuple([x / 65535. for x in (c.red, c.green, c.blue)]) - - self.fill_colors = {"insert" : parse_to_cairo(self.prefs.color_delete_bg), - "delete" : parse_to_cairo(self.prefs.color_delete_bg), - "conflict" : parse_to_cairo(self.prefs.color_conflict_bg), - "replace" : parse_to_cairo(self.prefs.color_replace_bg)} - - darken = lambda color: tuple([x * 0.8 for x in color]) - self.line_colors = {"insert" : darken(self.fill_colors["insert"]), - "delete" : darken(self.fill_colors["delete"]), - "conflict" : darken(self.fill_colors["conflict"]), - "replace" : darken(self.fill_colors["replace"])} + buf.create_tag("inline") + buf.connect("notify::has-selection", + self.update_text_actions_sensitivity) actions = ( - ("MakePatch", None, _("Format as patch..."), None, _("Create a patch using differences between files"), self.make_patch), - ("PrevConflict", None, _("Previous conflict"), "I", _("Go to the previous conflict"), lambda x: self.on_next_conflict(gtk.gdk.SCROLL_UP)), - ("NextConflict", None, _("Next conflict"), "K", _("Go to the next conflict"), lambda x: self.on_next_conflict(gtk.gdk.SCROLL_DOWN)), - ("PushLeft", gtk.STOCK_GO_BACK, _("Push to left"), "Left", _("Push current change to the left"), lambda x: self.push_change(-1)), - ("PushRight", gtk.STOCK_GO_FORWARD, _("Push to right"), "Right", _("Push current change to the right"), lambda x: self.push_change(1)), + ("MakePatch", None, _("Format as Patch..."), None, + _("Create a patch using differences between files"), + self.make_patch), + ("SaveAll", None, _("Save A_ll"), "L", + _("Save all files in the current comparison"), + self.on_save_all_activate), + ("Revert", Gtk.STOCK_REVERT_TO_SAVED, None, None, + _("Revert files to their saved versions"), + self.on_revert_activate), + ("SplitAdd", None, _("Add Synchronization Point"), None, + _("Add a manual point for synchronization of changes between " + "files"), + self.add_sync_point), + ("SplitClear", None, _("Clear Synchronization Points"), None, + _("Clear manual change sychronization points"), + self.clear_sync_points), + ("PrevConflict", None, _("Previous Conflict"), "I", + _("Go to the previous conflict"), + lambda x: self.on_next_conflict(Gdk.ScrollDirection.UP)), + ("NextConflict", None, _("Next Conflict"), "K", + _("Go to the next conflict"), + lambda x: self.on_next_conflict(Gdk.ScrollDirection.DOWN)), + ("PushLeft", Gtk.STOCK_GO_BACK, _("Push to Left"), "Left", + _("Push current change to the left"), + lambda x: self.push_change(-1)), + ("PushRight", Gtk.STOCK_GO_FORWARD, + _("Push to Right"), "Right", + _("Push current change to the right"), + lambda x: self.push_change(1)), # FIXME: using LAST and FIRST is terrible and unreliable icon abuse - ("PullLeft", gtk.STOCK_GOTO_LAST, _("Pull from left"), "Right", _("Pull change from the left"), lambda x: self.pull_change(-1)), - ("PullRight", gtk.STOCK_GOTO_FIRST, _("Pull from right"), "Left", _("Pull change from the right"), lambda x: self.pull_change(1)), - ("CopyLeftUp", None, _("Copy above left"), "bracketleft", _("Copy change above the left chunk"), lambda x: self.copy_change(-1, -1)), - ("CopyLeftDown", None, _("Copy below left"), "semicolon", _("Copy change below the left chunk"), lambda x: self.copy_change(-1, 1)), - ("CopyRightUp", None, _("Copy above right"), "bracketright", _("Copy change above the right chunk"), lambda x: self.copy_change(1, -1)), - ("CopyRightDown", None, _("Copy below right"), "quoteright", _("Copy change below the right chunk"), lambda x: self.copy_change(1, 1)), - ("Delete", gtk.STOCK_DELETE, _("Delete"), "Delete", _("Delete change"), self.delete_change), - ("MergeFromLeft", None, _("Merge all changes from left"), None, _("Merge all non-conflicting changes from the left"), lambda x: self.pull_all_non_conflicting_changes(-1)), - ("MergeFromRight", None, _("Merge all changes from right"), None, _("Merge all non-conflicting changes from the right"), lambda x: self.pull_all_non_conflicting_changes(1)), - ("MergeAll", None, _("Merge all non-conflicting"), None, _("Merge all non-conflicting changes from left and right panes"), lambda x: self.merge_all_non_conflicting_changes()), - ("CycleDocuments", None, _("Cycle through documents"), "Escape", _("Move keyboard focus to the next document in this comparison"), self.action_cycle_documents), + ("PullLeft", Gtk.STOCK_GOTO_LAST, + _("Pull from Left"), "Right", + _("Pull change from the left"), + lambda x: self.pull_change(-1)), + ("PullRight", Gtk.STOCK_GOTO_FIRST, + _("Pull from Right"), "Left", + _("Pull change from the right"), + lambda x: self.pull_change(1)), + ("CopyLeftUp", None, _("Copy Above Left"), "bracketleft", + _("Copy change above the left chunk"), + lambda x: self.copy_change(-1, -1)), + ("CopyLeftDown", None, _("Copy Below Left"), "semicolon", + _("Copy change below the left chunk"), + lambda x: self.copy_change(-1, 1)), + ("CopyRightUp", None, _("Copy Above Right"), "bracketright", + _("Copy change above the right chunk"), + lambda x: self.copy_change(1, -1)), + ("CopyRightDown", None, _("Copy Below Right"), "quoteright", + _("Copy change below the right chunk"), + lambda x: self.copy_change(1, 1)), + ("Delete", Gtk.STOCK_DELETE, _("Delete"), "Delete", + _("Delete change"), + self.delete_change), + ("MergeFromLeft", None, _("Merge All from Left"), None, + _("Merge all non-conflicting changes from the left"), + lambda x: self.pull_all_non_conflicting_changes(-1)), + ("MergeFromRight", None, _("Merge All from Right"), None, + _("Merge all non-conflicting changes from the right"), + lambda x: self.pull_all_non_conflicting_changes(1)), + ("MergeAll", None, _("Merge All"), None, + _("Merge all non-conflicting changes from left and right " + "panes"), + lambda x: self.merge_all_non_conflicting_changes()), + ("CycleDocuments", None, + _("Cycle Through Documents"), "Escape", + _("Move keyboard focus to the next document in this " + "comparison"), + self.action_cycle_documents), ) toggle_actions = ( - ("LockScrolling", None, _("Lock scrolling"), None, + ("LockScrolling", None, _("Lock Scrolling"), None, _("Lock scrolling of all panes"), self.on_action_lock_scrolling_toggled, True), ) - self.ui_file = paths.ui_dir("filediff-ui.xml") - self.actiongroup = gtk.ActionGroup('FilediffPopupActions') + self.ui_file = gnomeglade.ui_file("filediff-ui.xml") + self.actiongroup = Gtk.ActionGroup('FilediffPopupActions') self.actiongroup.set_translation_domain("meld") self.actiongroup.add_actions(actions) self.actiongroup.add_toggle_actions(toggle_actions) + self.main_actiongroup = None + + self.findbar = findbar.FindBar(self.grid) + self.grid.attach(self.findbar.widget, 1, 2, 5, 1) + + self.widget.ensure_style() + self.on_style_updated(self.widget) + self.widget.connect("style-updated", self.on_style_updated) + self.set_num_panes(num_panes) - gobject.idle_add( lambda *args: self.load_font()) # hack around Bug 316730 - gnomeglade.connect_signal_handlers(self) - self.findbar = findbar.FindBar() - self.filediff.pack_end(self.findbar.widget, False) self.cursor = CursorDetails() self.connect("current-diff-changed", self.on_current_diff_changed) for t in self.textview: @@ -335,6 +328,62 @@ self.undosequence.connect("checkpointed", self.on_undo_checkpointed) self.connect("next-conflict-changed", self.on_next_conflict_changed) + for diffmap in self.diffmap: + self.linediffer.connect('diffs-changed', diffmap.on_diffs_changed) + + overwrite_label = Gtk.Label() + overwrite_label.show() + cursor_label = Gtk.Label() + cursor_label.show() + self.status_info_labels = [overwrite_label, cursor_label] + self.statusbar.set_info_box(self.status_info_labels) + + # Prototype implementation + + from meld.gutterrendererchunk import GutterRendererChunkAction + + for pane, t in enumerate(self.textview): + # FIXME: set_num_panes will break this good + if pane == 0 or (pane == 1 and self.num_panes == 3): + window = Gtk.TextWindowType.RIGHT + views = [self.textview[pane], self.textview[pane + 1]] + renderer = GutterRendererChunkAction(pane, pane + 1, views, self, self.linediffer) + gutter = t.get_gutter(window) + gutter.insert(renderer, 10) + if pane in (1, 2): + window = Gtk.TextWindowType.LEFT + views = [self.textview[pane], self.textview[pane - 1]] + renderer = GutterRendererChunkAction(pane, pane - 1, views, self, self.linediffer) + gutter = t.get_gutter(window) + gutter.insert(renderer, 10) + + # GSettings bindings + for view in self.textview: + settings.bind('indent-width', view, 'indent-width', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('insert-spaces-instead-of-tabs', view, + 'insert-spaces-instead-of-tabs', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('show-line-numbers', view, 'show-line-numbers', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('draw-spaces', view, 'draw-spaces', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('wrap-mode', view, 'wrap-mode', + Gio.SettingsBindFlags.DEFAULT) + + for buf in self.textbuffer: + settings.bind('highlight-syntax', buf, 'highlight-syntax', + Gio.SettingsBindFlags.DEFAULT) + + settings.bind('highlight-current-line', self, 'highlight-current-line', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('ignore-blank-lines', self, 'ignore-blank-lines', + Gio.SettingsBindFlags.DEFAULT) + + self.connect("notify::ignore-blank-lines", self.refresh_comparison) + + meldsettings.connect('changed', self.on_setting_changed) + def get_keymask(self): return self._keymask def set_keymask(self, value): @@ -348,27 +397,72 @@ self.emit("action-mode-changed", mode) keymask = property(get_keymask, set_keymask) + def on_key_event(self, object, event): + keymap = Gdk.Keymap.get_default() + ok, keyval, group, lvl, consumed = keymap.translate_keyboard_state( + event.hardware_keycode, 0, event.group) + mod_key = self.keylookup.get(keyval, 0) + if event.type == Gdk.EventType.KEY_PRESS: + self.keymask |= mod_key + if event.keyval == Gdk.KEY_Escape: + self.findbar.hide() + elif event.type == Gdk.EventType.KEY_RELEASE: + self.keymask &= ~mod_key + + def on_style_updated(self, widget): + style = widget.get_style_context() + + def lookup(name, default): + found, colour = style.lookup_color(name) + if not found: + colour = Gdk.RGBA() + colour.parse(default) + return colour + + for buf in self.textbuffer: + tag = buf.get_tag_table().lookup("inline") + tag.props.background_rgba = lookup("inline-bg", "LightSteelBlue2") + + self.fill_colors = {"insert" : lookup("insert-bg", "DarkSeaGreen1"), + "delete" : lookup("insert-bg", "DarkSeaGreen1"), + "conflict": lookup("conflict-bg", "Pink"), + "replace" : lookup("replace-bg", "#ddeeff"), + "current-chunk-highlight": + lookup("current-chunk-highlight", '#ffffff')} + self.line_colors = {"insert" : lookup("insert-outline", "#77f077"), + "delete" : lookup("insert-outline", "#77f077"), + "conflict": lookup("conflict-outline", "#f0768b"), + "replace" : lookup("replace-outline", "#8bbff3")} + self.highlight_color = lookup("current-line-highlight", "#ffff00") + self.syncpoint_color = lookup("syncpoint-outline", "#555555") + + for associated in self.diffmap + self.linkmap: + associated.set_color_scheme([self.fill_colors, self.line_colors]) + + self.queue_draw() + def on_focus_change(self): self.keymask = 0 def on_container_switch_in_event(self, ui): + self.main_actiongroup = [a for a in ui.get_action_groups() + if a.get_name() == "MainActions"][0] melddoc.MeldDoc.on_container_switch_in_event(self, ui) # FIXME: If no focussed textview, action sensitivity will be unset - if self.textview_focussed: - self.scheduler.add_task(self.textview_focussed.grab_focus) def on_text_filters_changed(self, app): relevant_change = self.create_text_filters() if relevant_change: - self.set_files([None] * self.num_panes) # Refresh + self.refresh_comparison() def create_text_filters(self): # In contrast to file filters, ordering of text filters can matter old_active = [f.filter_string for f in self.text_filters if f.active] - new_active = [f.filter_string for f in app.text_filters if f.active] + new_active = [f.filter_string for f in meldsettings.text_filters + if f.active] active_filters_changed = old_active != new_active - self.text_filters = [copy.copy(f) for f in app.text_filters] + self.text_filters = [copy.copy(f) for f in meldsettings.text_filters] return active_filters_changed @@ -381,8 +475,8 @@ buf.disconnect(h) def _connect_buffer_handlers(self): - for textview in self.textview: - textview.set_editable(1) + for textview, buf in zip(self.textview, self.textbuffer): + textview.set_editable(buf.data.editable) for buf in self.textbuffer: id0 = buf.connect("insert-text", self.on_text_insert_text) id1 = buf.connect("delete-range", self.on_text_delete_range) @@ -410,23 +504,23 @@ insert_overwrite = self._insert_overwrite_text[self.textview_overwrite] line_column = self._line_column_text % (line + 1, offset + 1) - status = "%s : %s" % (insert_overwrite, line_column) - self.emit("status-changed", status) + self.status_info_labels[0].set_text(insert_overwrite) + self.status_info_labels[1].set_text(line_column) if line != self.cursor.line or force: - chunk, prev, next = self.linediffer.locate_chunk(pane, line) + chunk, prev, next_ = self.linediffer.locate_chunk(pane, line) if chunk != self.cursor.chunk or force: self.cursor.chunk = chunk self.emit("current-diff-changed") - if prev != self.cursor.prev or next != self.cursor.next or force: + if prev != self.cursor.prev or next_ != self.cursor.next or force: self.emit("next-diff-changed", prev is not None, - next is not None) + next_ is not None) prev_conflict, next_conflict = None, None for conflict in self.linediffer.conflicts: if prev is not None and conflict <= prev: prev_conflict = conflict - if next is not None and conflict >= next: + if next_ is not None and conflict >= next_: next_conflict = conflict break if prev_conflict != self.cursor.prev_conflict or \ @@ -434,20 +528,26 @@ self.emit("next-conflict-changed", prev_conflict is not None, next_conflict is not None) - self.cursor.prev, self.cursor.next = prev, next + self.cursor.prev, self.cursor.next = prev, next_ self.cursor.prev_conflict = prev_conflict self.cursor.next_conflict = next_conflict self.cursor.line, self.cursor.offset = line, offset def on_current_diff_changed(self, widget, *args): - pane = self.cursor.pane - chunk_id = self.cursor.chunk - push_left, push_right, pull_left, pull_right, delete, \ - copy_left, copy_right = (True,) * 7 + pane = self._get_focused_pane() + if pane != -1: + # While this *should* be redundant, it's possible for focus pane + # and cursor pane to be different in several situations. + pane = self.cursor.pane + chunk_id = self.cursor.chunk + if pane == -1 or chunk_id is None: push_left, push_right, pull_left, pull_right, delete, \ copy_left, copy_right = (False,) * 7 else: + push_left, push_right, pull_left, pull_right, delete, \ + copy_left, copy_right = (True,) * 7 + # Push and Delete are active if the current pane has something to # act on, and the target pane exists and is editable. Pull is # sensitive if the source pane has something to get, and the @@ -502,9 +602,9 @@ self.actiongroup.get_action("NextConflict").set_sensitive(have_next) def on_next_conflict(self, direction): - if direction == gtk.gdk.SCROLL_DOWN: + if direction == Gdk.ScrollDirection.DOWN: target = self.cursor.next_conflict - else: # direction == gtk.gdk.SCROLL_UP + else: # direction == Gdk.ScrollDirection.UP target = self.cursor.prev_conflict if target is None: @@ -513,7 +613,8 @@ buf = self.textbuffer[self.cursor.pane] chunk = self.linediffer.get_chunk(target, self.cursor.pane) buf.place_cursor(buf.get_iter_at_line(chunk[1])) - self.textview[self.cursor.pane].scroll_to_mark(buf.get_insert(), 0.1) + self.textview[self.cursor.pane].scroll_to_mark( + buf.get_insert(), 0.1, True, 0.5, 0.5) def push_change(self, direction): src = self._get_focused_pane() @@ -554,9 +655,9 @@ for mergedfile in merger.merge_2_files(src, dst): pass self._sync_vscroll_lock = True - self.on_textbuffer__begin_user_action() + self.on_textbuffer_begin_user_action() self.textbuffer[dst].set_text(mergedfile) - self.on_textbuffer__end_user_action() + self.on_textbuffer_end_user_action() def resync(): self._sync_vscroll_lock = False self._sync_vscroll(self.scrolledwindow[src].get_vadjustment(), src) @@ -570,9 +671,9 @@ for mergedfile in merger.merge_3_files(False): pass self._sync_vscroll_lock = True - self.on_textbuffer__begin_user_action() + self.on_textbuffer_begin_user_action() self.textbuffer[dst].set_text(mergedfile) - self.on_textbuffer__end_user_action() + self.on_textbuffer_end_user_action() def resync(): self._sync_vscroll_lock = False self._sync_vscroll(self.scrolledwindow[0].get_vadjustment(), 0) @@ -600,7 +701,7 @@ # This hack is required when pane0's prev/next chunk doesn't exist # (i.e., is Same) between pane0 and pane1. prev_chunk0, prev_chunk1, next_chunk0, next_chunk1 = (None,) * 4 - _, prev, next = self.linediffer.locate_chunk(pane0, line) + _, prev, next_ = self.linediffer.locate_chunk(pane0, line) if prev is not None: while prev >= 0: prev_chunk0 = self.linediffer.get_chunk(prev, pane0, pane1) @@ -611,15 +712,15 @@ break prev -= 1 - if next is not None: - while next < self.linediffer.diff_count(): - next_chunk0 = self.linediffer.get_chunk(next, pane0, pane1) - next_chunk1 = self.linediffer.get_chunk(next, pane1, pane0) + if next_ is not None: + while next_ < self.linediffer.diff_count(): + next_chunk0 = self.linediffer.get_chunk(next_, pane0, pane1) + next_chunk1 = self.linediffer.get_chunk(next_, pane1, pane0) if None not in (next_chunk0, next_chunk1): end0 = next_chunk0[1] end1 = next_chunk1[1] break - next += 1 + next_ += 1 return "Same", start0, end0, start1, end1 @@ -681,25 +782,31 @@ new_buf = self.textbuffer[new_pane] self.textview[new_pane].grab_focus() new_buf.place_cursor(new_buf.get_iter_at_line(new_line)) - self.textview[new_pane].scroll_to_mark(new_buf.get_insert(), 0.1) + self.textview[new_pane].scroll_to_mark( + new_buf.get_insert(), 0.1, True, 0.5, 0.5) def on_textview_focus_in_event(self, view, event): - self.textview_focussed = view + self.focus_pane = view self.findbar.textview = view self.on_cursor_position_changed(view.get_buffer(), None, True) + self._set_save_action_sensitivity() + self._set_merge_action_sensitivity() + self.update_text_actions_sensitivity() + + def on_textview_focus_out_event(self, view, event): self._set_merge_action_sensitivity() def _after_text_modified(self, buffer, startline, sizechange): if self.num_panes > 1: pane = self.textbuffer.index(buffer) - self.linediffer.change_sequence(pane, startline, sizechange, - self.buffer_filtered) + if not self.linediffer.syncpoints: + self.linediffer.change_sequence(pane, startline, sizechange, + self.buffer_filtered) # FIXME: diff-changed signal for the current buffer would be cleaner focused_pane = self._get_focused_pane() if focused_pane != -1: self.on_cursor_position_changed(self.textbuffer[focused_pane], None, True) - self.update_highlighting() self.queue_draw() def _filter_text(self, txt): @@ -738,127 +845,91 @@ self.deleted_lines_pending = -1 def load_font(self): - fontdesc = pango.FontDescription(self.prefs.get_current_font()) context = self.textview0.get_pango_context() - metrics = context.get_metrics( fontdesc, context.get_language() ) - self.pixels_per_line = (metrics.get_ascent() + metrics.get_descent()) / 1024 - self.pango_char_width = metrics.get_approximate_char_width() - tabs = pango.TabArray(10, 0) - tab_size = self.prefs.tab_size - for i in range(10): - tabs.set_tab(i, pango.TAB_LEFT, i*tab_size*self.pango_char_width) + metrics = context.get_metrics(meldsettings.font, + context.get_language()) + line_height_points = metrics.get_ascent() + metrics.get_descent() + self.pixels_per_line = line_height_points // 1024 for i in range(3): - self.textview[i].modify_font(fontdesc) - self.textview[i].set_tabs(tabs) + self.textview[i].override_font(meldsettings.font) for i in range(2): self.linkmap[i].queue_draw() - def on_preference_changed(self, key, value): - if key == "tab_size": - tabs = pango.TabArray(10, 0) - for i in range(10): - tabs.set_tab(i, pango.TAB_LEFT, i*value*self.pango_char_width) - for i in range(3): - self.textview[i].set_tabs(tabs) - for t in self.textview: - srcviewer.set_tab_width(t, value) - elif key == "use_custom_font" or key == "custom_font": + def on_setting_changed(self, settings, key): + if key == 'font': self.load_font() - elif key == "show_line_numbers": - for t in self.textview: - t.set_show_line_numbers( value ) - elif key == "show_whitespace": - spaces_flag = srcviewer.spaces_flag if value else 0 - for v in self.textview: - v.set_draw_spaces(spaces_flag) - elif key == "use_syntax_highlighting": - for i in range(self.num_panes): - srcviewer.set_highlight_syntax(self.textbuffer[i], value) - elif key == "edit_wrap_lines": - for t in self.textview: - t.set_wrap_mode(self.prefs.edit_wrap_lines) - # FIXME: On changing wrap mode, we get one redraw using cached - # coordinates, followed by a second redraw (e.g., on refocus) with - # correct coordinates. Overly-aggressive textview lazy calculation? - self.diffmap0.queue_draw() - self.diffmap1.queue_draw() - elif key == "spaces_instead_of_tabs": - for t in self.textview: - t.set_insert_spaces_instead_of_tabs(value) - elif key == "ignore_blank_lines": - self.linediffer.ignore_blanks = self.prefs.ignore_blank_lines - self.set_files([None] * self.num_panes) # Refresh - - def on_key_press_event(self, object, event): - x = self.keylookup.get(event.keyval, 0) - if self.keymask | x != self.keymask: - self.keymask |= x - elif event.keyval == gtk.keysyms.Escape: - self.findbar.hide() - - def on_key_release_event(self, object, event): - x = self.keylookup.get(event.keyval, 0) - if self.keymask & ~x != self.keymask: - self.keymask &= ~x - # Ugly workaround for bgo#584342 - elif event.keyval == gtk.keysyms.ISO_Prev_Group: - self.keymask = 0 - - def _get_pane_label(self, i): - #TRANSLATORS: this is the name of a new file which has not yet been saved - return self.bufferdata[i].label or _("") - def on_delete_event(self, appquit=0): - response = gtk.RESPONSE_OK - modified = [b.modified for b in self.bufferdata] - if 1 in modified: - dialog = gnomeglade.Component(paths.ui_dir("filediff.ui"), "closedialog") + def check_save_modified(self, label=None): + response = Gtk.ResponseType.OK + modified = [b.data.modified for b in self.textbuffer] + if True in modified: + dialog = gnomeglade.Component("filediff.ui", "check_save_dialog") dialog.widget.set_transient_for(self.widget.get_toplevel()) + if label: + dialog.widget.props.text = label + # FIXME: Should be packed into dialog.widget.get_message_area(), + # but this is unbound on currently required PyGTK. buttons = [] for i in range(self.num_panes): - b = gtk.CheckButton( self._get_pane_label(i) ) - b.set_use_underline(False) - buttons.append(b) - dialog.box.pack_start(b, 1, 1) - if not modified[i]: - b.set_sensitive(0) - else: - b.set_active(1) - dialog.box.show_all() + button = Gtk.CheckButton(self.textbuffer[i].data.label) + button.set_use_underline(False) + button.set_sensitive(modified[i]) + button.set_active(modified[i]) + dialog.extra_vbox.pack_start(button, expand=True, fill=True, + padding=0) + buttons.append(button) + dialog.extra_vbox.show_all() response = dialog.widget.run() - try_save = [ b.get_active() for b in buttons] + try_save = [b.get_active() for b in buttons] dialog.widget.destroy() - if response==gtk.RESPONSE_OK: + if response == Gtk.ResponseType.OK: for i in range(self.num_panes): if try_save[i]: if not self.save_file(i): - return gtk.RESPONSE_CANCEL - elif response == gtk.RESPONSE_DELETE_EVENT: - response = gtk.RESPONSE_CANCEL + return Gtk.ResponseType.CANCEL + elif response == Gtk.ResponseType.DELETE_EVENT: + response = Gtk.ResponseType.CANCEL + return response + + def on_delete_event(self, appquit=0): + response = self.check_save_modified() + if response == Gtk.ResponseType.OK: + for h in self.settings_handlers: + meldsettings.disconnect(h) + # TODO: Base the return code on something meaningful for VC tools + self.emit('close', 0) return response # # text buffer undo/redo # - def on_textbuffer__begin_user_action(self, *buffer): + + def on_undo_activate(self): + if self.undosequence.can_undo(): + self.undosequence.undo() + + def on_redo_activate(self): + if self.undosequence.can_redo(): + self.undosequence.redo() + + def on_textbuffer_begin_user_action(self, *buffer): self.undosequence.begin_group() - def on_textbuffer__end_user_action(self, *buffer): + def on_textbuffer_end_user_action(self, *buffer): self.undosequence.end_group() - self.update_highlighting() def on_text_insert_text(self, buf, it, text, textlen): - text = unicode(text, 'utf8') + text = text_type(text, 'utf8') self.undosequence.add_action( - BufferInsertionAction(buf, it.get_offset(), text)) + meldbuffer.BufferInsertionAction(buf, it.get_offset(), text)) buf.create_mark("insertion-start", it, True) def on_text_delete_range(self, buf, it0, it1): - text = unicode(buf.get_text(it0, it1, False), 'utf8') + text = text_type(buf.get_text(it0, it1, False), 'utf8') assert self.deleted_lines_pending == -1 self.deleted_lines_pending = it1.get_line() - it0.get_line() self.undosequence.add_action( - BufferDeletionAction(buf, it0.get_offset(), text)) + meldbuffer.BufferDeletionAction(buf, it0.get_offset(), text)) def on_undo_checkpointed(self, undosequence, buf, checkpointed): self.set_buffer_modified(buf, not checkpointed) @@ -870,8 +941,27 @@ def open_external(self): pane = self._get_focused_pane() if pane >= 0: - if self.bufferdata[pane].filename: - self._open_files([self.bufferdata[pane].filename]) + if self.textbuffer[pane].data.filename: + pos = self.textbuffer[pane].props.cursor_position + cursor_it = self.textbuffer[pane].get_iter_at_offset(pos) + line = cursor_it.get_line() + 1 + self._open_files([self.textbuffer[pane].data.filename], line) + + def update_text_actions_sensitivity(self, *args): + widget = self.focus_pane + if not widget: + cut, copy, paste = False, False, False + else: + cut = copy = widget.get_buffer().get_has_selection() + # Ideally, this would check whether the clipboard included + # something pasteable. However, there is no changed signal. + # widget.get_clipboard( + # Gdk.SELECTION_CLIPBOARD).wait_is_text_available() + paste = widget.get_editable() + if self.main_actiongroup: + for action, sens in zip( + ("Cut", "Copy", "Paste"), (cut, copy, paste)): + self.main_actiongroup.get_action(action).set_sensitive(sens) def get_selected_text(self): """Returns selected text of active pane""" @@ -880,28 +970,26 @@ buf = self.textbuffer[pane] sel = buf.get_selection_bounds() if sel: - return unicode(buf.get_text(sel[0], sel[1], False), 'utf8') + return text_type(buf.get_text(sel[0], sel[1], False), 'utf8') return None def on_find_activate(self, *args): - self.findbar.start_find( self.textview_focussed ) + selected_text = self.get_selected_text() + self.findbar.start_find(self.focus_pane, selected_text) self.keymask = 0 def on_replace_activate(self, *args): - self.findbar.start_replace( self.textview_focussed ) + selected_text = self.get_selected_text() + self.findbar.start_replace(self.focus_pane, selected_text) self.keymask = 0 def on_find_next_activate(self, *args): - self.findbar.start_find_next(self.textview_focussed) + self.findbar.start_find_next(self.focus_pane) def on_find_previous_activate(self, *args): - self.findbar.start_find_previous(self.textview_focussed) + self.findbar.start_find_previous(self.focus_pane) - def on_filediff__key_press_event(self, entry, event): - if event.keyval == gtk.keysyms.Escape: - self.findbar.hide() - - def on_scrolledwindow__size_allocate(self, scrolledwindow, allocation): + def on_scrolledwindow_size_allocate(self, scrolledwindow, allocation): index = self.scrolledwindow.index(scrolledwindow) if index == 0 or index == 1: self.linkmap[0].queue_draw() @@ -909,14 +997,14 @@ self.linkmap[1].queue_draw() def on_textview_popup_menu(self, textview): - self.popup_menu.popup(None, None, None, 0, - gtk.get_current_event_time()) + self.popup_menu.popup(None, None, None, None, 0, + Gtk.get_current_event_time()) return True def on_textview_button_press_event(self, textview, event): if event.button == 3: textview.grab_focus() - self.popup_menu.popup(None, None, None, event.button, event.time) + self.popup_menu.popup(None, None, None, None, event.button, event.time) return True return False @@ -934,38 +1022,43 @@ # text buffer loading/saving # - def set_labels(self, lst): - assert len(lst) <= len(self.bufferdata) - for l,d in zip(lst,self.bufferdata): - if len(l): d.label = l + def set_labels(self, labels): + labels = labels[:len(self.textbuffer)] + for label, buf in zip(labels, self.textbuffer): + if label: + buf.data.label = label def set_merge_output_file(self, filename): - if len(self.bufferdata) < 2: + if len(self.textbuffer) < 2: return - self.bufferdata[1].savefile = os.path.abspath(filename) + buf = self.textbuffer[1] + buf.data.savefile = os.path.abspath(filename) + buf.data.set_label(filename) + self.set_buffer_writable(buf, os.access(buf.data.savefile, os.W_OK)) + self.fileentry[1].set_filename(os.path.abspath(filename)) + self.recompute_label() + + def _set_save_action_sensitivity(self): + pane = self._get_focused_pane() + modified = False if pane == -1 else self.textbuffer[pane].data.modified + if self.main_actiongroup: + self.main_actiongroup.get_action("Save").set_sensitive(modified) + any_modified = any(b.data.modified for b in self.textbuffer) + self.actiongroup.get_action("SaveAll").set_sensitive(any_modified) def recompute_label(self): - filenames = [] - for i in range(self.num_panes): - filenames.append( self._get_pane_label(i) ) + self._set_save_action_sensitivity() + filenames = [b.data.label for b in self.textbuffer[:self.num_panes]] shortnames = misc.shorten_names(*filenames) - for i in range(self.num_panes): - stock = None - if self.bufferdata[i].modified == 1: + + for i, buf in enumerate(self.textbuffer[:self.num_panes]): + if buf.data.modified: shortnames[i] += "*" - if self.bufferdata[i].writable == 1: - stock = gtk.STOCK_SAVE - else: - stock = gtk.STOCK_SAVE_AS - elif self.bufferdata[i].writable == 0: - stock = gtk.STOCK_NO - if stock: - self.statusimage[i].show() - self.statusimage[i].set_from_stock(stock, gtk.ICON_SIZE_BUTTON) - self.statusimage[i].set_size_request(self.diffmap[0].size_request()[0],-1) - else: - self.statusimage[i].hide() - self.label_text = " : ".join(shortnames) + self.file_save_button[i].set_sensitive(buf.data.modified) + self.file_save_button[i].props.stock_id = ( + Gtk.STOCK_SAVE if buf.data.writable else Gtk.STOCK_SAVE_AS) + + self.label_text = (" — ").decode('utf8').join(shortnames) self.tooltip_text = self.label_text self.label_changed() @@ -974,22 +1067,25 @@ If an element is None, the text of a pane is left as is. """ self._disconnect_buffer_handlers() - self._inline_cache = set() - for i,f in enumerate(files): - if f: - self.textbuffer[i].delete(*self.textbuffer[i].get_bounds()) - absfile = os.path.abspath(f) - self.fileentry[i].set_filename(absfile) - self.fileentry[i].prepend_history(absfile) - bold, bnew = self.bufferdata[i], MeldBufferData(absfile) - if bold.filename == bnew.filename: - bnew.label = bold.label - self.bufferdata[i] = bnew - self.msgarea_mgr[i].clear() + files = list(files) + for i, f in enumerate(files): + if not f: + continue + if not isinstance(f, unicode): + files[i] = f = f.decode('utf8') + absfile = os.path.abspath(f) + self.fileentry[i].set_filename(absfile) + self.textbuffer[i].reset_buffer(absfile) + self.msgarea_mgr[i].clear() + self.recompute_label() self.textview[len(files) >= 2].grab_focus() self._connect_buffer_handlers() - self.scheduler.add_task( self._set_files_internal(files).next ) + self.scheduler.add_task(self._set_files_internal(files)) + + def get_comparison(self): + files = [b.data.filename for b in self.textbuffer[:self.num_panes]] + return recent.TYPE_FILE, files def _load_files(self, files, textbuffers): self.undosequence.clear() @@ -998,15 +1094,14 @@ self._disconnect_buffer_handlers() self.linediffer.clear() self.queue_draw() - try_codecs = self.prefs.text_codecs.split() or ['utf_8', 'utf_16'] + try_codecs = list(settings.get_value('detect-encodings')) yield _("[%s] Opening files") % self.label_text tasks = [] def add_dismissable_msg(pane, icon, primary, secondary): msgarea = self.msgarea_mgr[pane].new_from_text_and_icon( icon, primary, secondary) - button = msgarea.add_stock_button_with_text(_("Hi_de"), - gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE) + msgarea.add_button(_("Hi_de"), Gtk.ResponseType.CLOSE) msgarea.connect("response", lambda *args: self.msgarea_mgr[pane].clear()) msgarea.show_all() @@ -1016,13 +1111,13 @@ buf = textbuffers[pane] if filename: try: - handle = codecs.open(filename, "rU", try_codecs[0]) + handle = io.open(filename, "r", encoding=try_codecs[0]) task = TaskEntry(filename, handle, buf, try_codecs[:], pane, False) tasks.append(task) - except (IOError, LookupError), e: + except (IOError, LookupError) as e: buf.delete(*buf.get_bounds()) - add_dismissable_msg(pane, gtk.STOCK_DIALOG_ERROR, + add_dismissable_msg(pane, Gtk.STOCK_DIALOG_ERROR, _("Could not read file"), str(e)) yield _("[%s] Reading files") % self.label_text while len(tasks): @@ -1031,25 +1126,27 @@ nextbit = t.file.read(4096) if nextbit.find("\x00") != -1: t.buf.delete(*t.buf.get_bounds()) - add_dismissable_msg(t.pane, gtk.STOCK_DIALOG_ERROR, - _("Could not read file"), - _("%s appears to be a binary file.") % t.filename) + filename = GObject.markup_escape_text(t.filename) + add_dismissable_msg(t.pane, Gtk.STOCK_DIALOG_ERROR, + _("Could not read file"), + _("%s appears to be a binary file.") % filename) tasks.remove(t) - except ValueError, err: + continue + except ValueError as err: t.codec.pop(0) if len(t.codec): - t.file = codecs.open(t.filename, "rU", t.codec[0]) - t.buf.delete( t.buf.get_start_iter(), t.buf.get_end_iter() ) + t.buf.delete(*t.buf.get_bounds()) + t.file = io.open(t.filename, "r", encoding=t.codec[0]) else: - print "codec error fallback", err t.buf.delete(*t.buf.get_bounds()) - add_dismissable_msg(t.pane, gtk.STOCK_DIALOG_ERROR, + filename = GObject.markup_escape_text(t.filename) + add_dismissable_msg(t.pane, Gtk.STOCK_DIALOG_ERROR, _("Could not read file"), _("%s is not in encodings: %s") % - (t.filename, try_codecs)) + (filename, try_codecs)) tasks.remove(t) - except IOError, ioerr: - add_dismissable_msg(t.pane, gtk.STOCK_DIALOG_ERROR, + except IOError as ioerr: + add_dismissable_msg(t.pane, Gtk.STOCK_DIALOG_ERROR, _("Could not read file"), str(ioerr)) tasks.remove(t) else: @@ -1063,41 +1160,54 @@ if nextbit[-1] == "\r" and len(nextbit) > 1: t.was_cr = True nextbit = nextbit[0:-1] - t.buf.insert( t.buf.get_end_iter(), nextbit ) + t.buf.insert(t.buf.get_end_iter(), nextbit) else: - self.set_buffer_writable(t.buf, os.access(t.filename, os.W_OK)) - self.bufferdata[t.pane].encoding = t.codec[0] + if t.buf.data.savefile: + writable = os.access(t.buf.data.savefile, os.W_OK) + else: + writable = os.access(t.filename, os.W_OK) + self.set_buffer_writable(t.buf, writable) + t.buf.data.encoding = t.codec[0] if hasattr(t.file, "newlines"): - self.bufferdata[t.pane].newlines = t.file.newlines + t.buf.data.newlines = t.file.newlines tasks.remove(t) yield 1 for b in self.textbuffer: self.undosequence.checkpoint(b) + b.data.update_mtime() - def _diff_files(self): + def _diff_files(self, refresh=False): yield _("[%s] Computing differences") % self.label_text texts = self.buffer_filtered[:self.num_panes] + self.linediffer.ignore_blanks = self.props.ignore_blank_lines step = self.linediffer.set_sequences_iter(texts) - while step.next() is None: + while next(step) is None: yield 1 - chunk, prev, next = self.linediffer.locate_chunk(1, 0) - self.cursor.next = chunk - if self.cursor.next is None: - self.cursor.next = next - for buf in self.textbuffer: - buf.place_cursor(buf.get_start_iter()) - self.scheduler.add_task(lambda: self.next_diff(gtk.gdk.SCROLL_DOWN), True) + if not refresh: + chunk, prev, next_ = self.linediffer.locate_chunk(1, 0) + self.cursor.next = chunk + if self.cursor.next is None: + self.cursor.next = next_ + for buf in self.textbuffer: + buf.place_cursor(buf.get_start_iter()) + + if self.cursor.next is not None: + self.scheduler.add_task( + lambda: self.next_diff(Gdk.ScrollDirection.DOWN, True), True) + else: + buf = self.textbuffer[1 if self.num_panes > 1 else 0] + self.on_cursor_position_changed(buf, None, True) + self.queue_draw() - self.update_highlighting() self._connect_buffer_handlers() self._set_merge_action_sensitivity() langs = [] for i in range(self.num_panes): - filename = self.bufferdata[i].filename + filename = self.textbuffer[i].data.filename if filename: - langs.append(srcviewer.get_language_from_file(filename)) + langs.append(LanguageManager.get_language_from_file(filename)) else: langs.append(None) @@ -1108,10 +1218,7 @@ langs = (real_langs[0],) * len(langs) for i in range(self.num_panes): - srcviewer.set_language(self.textbuffer[i], langs[i]) - srcviewer.set_highlight_syntax(self.textbuffer[i], - self.prefs.use_syntax_highlighting) - yield 0 + self.textbuffer[i].set_language(langs[i]) def _set_files_internal(self, files): for i in self._load_files(files, self.textbuffer): @@ -1119,10 +1226,49 @@ for i in self._diff_files(): yield i + def notify_file_changed(self, data): + try: + pane = [b.data for b in self.textbuffer].index(data) + except ValueError: + # Notification for unknown buffer + return + gfile = Gio.File.new_for_path(data.filename) + + primary = _("File %s has changed on disk") % gfile.get_parse_name() + secondary = _("Do you want to reload the file?") + msgarea = self.msgarea_mgr[pane].new_from_text_and_icon( + Gtk.STOCK_DIALOG_WARNING, primary, secondary) + msgarea.add_button(_("_Reload"), Gtk.ResponseType.ACCEPT) + msgarea.add_button(_("Hi_de"), Gtk.ResponseType.CLOSE) + + def on_file_changed_response(msgarea, response_id, *args): + self.msgarea_mgr[pane].clear() + if response_id == Gtk.ResponseType.ACCEPT: + self.on_revert_activate() + + msgarea.connect("response", on_file_changed_response) + msgarea.show_all() + + def refresh_comparison(self, *args): + """Refresh the view by clearing and redoing all comparisons""" + self._disconnect_buffer_handlers() + self.linediffer.clear() + + for buf in self.textbuffer: + tag = buf.get_tag_table().lookup("inline") + buf.remove_tag(tag, buf.get_start_iter(), buf.get_end_iter()) + + self.queue_draw() + self.scheduler.add_task(self._diff_files(refresh=True)) + def _set_merge_action_sensitivity(self): pane = self._get_focused_pane() - editable = self.textview[pane].get_editable() - mergeable = self.linediffer.has_mergeable_changes(pane) + if pane != -1: + editable = self.textview[pane].get_editable() + mergeable = self.linediffer.has_mergeable_changes(pane) + else: + editable = False + mergeable = (False, False) self.actiongroup.get_action("MergeFromLeft").set_sensitive(mergeable[0] and editable) self.actiongroup.get_action("MergeFromRight").set_sensitive(mergeable[1] and editable) if self.num_panes == 3 and self.textview[1].get_editable(): @@ -1131,7 +1277,115 @@ mergeable = (False, False) self.actiongroup.get_action("MergeAll").set_sensitive(mergeable[0] or mergeable[1]) - def on_diffs_changed(self, linediffer): + def on_diffs_changed(self, linediffer, chunk_changes): + removed_chunks, added_chunks, modified_chunks = chunk_changes + + # We need to clear removed and modified chunks, and need to + # re-highlight added and modified chunks. + need_clearing = sorted(list(removed_chunks)) + need_highlighting = sorted(list(added_chunks) + [modified_chunks]) + + alltags = [b.get_tag_table().lookup("inline") for b in self.textbuffer] + + for chunk in need_clearing: + for i, c in enumerate(chunk): + if not c or c[0] != "replace": + continue + to_idx = 2 if i == 1 else 0 + bufs = self.textbuffer[1], self.textbuffer[to_idx] + tags = alltags[1], alltags[to_idx] + + starts = [b.get_iter_at_line_or_eof(l) for b, l in + zip(bufs, (c[1], c[3]))] + ends = [b.get_iter_at_line_or_eof(l) for b, l in + zip(bufs, (c[2], c[4]))] + bufs[0].remove_tag(tags[0], starts[0], ends[0]) + bufs[1].remove_tag(tags[1], starts[1], ends[1]) + + for chunk in need_highlighting: + clear = chunk == modified_chunks + for i, c in enumerate(chunk): + if not c or c[0] != "replace": + continue + to_idx = 2 if i == 1 else 0 + bufs = self.textbuffer[1], self.textbuffer[to_idx] + tags = alltags[1], alltags[to_idx] + + starts = [b.get_iter_at_line_or_eof(l) for b, l in + zip(bufs, (c[1], c[3]))] + ends = [b.get_iter_at_line_or_eof(l) for b, l in + zip(bufs, (c[2], c[4]))] + + # We don't use self.buffer_texts here, as removing line + # breaks messes with inline highlighting in CRLF cases + text1 = bufs[0].get_text(starts[0], ends[0], False) + text1 = text_type(text1, 'utf8') + textn = bufs[1].get_text(starts[1], ends[1], False) + textn = text_type(textn, 'utf8') + + # Bail on long sequences, rather than try a slow comparison + inline_limit = 10000 + if len(text1) + len(textn) > inline_limit and \ + not self.force_highlight: + for i in range(2): + bufs[i].apply_tag(tags[i], starts[i], ends[i]) + self._prompt_long_highlighting() + continue + + def apply_highlight(bufs, tags, starts, ends, texts, matches): + starts = [bufs[0].get_iter_at_mark(starts[0]), + bufs[1].get_iter_at_mark(starts[1])] + ends = [bufs[0].get_iter_at_mark(ends[0]), + bufs[1].get_iter_at_mark(ends[1])] + text1 = bufs[0].get_text(starts[0], ends[0], False) + text1 = text_type(text1, 'utf8') + textn = bufs[1].get_text(starts[1], ends[1], False) + textn = text_type(textn, 'utf8') + + if texts != (text1, textn): + return + + offsets = [ends[0].get_offset() - starts[0].get_offset(), + ends[1].get_offset() - starts[1].get_offset()] + + def process_matches(match): + if match.tag != "equal": + return True + # Always keep matches occurring at the start or end + start_or_end = ( + (match.start_a == 0 and match.start_b == 0) or + (match.end_a == offsets[0] and match.end_b == offsets[1])) + if start_or_end: + return False + # Remove equal matches of size less than 3 + too_short = ((match.end_a - match.start_a < 3) or + (match.end_b - match.start_b < 3)) + return too_short + + matches = [m for m in matches if process_matches(m)] + + for i in range(2): + start, end = starts[i].copy(), starts[i].copy() + offset = start.get_offset() + for o in matches: + start.set_offset(offset + o[1 + 2 * i]) + end.set_offset(offset + o[2 + 2 * i]) + bufs[i].apply_tag(tags[i], start, end) + + if clear: + bufs[0].remove_tag(tags[0], starts[0], ends[0]) + bufs[1].remove_tag(tags[1], starts[1], ends[1]) + + starts = [bufs[0].create_mark(None, starts[0], True), + bufs[1].create_mark(None, starts[1], True)] + ends = [bufs[0].create_mark(None, ends[0], True), + bufs[1].create_mark(None, ends[1], True)] + match_cb = functools.partial(apply_highlight, bufs, tags, + starts, ends, (text1, textn)) + self._cached_match.match(text1, textn, match_cb) + + self._cached_match.clean(self.linediffer.diff_count()) + self._set_merge_action_sensitivity() if self.linediffer.sequences_identical(): error_message = True in [m.has_message() for m in self.msgarea_mgr] @@ -1150,19 +1404,17 @@ "Would you like to compare the " "unfiltered files?") - msgarea = mgr.new_from_text_and_icon(gtk.STOCK_INFO, + msgarea = mgr.new_from_text_and_icon(Gtk.STOCK_INFO, _("Files are identical"), secondary_text) mgr.set_msg_id(FileDiff.MSG_SAME) - button = msgarea.add_stock_button_with_text(_("Hide"), - gtk.STOCK_CLOSE, - gtk.RESPONSE_CLOSE) + button = msgarea.add_button(_("Hide"), Gtk.ResponseType.CLOSE) if index == 0: button.props.label = _("Hi_de") if active_filters: msgarea.add_button(_("Show without filters"), - gtk.RESPONSE_OK) + Gtk.ResponseType.OK) msgarea.connect("response", self.on_msgarea_identical_response) msgarea.show_all() @@ -1171,108 +1423,67 @@ if m.get_msg_id() == FileDiff.MSG_SAME: m.clear() + def _prompt_long_highlighting(self): + + def on_msgarea_highlighting_response(msgarea, respid): + for mgr in self.msgarea_mgr: + mgr.clear() + if respid == Gtk.ResponseType.OK: + self.force_highlight = True + self.refresh_comparison() + + for index, mgr in enumerate(self.msgarea_mgr): + msgarea = mgr.new_from_text_and_icon( + Gtk.STOCK_INFO, + _("Change highlighting incomplete"), + _("Some changes were not highlighted because they were too " + "large. You can force Meld to take longer to highlight " + "larger changes, though this may be slow.")) + mgr.set_msg_id(FileDiff.MSG_SLOW_HIGHLIGHT) + button = msgarea.add_button(_("Hi_de"), Gtk.ResponseType.CLOSE) + if index == 0: + button.props.label = _("Hi_de") + button = msgarea.add_button( + _("Keep highlighting"), Gtk.ResponseType.OK) + if index == 0: + button.props.label = _("_Keep highlighting") + msgarea.connect("response", + on_msgarea_highlighting_response) + msgarea.show_all() + def on_msgarea_identical_response(self, msgarea, respid): for mgr in self.msgarea_mgr: mgr.clear() - if respid == gtk.RESPONSE_OK: + if respid == Gtk.ResponseType.OK: self.text_filters = [] - # Refresh - self.set_files([None] * self.num_panes) - - def update_highlighting(self): - if not self.undosequence.in_grouped_action(): - self.scheduler.add_task(self._update_highlighting().next) - - def _update_highlighting(self): - alltexts = self.buffer_texts - alltags = [b.get_tag_table().lookup("inline") for b in self.textbuffer] - progress = [b.create_mark("progress", b.get_start_iter()) for b in self.textbuffer] - newcache = set() - for chunk in self.linediffer.all_changes(): - for i,c in enumerate(chunk): - if c and c[0] == "replace": - bufs = self.textbuffer[1], self.textbuffer[i*2] - tags = alltags[1], alltags[i*2] - cacheitem = (i, c, tuple(alltexts[1][c[1]:c[2]]), tuple(alltexts[i*2][c[3]:c[4]])) - newcache.add(cacheitem) - - # Clean interim chunks - starts = [get_iter_at_line_or_eof(b, l) for b, l in zip(bufs, (c[1], c[3]))] - prog_it0 = bufs[0].get_iter_at_mark(progress[1]) - prog_it1 = bufs[1].get_iter_at_mark(progress[i * 2]) - bufs[0].remove_tag(tags[0], prog_it0, starts[0]) - bufs[1].remove_tag(tags[1], prog_it1, starts[1]) - bufs[0].move_mark(progress[1], get_iter_at_line_or_eof(bufs[0], c[2])) - bufs[1].move_mark(progress[i * 2], get_iter_at_line_or_eof(bufs[1], c[4])) - - if cacheitem in self._inline_cache: - continue - - ends = [get_iter_at_line_or_eof(b, l) for b, l in zip(bufs, (c[2], c[4]))] - bufs[0].remove_tag(tags[0], starts[0], ends[0]) - bufs[1].remove_tag(tags[1], starts[1], ends[1]) - - # We don't use self.buffer_texts here, as removing line - # breaks messes with inline highlighting in CRLF cases - text1 = bufs[0].get_text(starts[0], ends[0], False) - text1 = unicode(text1, 'utf8') - textn = bufs[1].get_text(starts[1], ends[1], False) - textn = unicode(textn, 'utf8') - - # For very long sequences, bail rather than trying a very slow comparison - inline_limit = 8000 # arbitrary constant - if len(text1) + len(textn) > inline_limit: - for i in range(2): - bufs[i].apply_tag(tags[i], starts[i], ends[i]) - continue - - #print "<<<\n%s\n---\n%s\n>>>" % (text1, textn) - back = (0,0) - for o in self._cached_match(text1, textn): - if o[0] == "equal": - if (o[2]-o[1] < 3) or (o[4]-o[3] < 3): - back = o[4]-o[3], o[2]-o[1] - continue - for i in range(2): - s,e = starts[i].copy(), starts[i].copy() - s.forward_chars( o[1+2*i] - back[i] ) - e.forward_chars( o[2+2*i] ) - bufs[i].apply_tag(tags[i], s, e) - back = (0,0) - yield 1 - - # Clean up trailing lines - prog_it = [b.get_iter_at_mark(p) for b, p in zip(self.textbuffer, progress)] - for b, tag, start in zip(self.textbuffer, alltags, prog_it): - b.remove_tag(tag, start, b.get_end_iter()) - self._inline_cache = newcache - self._cached_match.clean(len(self._inline_cache)) + self.refresh_comparison() - def on_textview_expose_event(self, textview, event): + def on_textview_draw(self, textview, context): if self.num_panes == 1: return - if event.window != textview.get_window(gtk.TEXT_WINDOW_TEXT) \ - and event.window != textview.get_window(gtk.TEXT_WINDOW_LEFT): - return - # Hack to redraw the line number gutter used by post-2.10 GtkSourceView - if event.window == textview.get_window(gtk.TEXT_WINDOW_LEFT) and \ - self.in_nested_textview_gutter_expose: - self.in_nested_textview_gutter_expose = False - return + # FIXME: Update to use gtk_cairo_should_draw_window() + + # if event.window != textview.get_window(Gtk.TextWindowType.TEXT) \ + # and event.window != textview.get_window(Gtk.TextWindowType.LEFT): + # return + + # # Hack to redraw the line number gutter used by post-2.10 GtkSourceView + # if event.window == textview.get_window(Gtk.TextWindowType.LEFT) and \ + # self.in_nested_textview_gutter_expose: + # self.in_nested_textview_gutter_expose = False + # return visible = textview.get_visible_rect() pane = self.textview.index(textview) - area = event.area - x, y = textview.window_to_buffer_coords(gtk.TEXT_WINDOW_WIDGET, - area.x, area.y) + textbuffer = textview.get_buffer() + x, y = textview.window_to_buffer_coords(Gtk.TextWindowType.WIDGET, + 0, 0) + view_allocation = textview.get_allocation() bounds = (textview.get_line_num_for_y(y), - textview.get_line_num_for_y(y + area.height + 1)) + textview.get_line_num_for_y(y + view_allocation.height + 1)) - width, height = textview.allocation.width, textview.allocation.height - context = event.window.cairo_create() - context.rectangle(area.x, area.y, area.width, area.height) - context.clip() + width, height = view_allocation.width, view_allocation.height context.set_line_width(1.0) for change in self.linediffer.single_changes(pane, bounds): @@ -1281,33 +1492,48 @@ context.rectangle(-0.5, ypos0 - 0.5, width + 1, ypos1 - ypos0) if change[1] != change[2]: - context.set_source_rgb(*self.fill_colors[change[0]]) + context.set_source_rgba(*self.fill_colors[change[0]]) context.fill_preserve() if self.linediffer.locate_chunk(pane, change[1])[0] == self.cursor.chunk: - context.set_source_rgba(1.0, 1.0, 1.0, 0.5) + h = self.fill_colors['current-chunk-highlight'] + context.set_source_rgba(h.red, h.green, h.blue, 0.5) context.fill_preserve() - context.set_source_rgb(*self.line_colors[change[0]]) + context.set_source_rgba(*self.line_colors[change[0]]) context.stroke() - if textview.is_focus() and self.cursor.line is not None: - it = self.textbuffer[pane].get_iter_at_line(self.cursor.line) - ypos, line_height = self.textview[pane].get_line_yrange(it) - context.set_source_rgba(1, 1, 0, .25) + if (self.props.highlight_current_line and textview.is_focus() and + self.cursor.line is not None): + it = textbuffer.get_iter_at_line(self.cursor.line) + ypos, line_height = textview.get_line_yrange(it) + context.save() context.rectangle(0, ypos - visible.y, width, line_height) - context.fill() + context.clip() + context.set_source_rgba(*self.highlight_color) + context.paint_with_alpha(0.25) + context.restore() + + for syncpoint in [p[pane] for p in self.syncpoints]: + if not syncpoint: + continue + syncline = textbuffer.get_iter_at_mark(syncpoint).get_line() + if bounds[0] <= syncline <= bounds[1]: + ypos = textview.get_y_for_line_num(syncline) - visible.y + context.rectangle(-0.5, ypos - 0.5, width + 1, 1) + context.set_source_rgba(*self.syncpoint_color) + context.stroke() - current_time = glib.get_current_time() new_anim_chunks = [] for c in self.animating_chunks[pane]: - percent = min(1.0, (current_time - c.start_time) / c.duration) + current_time = GLib.get_monotonic_time() + percent = min(1.0, (current_time - c.start_time) / float(c.duration)) rgba_pairs = zip(c.start_rgba, c.end_rgba) rgba = [s + (e - s) * percent for s, e in rgba_pairs] - it = self.textbuffer[pane].get_iter_at_mark(c.start_mark) - ystart, _ = self.textview[pane].get_line_yrange(it) - it = self.textbuffer[pane].get_iter_at_mark(c.end_mark) - yend, _ = self.textview[pane].get_line_yrange(it) + it = textbuffer.get_iter_at_mark(c.start_mark) + ystart, _ = textview.get_line_yrange(it) + it = textbuffer.get_iter_at_mark(c.end_mark) + yend, _ = textview.get_line_yrange(it) if ystart == yend: ystart -= 1 @@ -1318,8 +1544,8 @@ if current_time <= c.start_time + c.duration: new_anim_chunks.append(c) else: - self.textbuffer[pane].delete_mark(c.start_mark) - self.textbuffer[pane].delete_mark(c.end_mark) + textbuffer.delete_mark(c.start_mark) + textbuffer.delete_mark(c.end_mark) self.animating_chunks[pane] = new_anim_chunks if self.animating_chunks[pane] and self.anim_source_id[pane] is None: @@ -1328,24 +1554,24 @@ return True # Using timeout_add interferes with recalculation of inline # highlighting; this mechanism could be improved. - self.anim_source_id[pane] = gobject.idle_add(anim_cb) + self.anim_source_id[pane] = GLib.idle_add(anim_cb) elif not self.animating_chunks[pane] and self.anim_source_id[pane]: - gobject.source_remove(self.anim_source_id[pane]) + GLib.source_remove(self.anim_source_id[pane]) self.anim_source_id[pane] = None - if event.window == textview.get_window(gtk.TEXT_WINDOW_LEFT): - self.in_nested_textview_gutter_expose = True - textview.emit("expose-event", event) + # if event.window == textview.get_window(Gtk.TextWindowType.LEFT): + # self.in_nested_textview_gutter_expose = True + # textview.emit("expose-event", event) def _get_filename_for_saving(self, title ): - dialog = gtk.FileChooserDialog(title, + dialog = Gtk.FileChooserDialog(title, parent=self.widget.get_toplevel(), - action=gtk.FILE_CHOOSER_ACTION_SAVE, - buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK) ) - dialog.set_default_response(gtk.RESPONSE_OK) + action=Gtk.FileChooserAction.SAVE, + buttons = (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK) ) + dialog.set_default_response(Gtk.ResponseType.OK) response = dialog.run() filename = None - if response == gtk.RESPONSE_OK: + if response == Gtk.ResponseType.OK: filename = dialog.get_filename() dialog.destroy() if filename: @@ -1353,8 +1579,8 @@ response = misc.run_dialog( _('"%s" exists!\nOverwrite?') % os.path.basename(filename), parent = self, - buttonstype = gtk.BUTTONS_YES_NO) - if response == gtk.RESPONSE_NO: + buttonstype = Gtk.ButtonsType.YES_NO) + if response == Gtk.ResponseType.NO: return None return filename return None @@ -1362,34 +1588,66 @@ def _save_text_to_filename(self, filename, text): try: open(filename, "wb").write(text) - except IOError, e: + except IOError as e: misc.run_dialog( _("Error writing to %s\n\n%s.") % (filename, e), - self, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK) + self, Gtk.MessageType.ERROR, Gtk.ButtonsType.OK) return False return True - def save_file(self, pane, saveas=0): + def save_file(self, pane, saveas=False, force_overwrite=False): buf = self.textbuffer[pane] - bufdata = self.bufferdata[pane] - if saveas or not bufdata.filename: - filename = self._get_filename_for_saving( _("Choose a name for buffer %i.") % (pane+1) ) + bufdata = buf.data + if saveas or not (bufdata.filename or bufdata.savefile) \ + or not bufdata.writable: + if pane == 0: + prompt = _("Save Left Pane As") + elif pane == 1 and self.num_panes == 3: + prompt = _("Save Middle Pane As") + else: + prompt = _("Save Right Pane As") + filename = self._get_filename_for_saving(prompt) if filename: bufdata.filename = bufdata.label = os.path.abspath(filename) - self.fileentry[pane].set_filename( bufdata.filename) - self.fileentry[pane].prepend_history(bufdata.filename) + bufdata.savefile = None + self.fileentry[pane].set_filename(bufdata.filename) else: return False + + if not force_overwrite and not bufdata.current_on_disk(): + gfile = Gio.File.new_for_path(bufdata.filename) + primary = _("File %s has changed on disk since it was opened") % \ + gfile.get_parse_name() + secondary = _("If you save it, any external changes will be lost.") + msgarea = self.msgarea_mgr[pane].new_from_text_and_icon( + Gtk.STOCK_DIALOG_WARNING, primary, secondary) + msgarea.add_button(_("Save Anyway"), Gtk.ResponseType.ACCEPT) + msgarea.add_button(_("Don't Save"), Gtk.ResponseType.CLOSE) + + def on_file_changed_response(msgarea, response_id, *args): + self.msgarea_mgr[pane].clear() + if response_id == Gtk.ResponseType.ACCEPT: + self.save_file(pane, saveas, force_overwrite=True) + + msgarea.connect("response", on_file_changed_response) + msgarea.show_all() + return + + start, end = buf.get_bounds() - text = unicode(buf.get_text(start, end, False), 'utf8') + text = text_type(buf.get_text(start, end, False), 'utf8') if bufdata.newlines: - if type(bufdata.newlines) == type(""): - if(bufdata.newlines) != '\n': + if isinstance(bufdata.newlines, basestring): + if bufdata.newlines != '\n': text = text.replace("\n", bufdata.newlines) - elif type(bufdata.newlines) == type(()): - buttons = {'\n':("UNIX (LF)",0), '\r\n':("DOS (CR-LF)", 1), '\r':("MAC (CR)",2) } + else: + buttons = { + '\n': ("UNIX (LF)", 0), + '\r\n': ("DOS/Windows (CR-LF)", 1), + '\r': ("Mac OS (CR)", 2), + } newline = misc.run_dialog( _("This file '%s' contains a mixture of line endings.\n\nWhich format would you like to use?") % bufdata.label, - self, gtk.MESSAGE_WARNING, buttonstype=gtk.BUTTONS_CANCEL, + self, Gtk.MessageType.WARNING, buttonstype=Gtk.ButtonsType.CANCEL, extrabuttons=[ buttons[b] for b in bufdata.newlines ] ) if newline < 0: return @@ -1405,13 +1663,14 @@ except UnicodeEncodeError: if misc.run_dialog( _("'%s' contains characters not encodable with '%s'\nWould you like to save as UTF-8?") % (bufdata.label, bufdata.encoding), - self, gtk.MESSAGE_ERROR, gtk.BUTTONS_YES_NO) != gtk.RESPONSE_YES: + self, Gtk.MessageType.ERROR, Gtk.ButtonsType.YES_NO) != Gtk.ResponseType.YES: return False save_to = bufdata.savefile or bufdata.filename if self._save_text_to_filename(save_to, text): self.emit("file-changed", save_to) self.undosequence.checkpoint(buf) + bufdata.update_mtime() return True else: return False @@ -1420,16 +1679,26 @@ dialog = patchdialog.PatchDialog(self) dialog.run() - def set_buffer_writable(self, buf, yesno): - pane = self.textbuffer.index(buf) - self.bufferdata[pane].writable = yesno + def set_buffer_writable(self, buf, writable): + buf.data.writable = writable self.recompute_label() + index = self.textbuffer.index(buf) + self.readonlytoggle[index].props.visible = not writable + self.set_buffer_editable(buf, writable) def set_buffer_modified(self, buf, yesno): - pane = self.textbuffer.index(buf) - self.bufferdata[pane].modified = yesno + buf.data.modified = yesno self.recompute_label() + def set_buffer_editable(self, buf, editable): + buf.data.editable = editable + index = self.textbuffer.index(buf) + self.readonlytoggle[index].set_active(not editable) + self.textview[index].set_editable(editable) + self.on_cursor_position_changed(buf, None, True) + for linkmap in self.linkmap: + linkmap.queue_draw() + def save(self): pane = self._get_focused_pane() if pane >= 0: @@ -1440,16 +1709,22 @@ if pane >= 0: self.save_file(pane, True) - def save_all(self): + def on_save_all_activate(self, action): for i in range(self.num_panes): - if self.bufferdata[i].modified: + if self.textbuffer[i].data.modified: self.save_file(i) - def on_fileentry_activate(self, entry): - if self.on_delete_event() != gtk.RESPONSE_CANCEL: - files = [e.get_full_path() for e in self.fileentry[:self.num_panes]] - self.set_files(files) - return 1 + def on_file_save_button_clicked(self, button): + idx = self.file_save_button.index(button) + self.save_file(idx) + + def on_fileentry_file_set(self, entry): + if self.check_save_modified() != Gtk.ResponseType.CANCEL: + entries = self.fileentry[:self.num_panes] + files = [e.get_file() for e in entries] + paths = [f.get_path() for f in files] + self.set_files(paths) + return True def _get_focused_pane(self): for i in range(self.num_panes): @@ -1457,21 +1732,25 @@ return i return -1 - # - # refresh and reload - # - def on_reload_activate(self, *extra): - modified = [os.path.basename(b.label) for b in self.bufferdata if b.modified] - if len(modified): - message = _("Reloading will discard changes in:\n%s\n\nYou cannot undo this operation.") % "\n".join(modified) - response = misc.run_dialog( message, parent=self, messagetype=gtk.MESSAGE_WARNING, buttonstype=gtk.BUTTONS_OK_CANCEL) - if response != gtk.RESPONSE_OK: - return - files = [b.filename for b in self.bufferdata[:self.num_panes] ] - self.set_files(files) + def on_revert_activate(self, *extra): + response = Gtk.ResponseType.OK + unsaved = [b.data.label for b in self.textbuffer if b.data.modified] + if unsaved: + dialog = gnomeglade.Component("filediff.ui", "revert_dialog") + dialog.widget.set_transient_for(self.widget.get_toplevel()) + # FIXME: Should be packed into dialog.widget.get_message_area(), + # but this is unbound on currently required PyGTK. + filelist = "\n".join(["\t" + f for f in unsaved]) + dialog.widget.props.secondary_text += filelist + response = dialog.widget.run() + dialog.widget.destroy() + + if response == Gtk.ResponseType.OK: + files = [b.data.filename for b in self.textbuffer[:self.num_panes]] + self.set_files(files) def on_refresh_activate(self, *extra): - self.set_files([None] * self.num_panes) + self.refresh_comparison() def queue_draw(self, junk=None): for t in self.textview: @@ -1484,16 +1763,15 @@ def on_action_lock_scrolling_toggled(self, action): self.toggle_scroll_lock(action.get_active()) - def on_lock_button_toggled(self, button): - self.toggle_scroll_lock(not button.get_active()) - def toggle_scroll_lock(self, locked): - icon_name = "meld-locked" if locked else "meld-unlocked" - self.lock_button_image.props.icon_name = icon_name - self.lock_button.set_active(not locked) self.actiongroup.get_action("LockScrolling").set_active(locked) self._scroll_lock = not locked + def on_readonly_button_toggled(self, button): + index = self.readonlytoggle.index(button) + buf = self.textbuffer[index] + self.set_buffer_editable(buf, not button.get_active()) + # # scrollbars # @@ -1519,7 +1797,8 @@ syncpoint = 0.5 # the line to search for in the 'master' text - master_y = adjustment.value + adjustment.page_size * syncpoint + master_y = (adjustment.get_value() + adjustment.get_page_size() * + syncpoint) it = self.textview[master].get_line_at_y(int(master_y))[0] line_y, height = self.textview[master].get_line_yrange(it) line = it.get_line() + ((master_y-line_y)/height) @@ -1548,10 +1827,11 @@ other_line = (obegin + fraction * (oend - obegin)) it = self.textbuffer[i].get_iter_at_line(int(other_line)) val, height = self.textview[i].get_line_yrange(it) - val -= (adj.page_size) * syncpoint + val -= (adj.get_page_size()) * syncpoint val += (other_line-int(other_line)) * height - val = min(max(val, adj.lower), adj.upper - adj.page_size) - adj.set_value( val ) + val = min(max(val, adj.get_lower()), + adj.get_upper() - adj.get_page_size()) + adj.set_value(val) # If we just changed the central bar, make it the master if i == 1: @@ -1559,22 +1839,20 @@ self._sync_vscroll_lock = False for lm in self.linkmap: - if lm.window: - lm.window.invalidate_rect(None, True) - lm.window.process_updates(True) + lm.queue_draw() def set_num_panes(self, n): - if n != self.num_panes and n in (1,2,3): + if n != self.num_panes and n in (1, 2, 3): self.num_panes = n - toshow = self.scrolledwindow[:n] + self.fileentry[:n] - toshow += self.vbox[:n] + self.msgarea_mgr[:n] - toshow += self.linkmap[:n-1] + self.diffmap[:n] - map( lambda x: x.show(), toshow ) - - tohide = self.statusimage + self.scrolledwindow[n:] + self.fileentry[n:] - tohide += self.vbox[n:] + self.msgarea_mgr[n:] - tohide += self.linkmap[n-1:] + self.diffmap[n:] - map( lambda x: x.hide(), tohide ) + for widget in ( + self.vbox[:n] + self.file_toolbar[:n] + self.diffmap[:n] + + self.linkmap[:n - 1] + self.dummy_toolbar_linkmap[:n - 1]): + widget.show() + + for widget in ( + self.vbox[n:] + self.file_toolbar[n:] + self.diffmap[n:] + + self.linkmap[n - 1:] + self.dummy_toolbar_linkmap[n - 1:]): + widget.hide() self.actiongroup.get_action("MakePatch").set_sensitive(n > 1) self.actiongroup.get_action("CycleDocuments").set_sensitive(n > 1) @@ -1597,55 +1875,49 @@ yield c[0], y0 / max_y, (y + h) / max_y return coords_by_chunk - colour_map = { - "conflict": (1.0, 0.75294117647058822, 0.79607843137254897), - "insert": (0.75686274509803919, 1.0, 0.75686274509803919), - "replace": (0.8666666666666667, 0.93333333333333335, 1.0), - "delete": (0.75686274509803919, 1.0, 0.75686274509803919) - } - for (w, i) in zip(self.diffmap, (0, self.num_panes - 1)): scroll = self.scrolledwindow[i].get_vscrollbar() - w.setup(scroll, coords_iter(i), colour_map) + w.setup(scroll, coords_iter(i), [self.fill_colors, self.line_colors]) for (w, i) in zip(self.linkmap, (0, self.num_panes - 2)): w.associate(self, self.textview[i], self.textview[i + 1]) for i in range(self.num_panes): - if self.bufferdata[i].modified: - self.statusimage[i].show() + self.file_save_button[i].set_sensitive( + self.textbuffer[i].data.modified) self.queue_draw() self.recompute_label() - def next_diff(self, direction): + def next_diff(self, direction, centered=False): + target = (self.cursor.next if direction == Gdk.ScrollDirection.DOWN + else self.cursor.prev) + if target is None: + return + pane = self._get_focused_pane() if pane == -1: if len(self.textview) > 1: pane = 1 else: pane = 0 - buf = self.textbuffer[pane] - if direction == gtk.gdk.SCROLL_DOWN: - target = self.cursor.next - else: # direction == gtk.gdk.SCROLL_UP - target = self.cursor.prev - - if target is None: + chunk = self.linediffer.get_chunk(target, pane) + if not chunk: return - c = self.linediffer.get_chunk(target, pane) - if c: - # Warp the cursor to the first line of next chunk - if self.cursor.line != c[1]: - buf.place_cursor(buf.get_iter_at_line(c[1])) - self.textview[pane].scroll_to_mark(buf.get_insert(), 0.1) + # Warp the cursor to the first line of next chunk + buf = self.textbuffer[pane] + if self.cursor.line != chunk[1]: + buf.place_cursor(buf.get_iter_at_line(chunk[1])) + tolerance = 0.0 if centered else 0.2 + self.textview[pane].scroll_to_mark( + buf.get_insert(), tolerance, True, 0.5, 0.5) def copy_chunk(self, src, dst, chunk, copy_up): b0, b1 = self.textbuffer[src], self.textbuffer[dst] - start = get_iter_at_line_or_eof(b0, chunk[1]) - end = get_iter_at_line_or_eof(b0, chunk[2]) - t0 = unicode(b0.get_text(start, end, False), 'utf8') + start = b0.get_iter_at_line_or_eof(chunk[1]) + end = b0.get_iter_at_line_or_eof(chunk[2]) + t0 = text_type(b0.get_text(start, end, False), 'utf8') if copy_up: if chunk[2] >= b0.get_line_count() and \ @@ -1653,99 +1925,116 @@ # TODO: We need to insert a linebreak here, but there is no # way to be certain what kind of linebreak to use. t0 = t0 + "\n" - dst_start = get_iter_at_line_or_eof(b1, chunk[3]) + dst_start = b1.get_iter_at_line_or_eof(chunk[3]) mark0 = b1.create_mark(None, dst_start, True) - new_end = buffer_insert(b1, chunk[3], t0) + new_end = b1.insert_at_line(chunk[3], t0) else: # copy down - dst_start = get_iter_at_line_or_eof(b1, chunk[4]) + dst_start = b1.get_iter_at_line_or_eof(chunk[4]) mark0 = b1.create_mark(None, dst_start, True) - new_end = buffer_insert(b1, chunk[4], t0) + new_end = b1.insert_at_line(chunk[4], t0) mark1 = b1.create_mark(None, new_end, True) # FIXME: If the inserted chunk ends up being an insert chunk, then # this animation is not visible; this happens often in three-way diffs - rgba0 = self.fill_colors['insert'] + (1.0,) - rgba1 = self.fill_colors['insert'] + (0.0,) - anim = TextviewLineAnimation(mark0, mark1, rgba0, rgba1, 0.5) + rgba0 = self.fill_colors['insert'].copy() + rgba1 = self.fill_colors['insert'].copy() + rgba0.alpha = 1.0 + rgba1.alpha = 0.0 + anim = TextviewLineAnimation(mark0, mark1, rgba0, rgba1, 500000) self.animating_chunks[dst].append(anim) def replace_chunk(self, src, dst, chunk): b0, b1 = self.textbuffer[src], self.textbuffer[dst] - src_start = get_iter_at_line_or_eof(b0, chunk[1]) - src_end = get_iter_at_line_or_eof(b0, chunk[2]) - dst_start = get_iter_at_line_or_eof(b1, chunk[3]) - dst_end = get_iter_at_line_or_eof(b1, chunk[4]) - t0 = unicode(b0.get_text(src_start, src_end, False), 'utf8') + src_start = b0.get_iter_at_line_or_eof(chunk[1]) + src_end = b0.get_iter_at_line_or_eof(chunk[2]) + dst_start = b1.get_iter_at_line_or_eof(chunk[3]) + dst_end = b1.get_iter_at_line_or_eof(chunk[4]) + t0 = text_type(b0.get_text(src_start, src_end, False), 'utf8') mark0 = b1.create_mark(None, dst_start, True) - self.on_textbuffer__begin_user_action() + self.on_textbuffer_begin_user_action() b1.delete(dst_start, dst_end) - new_end = buffer_insert(b1, chunk[3], t0) - self.on_textbuffer__end_user_action() + new_end = b1.insert_at_line(chunk[3], t0) + self.on_textbuffer_end_user_action() mark1 = b1.create_mark(None, new_end, True) # FIXME: If the inserted chunk ends up being an insert chunk, then # this animation is not visible; this happens often in three-way diffs - rgba0 = self.fill_colors['insert'] + (1.0,) - rgba1 = self.fill_colors['insert'] + (0.0,) - anim = TextviewLineAnimation(mark0, mark1, rgba0, rgba1, 0.5) + rgba0 = self.fill_colors['insert'].copy() + rgba1 = self.fill_colors['insert'].copy() + rgba0.alpha = 1.0 + rgba1.alpha = 0.0 + anim = TextviewLineAnimation(mark0, mark1, rgba0, rgba1, 500000) self.animating_chunks[dst].append(anim) def delete_chunk(self, src, chunk): b0 = self.textbuffer[src] - it = get_iter_at_line_or_eof(b0, chunk[1]) + it = b0.get_iter_at_line_or_eof(chunk[1]) if chunk[2] >= b0.get_line_count(): it.backward_char() - b0.delete(it, get_iter_at_line_or_eof(b0, chunk[2])) + b0.delete(it, b0.get_iter_at_line_or_eof(chunk[2])) mark0 = b0.create_mark(None, it, True) mark1 = b0.create_mark(None, it, True) # TODO: Need a more specific colour here; conflict is wrong - rgba0 = self.fill_colors['conflict'] + (1.0,) - rgba1 = self.fill_colors['conflict'] + (0.0,) - anim = TextviewLineAnimation(mark0, mark1, rgba0, rgba1, 0.5) + rgba0 = self.fill_colors['conflict'].copy() + rgba1 = self.fill_colors['conflict'].copy() + rgba0.alpha = 1.0 + rgba1.alpha = 0.0 + anim = TextviewLineAnimation(mark0, mark1, rgba0, rgba1, 500000) self.animating_chunks[src].append(anim) + def add_sync_point(self, action): + pane = self._get_focused_pane() + if pane == -1: + return -################################################################################ -# -# Local Functions -# -################################################################################ + # Find a non-complete syncpoint, or create a new one + if self.syncpoints and None in self.syncpoints[-1]: + syncpoint = self.syncpoints.pop() + else: + syncpoint = [None] * self.num_panes + cursor_it = self.textbuffer[pane].get_iter_at_mark( + self.textbuffer[pane].get_insert()) + syncpoint[pane] = self.textbuffer[pane].create_mark(None, cursor_it) + self.syncpoints.append(syncpoint) + + def make_line_retriever(pane, marks): + buf = self.textbuffer[pane] + mark = marks[pane] + + def get_line_for_mark(): + return buf.get_iter_at_mark(mark).get_line() + return get_line_for_mark + + valid_points = [p for p in self.syncpoints if all(p)] + if valid_points and self.num_panes == 2: + self.linediffer.syncpoints = [ + ((make_line_retriever(1, p), make_line_retriever(0, p)), ) + for p in valid_points + ] + elif valid_points and self.num_panes == 3: + self.linediffer.syncpoints = [ + ((make_line_retriever(1, p), make_line_retriever(0, p)), + (make_line_retriever(1, p), make_line_retriever(2, p))) + for p in valid_points + ] + + if valid_points: + for mgr in self.msgarea_mgr: + msgarea = mgr.new_from_text_and_icon( + Gtk.STOCK_DIALOG_INFO, + _("Live comparison updating disabled"), + _("Live updating of comparisons is disabled when " + "synchronization points are active. You can still " + "manually refresh the comparison, and live updates will " + "resume when synchronization points are cleared.")) + mgr.set_msg_id(FileDiff.MSG_SYNCPOINTS) + msgarea.show_all() -class MeldBufferData(object): - __slots__ = ("modified", "writable", "filename", "savefile", "label", - "encoding", "newlines") - def __init__(self, filename=None): - self.modified = 0 - self.writable = 1 - self.filename = filename - self.savefile = None - self.label = filename - self.encoding = None - self.newlines = None - - -class BufferAction(object): - """A helper to undo/redo text insertion/deletion into/from a text buffer""" - - def __init__(self, buf, offset, text): - self.buffer = buf - self.offset = offset - self.text = text - - def delete(self): - start = self.buffer.get_iter_at_offset(self.offset) - end = self.buffer.get_iter_at_offset(self.offset + len(self.text)) - self.buffer.delete(start, end) - - def insert(self): - start = self.buffer.get_iter_at_offset(self.offset) - self.buffer.insert(start, self.text) - - -class BufferInsertionAction(BufferAction): - undo = BufferAction.delete - redo = BufferAction.insert - - -class BufferDeletionAction(BufferAction): - undo = BufferAction.insert - redo = BufferAction.delete + self.refresh_comparison() + + def clear_sync_points(self, action): + self.syncpoints = [] + self.linediffer.syncpoints = [] + for mgr in self.msgarea_mgr: + if mgr.get_msg_id() == FileDiff.MSG_SYNCPOINTS: + mgr.clear() + self.refresh_comparison() diff -Nru meld-1.5.3/meld/filemerge.py meld-3.11.0/meld/filemerge.py --- meld-1.5.3/meld/filemerge.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/filemerge.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,89 +1,59 @@ -### Copyright (C) 2009 Piotr Piastucki +# Copyright (C) 2009, 2012 Piotr Piastucki +# Copyright (C) 2012 Kai Willadsen +# +# 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, see . -### 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 filediff from gettext import gettext as _ -import gtk -import merge -MASK_SHIFT, MASK_CTRL = 1, 2 +from . import filediff +from . import meldbuffer +from . import merge +from . import recent class FileMerge(filediff.FileDiff): differ = merge.AutoMergeDiffer - def __init__(self, prefs, num_panes): - filediff.FileDiff.__init__(self, prefs, num_panes) - self.hidden_textbuffer = gtk.TextBuffer() - def _connect_buffer_handlers(self): filediff.FileDiff._connect_buffer_handlers(self) self.textview[0].set_editable(0) self.textview[2].set_editable(0) - def set_files(self, files): - if len(files) == 4: - self.ancestor_file = files[1] - self.merge_file = files[3] - files[1] = files[3] - files = files[:3] - filediff.FileDiff.set_files(self, files) + def get_comparison(self): + comp = filediff.FileDiff.get_comparison(self) + return recent.TYPE_MERGE, comp[1] def _set_files_internal(self, files): - textbuffers = self.textbuffer[:] - textbuffers[1] = self.hidden_textbuffer - files[1] = self.ancestor_file - for i in self._load_files(files, textbuffers): + self.textview[1].set_buffer(meldbuffer.MeldBuffer()) + for i in self._load_files(files, self.textbuffer): yield i for i in self._merge_files(): yield i + self.textview[1].set_buffer(self.textbuffer[1]) for i in self._diff_files(): yield i - def _get_custom_status_text(self): - return " Conflicts: %i" % (self.linediffer.get_unresolved_count()) - - def set_buffer_writable(self, buf, yesno): - if buf == self.hidden_textbuffer: - buf = self.textbuffer[1] - yesno = True - filediff.FileDiff.set_buffer_writable(self, buf, yesno) - def _merge_files(self): - yield _("[%s] Computing differences") % self.label_text - panetext = [] - textbuffer = self.textbuffer[:] - textbuffer[1] = self.hidden_textbuffer - for b in textbuffer[:self.num_panes]: - start, end = b.get_bounds() - text = unicode(b.get_text(start, end, False), 'utf8') - panetext.append(text) - lines = [x.split("\n") for x in panetext] - filteredpanetext = [self._filter_text(p) for p in panetext] - filteredlines = [x.split("\n") for x in filteredpanetext] + yield _("[%s] Merging files") % self.label_text merger = merge.Merger() - step = merger.initialize(filteredlines, lines) - while step.next() == None: + step = merger.initialize(self.buffer_filtered, self.buffer_texts) + while next(step) is None: yield 1 - yield _("[%s] Merging files") % self.label_text - for panetext[1] in merger.merge_3_files(): + for merged_text in merger.merge_3_files(): yield 1 self.linediffer.unresolved = merger.unresolved - self.textbuffer[1].insert(self.textbuffer[1].get_end_iter(), panetext[1]) - self.bufferdata[1].modified = 1 + self.textbuffer[1].set_text(merged_text) + self.textbuffer[1].data.modified = True self.recompute_label() - yield 1 diff -Nru meld-1.5.3/meld/filters.py meld-3.11.0/meld/filters.py --- meld-1.5.3/meld/filters.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/filters.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,94 @@ +# Copyright (C) 2011-2013 Kai Willadsen +# +# 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, see . + +import re + +from . import misc + + +class FilterEntry(object): + + __slots__ = ("label", "active", "filter", "filter_string") + + REGEX, SHELL = 0, 1 + + def __init__(self, label, active, filter, filter_string): + self.label = label + self.active = active + self.filter = filter + self.filter_string = filter_string + + @classmethod + def _compile_regex(cls, regex): + try: + compiled = re.compile(regex + "(?m)") + except re.error: + compiled = None + return compiled + + @classmethod + def _compile_shell_pattern(cls, pattern): + bits = pattern.split() + if len(bits) > 1: + regexes = [misc.shell_to_regex(b)[:-1] for b in bits] + regex = "(%s)$" % "|".join(regexes) + elif len(bits): + regex = misc.shell_to_regex(bits[0]) + else: + # An empty pattern would match everything, so skip it + return None + + try: + compiled = re.compile(regex) + except re.error: + compiled = None + + return compiled + + @classmethod + def parse(cls, string, filter_type): + elements = string.split("\t") + if len(elements) < 3: + return None + name, active = elements[0], bool(int(elements[1])) + filter_string = " ".join(elements[2:]) + compiled = FilterEntry.compile_filter(filter_string, filter_type) + if compiled is None: + active = False + return FilterEntry(name, active, compiled, filter_string) + + @classmethod + def new_from_gsetting(cls, elements, filter_type): + name, active, filter_string = elements + compiled = FilterEntry.compile_filter(filter_string, filter_type) + if compiled is None: + active = False + return FilterEntry(name, active, compiled, filter_string) + + @classmethod + def compile_filter(cls, filter_string, filter_type): + if filter_type == FilterEntry.REGEX: + compiled = FilterEntry._compile_regex(filter_string) + elif filter_type == FilterEntry.SHELL: + compiled = FilterEntry._compile_shell_pattern(filter_string) + else: + raise ValueError("Unknown filter type") + return compiled + + def __copy__(self): + new = type(self)(self.label, self.active, None, self.filter_string) + if self.filter is not None: + new.filter = re.compile(self.filter.pattern, self.filter.flags) + return new diff -Nru meld-1.5.3/meld/gutterrendererchunk.py meld-3.11.0/meld/gutterrendererchunk.py --- meld-1.5.3/meld/gutterrendererchunk.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/gutterrendererchunk.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,176 @@ +# Copyright (C) 2013 Kai Willadsen +# +# 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, see . + +from gettext import gettext as _ + +from gi.repository import Gtk +from gi.repository import GtkSource + + +# FIXME: This is obviously beyond horrible +line_height = 16 +icon_theme = Gtk.IconTheme.get_default() +load = lambda x: icon_theme.load_icon(x, line_height, 0) +pixbuf_apply0 = load("meld-change-apply-right") +pixbuf_apply1 = load("meld-change-apply-left") +pixbuf_delete = load("meld-change-delete") +pixbuf_copy = load("meld-change-copy") + +# FIXME: import order issues +MODE_REPLACE, MODE_DELETE, MODE_INSERT = 0, 1, 2 +ACTION_MAP = { + 'LTR': { + MODE_REPLACE: pixbuf_apply0, + MODE_DELETE: pixbuf_delete, + MODE_INSERT: pixbuf_copy, + }, + 'RTL': { + MODE_REPLACE: pixbuf_apply1, + MODE_DELETE: pixbuf_delete, + MODE_INSERT: pixbuf_copy, + } +} + + +class GutterRendererChunkAction(GtkSource.GutterRendererPixbuf): + __gtype_name__ = "GutterRendererChunkAction" + + def __init__(self, from_pane, to_pane, views, filediff, linediffer): + super(GutterRendererChunkAction, self).__init__() + self.from_pane = from_pane + self.to_pane = to_pane + # FIXME: Views are needed only for editable checking; connect to this + # in Filediff instead? + self.views = views + # FIXME: Don't pass in the linediffer; pass a generator like elsewhere + self.linediffer = linediffer + self.mode = MODE_REPLACE + self.set_size(line_height) + direction = 'LTR' if from_pane < to_pane else 'RTL' + self.action_map = ACTION_MAP[direction] + self.filediff = filediff + self.filediff.connect("action-mode-changed", + self.on_container_mode_changed) + + def do_activate(self, start, area, event): + line = start.get_line() + chunk_index = self.linediffer.locate_chunk(self.from_pane, line)[0] + if chunk_index is None: + return + + # FIXME: This is all chunks, not just those shared with to_pane + chunk = self.linediffer.get_chunk(chunk_index, self.from_pane) + if chunk[1] != line: + return + + action = self._classify_change_actions(chunk) + if action == MODE_DELETE: + self.filediff.delete_chunk(self.from_pane, chunk) + elif action == MODE_INSERT: + copy_menu = self._make_copy_menu(chunk) + # TODO: Need a custom GtkMenuPositionFunc to position this next to + # the clicked gutter, not where the cursor is + copy_menu.popup(None, None, None, None, 0, event.time) + else: + self.filediff.replace_chunk(self.from_pane, self.to_pane, chunk) + + def _make_copy_menu(self, chunk): + copy_menu = Gtk.Menu() + copy_up = Gtk.MenuItem.new_with_mnemonic(_("Copy _up")) + copy_down = Gtk.MenuItem.new_with_mnemonic(_("Copy _down")) + copy_menu.append(copy_up) + copy_menu.append(copy_down) + copy_menu.show_all() + + # FIXME: This is horrible + widget = self.filediff.widget + copy_menu.attach_to_widget(widget, None) + + def copy_chunk(widget, chunk, copy_up): + self.filediff.copy_chunk(self.from_pane, self.to_pane, chunk, + copy_up) + + copy_up.connect('activate', copy_chunk, chunk, True) + copy_down.connect('activate', copy_chunk, chunk, False) + return copy_menu + + def do_query_activatable(self, start, area, event): + line = start.get_line() + chunk_index = self.linediffer.locate_chunk(self.from_pane, line)[0] + if chunk_index is not None: + # FIXME: This is all chunks, not just those shared with to_pane + chunk = self.linediffer.get_chunk(chunk_index, self.from_pane) + if chunk[1] == line: + return True + return False + + def do_query_data(self, start, end, state): + line = start.get_line() + chunk_index = self.linediffer.locate_chunk(self.from_pane, line)[0] + + pixbuf = None + if chunk_index is not None: + chunk = self.linediffer.get_chunk(chunk_index, self.from_pane) + # FIXME: This is all chunks, not just those shared with to_pane + if chunk[1] == line: + action = self._classify_change_actions(chunk) + pixbuf = self.action_map.get(action) + if pixbuf: + self.set_pixbuf(pixbuf) + else: + self.props.pixbuf = None + + def on_container_mode_changed(self, container, mode): + self.mode = mode + self.queue_draw() + + def _classify_change_actions(self, change): + """Classify possible actions for the given change + + Returns the action that can be performed given the content and + context of the change. + """ + editable, other_editable = [v.get_editable() for v in self.views] + + if not editable and not other_editable: + return None + + # Reclassify conflict changes, since we treat them the same as a + # normal two-way change as far as actions are concerned + change_type = change[0] + if change_type == "conflict": + if change[1] == change[2]: + change_type = "insert" + elif change[3] == change[4]: + change_type = "delete" + else: + change_type = "replace" + + action = None + if change_type == "delete": + if (editable and (self.mode == MODE_DELETE or not other_editable)): + action = MODE_DELETE + elif other_editable: + action = MODE_REPLACE + elif change_type == "replace": + if not editable: + if self.mode in (MODE_INSERT, MODE_REPLACE): + action = self.mode + elif not other_editable: + action = MODE_DELETE + else: + action = self.mode + + return action diff -Nru meld-1.5.3/meld/linkmap.py meld-3.11.0/meld/linkmap.py --- meld-1.5.3/meld/linkmap.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/linkmap.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,186 +1,86 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2009-2011 Kai Willadsen - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009-2013 Kai Willadsen +# +# 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, see . import math -import gtk - -import diffutil - - -# FIXME: import order issues -MODE_REPLACE, MODE_DELETE, MODE_INSERT = 0, 1, 2 +from gi.repository import Gtk -class LinkMap(gtk.DrawingArea): +class LinkMap(Gtk.DrawingArea): __gtype_name__ = "LinkMap" - __gsignals__ = { - 'expose-event': 'override', - 'scroll-event': 'override', - 'button-press-event': 'override', - 'button-release-event': 'override', - } - def __init__(self): - self.mode = MODE_REPLACE + self._setup = False def associate(self, filediff, left_view, right_view): self.filediff = filediff self.views = [left_view, right_view] - if self.get_direction() == gtk.TEXT_DIR_RTL: + if self.get_direction() == Gtk.TextDirection.RTL: self.views.reverse() self.view_indices = [filediff.textview.index(t) for t in self.views] - self.fill_colors = filediff.fill_colors - self.line_colors = filediff.line_colors + self.set_color_scheme((filediff.fill_colors, filediff.line_colors)) self.line_height = filediff.pixels_per_line - icon_theme = gtk.icon_theme_get_default() - load = lambda x: icon_theme.load_icon(x, self.line_height, 0) - pixbuf_apply0 = load("button_apply0") - pixbuf_apply1 = load("button_apply1") - pixbuf_delete = load("button_delete") - # FIXME: this is a somewhat bizarre action to take, but our non-square - # icons really make this kind of handling difficult - load = lambda x: icon_theme.load_icon(x, self.line_height * 2, 0) - pixbuf_copy0 = load("button_copy0") - pixbuf_copy1 = load("button_copy1") - - self.action_map_left = { - MODE_REPLACE: pixbuf_apply0, - MODE_DELETE: pixbuf_delete, - MODE_INSERT: pixbuf_copy0, - } - - self.action_map_right = { - MODE_REPLACE: pixbuf_apply1, - MODE_DELETE: pixbuf_delete, - MODE_INSERT: pixbuf_copy1, - } - - self.button_width = pixbuf_apply0.get_width() - self.button_height = pixbuf_apply0.get_height() - - filediff.connect("action-mode-changed", self.on_container_mode_changed) - - def on_container_mode_changed(self, container, mode): - # On mode change, set our local copy of the mode, and cancel any mouse - # actions in progress. Otherwise, if someone clicks, then releases - # Shift, then releases the button... what do we do? - self.mode = mode - self.mouse_chunk = None - x, y, width, height = self.allocation - pixbuf_width = self.button_width - self.queue_draw_area(0, 0, pixbuf_width, height) - self.queue_draw_area(width - pixbuf_width, 0, pixbuf_width, height) - - def paint_pixbuf_at(self, context, pixbuf, x, y): - context.translate(x, y) - context.set_source_pixbuf(pixbuf, 0, 0) - context.paint() - context.identity_matrix() - - def _classify_change_actions(self, change): - """Classify possible actions for the given change - - Returns a tuple containing actions that can be performed given the - content and context of the change. The tuple gives the actions for - the left and right sides of the LinkMap. - """ - left_editable, right_editable = [v.get_editable() for v in self.views] - - if not left_editable and not right_editable: - return None, None - - # Reclassify conflict changes, since we treat them the same as a - # normal two-way change as far as actions are concerned - change_type = change[0] - if change_type == "conflict": - if change[1] == change[2]: - change_type = "insert" - elif change[3] == change[4]: - change_type = "delete" - else: - change_type = "replace" - left_act, right_act = None, None - if change_type == "delete": - left_act = MODE_REPLACE - if (self.mode == MODE_DELETE or not right_editable) and \ - left_editable: - left_act = MODE_DELETE - elif change_type == "insert": - right_act = MODE_REPLACE - if (self.mode == MODE_DELETE or not left_editable) and \ - right_editable: - right_act = MODE_DELETE - elif change_type == "replace": - if not left_editable: - left_act, right_act = MODE_REPLACE, MODE_DELETE - if self.mode == MODE_INSERT: - left_act = MODE_INSERT - elif not right_editable: - left_act, right_act = MODE_DELETE, MODE_REPLACE - if self.mode == MODE_INSERT: - right_act = MODE_INSERT - else: - left_act, right_act = MODE_REPLACE, MODE_REPLACE - if self.mode == MODE_DELETE: - left_act, right_act = MODE_DELETE, MODE_DELETE - elif self.mode == MODE_INSERT: - left_act, right_act = MODE_INSERT, MODE_INSERT - - return left_act, right_act - - def do_expose_event(self, event): - context = self.window.cairo_create() - context.rectangle(event.area.x, event.area.y, event.area.width, \ - event.area.height) - context.clip() + self._setup = True + + def set_color_scheme(self, color_map): + self.fill_colors, self.line_colors = color_map + self.queue_draw() + + def do_draw(self, context): + if not self._setup: + return + context.set_line_width(1.0) + allocation = self.get_allocation() + style = self.get_style_context() pix_start = [t.get_visible_rect().y for t in self.views] - rel_offset = [t.allocation.y - self.allocation.y for t in self.views] + y_offset = [t.translate_coordinates(self, 0, 0)[1] for t in self.views] + + clip_height = max(t.get_visible_rect().height for t in self.views) + 2 + Gtk.render_frame(style, context, 0, 0, allocation.width, clip_height) + context.rectangle(0, -1, allocation.width, clip_height) + context.clip() - height = self.allocation.height + height = allocation.height visible = [self.views[0].get_line_num_for_y(pix_start[0]), self.views[0].get_line_num_for_y(pix_start[0] + height), self.views[1].get_line_num_for_y(pix_start[1]), self.views[1].get_line_num_for_y(pix_start[1] + height)] - wtotal = self.allocation.width + wtotal = allocation.width # For bezier control points x_steps = [-0.5, (1. / 3) * wtotal, (2. / 3) * wtotal, wtotal + 0.5] # Rounded rectangle corner radius for culled changes display - radius = self.line_height / 2 + radius = self.line_height // 2 q_rad = math.pi / 2 left, right = self.view_indices - view_offset_line = lambda v, l: self.views[v].get_y_for_line_num(l) - \ - pix_start[v] + rel_offset[v] + view_offset_line = lambda v, l: (self.views[v].get_y_for_line_num(l) - + pix_start[v] + y_offset[v]) for c in self.filediff.linediffer.pair_changes(left, right, visible): # f and t are short for "from" and "to" f0, f1 = [view_offset_line(0, l) for l in c[1:3]] t0, t1 = [view_offset_line(1, l) for l in c[3:5]] - culled = False # If either endpoint is completely off-screen, we cull for clarity if (t0 < 0 and t1 < 0) or (t0 > height and t1 > height): if f0 == f1: @@ -190,7 +90,6 @@ context.rel_line_to(0, f1 - f0 - radius * 2) context.arc(x_steps[0], f1 - 0.5 - radius, radius, 0, q_rad) context.close_path() - culled = True elif (f0 < 0 and f1 < 0) or (f0 > height and f1 > height): if t0 == t1: continue @@ -201,7 +100,6 @@ context.arc_negative(x_steps[3], t1 - 0.5 - radius, radius, q_rad * 2, q_rad) context.close_path() - culled = True else: context.move_to(x_steps[0], f0 - 0.5) context.curve_to(x_steps[1], f0 - 0.5, @@ -213,116 +111,18 @@ x_steps[0], f1 - 0.5) context.close_path() - context.set_source_rgb(*self.fill_colors[c[0]]) + context.set_source_rgba(*self.fill_colors[c[0]]) context.fill_preserve() chunk_idx = self.filediff.linediffer.locate_chunk(left, c[1])[0] if chunk_idx == self.filediff.cursor.chunk: - context.set_source_rgba(1.0, 1.0, 1.0, 0.5) + h = self.fill_colors['current-chunk-highlight'] + context.set_source_rgba( + h.red, h.green, h.blue, 0.5) context.fill_preserve() - context.set_source_rgb(*self.line_colors[c[0]]) + context.set_source_rgba(*self.line_colors[c[0]]) context.stroke() - if culled: - continue - - x = wtotal - self.button_width - left_act, right_act = self._classify_change_actions(c) - if left_act is not None: - pix0 = self.action_map_left[left_act] - self.paint_pixbuf_at(context, pix0, 0, f0) - if right_act is not None: - pix1 = self.action_map_right[right_act] - self.paint_pixbuf_at(context, pix1, x, t0) - - # allow for scrollbar at end of textview - mid = int(0.5 * self.views[0].allocation.height) + 0.5 - context.set_source_rgba(0., 0., 0., 0.5) - context.move_to(.35 * wtotal, mid) - context.line_to(.65 * wtotal, mid) - context.stroke() - def do_scroll_event(self, event): self.filediff.next_diff(event.direction) - - def _linkmap_process_event(self, event, side, x, pix_width, pix_height): - src_idx, dst_idx = side, 1 if side == 0 else 0 - src, dst = self.view_indices[src_idx], self.view_indices[dst_idx] - - yoffset = self.allocation.y - vis_offset = [t.get_visible_rect().y for t in self.views] - rel_offset = [t.allocation.y - self.allocation.y for t in self.views] - height = self.allocation.height - - bounds = [] - for v in (self.views[src_idx], self.views[dst_idx]): - visible = v.get_visible_rect() - bounds.append(v.get_line_num_for_y(visible.y)) - bounds.append(v.get_line_num_for_y(visible.y + visible.height)) - - view_offset_line = lambda v, l: self.views[v].get_y_for_line_num(l) - \ - vis_offset[v] + rel_offset[v] - for c in self.filediff.linediffer.pair_changes(src, dst, bounds): - f0, f1 = [view_offset_line(src_idx, l) for l in c[1:3]] - t0, t1 = [view_offset_line(dst_idx, l) for l in c[3:5]] - - f0 = view_offset_line(src_idx, c[1]) - - if f0 < event.y < f0 + pix_height: - if (t0 < 0 and t1 < 0) or (t0 > height and t1 > height) or \ - (f0 < 0 and f1 < 0) or (f0 > height and f1 > height): - break - - # _classify_change_actions assumes changes are left->right - action_change = diffutil.reverse_chunk(c) if dst < src else c - actions = self._classify_change_actions(action_change) - if actions[side] is not None: - rect = gtk.gdk.Rectangle(x, f0, pix_width, pix_height) - self.mouse_chunk = ((src, dst), rect, c, actions[side]) - break - - def do_button_press_event(self, event): - if event.button == 1: - self.mouse_chunk = None - pix_width = self.button_width - pix_height = self.button_height - # Hack to deal with our non-square insert-mode icons - if self.mode == MODE_INSERT: - pix_height *= 2 - - # Quick reject if not in the area used to draw our buttons - right_gutter_x = self.allocation.width - pix_width - if event.x >= pix_width and event.x <= right_gutter_x: - return True - - # side = 0 means left side of linkmap, so action from left -> right - side = 0 if event.x < pix_width else 1 - x = 0 if event.x < pix_width else right_gutter_x - self._linkmap_process_event(event, side, x, pix_width, pix_height) - return True - return False - - def do_button_release_event(self, event): - if event.button == 1: - if self.mouse_chunk: - (src, dst), rect, chunk, action = self.mouse_chunk - self.mouse_chunk = None - # Check that we're still in the same button we started in - if rect.x <= event.x < rect.x + rect.width and \ - rect.y <= event.y < rect.y + rect.height: - # Unless we move the cursor, the view scrolls back to - # its old position - self.views[0].place_cursor_onscreen() - self.views[1].place_cursor_onscreen() - - if action == MODE_DELETE: - self.filediff.delete_chunk(src, chunk) - elif action == MODE_INSERT: - copy_up = event.y - rect[1] < 0.5 * rect[3] - self.filediff.copy_chunk(src, dst, chunk, copy_up) - else: - self.filediff.replace_chunk(src, dst, chunk) - return True - return False - diff -Nru meld-1.5.3/meld/matchers.py meld-3.11.0/meld/matchers.py --- meld-1.5.3/meld/matchers.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/matchers.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,20 +1,40 @@ -### Copyright (C) 2009 Piotr Piastucki - -### 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 +# Copyright (C) 2009-2013 Piotr Piastucki +# Copyright (C) 2012-2013 Kai Willadsen +# +# 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, see . +import collections import difflib +import os +import signal +import sys + + +# Support re-execing on Windows +if os.name == "nt": + self_path = os.path.realpath(__file__) + self_dir = os.path.abspath(os.path.dirname(self_path)) + sys.path[0:0] = [self_dir] + + +def init_worker(): + signal.signal(signal.SIGINT, signal.SIG_IGN) + + +def matcher_worker(text1, textn): + matcher = InlineMyersSequenceMatcher(None, text1, textn) + return matcher.get_opcodes() def find_common_prefix(a, b): @@ -29,7 +49,7 @@ pointermin = pointermid else: pointermax = pointermid - pointermid = int((pointermax - pointermin) / 2 + pointermin) + pointermid = int((pointermax - pointermin) // 2 + pointermin) return pointermid return 0 @@ -42,15 +62,21 @@ pointermid = pointermax pointermin = 0 while pointermin < pointermid: - if (a[-pointermid:len(a) - pointermin] == b[-pointermid:len(b) - pointermin]): + a_tail = a[-pointermid:len(a) - pointermin] + b_tail = b[-pointermid:len(b) - pointermin] + if a_tail == b_tail: pointermin = pointermid else: pointermax = pointermid - pointermid = int((pointermax - pointermin) / 2 + pointermin) + pointermid = int((pointermax - pointermin) // 2 + pointermin) return pointermid return 0 +DiffChunk = collections.namedtuple('DiffChunk', + 'tag, start_a, end_a, start_b, end_b') + + class MyersSequenceMatcher(difflib.SequenceMatcher): def __init__(self, isjunk=None, a="", b=""): @@ -59,9 +85,8 @@ self.a = a self.b = b self.matching_blocks = self.opcodes = None - #fields needed by preprocessor so that preprocessing may shared by more than 1 LCS algorithm - self.aindex = {} - self.bindex = {} + self.aindex = [] + self.bindex = [] self.common_prefix = self.common_suffix = 0 self.lines_discarded = False @@ -71,65 +96,72 @@ pass return self.matching_blocks + def get_opcodes(self): + opcodes = difflib.SequenceMatcher.get_opcodes(self) + return [DiffChunk._make(chunk) for chunk in opcodes] + def get_difference_opcodes(self): - return filter(lambda x: x[0] != "equal", self.get_opcodes()) + return [chunk for chunk in self.get_opcodes() if chunk.tag != "equal"] - def preprocess(self): - """ - Pre-processing optimizations: - 1) remove common prefix and common suffix - 2) remove lines that do not match - """ - a = self.a - b = self.b - aindex = self.aindex = {} - bindex = self.bindex = {} - n = len(a) - m = len(b) + def preprocess_remove_prefix_suffix(self, a, b): # remove common prefix and common suffix self.common_prefix = self.common_suffix = 0 self.common_prefix = find_common_prefix(a, b) if self.common_prefix > 0: a = a[self.common_prefix:] b = b[self.common_prefix:] - n -= self.common_prefix - m -= self.common_prefix - if n > 0 and m > 0: + if len(a) > 0 and len(b) > 0: self.common_suffix = find_common_suffix(a, b) if self.common_suffix > 0: - a = a[:n - self.common_suffix] - b = b[:m - self.common_suffix] - n -= self.common_suffix - m -= self.common_suffix + a = a[:len(a) - self.common_suffix] + b = b[:len(b) - self.common_suffix] + return (a, b) + def preprocess_discard_nonmatching_lines(self, a, b): # discard lines that do not match any line from the other file - if n > 0 and m > 0: + if len(a) == 0 or len(b) == 0: + self.aindex = [] + self.bindex = [] + return (a, b) + + def index_matching(a, b): aset = frozenset(a) - bset = frozenset(b) - a2 = [] - b2 = [] - j = 0 - for i, newline in enumerate(b): - if newline in aset: - b2.append(newline) - bindex[j] = i - j += 1 - k = 0 - for i, origline in enumerate(a): - if origline in bset: - a2.append(a[i]) - aindex[k] = i - k += 1 - # We only use the optimised result if it's worthwhile. The constant - # represents a heuristic of how many lines constitute 'worthwhile'. - self.lines_discarded = m - j > 10 or n - k > 10 - if self.lines_discarded: - a = a2 - b = b2 + matches, index = [], [] + for i, line in enumerate(b): + if line in aset: + matches.append(line) + index.append(i) + return matches, index + + indexed_b, self.bindex = index_matching(a, b) + indexed_a, self.aindex = index_matching(b, a) + + # We only use the optimised result if it's worthwhile. The constant + # represents a heuristic of how many lines constitute 'worthwhile'. + self.lines_discarded = (len(b) - len(indexed_b) > 10 or + len(a) - len(indexed_a) > 10) + if self.lines_discarded: + a = indexed_a + b = indexed_b return (a, b) + def preprocess(self): + """ + Pre-processing optimizations: + 1) remove common prefix and common suffix + 2) remove lines that do not match + """ + a, b = self.preprocess_remove_prefix_suffix(self.a, self.b) + return self.preprocess_discard_nonmatching_lines(a, b) + def postprocess(self): + """ + Perform some post-processing cleanup to reduce 'chaff' and make + the result more human-readable. Since Myers diff is a greedy + algorithm backward scanning of matching chunks might reveal + some smaller chunks that can be combined together. + """ mb = [self.matching_blocks[-1]] i = len(self.matching_blocks) - 2 while i >= 0: @@ -151,12 +183,14 @@ mb.reverse() self.matching_blocks = mb - def build_matching_blocks(self, lastsnake, snakes): - """ - Build list of matching blocks based on snakes taking into consideration all preprocessing + def build_matching_blocks(self, lastsnake): + """Build list of matching blocks based on snakes + + The resulting blocks take into consideration multiple preprocessing optimizations: - 1) add separate blocks for common prefix and common suffix - 2) shift positions and split blocks based on the list of discarded non-matching lines + * add separate blocks for common prefix and suffix + * shift positions and split blocks based on the list of discarded + non-matching lines """ self.matching_blocks = matching_blocks = [] @@ -164,8 +198,8 @@ common_suffix = self.common_suffix aindex = self.aindex bindex = self.bindex - while lastsnake != None: - lastsnake, x, y, snake = snakes[lastsnake] + while lastsnake is not None: + lastsnake, x, y, snake = lastsnake if self.lines_discarded: # split snakes if needed because of discarded lines x += snake - 1 @@ -189,11 +223,14 @@ else: matching_blocks.insert(0, (xprev, yprev, snake)) else: - matching_blocks.insert(0, (x + common_prefix, y + common_prefix, snake)) + matching_blocks.insert(0, (x + common_prefix, + y + common_prefix, snake)) if common_prefix: matching_blocks.insert(0, (0, 0, common_prefix)) if common_suffix: - matching_blocks.append((len(self.a) - common_suffix, len(self.b) - common_suffix, common_suffix)) + matching_blocks.append((len(self.a) - common_suffix, + len(self.b) - common_suffix, + common_suffix)) matching_blocks.append((len(self.a), len(self.b), 0)) # clean-up to free memory self.aindex = self.bindex = None @@ -214,7 +251,6 @@ delta = n - m + middle dmin = min(middle, delta) dmax = max(middle, delta) - snakes = [] if n > 0 and m > 0: size = n + m + 2 fp = [(-1, None)] * size @@ -232,14 +268,16 @@ yv, node = t else: yv += 1 - snake = x = yv - km + middle - while x < m and yv < n and a[x] == b[yv]: + x = yv - km + middle + if x < m and yv < n and a[x] == b[yv]: + snake = x x += 1 yv += 1 - if x != snake: + while x < m and yv < n and a[x] == b[yv]: + x += 1 + yv += 1 snake = x - snake - snakes.append((node, x - snake, yv - snake, snake)) - node = len(snakes) - 1 + node = (node, x - snake, yv - snake, snake) fp[km] = (yv, node) # move along horizontal edge yh = -1 @@ -249,14 +287,16 @@ if yh <= t[0]: yh, node = t yh += 1 - snake = x = yh - km + middle - while x < m and yh < n and a[x] == b[yh]: + x = yh - km + middle + if x < m and yh < n and a[x] == b[yh]: + snake = x x += 1 yh += 1 - if x != snake: + while x < m and yh < n and a[x] == b[yh]: + x += 1 + yh += 1 snake = x - snake - snakes.append((node, x - snake, yh - snake, snake)) - node = len(snakes) - 1 + node = (node, x - snake, yh - snake, snake) fp[km] = (yh, node) # point on the diagonal that leads to the sink if yv < yh: @@ -264,18 +304,133 @@ else: y, node = fp[delta - 1] y += 1 - snake = x = y - delta + middle - while x < m and y < n and a[x] == b[y]: + x = y - delta + middle + if x < m and y < n and a[x] == b[y]: + snake = x x += 1 y += 1 - if x != snake: + while x < m and y < n and a[x] == b[y]: + x += 1 + y += 1 snake = x - snake - snakes.append((node, x - snake, y - snake, snake)) - node = len(snakes) - 1 + node = (node, x - snake, y - snake, snake) fp[delta] = (y, node) if y >= n: lastsnake = node break - self.build_matching_blocks(lastsnake, snakes) + self.build_matching_blocks(lastsnake) self.postprocess() yield 1 + + +class InlineMyersSequenceMatcher(MyersSequenceMatcher): + + def preprocess_discard_nonmatching_lines(self, a, b): + + if len(a) <= 2 and len(b) <= 2: + self.aindex = [] + self.bindex = [] + return (a, b) + + def index_matching_kmers(a, b): + aset = set([a[i:i + 3] for i in range(len(a) - 2)]) + matches, index = [], [] + next_poss_match = 0 + # Start from where we can get a valid triple + for i in range(2, len(b)): + if b[i - 2:i + 1] not in aset: + continue + # Make sure we don't re-record matches from overlapping kmers + for j in range(max(next_poss_match, i - 2), i + 1): + matches.append(b[j]) + index.append(j) + next_poss_match = i + 1 + return matches, index + + indexed_b, self.bindex = index_matching_kmers(a, b) + indexed_a, self.aindex = index_matching_kmers(b, a) + + # We only use the optimised result if it's worthwhile. The constant + # represents a heuristic of how many lines constitute 'worthwhile'. + self.lines_discarded = (len(b) - len(indexed_b) > 10 or + len(a) - len(indexed_a) > 10) + if self.lines_discarded: + a = indexed_a + b = indexed_b + return (a, b) + + +class SyncPointMyersSequenceMatcher(MyersSequenceMatcher): + + def __init__(self, isjunk=None, a="", b="", syncpoints=None): + MyersSequenceMatcher.__init__(self, isjunk, a, b) + self.isjunk = isjunk + self.syncpoints = syncpoints + + def initialise(self): + if self.syncpoints is None or len(self.syncpoints) == 0: + for i in MyersSequenceMatcher.initialise(self): + yield i + else: + chunks = [] + ai = 0 + bi = 0 + for aj, bj in self.syncpoints: + chunks.append((ai, bi, self.a[ai:aj], self.b[bi:bj])) + ai = aj + bi = bj + if ai < len(self.a) or bi < len(self.b): + chunks.append((ai, bi, self.a[ai:], self.b[bi:])) + + self.split_matching_blocks = [] + self.matching_blocks = [] + for ai, bi, a, b in chunks: + matching_blocks = [] + matcher = MyersSequenceMatcher(self.isjunk, a, b) + for i in matcher.initialise(): + yield None + blocks = matcher.get_matching_blocks() + l = len(matching_blocks) - 1 + if l >= 0 and len(blocks) > 1: + aj = matching_blocks[l][0] + bj = matching_blocks[l][1] + bl = matching_blocks[l][2] + if (aj + bl == ai and bj + bl == bi and + blocks[0][0] == 0 and blocks[0][1] == 0): + block = blocks.pop(0) + matching_blocks[l] = (aj, bj, bl + block[2]) + for x, y, l in blocks[:-1]: + matching_blocks.append((ai + x, bi + y, l)) + self.matching_blocks.extend(matching_blocks) + # Split matching blocks each need to be terminated to get our + # split chunks correctly created + self.split_matching_blocks.append( + matching_blocks + [(ai + len(a), bi + len(b), 0)]) + self.matching_blocks.append((len(self.a), len(self.b), 0)) + yield 1 + + def get_opcodes(self): + # This is just difflib.SequenceMatcher.get_opcodes in which we instead + # iterate over our internal set of split matching blocks. + if self.opcodes is not None: + return self.opcodes + i = j = 0 + self.opcodes = opcodes = [] + self.get_matching_blocks() + for matching_blocks in self.split_matching_blocks: + for ai, bj, size in matching_blocks: + tag = '' + if i < ai and j < bj: + tag = 'replace' + elif i < ai: + tag = 'delete' + elif j < bj: + tag = 'insert' + if tag: + opcodes.append((tag, i, ai, j, bj)) + i, j = ai+size, bj+size + # the list of matching blocks is terminated by a + # sentinel with size 0 + if size: + opcodes.append(('equal', ai, i, bj, j)) + return [DiffChunk._make(chunk) for chunk in opcodes] diff -Nru meld-1.5.3/meld/meldapp.py meld-3.11.0/meld/meldapp.py --- meld-1.5.3/meld/meldapp.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/meldapp.py 2014-02-22 03:14:57.000000000 +0000 @@ -1,137 +1,137 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2010-2011 Kai Willadsen - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2010-2013 Kai Willadsen +# +# 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, see . +from __future__ import print_function import optparse import os -import re +import StringIO from gettext import gettext as _ -import gobject -import gtk - -import misc -import preferences - -version = "1.5.3" - +from gi.repository import Gio +from gi.repository import GLib +from gi.repository import Gdk +from gi.repository import Gtk -class FilterEntry(object): - - __slots__ = ("label", "active", "filter", "filter_string") - - REGEX, SHELL = 0, 1 - - def __init__(self, label, active, filter, filter_string): - self.label = label - self.active = active - self.filter = filter - self.filter_string = filter_string - - @classmethod - def _compile_regex(cls, regex): - try: - compiled = re.compile(regex + "(?m)") - except re.error: - compiled = None - return compiled - - @classmethod - def _compile_shell_pattern(cls, pattern): - bits = pattern.split() - if len(bits) > 1: - regexes = [misc.shell_to_regex(b)[:-1] for b in bits] - regex = "(%s)$" % "|".join(regexes) - elif len(bits): - regex = misc.shell_to_regex(bits[0]) - else: - # An empty pattern would match everything, so skip it - return None +import meld.conf +import meld.preferences +import meld.ui.util - try: - compiled = re.compile(regex) - except re.error: - compiled = None - - return compiled - - @classmethod - def parse(cls, string, filter_type): - elements = string.split("\t") - if len(elements) < 3: - return None - name, active = elements[0], bool(int(elements[1])) - filter_string = " ".join(elements[2:]) - compiled = FilterEntry.compile_filter(filter_string, filter_type) - if compiled is None: - active = False - return FilterEntry(name, active, compiled, filter_string) - - @classmethod - def compile_filter(cls, filter_string, filter_type): - if filter_type == FilterEntry.REGEX: - compiled = FilterEntry._compile_regex(filter_string) - elif filter_type == FilterEntry.SHELL: - compiled = FilterEntry._compile_shell_pattern(filter_string) - else: - raise ValueError, "Unknown filter type" - return compiled - def __copy__(self): - new = type(self)(self.label, self.active, None, self.filter_string) - if self.filter is not None: - new.filter = re.compile(self.filter.pattern, self.filter.flags) - return new - - -class MeldApp(gobject.GObject): - - __gsignals__ = { - 'file-filters-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ()), - 'text-filters-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ()), - } +class MeldApp(Gtk.Application): def __init__(self): - gobject.GObject.__init__(self) - gobject.set_application_name("Meld") - gtk.window_set_default_icon_name("meld") - self.version = version - self.prefs = preferences.MeldPreferences() - self.prefs.notify_add(self.on_preference_changed) - self.file_filters = self._parse_filters(self.prefs.filters, - FilterEntry.SHELL) - self.text_filters = self._parse_filters(self.prefs.regexes, - FilterEntry.REGEX) - - def create_window(self): - self.window = meldwindow.MeldWindow() - return self.window - - def on_preference_changed(self, key, val): - if key == "filters": - self.file_filters = self._parse_filters(val, FilterEntry.SHELL) - self.emit('file-filters-changed') - elif key == "regexes": - self.text_filters = self._parse_filters(val, FilterEntry.REGEX) - self.emit('text-filters-changed') - - def _parse_filters(self, string, filt_type): - filt = [FilterEntry.parse(l, filt_type) for l in string.split("\n")] - return [f for f in filt if f is not None] + Gtk.Application.__init__(self) + self.set_flags(Gio.ApplicationFlags.HANDLES_COMMAND_LINE) + self.set_application_id("org.gnome.meld") + GLib.set_application_name("Meld") + Gtk.Window.set_default_icon_name("meld") + + def do_startup(self): + Gtk.Application.do_startup(self) + + actions = ( + ("preferences", self.preferences_callback), + ("help", self.help_callback), + ("about", self.about_callback), + ("quit", self.quit_callback), + ) + for (name, callback) in actions: + action = Gio.SimpleAction.new(name, None) + action.connect('activate', callback) + self.add_action(action) + + # TODO: Should not be necessary but Builder doesn't understand Menus + builder = meld.ui.util.get_builder("application.ui") + menu = builder.get_object("app-menu") + self.set_app_menu(menu) + # self.set_menubar() + self.new_window() + + def do_activate(self): + self.get_active_window().present() + + def do_command_line(self, command_line): + self.activate() + tab = self.parse_args(command_line) + + if isinstance(tab, int): + return tab + elif tab: + def done(tab, status): + self.release() + tab.command_line.set_exit_status(status) + tab.command_line = None + + self.hold() + tab.command_line = command_line + tab.connect('close', done) + + window = self.get_active_window().meldwindow + if not window.has_pages(): + window.append_new_comparison() + window.widget.show() + return 0 + + def do_window_removed(self, widget): + widget.meldwindow = None + Gtk.Application.do_window_removed(self, widget) + + # We can't override do_local_command_line because it has no introspection + # annotations: https://bugzilla.gnome.org/show_bug.cgi?id=687912 + + # def do_local_command_line(self, command_line): + # return False + + def preferences_callback(self, action, parameter): + meld.preferences.PreferencesDialog(self.get_active_window()) + + def help_callback(self, action, parameter): + Gtk.show_uri(Gdk.Screen.get_default(), "help:meld", + Gtk.get_current_event_time()) + + def about_callback(self, action, parameter): + about = meld.ui.util.get_widget("application.ui", "aboutdialog") + about.set_version(meld.conf.__version__) + about.set_transient_for(self.get_active_window()) + about.run() + about.destroy() + + def quit_callback(self, action, parameter): + for window in self.get_windows(): + cancelled = window.emit("delete-event", + Gdk.Event(Gdk.EventType.DELETE)) + if cancelled: + return + window.destroy() + self.quit() + + def new_window(self): + window = meldwindow.MeldWindow() + self.add_window(window.widget) + window.widget.meldwindow = window + return window + + def open_paths(self, paths, **kwargs): + new_tab = kwargs.pop('new_tab') + if new_tab: + window = self.get_active_window().meldwindow + else: + window = self.new_window() + return window.open_paths(paths, **kwargs) def diff_files_callback(self, option, opt_str, value, parser): """Gather --diff arguments and append to a list""" @@ -147,57 +147,143 @@ diff_files_args.append(arg) del parser.rargs[0] - if len(diff_files_args) not in (1, 2, 3, 4): + if len(diff_files_args) not in (1, 2, 3): raise optparse.OptionValueError( _("wrong number of arguments supplied to --diff")) parser.values.diff.append(diff_files_args) - def parse_args(self, rawargs): - usages = [("", _("Start with an empty window")), - ("<%s|%s>" % (_("file"), _("dir")), _("Start a version control comparison")), - ("<%s> <%s> [<%s>]" % ((_("file"),) * 3), _("Start a 2- or 3-way file comparison")), - ("<%s> <%s> [<%s>]" % ((_("dir"),) * 3), _("Start a 2- or 3-way directory comparison")), - ("<%s> <%s>" % (_("file"), _("dir")), _("Start a comparison between file and dir/file"))] + def parse_args(self, command_line): + usages = [ + ("", _("Start with an empty window")), + ("<%s|%s>" % (_("file"), _("folder")), + _("Start a version control comparison")), + ("<%s> <%s> [<%s>]" % ((_("file"),) * 3), + _("Start a 2- or 3-way file comparison")), + ("<%s> <%s> [<%s>]" % ((_("folder"),) * 3), + _("Start a 2- or 3-way folder comparison")), + ] pad_args_fmt = "%-" + str(max([len(s[0]) for s in usages])) + "s %s" - usage = "\n" + "\n".join([" %prog " + pad_args_fmt % u for u in usages]) + usage_lines = [" %prog " + pad_args_fmt % u for u in usages] + usage = "\n" + "\n".join(usage_lines) + + class GLibFriendlyOptionParser(optparse.OptionParser): - parser = optparse.OptionParser( + def __init__(self, command_line, *args, **kwargs): + self.command_line = command_line + self.should_exit = False + self.output = StringIO.StringIO() + optparse.OptionParser.__init__(self, *args, **kwargs) + + def exit(self, *args): + self.should_exit = True + # FIXME: This is... let's say... an unsupported method. Let's + # be circumspect about the likelihood of this working. + try: + self.command_line.do_print_literal( + self.command_line, self.output.getvalue()) + except: + print(self.output.getvalue()) + + def print_usage(self, file=None): + if self.usage: + print(self.get_usage(), file=self.output) + + def print_version(self, file=None): + if self.version: + print(self.get_version(), file=self.output) + + def print_help(self, file=None): + print(self.format_help(), file=self.output) + + parser = GLibFriendlyOptionParser( + command_line=command_line, usage=usage, description=_("Meld is a file and directory comparison tool."), - version="%prog " + version) - parser.add_option("-L", "--label", action="append", default=[], + version="%prog " + meld.conf.__version__) + parser.add_option( + "-L", "--label", action="append", default=[], help=_("Set label to use instead of file name")) - parser.add_option("-a", "--auto-compare", action="store_true", default=False, + parser.add_option( + "-n", "--newtab", action="store_true", default=False, + help=_("Open a new tab in an already running instance")) + parser.add_option( + "-a", "--auto-compare", action="store_true", default=False, help=_("Automatically compare all differing files on startup")) - parser.add_option("-u", "--unified", action="store_true", - help=_("Ignored for compatibility")) - parser.add_option("-o", "--output", action="store", type="string", + parser.add_option( + "-u", "--unified", action="store_true", + help=_("Ignored for compatibility")) + parser.add_option( + "-o", "--output", action="store", type="string", dest="outfile", default=None, help=_("Set the target file for saving a merge result")) - parser.add_option("", "--diff", action="callback", callback=self.diff_files_callback, - dest="diff", default=[], - help=_("Creates a diff tab for up to 3 supplied files or directories.")) + parser.add_option( + "--auto-merge", None, action="store_true", default=False, + help=_("Automatically merge files")) + parser.add_option( + "", "--comparison-file", action="store", type="string", + dest="comparison_file", default=None, + help=_("Load a saved comparison from a Meld comparison file")) + parser.add_option( + "", "--diff", action="callback", callback=self.diff_files_callback, + dest="diff", default=[], + help=_("Create a diff tab for the supplied files or folders")) + + rawargs = command_line.get_arguments()[1:] options, args = parser.parse_args(rawargs) - if len(args) > 4: - parser.error(_("too many arguments (wanted 0-4, got %d)") % len(args)) - elif len(args) == 4 and any([os.path.isdir(f) for f in args]): - parser.error(_("can't compare more than three directories")) - - for files in options.diff: - if len(files) == 4 and any([os.path.isdir(f) for f in files]): - parser.error(_("can't compare more than three directories")) - self.window.open_paths(files) - - tab = self.window.open_paths(args, options.auto_compare) - if options.label and tab: - tab.set_labels(options.label) + parser.command_line = None + if parser.should_exit: + if command_line.get_is_remote(): + return 0 + else: + self.quit() - if options.outfile and tab and isinstance(tab, filediff.FileDiff): - tab.set_merge_output_file(options.outfile) + if len(args) > 3: + parser.error(_("too many arguments (wanted 0-3, got %d)") % + len(args)) + elif options.auto_merge and len(args) < 3: + parser.error(_("can't auto-merge less than 3 files")) + elif options.auto_merge and any([os.path.isdir(f) for f in args]): + parser.error(_("can't auto-merge directories")) + + if options.comparison_file or (len(args) == 1 and + args[0].endswith(".meldcmp")): + path = options.comparison_file or args[0] + comparison_file_path = os.path.expanduser(path) + gio_file = Gio.File.new_for_path(comparison_file_path) + try: + tab = self.window.append_recent(gio_file.get_uri()) + except (IOError, ValueError): + parser.error(_("Error reading saved comparison file")) + return tab + + error = None + comparisons = options.diff + [args] + options.newtab = options.newtab or not command_line.get_is_remote() + for i, paths in enumerate(comparisons): + try: + tab = self.open_paths( + paths, auto_compare=options.auto_compare, + auto_merge=options.auto_merge, new_tab=options.newtab, + focus=i == 0) + except ValueError as err: + error = err + + if options.label: + tab.set_labels(options.label) + + if options.outfile and isinstance(tab, filediff.FileDiff): + tab.set_merge_output_file(options.outfile) + + if error: + if not self.window.has_pages(): + parser.error(error) + else: + print(error) + return tab if len(comparisons) == 1 else None -app = MeldApp() -import filediff -import meldwindow +app = MeldApp() +from . import filediff +from . import meldwindow diff -Nru meld-1.5.3/meld/meldbuffer.py meld-3.11.0/meld/meldbuffer.py --- meld-1.5.3/meld/meldbuffer.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/meldbuffer.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,283 @@ +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009-2013 Kai Willadsen +# +# 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, see . + +from __future__ import unicode_literals + +import sys +from gettext import gettext as _ + +from gi.repository import Gio +from gi.repository import GLib +from gi.repository import GObject +from gi.repository import GtkSource + +from meld.util.compat import text_type + + +class MeldBuffer(GtkSource.Buffer): + + __gtype_name__ = "MeldBuffer" + + def __init__(self, filename=None): + GtkSource.Buffer.__init__(self) + self.data = MeldBufferData(filename) + self.user_action_count = 0 + + def do_begin_user_action(self, *args): + self.user_action_count += 1 + + def do_end_user_action(self, *args): + self.user_action_count -= 1 + + def do_apply_tag(self, tag, start, end): + # Filthy, evil, horrible hack. What we're doing here is trying to + # figure out if a tag apply has come from a paste action, in which + # case GtkTextBuffer will 'helpfully' apply the existing tags in the + # copied selection. There appears to be no way to override this + # behaviour, or to hook in to the necessary paste mechanics to just + # request that we only get plain text or something. We're abusing the + # user_action notion here, because we only apply the tags we actually + # want in a callback. + if tag.props.name == 'inline' and self.user_action_count > 0: + return + return GtkSource.Buffer.do_apply_tag(self, tag, start, end) + + def reset_buffer(self, filename): + """Clear the contents of the buffer and reset its metadata""" + self.delete(*self.get_bounds()) + label = self.data.label if self.data.filename == filename else filename + self.data.reset() + self.data.filename = filename + self.data.label = label + + def get_iter_at_line_or_eof(self, line): + """Return a Gtk.TextIter at the given line, or the end of the buffer. + + This method is like get_iter_at_line, but if asked for a position past + the end of the buffer, this returns the end of the buffer; the + get_iter_at_line behaviour is to return the start of the last line in + the buffer. + """ + if line >= self.get_line_count(): + return self.get_end_iter() + return self.get_iter_at_line(line) + + def insert_at_line(self, line, text): + """Insert text at the given line, or the end of the buffer. + + This method is like insert, but if asked to insert something past the + last line in the buffer, this will insert at the end, and will add a + linebreak before the inserted text. The last line in a Gtk.TextBuffer + is guaranteed never to have a newline, so we need to handle this. + """ + if line >= self.get_line_count(): + # TODO: We need to insert a linebreak here, but there is no + # way to be certain what kind of linebreak to use. + text = "\n" + text + it = self.get_iter_at_line_or_eof(line) + self.insert(it, text) + return it + + +class MeldBufferData(GObject.GObject): + + __gsignals__ = { + str('file-changed'): (GObject.SignalFlags.RUN_FIRST, None, ()), + } + + def __init__(self, filename=None): + GObject.GObject.__init__(self) + self.reset() + self._label = self.filename = filename + + def reset(self): + self.modified = False + self.writable = True + self.editable = True + self._monitor = None + self._mtime = None + self._disk_mtime = None + self.filename = None + self.savefile = None + self._label = None + self.encoding = None + self.newlines = None + + def __del__(self): + self._disconnect_monitor() + + @property + def label(self): + #TRANSLATORS: This is the label of a new, currently-unnamed file. + return self._label or _("") + + @label.setter + def label(self, value): + self._label = value + + def _connect_monitor(self): + if self._filename: + monitor = Gio.File.new_for_path(self._filename).monitor_file( + Gio.FileMonitorFlags.NONE, None) + handler_id = monitor.connect('changed', self._handle_file_change) + self._monitor = monitor, handler_id + + def _disconnect_monitor(self): + if self._monitor: + monitor, handler_id = self._monitor + monitor.disconnect(handler_id) + monitor.cancel() + + def _query_mtime(self, gfile): + try: + time_query = ",".join((Gio.FILE_ATTRIBUTE_TIME_MODIFIED, + Gio.FILE_ATTRIBUTE_TIME_MODIFIED_USEC)) + info = gfile.query_info(time_query, 0, None) + except GLib.GError: + return None + mtime = info.get_modification_time() + return (mtime.tv_sec, mtime.tv_usec) + + def _handle_file_change(self, monitor, f, other_file, event_type): + mtime = self._query_mtime(f) + if self._disk_mtime and mtime > self._disk_mtime: + self.emit('file-changed') + self._disk_mtime = mtime + + @property + def filename(self): + return self._filename + + @filename.setter + def filename(self, value): + self._disconnect_monitor() + self._filename = value + self.update_mtime() + self._connect_monitor() + + def update_mtime(self): + if self._filename: + gfile = Gio.File.new_for_path(self._filename) + self._disk_mtime = self._query_mtime(gfile) + self._mtime = self._disk_mtime + + def current_on_disk(self): + return self._mtime == self._disk_mtime + + +class BufferLines(object): + """Gtk.TextBuffer shim with line-based access and optional filtering + + This class allows a Gtk.TextBuffer to be treated as a list of lines of + possibly-filtered text. If no filter is given, the raw output from the + Gtk.TextBuffer is used. + + The logic here (and in places in FileDiff) requires that Python's + unicode splitlines() implementation and Gtk.TextBuffer agree on where + linebreaks occur. Happily, this is usually the case. + """ + + def __init__(self, buf, textfilter=None): + self.buf = buf + if textfilter is not None: + self.textfilter = textfilter + else: + self.textfilter = lambda x: x + + def __getitem__(self, key): + if isinstance(key, slice): + lo, hi, _ = key.indices(self.buf.get_line_count()) + + # FIXME: If we ask for arbitrary slices past the end of the buffer, + # this will return the last line. + start = self.buf.get_iter_at_line_or_eof(lo) + end = self.buf.get_iter_at_line_or_eof(hi) + txt = text_type(self.buf.get_text(start, end, False), 'utf8') + + filter_txt = self.textfilter(txt) + lines = filter_txt.splitlines() + ends = filter_txt.splitlines(True) + + # The last line in a Gtk.TextBuffer is guaranteed never to end in a + # newline. As splitlines() discards an empty line at the end, we + # need to artificially add a line if the requested slice is past + # the end of the buffer, and the last line in the slice ended in a + # newline. + if hi >= self.buf.get_line_count() and \ + lo < self.buf.get_line_count() and \ + (len(lines) == 0 or len(lines[-1]) != len(ends[-1])): + lines.append("") + ends.append("") + + hi = self.buf.get_line_count() if hi == sys.maxsize else hi + if hi - lo != len(lines): + # These codepoints are considered line breaks by Python, but + # not by GtkTextStore. + additional_breaks = set(('\x0c', '\x85')) + i = 0 + while i < len(ends): + line, end = lines[i], ends[i] + # It's possible that the last line in a file would end in a + # line break character, which requires no joining. + if end and end[-1] in additional_breaks and \ + (not line or line[-1] not in additional_breaks): + assert len(ends) >= i + 1 + lines[i:i + 2] = [line + end[-1] + lines[i + 1]] + ends[i:i + 2] = [end + ends[i + 1]] + i += 1 + + return lines + + elif isinstance(key, int): + if key >= len(self): + raise IndexError + line_start = self.buf.get_iter_at_line_or_eof(key) + line_end = line_start.copy() + if not line_end.ends_line(): + line_end.forward_to_line_end() + txt = self.buf.get_text(line_start, line_end, False) + return text_type(self.textfilter(txt), 'utf8') + + def __len__(self): + return self.buf.get_line_count() + + +class BufferAction(object): + """A helper to undo/redo text insertion/deletion into/from a text buffer""" + + def __init__(self, buf, offset, text): + self.buffer = buf + self.offset = offset + self.text = text + + def delete(self): + start = self.buffer.get_iter_at_offset(self.offset) + end = self.buffer.get_iter_at_offset(self.offset + len(self.text)) + self.buffer.delete(start, end) + + def insert(self): + start = self.buffer.get_iter_at_offset(self.offset) + self.buffer.insert(start, self.text) + + +class BufferInsertionAction(BufferAction): + undo = BufferAction.delete + redo = BufferAction.insert + + +class BufferDeletionAction(BufferAction): + undo = BufferAction.insert + redo = BufferAction.delete diff -Nru meld-1.5.3/meld/melddoc.py meld-3.11.0/meld/melddoc.py --- meld-1.5.3/meld/melddoc.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/melddoc.py 2014-02-22 03:14:57.000000000 +0000 @@ -1,61 +1,85 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2011 Kai Willadsen - -### 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 - - +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2011-2013 Kai Willadsen +# +# 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, see . + +import logging +import shlex +import string import subprocess import sys -import gobject -import task -import undo -import gtk -import os +from gi.repository import GLib +from gi.repository import GObject +from gi.repository import Gio +from gi.repository import Gtk + +from . import task + from gettext import gettext as _ +from meld.settings import settings + +log = logging.getLogger(__name__) -class MeldDoc(gobject.GObject): +def make_custom_editor_command(path, line=0): + custom_command = settings.get_string('custom-editor-command') + fmt = string.Formatter() + replacements = [tok[1] for tok in fmt.parse(custom_command)] + + if not any(replacements): + cmd = " ".join([custom_command, path]) + elif not all(r in (None, 'file', 'line') for r in replacements): + cmd = " ".join([custom_command, path]) + log.error("Unsupported fields found", ) + else: + cmd = custom_command.format(file=path, line=line) + return shlex.split(cmd) + + +class MeldDoc(GObject.GObject): """Base class for documents in the meld application. """ __gsignals__ = { - 'label-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - (gobject.TYPE_STRING, gobject.TYPE_STRING)), - 'file-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - (gobject.TYPE_STRING,)), - 'create-diff': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - (gobject.TYPE_PYOBJECT,)), - 'status-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - (gobject.TYPE_PYOBJECT,)), - 'current-diff-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + 'label-changed': (GObject.SignalFlags.RUN_FIRST, None, + (GObject.TYPE_STRING, GObject.TYPE_STRING)), + 'file-changed': (GObject.SignalFlags.RUN_FIRST, None, + (GObject.TYPE_STRING,)), + 'create-diff': (GObject.SignalFlags.RUN_FIRST, None, + (GObject.TYPE_PYOBJECT, + GObject.TYPE_PYOBJECT)), + 'status-changed': (GObject.SignalFlags.RUN_FIRST, None, + (GObject.TYPE_PYOBJECT,)), + 'current-diff-changed': (GObject.SignalFlags.RUN_FIRST, None, ()), - 'next-diff-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, + 'next-diff-changed': (GObject.SignalFlags.RUN_FIRST, None, (bool, bool)), + 'close': (GObject.SignalFlags.RUN_FIRST, None, (bool,)), } - def __init__(self, prefs): - gobject.GObject.__init__(self) - self.undosequence = undo.UndoSequence() + def __init__(self): + GObject.GObject.__init__(self) self.scheduler = task.FifoScheduler() - self.prefs = prefs - self.prefs.notify_add(self.on_preference_changed) self.num_panes = 0 self.label_text = _("untitled") self.tooltip_text = _("untitled") + def get_comparison(self): + """Get the comparison type and path(s) being compared""" + pass + def save(self): pass @@ -66,43 +90,57 @@ if self.scheduler.tasks_pending(): self.scheduler.remove_task(self.scheduler.get_current_task()) - def _open_files(self, selected): - files = [f for f in selected if os.path.isfile(f)] - dirs = [d for d in selected if os.path.isdir(d)] - - def os_open(paths): - for path in paths: - if sys.platform == "win32": - subprocess.Popen(["start", path], shell=True) - elif sys.platform == "darwin": - subprocess.Popen(["open", path]) - else: - subprocess.Popen(["xdg-open", path]) + def _open_files(self, selected, line=0): + query_attrs = ",".join((Gio.FILE_ATTRIBUTE_STANDARD_TYPE, + Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE)) + + def os_open(path): + if not path: + return + if sys.platform == "win32": + subprocess.Popen(["start", path], shell=True) + elif sys.platform == "darwin": + subprocess.Popen(["open", path]) + else: + subprocess.Popen(["xdg-open", path]) - if len(files): - cmd = self.prefs.get_editor_command(files) - if cmd: - os.spawnvp(os.P_NOWAIT, cmd[0], cmd) + def open_cb(source, result, *data): + info = source.query_info_finish(result) + file_type = info.get_file_type() + if file_type == Gio.FileType.DIRECTORY: + os_open(source.get_path()) + elif file_type == Gio.FileType.REGULAR: + content_type = info.get_content_type() + path = source.get_path() + # FIXME: Content types are broken on Windows with current gio + if Gio.content_type_is_a(content_type, "text/plain") or \ + sys.platform == "win32": + if settings.get_boolean('use-system-editor'): + gfile = Gio.File.new_for_path(path) + Gio.AppInfo.launch_default_for_uri( + gfile.get_uri(), None) + else: + editor = make_custom_editor_command(path, line) + if editor: + # TODO: If the editor is badly set up, this fails + # silently + subprocess.Popen(editor) + else: + os_open(path) + else: + os_open(path) else: - os_open(files) + # TODO: Add some kind of 'failed to open' notification + pass - os_open(dirs) + for f in [Gio.File.new_for_path(s) for s in selected]: + f.query_info_async(query_attrs, 0, GLib.PRIORITY_LOW, None, + open_cb, None) def open_external(self): pass - def on_undo_activate(self): - if self.undosequence.can_undo(): - self.undosequence.undo() - - def on_redo_activate(self): - if self.undosequence.can_redo(): - self.undosequence.redo() - def on_refresh_activate(self, *extra): - self.on_reload_activate(self, *extra) - - def on_reload_activate(self, *extra): pass def on_find_activate(self, *extra): @@ -117,9 +155,6 @@ def on_replace_activate(self, *extra): pass - def on_preference_changed(self, key, value): - pass - def on_file_changed(self, filename): pass @@ -136,6 +171,8 @@ uimanager.insert_action_group(self.actiongroup, -1) self.popup_menu = uimanager.get_widget("/Popup") uimanager.ensure_update() + if hasattr(self, "focus_pane") and self.focus_pane: + self.scheduler.add_task(self.focus_pane.grab_focus) def on_container_switch_out_event(self, uimanager): """Called when the container app switches away from this tab. @@ -145,17 +182,8 @@ def on_delete_event(self, appquit=0): """Called when the docs container is about to close. - A doc normally returns gtk.RESPONSE_OK but may return - gtk.RESPONSE_CANCEL which requests the container - to not delete it. In the special case when the - app is about to quit, gtk.RESPONSE_CLOSE may be returned - which instructs the container to quit without any - more callbacks. - """ - return gtk.RESPONSE_OK - def on_quit_event(self): - """Called when the docs container is about to close. - There is no way to interrupt the quit event. + A doc normally returns Gtk.ResponseType.OK, but may instead return + Gtk.ResponseType.CANCEL to request that the container not delete it. """ - pass + return Gtk.ResponseType.OK diff -Nru meld-1.5.3/meld/meldwindow.py meld-3.11.0/meld/meldwindow.py --- meld-1.5.3/meld/meldwindow.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/meldwindow.py 2014-02-22 03:14:57.000000000 +0000 @@ -1,185 +1,155 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2010-2011 Kai Willadsen - -### 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 -from gettext import gettext as _ - -import gio -import gtk -import gobject - -import dirdiff -import filediff -import filemerge -import paths -from ui import gnomeglade -import misc -from ui import notebooklabel -import preferences -import task -import vcview - -from util.sourceviewer import srcviewer -from meldapp import app - -################################################################################ -# -# NewDocDialog +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2010-2013 Kai Willadsen # -################################################################################ - -class NewDocDialog(gnomeglade.Component): - def __init__(self, parentapp): - gnomeglade.Component.__init__(self, paths.ui_dir("meldapp.ui"), "newdialog") - self.map_widgets_into_lists(["fileentry", "direntry", "vcentry", "three_way_compare"]) - self.entrylists = self.fileentry, self.direntry, self.vcentry - self.widget.set_transient_for(parentapp.widget) - self.fileentry[0].set_sensitive(self.three_way_compare[0].get_active()) - self.direntry[0].set_sensitive(self.three_way_compare[1].get_active()) - self.diff_methods = (parentapp.append_filediff, - parentapp.append_dirdiff, - parentapp.append_vcview) - self.widget.show_all() - - def on_entry_activate(self, entry): - for el in self.entrylists: - if entry in el: - i = el.index(entry) - if i == len(el) - 1: - self.button_ok.grab_focus() - else: - el[i+1].focus_entry() - - def on_three_way_toggled(self, button): - page = self.three_way_compare.index(button) - self.entrylists[page][0].set_sensitive( button.get_active() ) - self.entrylists[page][not button.get_active()].focus_entry() - - def on_response(self, dialog, arg): - if arg == gtk.RESPONSE_OK: - page = self.type_notebook.get_current_page() - paths = [e.get_full_path() or "" for e in self.entrylists[page]] - if page < 2 and not self.three_way_compare[page].get_active(): - paths.pop(0) - for path in paths: - self.entrylists[page][0].prepend_history(path) - if page == 2: - self.diff_methods[page](paths[0]) - else: - self.diff_methods[page](paths) - self.widget.destroy() - - -################################################################################ +# 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. # -# MeldStatusBar +# 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. # -################################################################################ - -class MeldStatusBar(object): +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . - def __init__(self, task_progress, task_status, doc_status): - self.task_progress = task_progress - self.task_status = task_status - self.doc_status = doc_status +import os +from gettext import gettext as _ - def set_task_status(self, status): - self.task_status.pop(1) - self.task_status.push(1, status) +from gi.repository import Gdk +from gi.repository import Gio +from gi.repository import GLib +from gi.repository import Gtk + +from . import dirdiff +from . import filediff +from . import filemerge +from . import melddoc +from . import newdifftab +from . import recent +from . import task +from . import vcview +from .ui import gnomeglade +from .ui import notebooklabel - def set_doc_status(self, status): - self.doc_status.pop(1) - self.doc_status.push(1, status) +from .util.compat import string_types +from meld.recent import recent_comparisons +from meld.settings import interface_settings, settings -################################################################################ -# -# MeldApp -# -################################################################################ class MeldWindow(gnomeglade.Component): - # - # init - # def __init__(self): - gladefile = paths.ui_dir("meldapp.ui") - gnomeglade.Component.__init__(self, gladefile, "meldapp") + gnomeglade.Component.__init__(self, "meldapp.ui", "meldapp") + self.widget.set_name("meldapp") actions = ( ("FileMenu", None, _("_File")), - ("New", gtk.STOCK_NEW, _("_New..."), "N", _("Start a new comparison"), self.on_menu_file_new_activate), - ("Save", gtk.STOCK_SAVE, None, None, _("Save the current file"), self.on_menu_save_activate), - ("SaveAs", gtk.STOCK_SAVE_AS, None, "S", "Save the current file with a different name", self.on_menu_save_as_activate), - ("Close", gtk.STOCK_CLOSE, None, None, _("Close the current file"), self.on_menu_close_activate), - ("Quit", gtk.STOCK_QUIT, None, None, _("Quit the program"), self.on_menu_quit_activate), + ("New", Gtk.STOCK_NEW, _("_New Comparison..."), "N", + _("Start a new comparison"), + self.on_menu_file_new_activate), + ("Save", Gtk.STOCK_SAVE, None, None, + _("Save the current file"), + self.on_menu_save_activate), + ("SaveAs", Gtk.STOCK_SAVE_AS, _("Save As..."), "S", + _("Save the current file with a different name"), + self.on_menu_save_as_activate), + ("Close", Gtk.STOCK_CLOSE, None, None, + _("Close the current file"), + self.on_menu_close_activate), ("EditMenu", None, _("_Edit")), - ("Undo", gtk.STOCK_UNDO, None, "Z", _("Undo the last action"), self.on_menu_undo_activate), - ("Redo", gtk.STOCK_REDO, None, "Z", _("Redo the last undone action"), self.on_menu_redo_activate), - ("Cut", gtk.STOCK_CUT, None, None, _("Cut the selection"), self.on_menu_cut_activate), - ("Copy", gtk.STOCK_COPY, None, None, _("Copy the selection"), self.on_menu_copy_activate), - ("Paste", gtk.STOCK_PASTE, None, None, _("Paste the clipboard"), self.on_menu_paste_activate), - ("Find", gtk.STOCK_FIND, None, None, _("Search for text"), self.on_menu_find_activate), - ("FindNext", None, _("Find Ne_xt"), "G", _("Search forwards for the same text"), self.on_menu_find_next_activate), - ("FindPrevious", None, _("Find _Previous"), "G", _("Search backwards for the same text"), self.on_menu_find_previous_activate), - ("Replace", gtk.STOCK_FIND_AND_REPLACE, _("_Replace"), "H", _("Find and replace text"), self.on_menu_replace_activate), - ("Preferences", gtk.STOCK_PREFERENCES, _("Prefere_nces"), None, _("Configure the application"), self.on_menu_preferences_activate), + ("Undo", Gtk.STOCK_UNDO, None, "Z", + _("Undo the last action"), + self.on_menu_undo_activate), + ("Redo", Gtk.STOCK_REDO, None, "Z", + _("Redo the last undone action"), + self.on_menu_redo_activate), + ("Cut", Gtk.STOCK_CUT, None, None, _("Cut the selection"), + self.on_menu_cut_activate), + ("Copy", Gtk.STOCK_COPY, None, None, _("Copy the selection"), + self.on_menu_copy_activate), + ("Paste", Gtk.STOCK_PASTE, None, None, _("Paste the clipboard"), + self.on_menu_paste_activate), + ("Find", Gtk.STOCK_FIND, _("Find..."), None, _("Search for text"), + self.on_menu_find_activate), + ("FindNext", None, _("Find Ne_xt"), "G", + _("Search forwards for the same text"), + self.on_menu_find_next_activate), + ("FindPrevious", None, _("Find _Previous"), "G", + _("Search backwards for the same text"), + self.on_menu_find_previous_activate), + ("Replace", Gtk.STOCK_FIND_AND_REPLACE, + _("_Replace..."), "H", + _("Find and replace text"), + self.on_menu_replace_activate), ("ChangesMenu", None, _("_Changes")), - ("NextChange", gtk.STOCK_GO_DOWN, _("Next change"), "Down", _("Go to the next change"), self.on_menu_edit_down_activate), - ("PrevChange", gtk.STOCK_GO_UP, _("Previous change"), "Up", _("Go to the previous change"), self.on_menu_edit_up_activate), - ("OpenExternal", None, _("Open externally"), None, _("Open selected file or directory in the default external application"), self.on_open_external), + ("NextChange", Gtk.STOCK_GO_DOWN, _("Next Change"), "Down", + _("Go to the next change"), + self.on_menu_edit_down_activate), + ("PrevChange", Gtk.STOCK_GO_UP, _("Previous Change"), "Up", + _("Go to the previous change"), + self.on_menu_edit_up_activate), + ("OpenExternal", None, _("Open Externally"), None, + _("Open selected file or directory in the default external " + "application"), + self.on_open_external), ("ViewMenu", None, _("_View")), - ("FileStatus", None, _("File status")), - ("VcStatus", None, _("Version status")), - ("FileFilters", None, _("File filters")), - ("Stop", gtk.STOCK_STOP, None, "Escape", _("Stop the current action"), self.on_toolbar_stop_clicked), - ("Refresh", gtk.STOCK_REFRESH, None, "R", _("Refresh the view"), self.on_menu_refresh_activate), - ("Reload", gtk.STOCK_REFRESH, _("Reload"), "R", _("Reload the comparison"), self.on_menu_reload_activate), + ("FileStatus", None, _("File Status")), + ("VcStatus", None, _("Version Status")), + ("FileFilters", None, _("File Filters")), + ("Stop", Gtk.STOCK_STOP, None, "Escape", + _("Stop the current action"), + self.on_toolbar_stop_clicked), + ("Refresh", Gtk.STOCK_REFRESH, None, "R", + _("Refresh the view"), + self.on_menu_refresh_activate), ("TabMenu", None, _("_Tabs")), - ("PrevTab", None, _("_Previous Tab"), "Page_Up", _("Activate previous tab"), self.on_prev_tab), - ("NextTab", None, _("_Next Tab"), "Page_Down", _("Activate next tab"), self.on_next_tab), - ("MoveTabPrev", None, _("Move Tab _Left"), "Page_Up", _("Move current tab to left"), self.on_move_tab_prev), - ("MoveTabNext", None, _("Move Tab _Right"), "Page_Down", _("Move current tab to right"), self.on_move_tab_next), - - ("HelpMenu", None, _("_Help")), - ("Help", gtk.STOCK_HELP, _("_Contents"), "F1", _("Open the Meld manual"), self.on_menu_help_activate), - ("BugReport", gtk.STOCK_DIALOG_WARNING, _("Report _Bug"), None, _("Report a bug in Meld"), self.on_menu_help_bug_activate), - ("About", gtk.STOCK_ABOUT, None, None, _("About this program"), self.on_menu_about_activate), + ("PrevTab", None, _("_Previous Tab"), "Page_Up", + _("Activate previous tab"), + self.on_prev_tab), + ("NextTab", None, _("_Next Tab"), "Page_Down", + _("Activate next tab"), + self.on_next_tab), + ("MoveTabPrev", None, + _("Move Tab _Left"), "Page_Up", + _("Move current tab to left"), + self.on_move_tab_prev), + ("MoveTabNext", None, + _("Move Tab _Right"), "Page_Down", + _("Move current tab to right"), + self.on_move_tab_next), ) toggleactions = ( - ("Fullscreen", None, _("Full Screen"), "F11", _("View the comparison in full screen"), self.on_action_fullscreen_toggled, False), - ("ToolbarVisible", None, _("_Toolbar"), None, _("Show or hide the toolbar"), self.on_menu_toolbar_toggled, app.prefs.toolbar_visible), - ("StatusbarVisible", None, _("_Statusbar"), None, _("Show or hide the statusbar"), self.on_menu_statusbar_toggled, app.prefs.statusbar_visible) + ("Fullscreen", None, _("Fullscreen"), "F11", + _("View the comparison in fullscreen"), + self.on_action_fullscreen_toggled, False), + ("ToolbarVisible", None, _("_Toolbar"), None, + _("Show or hide the toolbar"), + None, True), ) - ui_file = paths.ui_dir("meldapp-ui.xml") - self.actiongroup = gtk.ActionGroup('MainActions') + ui_file = gnomeglade.ui_file("meldapp-ui.xml") + self.actiongroup = Gtk.ActionGroup('MainActions') self.actiongroup.set_translation_domain("meld") self.actiongroup.add_actions(actions) self.actiongroup.add_toggle_actions(toggleactions) - self.ui = gtk.UIManager() + + recent_action = Gtk.RecentAction("Recent", _("Open Recent"), + _("Open recent files"), None) + recent_action.set_show_private(True) + recent_action.set_filter(recent_comparisons.recent_filter) + recent_action.set_sort_type(Gtk.RecentSortType.MRU) + recent_action.connect("item-activated", self.on_action_recent) + self.actiongroup.add_action(recent_action) + + self.ui = Gtk.UIManager() self.ui.insert_action_group(self.actiongroup, 0) self.ui.add_ui_from_file(ui_file) - self.ui.connect("connect-proxy", self._on_uimanager_connect_proxy) - self.ui.connect("disconnect-proxy", self._on_uimanager_disconnect_proxy) self.tab_switch_actiongroup = None self.tab_switch_merge_id = None @@ -188,121 +158,115 @@ self.widget.add_accel_group(self.ui.get_accel_group()) self.menubar = self.ui.get_widget('/Menubar') self.toolbar = self.ui.get_widget('/Toolbar') + self.toolbar.get_style_context().add_class( + Gtk.STYLE_CLASS_PRIMARY_TOOLBAR) + + settings.bind('toolbar-visible', + self.actiongroup.get_action('ToolbarVisible'), 'active', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('toolbar-visible', self.toolbar, 'visible', + Gio.SettingsBindFlags.DEFAULT) + interface_settings.bind('toolbar-style', self.toolbar, 'toolbar-style', + Gio.SettingsBindFlags.DEFAULT) # Add alternate keybindings for Prev/Next Change accels = self.ui.get_accel_group() - (keyval, mask) = gtk.accelerator_parse("D") - accels.connect_group(keyval, mask, 0, self.on_menu_edit_down_activate) - (keyval, mask) = gtk.accelerator_parse("E") - accels.connect_group(keyval, mask, 0, self.on_menu_edit_up_activate) - - self.appvbox.pack_start(self.menubar, expand=False) - self.appvbox.pack_start(self.toolbar, expand=False) - # TODO: should possibly use something other than doc_status - self._menu_context = self.doc_status.get_context_id("Tooltips") - self.statusbar = MeldStatusBar(self.task_progress, self.task_status, self.doc_status) + (keyval, mask) = Gtk.accelerator_parse("D") + accels.connect(keyval, mask, 0, self.on_menu_edit_down_activate) + (keyval, mask) = Gtk.accelerator_parse("E") + accels.connect(keyval, mask, 0, self.on_menu_edit_up_activate) + (keyval, mask) = Gtk.accelerator_parse("F5") + accels.connect(keyval, mask, 0, self.on_menu_refresh_activate) + + # Initialise sensitivity for important actions + self.actiongroup.get_action("Stop").set_sensitive(False) + self._update_page_action_sensitivity() + + self.appvbox.pack_start(self.menubar, False, True, 0) + self.toolbar_holder.pack_start(self.toolbar, True, True, 0) + + # Double toolbars to work around UIManager integration issues + self.secondary_toolbar = Gtk.Toolbar() + self.secondary_toolbar.get_style_context().add_class( + Gtk.STYLE_CLASS_PRIMARY_TOOLBAR) + self.toolbar_holder.pack_end(self.secondary_toolbar, False, True, 0) + + toolbutton = Gtk.ToolItem() + self.spinner = Gtk.Spinner() + toolbutton.add(self.spinner) + self.secondary_toolbar.insert(toolbutton, -1) + # Set a minimum size because the spinner requests nothing + self.secondary_toolbar.set_size_request(30, -1) + self.secondary_toolbar.show_all() + self.widget.drag_dest_set( - gtk.DEST_DEFAULT_MOTION | gtk.DEST_DEFAULT_HIGHLIGHT | gtk.DEST_DEFAULT_DROP, - [ ('text/uri-list', 0, 0) ], - gtk.gdk.ACTION_COPY) + Gtk.DestDefaults.MOTION | Gtk.DestDefaults.HIGHLIGHT | + Gtk.DestDefaults.DROP, + None, Gdk.DragAction.COPY) + self.widget.drag_dest_add_uri_targets() self.widget.connect("drag_data_received", self.on_widget_drag_data_received) - self.toolbar.set_style(app.prefs.get_toolbar_style()) - self.toolbar.props.visible = app.prefs.toolbar_visible - self.status_box.props.visible = app.prefs.statusbar_visible - app.prefs.notify_add(self.on_preference_changed) self.idle_hooked = 0 self.scheduler = task.LifoScheduler() - self.scheduler.connect("runnable", self.on_scheduler_runnable ) - self.widget.set_default_size(app.prefs.window_size_x, app.prefs.window_size_y) + self.scheduler.connect("runnable", self.on_scheduler_runnable) + window_size = settings.get_value('window-size') + self.widget.set_default_size(window_size[0], window_size[1]) self.ui.ensure_update() - self.widget.show() self.diff_handler = None + self.undo_handlers = tuple() self.widget.connect('focus_in_event', self.on_focus_change) self.widget.connect('focus_out_event', self.on_focus_change) - def on_focus_change(self, widget, event, callback_data = None): + def on_focus_change(self, widget, event, callback_data=None): for idx in range(self.notebook.get_n_pages()): w = self.notebook.get_nth_page(idx) - if hasattr(w.get_data("pyobject"), 'on_focus_change'): - w.get_data("pyobject").on_focus_change() + if hasattr(w.pyobject, 'on_focus_change'): + w.pyobject.on_focus_change() # Let the rest of the stack know about this event return False - def on_widget_drag_data_received(self, wid, context, x, y, selection_data, info, time): + def on_widget_drag_data_received(self, wid, context, x, y, selection_data, + info, time): if len(selection_data.get_uris()) != 0: paths = [] for uri in selection_data.get_uris(): - paths.append(gio.File(uri=uri).get_path()) + paths.append(Gio.File.new_for_uri(uri).get_path()) self.open_paths(paths) return True - def _on_uimanager_connect_proxy(self, ui, action, widget): - tooltip = action.props.tooltip - if not tooltip: - return - if isinstance(widget, gtk.MenuItem): - cid = widget.connect("select", self._on_action_item_select_enter, tooltip) - cid2 = widget.connect("deselect", self._on_action_item_deselect_leave) - widget.set_data("meldapp::proxy-signal-ids", (cid, cid2)) - elif isinstance(widget, gtk.ToolButton): - cid = widget.child.connect("enter", self._on_action_item_select_enter, tooltip) - cid2 = widget.child.connect("leave", self._on_action_item_deselect_leave) - widget.set_data("meldapp::proxy-signal-ids", (cid, cid2)) - - def _on_uimanager_disconnect_proxy(self, ui, action, widget): - cids = widget.get_data("meldapp::proxy-signal-ids") - if not cids: - return - if isinstance(widget, gtk.ToolButton): - widget = widget.child - for cid in cids: - widget.disconnect(cid) - - def _on_action_item_select_enter(self, item, tooltip): - self.statusbar.doc_status.push(self._menu_context, tooltip) - - def _on_action_item_deselect_leave(self, item): - self.statusbar.doc_status.pop(self._menu_context) - def on_idle(self): ret = self.scheduler.iteration() - if ret: - if type(ret) in (type(""), type(u"")): - self.statusbar.set_task_status(ret) - elif type(ret) == type(0.0): - self.statusbar.task_progress.set_fraction(ret) - else: - self.statusbar.task_progress.pulse() - else: - self.statusbar.task_progress.set_fraction(0) - if self.scheduler.tasks_pending(): - self.actiongroup.get_action("Stop").set_sensitive(True) - return 1 - else: - self.statusbar.set_task_status("") - self.idle_hooked = 0 + if ret and isinstance(ret, string_types): + self.spinner.set_tooltip_text(ret) + + pending = self.scheduler.tasks_pending() + if not pending: + self.spinner.stop() + self.spinner.hide() + self.spinner.set_tooltip_text("") + self.idle_hooked = None self.actiongroup.get_action("Stop").set_sensitive(False) - return 0 + return pending def on_scheduler_runnable(self, sched): if not self.idle_hooked: - self.idle_hooked = 1 - gobject.idle_add( self.on_idle ) + self.spinner.show() + self.spinner.start() + self.actiongroup.get_action("Stop").set_sensitive(True) + self.idle_hooked = GLib.idle_add(self.on_idle) - def on_preference_changed(self, key, value): - if key == "toolbar_style": - self.toolbar.set_style(app.prefs.get_toolbar_style()) - elif key == "statusbar_visible": - self.status_box.props.visible = app.prefs.statusbar_visible - elif key == "toolbar_visible": - self.toolbar.props.visible = app.prefs.toolbar_visible - - # - # General events and callbacks - # def on_delete_event(self, *extra): - return self.on_menu_quit_activate() + # Delete pages from right-to-left. This ensures that if a version + # control page is open in the far left page, it will be closed last. + for c in reversed(self.notebook.get_children()): + page = c.pyobject + self.notebook.set_current_page(self.notebook.page_num(page.widget)) + response = self.try_remove_page(page, appquit=1) + if response == Gtk.ResponseType.CANCEL: + return True + + def has_pages(self): + return self.notebook.get_n_pages() > 0 def _update_page_action_sensitivity(self): current_page = self.notebook.get_current_page() @@ -313,23 +277,68 @@ self.actiongroup.get_action("MoveTabPrev").set_sensitive(have_prev_tab) self.actiongroup.get_action("MoveTabNext").set_sensitive(have_next_tab) + if current_page != -1: + page = self.notebook.get_nth_page(current_page).pyobject + else: + page = None + + self.actiongroup.get_action("Close").set_sensitive(bool(page)) + if not isinstance(page, melddoc.MeldDoc): + for action in ("PrevChange", "NextChange", "Cut", "Copy", "Paste", + "Find", "FindNext", "FindPrevious", "Replace", + "Refresh"): + self.actiongroup.get_action(action).set_sensitive(False) + else: + for action in ("Find", "Refresh"): + self.actiongroup.get_action(action).set_sensitive(True) + is_filediff = isinstance(page, filediff.FileDiff) + for action in ("Cut", "Copy", "Paste", "FindNext", "FindPrevious", + "Replace"): + self.actiongroup.get_action(action).set_sensitive(is_filediff) + def on_switch_page(self, notebook, page, which): - newdoc = notebook.get_nth_page(which).get_data("pyobject") - newseq = newdoc.undosequence oldidx = notebook.get_current_page() if oldidx >= 0: - olddoc = notebook.get_nth_page(oldidx).get_data("pyobject") - olddoc.disconnect(self.diff_handler) + olddoc = notebook.get_nth_page(oldidx).pyobject + if self.diff_handler is not None: + olddoc.disconnect(self.diff_handler) olddoc.on_container_switch_out_event(self.ui) - self.actiongroup.get_action("Undo").set_sensitive(newseq.can_undo()) - self.actiongroup.get_action("Redo").set_sensitive(newseq.can_redo()) - nbl = self.notebook.get_tab_label( newdoc.widget ) + if self.undo_handlers: + undoseq = olddoc.undosequence + for handler in self.undo_handlers: + undoseq.disconnect(handler) + self.undo_handlers = tuple() + + newdoc = notebook.get_nth_page(which).pyobject + try: + undoseq = newdoc.undosequence + can_undo = undoseq.can_undo() + can_redo = undoseq.can_redo() + undo_handler = undoseq.connect("can-undo", self.on_can_undo) + redo_handler = undoseq.connect("can-redo", self.on_can_redo) + self.undo_handlers = (undo_handler, redo_handler) + except AttributeError: + can_undo, can_redo = False, False + self.actiongroup.get_action("Undo").set_sensitive(can_undo) + self.actiongroup.get_action("Redo").set_sensitive(can_redo) + + # FileDiff handles save sensitivity; it makes no sense for other modes + if not isinstance(newdoc, filediff.FileDiff): + self.actiongroup.get_action("Save").set_sensitive(False) + self.actiongroup.get_action("SaveAs").set_sensitive(False) + else: + self.actiongroup.get_action("SaveAs").set_sensitive(True) + + nbl = self.notebook.get_tab_label(newdoc.widget) self.widget.set_title(nbl.get_label_text() + " - Meld") - self.statusbar.set_doc_status("") - self.diff_handler = newdoc.connect("next-diff-changed", - self.on_next_diff_changed) newdoc.on_container_switch_in_event(self.ui) - self.scheduler.add_task( newdoc.scheduler ) + if isinstance(newdoc, melddoc.MeldDoc): + self.diff_handler = newdoc.connect("next-diff-changed", + self.on_next_diff_changed) + else: + self.diff_handler = None + if hasattr(newdoc, 'scheduler'): + self.scheduler.add_task(newdoc.scheduler) def after_switch_page(self, notebook, page, which): self._update_page_action_sensitivity() @@ -346,12 +355,15 @@ nbl = self.notebook.get_tab_label(page) nbl.set_label_text(text) nbl.set_tooltip_text(tooltip) - self.widget.set_title(text + " - Meld") + + # Only update the window title if the current page is active + if self.notebook.get_current_page() == self.notebook.page_num(page): + self.widget.set_title(text + " - Meld") self.notebook.child_set_property(page, "menu-label", text) actiongroup = self.tab_switch_actiongroup if actiongroup: - idx = self.notebook.child_get_property(page, "position") + idx = self.notebook.page_num(page) action_name = "SwitchTab%d" % idx actiongroup.get_action(action_name).set_label(text) @@ -365,15 +377,15 @@ self.actiongroup.get_action("PrevChange").set_sensitive(have_prev) self.actiongroup.get_action("NextChange").set_sensitive(have_next) - def on_size_allocate(self, window, rect): - app.prefs.window_size_x = rect.width - app.prefs.window_size_y = rect.height - - # - # Toolbar and menu items (file) - # + def on_configure_event(self, window, event): + state = event.window.get_state() + nosave = Gdk.WindowState.FULLSCREEN | Gdk.WindowState.MAXIMIZED + if not (state & nosave): + variant = GLib.Variant('(ii)', (event.width, event.height)) + settings.set_value('window-size', variant) + def on_menu_file_new_activate(self, menuitem): - NewDocDialog(self) + self.append_new_comparison() def on_menu_save_activate(self, menuitem): self.current_doc().save() @@ -381,29 +393,22 @@ def on_menu_save_as_activate(self, menuitem): self.current_doc().save_as() + def on_action_recent(self, action): + uri = action.get_current_uri() + if not uri: + return + try: + self.append_recent(uri) + except (IOError, ValueError): + # FIXME: Need error handling, but no sensible display location + pass + def on_menu_close_activate(self, *extra): i = self.notebook.get_current_page() if i >= 0: - page = self.notebook.get_nth_page(i).get_data("pyobject") + page = self.notebook.get_nth_page(i).pyobject self.try_remove_page(page) - def on_menu_quit_activate(self, *extra): - # Delete pages from right-to-left. This ensures that if a version - # control page is open in the far left page, it will be closed last. - for c in reversed(self.notebook.get_children()): - page = c.get_data("pyobject") - self.notebook.set_current_page(self.notebook.page_num(page.widget)) - response = self.try_remove_page(page, appquit=1) - if response == gtk.RESPONSE_CANCEL: - return gtk.RESPONSE_CANCEL - for c in self.notebook.get_children(): - c.get_data("pyobject").on_quit_event() - gtk.main_quit() - return gtk.RESPONSE_CLOSE - - # - # Toolbar and menu items (edit) - # def on_menu_undo_activate(self, *extra): self.current_doc().on_undo_activate() @@ -413,9 +418,6 @@ def on_menu_refresh_activate(self, *extra): self.current_doc().on_refresh_activate() - def on_menu_reload_activate(self, *extra): - self.current_doc().on_reload_activate() - def on_menu_find_activate(self, *extra): self.current_doc().on_find_activate() @@ -430,73 +432,38 @@ def on_menu_copy_activate(self, *extra): widget = self.widget.get_focus() - if isinstance(widget, gtk.Editable): + if isinstance(widget, Gtk.Editable): widget.copy_clipboard() - elif isinstance(widget, gtk.TextView): + elif isinstance(widget, Gtk.TextView): widget.emit("copy-clipboard") def on_menu_cut_activate(self, *extra): widget = self.widget.get_focus() - if isinstance(widget, gtk.Editable): + if isinstance(widget, Gtk.Editable): widget.cut_clipboard() - elif isinstance(widget, gtk.TextView): + elif isinstance(widget, Gtk.TextView): widget.emit("cut-clipboard") def on_menu_paste_activate(self, *extra): widget = self.widget.get_focus() - if isinstance(widget, gtk.Editable): + if isinstance(widget, Gtk.Editable): widget.paste_clipboard() - elif isinstance(widget, gtk.TextView): + elif isinstance(widget, Gtk.TextView): widget.emit("paste-clipboard") - # - # Toolbar and menu items (settings) - # - def on_menu_preferences_activate(self, item): - preferences.PreferencesDialog(self.widget, app.prefs) - def on_action_fullscreen_toggled(self, widget): - is_full = self.widget.window.get_state() & gtk.gdk.WINDOW_STATE_FULLSCREEN + window_state = self.widget.get_window().get_state() + is_full = window_state & Gdk.WindowState.FULLSCREEN if widget.get_active() and not is_full: self.widget.fullscreen() elif is_full: self.widget.unfullscreen() - def on_menu_toolbar_toggled(self, widget): - app.prefs.toolbar_visible = widget.get_active() - - def on_menu_statusbar_toggled(self, widget): - app.prefs.statusbar_visible = widget.get_active() - - # - # Toolbar and menu items (help) - # - def on_menu_help_activate(self, button): - misc.open_uri("ghelp:///"+os.path.abspath(paths.help_dir("C/meld.xml"))) - - def on_menu_help_bug_activate(self, button): - misc.open_uri("http://bugzilla.gnome.org/buglist.cgi?query=product%3Ameld") - - def on_menu_about_activate(self, *extra): - gtk.about_dialog_set_url_hook(lambda dialog, uri: misc.open_uri(uri)) - builder = gtk.Builder() - # FIXME: domain literal duplicated from bin/meld - builder.set_translation_domain("meld") - builder.add_objects_from_file(paths.ui_dir("meldapp.ui"), ["about"]) - about = builder.get_object("about") - about.props.version = app.version - about.set_transient_for(self.widget) - about.run() - about.hide() - - # - # Toolbar and menu items (misc) - # def on_menu_edit_down_activate(self, *args): - self.current_doc().next_diff(gtk.gdk.SCROLL_DOWN) + self.current_doc().next_diff(Gdk.ScrollDirection.DOWN) def on_menu_edit_up_activate(self, *args): - self.current_doc().next_diff(gtk.gdk.SCROLL_UP) + self.current_doc().next_diff(Gdk.ScrollDirection.UP) def on_open_external(self, *args): self.current_doc().open_external() @@ -527,7 +494,7 @@ self.ui.remove_action_group(self.tab_switch_actiongroup) self.tab_switch_merge_id = self.ui.new_merge_id() - self.tab_switch_actiongroup = gtk.ActionGroup("TabSwitchActions") + self.tab_switch_actiongroup = Gtk.ActionGroup("TabSwitchActions") self.ui.insert_action_group(self.tab_switch_actiongroup) group = None current_page = self.notebook.get_current_page() @@ -536,11 +503,11 @@ label = self.notebook.get_menu_label_text(page) or "" name = "SwitchTab%d" % i tooltip = _("Switch to this tab") - action = gtk.RadioAction(name, label, tooltip, None, i) - action.set_group(group) - if group is None: - group = action + action = Gtk.RadioAction(name, label, tooltip, None, i) + action.join_group(group) + group = action action.set_active(current_page == i) + def current_tab_changed_cb(action, current): if action == current: self.notebook.set_current_page(action.get_current_value()) @@ -552,45 +519,79 @@ self.tab_switch_actiongroup.add_action_with_accel(action, accel) self.ui.add_ui(self.tab_switch_merge_id, "/Menubar/TabMenu/TabPlaceholder", - name, name, gtk.UI_MANAGER_MENUITEM, False) + name, name, Gtk.UIManagerItemType.MENUITEM, False) def try_remove_page(self, page, appquit=0): "See if a page will allow itself to be removed" response = page.on_delete_event(appquit) - if response != gtk.RESPONSE_CANCEL: - self.scheduler.remove_scheduler( page.scheduler ) - i = self.notebook.page_num( page.widget ) - assert(i>=0) - # If the page we're removing is the current page, we need to trigger a switch out - if self.notebook.get_current_page() == i: + if response != Gtk.ResponseType.CANCEL: + if hasattr(page, 'scheduler'): + self.scheduler.remove_scheduler(page.scheduler) + page_num = self.notebook.page_num(page.widget) + assert page_num >= 0 + + # If the page we're removing is the current page, we need to + # disconnect and clear undo handlers, and trigger a switch out + if self.notebook.get_current_page() == page_num: + if self.diff_handler is not None: + page.disconnect(self.diff_handler) + if self.undo_handlers: + for handler in self.undo_handlers: + page.undosequence.disconnect(handler) + self.undo_handlers = tuple() page.on_container_switch_out_event(self.ui) - self.notebook.remove_page(i) + + self.notebook.remove_page(page_num) if self.notebook.get_n_pages() == 0: self.widget.set_title("Meld") + self._update_page_action_sensitivity() return response def on_file_changed(self, srcpage, filename): for c in self.notebook.get_children(): - page = c.get_data("pyobject") + page = c.pyobject if page != srcpage: page.on_file_changed(filename) def _append_page(self, page, icon): - nbl = notebooklabel.NotebookLabel(icon, "", lambda b: self.try_remove_page(page)) - self.notebook.append_page( page.widget, nbl) - self.notebook.set_current_page( self.notebook.page_num(page.widget) ) - self.scheduler.add_scheduler(page.scheduler) - page.connect("label-changed", self.on_notebook_label_changed) - page.connect("file-changed", self.on_file_changed) - page.connect("create-diff", lambda obj,arg: self.append_diff(arg) ) - page.connect("status-changed", lambda junk,arg: self.statusbar.set_doc_status(arg) ) + nbl = notebooklabel.NotebookLabel(icon, "", + lambda b: self.try_remove_page(page)) + self.notebook.append_page(page.widget, nbl) + + # Change focus to the newly created page only if the user is on a + # DirDiff or VcView page, or if it's a new tab page. This prevents + # cycling through X pages when X diffs are initiated. + if isinstance(self.current_doc(), dirdiff.DirDiff) or \ + isinstance(self.current_doc(), vcview.VcView) or \ + isinstance(page, newdifftab.NewDiffTab): + self.notebook.set_current_page(self.notebook.page_num(page.widget)) + + if hasattr(page, 'scheduler'): + self.scheduler.add_scheduler(page.scheduler) + if isinstance(page, melddoc.MeldDoc): + page.connect("label-changed", self.on_notebook_label_changed) + page.connect("file-changed", self.on_file_changed) + page.connect("create-diff", lambda obj, arg, kwargs: + self.append_diff(arg, **kwargs)) + + self.notebook.set_tab_reorderable(page.widget, True) + + def append_new_comparison(self): + doc = newdifftab.NewDiffTab(self) + self._append_page(doc, "document-new") + self.on_notebook_label_changed(doc, _("New comparison"), None) + + def diff_created_cb(doc, newdoc): + self.try_remove_page(doc) + idx = self.notebook.page_num(newdoc.widget) + self.notebook.set_current_page(idx) - # Allow reordering of tabs - self.notebook.set_tab_reorderable(page.widget, True); + doc.connect("diff-created", diff_created_cb) + return doc def append_dirdiff(self, dirs, auto_compare=False): - assert len(dirs) in (1,2,3) - doc = dirdiff.DirDiff(app.prefs, len(dirs)) + assert len(dirs) in (1, 2, 3) + doc = dirdiff.DirDiff(len(dirs)) self._append_page(doc, "folder") doc.set_locations(dirs) # FIXME: This doesn't work, as dirdiff behaves differently to vcview @@ -598,68 +599,77 @@ doc.on_button_diff_clicked(None) return doc - def append_filediff(self, files): - assert len(files) in (1, 2, 3, 4) - if len(files) == 4: - doc = filemerge.FileMerge(app.prefs, 3) - else: - doc = filediff.FileDiff(app.prefs, len(files)) - seq = doc.undosequence - seq.clear() - seq.connect("can-undo", self.on_can_undo) - seq.connect("can-redo", self.on_can_redo) + def append_filediff(self, files, merge_output=None): + assert len(files) in (1, 2, 3) + doc = filediff.FileDiff(len(files)) self._append_page(doc, "text-x-generic") doc.set_files(files) + if merge_output is not None: + doc.set_merge_output_file(merge_output) return doc - def append_diff(self, paths, auto_compare=False): + def append_filemerge(self, files, merge_output=None): + assert len(files) == 3 + doc = filemerge.FileMerge(len(files)) + self._append_page(doc, "text-x-generic") + doc.set_files(files) + if merge_output is not None: + doc.set_merge_output_file(merge_output) + return doc + + def append_diff(self, paths, auto_compare=False, auto_merge=False, + merge_output=None): dirslist = [p for p in paths if os.path.isdir(p)] fileslist = [p for p in paths if os.path.isfile(p)] if dirslist and fileslist: - # build new file list appending previous found filename to dirs (like diff) - lastfilename = fileslist[0] - builtfilelist = [] - for elem in paths: - if os.path.isdir(elem): - builtfilename = os.path.join(elem, lastfilename) - if os.path.isfile(builtfilename): - elem = builtfilename - else: - # exit at first non found directory + file - misc.run_dialog(_("Cannot compare a mixture of files and directories.\n"), - parent=self, - buttonstype=gtk.BUTTONS_OK) - return - else: - lastfilename = os.path.basename(elem) - builtfilelist.append(elem) - return self.append_filediff(builtfilelist) + raise ValueError( + _("Cannot compare a mixture of files and directories")) elif dirslist: return self.append_dirdiff(paths, auto_compare) + elif auto_merge: + return self.append_filemerge(paths, merge_output=merge_output) else: - return self.append_filediff(paths) + return self.append_filediff(paths, merge_output=merge_output) def append_vcview(self, location, auto_compare=False): - doc = vcview.VcView(app.prefs) - # FIXME: need a good themed VC icon - self._append_page(doc, "vc-icon") + doc = vcview.VcView() + self._append_page(doc, "meld-version-control") + location = location[0] if isinstance(location, list) else location doc.set_location(location) if auto_compare: doc.on_button_diff_clicked(None) return doc + def append_recent(self, uri): + comparison_type, files, flags = recent_comparisons.read(uri) + if comparison_type == recent.TYPE_MERGE: + tab = self.append_filemerge(files) + elif comparison_type == recent.TYPE_FOLDER: + tab = self.append_dirdiff(files) + elif comparison_type == recent.TYPE_VC: + # Files should be a single-element iterable + tab = self.append_vcview(files[0]) + else: # comparison_type == recent.TYPE_FILE: + tab = self.append_filediff(files) + self.notebook.set_current_page(self.notebook.page_num(tab.widget)) + recent_comparisons.add(tab) + return tab + def _single_file_open(self, path): - doc = vcview.VcView(app.prefs) + doc = vcview.VcView() + def cleanup(): self.scheduler.remove_scheduler(doc.scheduler) self.scheduler.add_task(cleanup) self.scheduler.add_scheduler(doc.scheduler) path = os.path.abspath(path) doc.set_location(path) - doc.connect("create-diff", lambda obj,arg: self.append_diff(arg)) - doc.run_diff([path]) + doc.connect("create-diff", lambda obj, arg, kwargs: + self.append_diff(arg, **kwargs)) + doc.run_diff(path) - def open_paths(self, paths, auto_compare=False): + def open_paths(self, paths, auto_compare=False, auto_merge=False, + focus=False): tab = None if len(paths) == 1: a = paths[0] @@ -668,16 +678,25 @@ else: tab = self.append_vcview(a, auto_compare) - elif len(paths) in (2, 3, 4): - tab = self.append_diff(paths, auto_compare) + elif len(paths) in (2, 3): + tab = self.append_diff(paths, auto_compare, auto_merge) + if tab: + recent_comparisons.add(tab) + if focus: + self.notebook.set_current_page( + self.notebook.page_num(tab.widget)) + return tab def current_doc(self): "Get the current doc or a dummy object if there is no current" index = self.notebook.get_current_page() if index >= 0: - return self.notebook.get_nth_page(index).get_data("pyobject") + page = self.notebook.get_nth_page(index).pyobject + if isinstance(page, melddoc.MeldDoc): + return page + class DummyDoc(object): - def __getattr__(self, a): return lambda *x: None + def __getattr__(self, a): + return lambda *x: None return DummyDoc() - diff -Nru meld-1.5.3/meld/merge.py meld-3.11.0/meld/merge.py --- meld-1.5.3/meld/merge.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/merge.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,22 +1,20 @@ -### Copyright (C) 2009 Piotr Piastucki +# Copyright (C) 2009-2010 Piotr Piastucki +# +# 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, see . -### 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 diffutil -import matchers -#from _patiencediff_py import PatienceSequenceMatcher_py as PatienceSequenceMatcher +from . import diffutil +from . import matchers class AutoMergeDiffer(diffutil.Differ): @@ -170,7 +168,7 @@ def initialize(self, sequences, texts): step = self.differ.set_sequences_iter(sequences) - while step.next() == None: + while next(step) is None: yield None self.texts = texts yield 1 @@ -231,6 +229,8 @@ for i in range(lastline, baselen, 1): mergedtext.append(self.texts[1][i]) + # FIXME: We need to obtain the original line endings from the lines + # that were merged and use those here instead of assuming '\n'. yield "\n".join(mergedtext) def merge_2_files(self, fromindex, toindex): @@ -253,4 +253,6 @@ for i in range(lastline, baselen): mergedtext.append(self.texts[toindex][i]) + # FIXME: We need to obtain the original line endings from the lines + # that were merged and use those here instead of assuming '\n'. yield "\n".join(mergedtext) diff -Nru meld-1.5.3/meld/misc.py meld-3.11.0/meld/misc.py --- meld-1.5.3/meld/misc.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/misc.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,71 +1,79 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2009 Vincent Legoll - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009 Vincent Legoll +# Copyright (C) 2012-2013 Kai Willadsen +# +# 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, see . """Module of commonly used helper classes and functions """ -import copy import os from gettext import gettext as _ -import select import errno import shutil import re import subprocess -import gio -import gobject -import gtk - - -whitespace_re = re.compile(r"\s") -NULL = open(os.devnull, "w+b") - -def cmdout(cmd, text=None, **kwargs): - stdin = NULL - if text is not None: - stdin = subprocess.PIPE - new_kwargs = { - 'stdin': stdin, - 'stdout': subprocess.PIPE, - 'stderr': NULL, - } - new_kwargs.update(kwargs) - p = subprocess.Popen(cmd, **new_kwargs) - out = p.communicate(text)[0] - status = p.wait() - return out, status - -def shelljoin( command ): - def quote(s): - return ((whitespace_re.search(s) is None) and s or ('"%s"' % s)) - return " ".join( [ quote(x) for x in command ] ) +from gi.repository import GObject +from gi.repository import Gtk + + +if os.name != "nt": + from select import select +else: + import time + + def select(rlist, wlist, xlist, timeout): + time.sleep(timeout) + return rlist, wlist, xlist + + +def error_dialog(primary, secondary, parent=None, messagetype=Gtk.MessageType.ERROR): + """A common error dialog handler for Meld + + This should only ever be used as a last resort, and for errors that + a user is unlikely to encounter. If you're tempted to use this, + think twice. + + Primary must be plain text. Secondary must be valid markup. + """ + if not parent: + from meld.meldapp import app + parent = app.window.widget + + dialog = Gtk.MessageDialog( + parent=parent, + flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, + type=messagetype, + buttons=Gtk.ButtonsType.CLOSE, + message_format=primary) + dialog.format_secondary_markup(secondary) + dialog.run() + dialog.destroy() + -def run_dialog( text, parent=None, messagetype=gtk.MESSAGE_WARNING, buttonstype=gtk.BUTTONS_OK, extrabuttons=()): +def run_dialog( text, parent=None, messagetype=Gtk.MessageType.WARNING, buttonstype=Gtk.ButtonsType.OK, extrabuttons=()): """Run a dialog with text 'text'. Extra buttons are passed as tuples of (button label, response id). """ - escaped = gobject.markup_escape_text(text) - d = gtk.MessageDialog(None, - gtk.DIALOG_DESTROY_WITH_PARENT, + escaped = GObject.markup_escape_text(text) + d = Gtk.MessageDialog(None, + Gtk.DialogFlags.DESTROY_WITH_PARENT, messagetype, buttonstype, '%s' % escaped) - if parent and isinstance(parent, gtk.Window): + if parent and isinstance(parent, Gtk.Window): d.set_transient_for(parent.widget.get_toplevel()) for b,rid in extrabuttons: d.add_button(b, rid) @@ -80,46 +88,38 @@ d.destroy() return ret -def open_uri(uri, timestamp=0): - try: - gtk.show_uri(gtk.gdk.screen_get_default(), uri, timestamp) - except gio.Error: - if uri.startswith("http://"): - import webbrowser - webbrowser.open_new_tab(uri) - else: - # Unhandled URI - pass # Taken from epiphany def position_menu_under_widget(menu, widget): - container = widget.get_ancestor(gtk.Container) + container = widget.get_ancestor(Gtk.Container) - widget_width, widget_height = widget.size_request() - menu_width, menu_height = menu.size_request() + widget_width = widget.get_allocation().width + menu_width = menu.get_allocation().width + menu_height = menu.get_allocation().height screen = menu.get_screen() - monitor_num = screen.get_monitor_at_window(widget.window) + monitor_num = screen.get_monitor_at_window(widget.get_window()) if monitor_num < 0: monitor_num = 0 monitor = screen.get_monitor_geometry(monitor_num) - x, y = widget.window.get_origin() - if widget.flags() & gtk.NO_WINDOW: - x += widget.allocation.x - y += widget.allocation.y + unused, x, y = widget.get_window().get_origin() + allocation = widget.get_allocation() + if not widget.get_has_window(): + x += allocation.x + y += allocation.y - if container.get_direction() == gtk.TEXT_DIR_LTR: - x += widget.allocation.width - widget_width + if container.get_direction() == Gtk.TextDirection.LTR: + x += allocation.width - widget_width else: x += widget_width - menu_width - if (y + widget.allocation.height + menu_height) <= monitor.y + monitor.height: - y += widget.allocation.height + if (y + allocation.height + menu_height) <= monitor.y + monitor.height: + y += allocation.height elif (y - menu_height) >= monitor.y: y -= menu_height - elif monitor.y + monitor.height - (y + widget.allocation.height) > y: - y += widget.allocation.height + elif monitor.y + monitor.height - (y + allocation.height) > y: + y += allocation.height else: y -= menu_height @@ -127,14 +127,17 @@ def make_tool_button_widget(label): """Make a GtkToolButton label-widget suggestive of a menu dropdown""" - arrow = gtk.Arrow(gtk.ARROW_DOWN, gtk.SHADOW_NONE) - label = gtk.Label(label) - hbox = gtk.HBox(spacing=3) - hbox.pack_end(arrow) - hbox.pack_end(label) + arrow = Gtk.Arrow(Gtk.ArrowType.DOWN, Gtk.ShadowType.NONE) + label = Gtk.Label(label=label) + hbox = Gtk.HBox(spacing=3) + hbox.pack_end(arrow, True, True, 0) + hbox.pack_end(label, True, True, 0) hbox.show_all() return hbox +def gdk_to_cairo_color(color): + return (color.red / 65535., color.green / 65535., color.blue / 65535.) + def all_equal(alist): """Return true if all members of the list are equal to the first. @@ -150,14 +153,15 @@ def shorten_names(*names): """Remove redunant parts of a list of names (e.g. /tmp/foo{1,2} -> foo{1,2} """ - prefix = os.path.commonprefix( names ) + # TODO: Update for different path separators + prefix = os.path.commonprefix(names) prefixslash = prefix.rfind("/") + 1 - - names = map(lambda x: x[prefixslash:], names) # remove common prefix - paths = map(lambda x: x.split("/"), names) # split on / + + names = [n[prefixslash:] for n in names] + paths = [n.split("/") for n in names] try: - basenames = map(lambda x: x[-1], paths) + basenames = [p[-1] for p in paths] except IndexError: pass else: @@ -167,11 +171,12 @@ return "[%s] " % alist[0] else: return "" - roots = map(firstpart, paths) + roots = [firstpart(p) for p in paths] base = basenames[0].strip() - return [ r+base for r in roots ] + return [r + base for r in roots] # no common path. empty names get changed to "[None]" - return map(lambda x: x or _("[None]"), basenames) + return [name or _("[None]") for name in basenames] + def read_pipe_iter(command, errorstream, yield_interval=0.1, workdir=None): """Read the output of a shell command iteratively. @@ -184,18 +189,25 @@ class sentinel(object): def __init__(self): self.proc = None + def __del__(self): if self.proc: - errorstream.write("killing '%s'\n" % command[0]) + errorstream.error("killing '%s'\n" % command[0]) self.proc.terminate() - errorstream.write("killed (status was '%i')\n" % self.proc.wait()) + errorstream.error("killed (status was '%i')\n" % + self.proc.wait()) + def __call__(self): - self.proc = subprocess.Popen(command, cwd=workdir, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + self.proc = subprocess.Popen(command, cwd=workdir, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) self.proc.stdin.close() childout, childerr = self.proc.stdout, self.proc.stderr bits = [] while len(bits) == 0 or bits[-1] != "": - state = select.select([childout, childerr], [], [childout, childerr], yield_interval) + state = select([childout, childerr], [], [childout, childerr], + yield_interval) if len(state[0]) == 0: if len(state[2]) == 0: yield None @@ -203,24 +215,30 @@ raise Exception("Error reading pipe") if childout in state[0]: try: - bits.append( childout.read(4096) ) # get buffer size + # get buffer size + bits.append(childout.read(4096)) except IOError: - break # ick need to fix + # FIXME: ick need to fix + break if childerr in state[0]: try: - errorstream.write( childerr.read(1) ) # how many chars? + # how many chars? + errorstream.error(childerr.read(1)) except IOError: - break # ick need to fix + # FIXME: ick need to fix + break status = self.proc.wait() - errorstream.write( childerr.read() ) + errorstream.error(childerr.read()) self.proc = None if status: - errorstream.write("Exit code: %i\n" % status) + errorstream.error("Exit code: %i\n" % status) yield "".join(bits) + yield status if workdir == "": workdir = None return sentinel()() + def write_pipe(command, text, error=None): """Write 'text' into a shell command and discard its stdout output. """ @@ -232,10 +250,9 @@ def commonprefix(dirs): """Given a list of pathnames, returns the longest common leading component. """ - if not dirs: return '' - n = copy.copy(dirs) - for i in range(len(n)): - n[i] = n[i].split(os.sep) + if not dirs: + return '' + n = [d.split(os.sep) for d in dirs] prefix = n[0] for item in n: for i in range(len(prefix)): @@ -254,6 +271,8 @@ dst = os.path.join(dst, os.path.basename(src)) if os.path.islink(src) and os.path.isfile(src): + if os.path.lexists(dst): + os.unlink(dst) os.symlink(os.readlink(src), dst) elif os.path.isfile(src): shutil.copyfile(src, dst) @@ -262,7 +281,7 @@ try: shutil.copystat(src, dst) - except OSError, e: + except OSError as e: if e.errno != errno.EPERM: raise @@ -277,7 +296,7 @@ try: os.mkdir(dst) - except OSError, e: + except OSError as e: if e.errno != errno.EEXIST: raise names = os.listdir(src) @@ -285,7 +304,7 @@ srcname = os.path.join(src, name) dstname = os.path.join(dst, name) if os.path.islink(srcname): - os.symlink(os.readlink(srcname, dstname)) + os.symlink(os.readlink(srcname), dstname) elif os.path.isdir(srcname): copytree(srcname, dstname) else: @@ -293,7 +312,7 @@ try: shutil.copystat(src, dst) - except OSError, e: + except OSError as e: if e.errno != errno.EPERM: raise diff -Nru meld-1.5.3/meld/newdifftab.py meld-3.11.0/meld/newdifftab.py --- meld-1.5.3/meld/newdifftab.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/newdifftab.py 2014-02-22 00:37:12.000000000 +0000 @@ -0,0 +1,131 @@ +# Copyright (C) 2011-2013 Kai Willadsen +# +# 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, see . + +import os + +from gi.repository import GObject +from gi.repository import Gtk + +from .ui import gnomeglade + +from meld.recent import recent_comparisons + + +class NewDiffTab(GObject.GObject, gnomeglade.Component): + + __gtype_name__ = "NewDiffTab" + + __gsignals__ = { + 'diff-created': (GObject.SignalFlags.RUN_FIRST, None, + (object,)), + } + + def __init__(self, parentapp): + GObject.GObject.__init__(self) + gnomeglade.Component.__init__(self, "tab-placeholder.ui", + "new_comparison_tab") + self.map_widgets_into_lists(["file_chooser", "dir_chooser", + "vc_chooser"]) + self.button_types = [self.button_type_file, self.button_type_dir, + self.button_type_vc] + self.diff_methods = (parentapp.append_filediff, + parentapp.append_dirdiff, + parentapp.append_vcview) + self.diff_type = -1 + + default_path = os.path.expanduser("~") + for chooser in self.file_chooser: + chooser.set_current_folder(default_path) + + self.widget.show() + + def on_button_type_toggled(self, button, *args): + if not button.get_active(): + if not any([b.get_active() for b in self.button_types]): + button.set_active(True) + return + + for b in self.button_types: + if b is not button: + b.set_active(False) + + self.diff_type = self.button_types.index(button) + self.choosers_notebook.set_current_page(self.diff_type + 1) + # FIXME: Add support for new blank for DirDiff and VcView + self.button_new_blank.set_sensitive(self.diff_type == 0) + self.button_compare.set_sensitive(True) + + def on_three_way_checkbutton_toggled(self, button, *args): + if button is self.file_three_way_checkbutton: + self.file_chooser2.set_sensitive(button.get_active()) + else: # button is self.dir_three_way_checkbutton + self.dir_chooser2.set_sensitive(button.get_active()) + + def on_file_set(self, button, *args): + filename = button.get_filename() + if not filename: + return + + parent = os.path.dirname(filename) + if os.path.isdir(parent): + for chooser in self.file_chooser: + if not chooser.get_filename(): + chooser.set_current_folder(parent) + + # TODO: We could do checks here to prevent errors: check to see if + # we've got binary files; check for null file selections; sniff text + # encodings; check file permissions. + + def _get_num_paths(self): + if self.diff_type in (0, 1): + three_way_buttons = (self.file_three_way_checkbutton, + self.dir_three_way_checkbutton) + three_way = three_way_buttons[self.diff_type].get_active() + num_paths = 3 if three_way else 2 + else: # self.diff_type == 2 + num_paths = 1 + return num_paths + + def on_button_compare_clicked(self, *args): + type_choosers = (self.file_chooser, self.dir_chooser, self.vc_chooser) + + compare_paths = [] + num_paths = self._get_num_paths() + for chooser in type_choosers[self.diff_type][:num_paths]: + gfile = chooser.get_file() + path = gfile.get_path() if gfile else "" + path = path.decode('utf8') + compare_paths.append(path) + + tab = self.diff_methods[self.diff_type](compare_paths) + recent_comparisons.add(tab) + self.emit('diff-created', tab) + + def on_button_new_blank_clicked(self, *args): + # TODO: This doesn't work the way I'd like for DirDiff and VCView. + # It should do something similar to FileDiff; give a tab with empty + # file entries and no comparison done. + compare_paths = [""] * self._get_num_paths() + tab = self.diff_methods[self.diff_type](compare_paths) + self.emit('diff-created', tab) + + def on_container_switch_in_event(self, *args): + pass + + def on_container_switch_out_event(self, *args): + pass + + def on_delete_event(self, *args): + return Gtk.ResponseType.OK diff -Nru meld-1.5.3/meld/patchdialog.py meld-3.11.0/meld/patchdialog.py --- meld-1.5.3/meld/patchdialog.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/patchdialog.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,52 +1,48 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2009-2010 Kai Willadsen - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2009-2010, 2013 Kai Willadsen +# +# 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, see . import difflib from gettext import gettext as _ import os -import gtk -import pango +from gi.repository import Gtk +from gi.repository import GtkSource -from ui import gnomeglade -import paths +from .ui import gnomeglade -from util.sourceviewer import srcviewer +from meld.settings import meldsettings +from .util.compat import text_type +from meld.sourceview import LanguageManager class PatchDialog(gnomeglade.Component): def __init__(self, filediff): - ui_file = paths.ui_dir("patch-dialog.ui") - gnomeglade.Component.__init__(self, ui_file, "patchdialog") + gnomeglade.Component.__init__(self, "patch-dialog.ui", "patchdialog") self.widget.set_transient_for(filediff.widget.get_toplevel()) - self.prefs = filediff.prefs - self.prefs.notify_add(self.on_preference_changed) self.filediff = filediff - buf = srcviewer.GtkTextBuffer() + buf = GtkSource.Buffer() self.textview.set_buffer(buf) - lang = srcviewer.get_language_from_mime_type("text/x-diff") - srcviewer.set_language(buf, lang) - srcviewer.set_highlight_syntax(buf, True) + lang = LanguageManager.get_language_from_mime_type("text/x-diff") + buf.set_language(lang) + buf.set_highlight_syntax(True) - fontdesc = pango.FontDescription(self.prefs.get_current_font()) - self.textview.modify_font(fontdesc) + self.textview.modify_font(meldsettings.font) self.textview.set_editable(False) self.index_map = {self.left_radiobutton: (0, 1), @@ -58,10 +54,11 @@ self.label3.hide() self.hbox2.hide() - def on_preference_changed(self, key, value): - if key == "use_custom_font" or key == "custom_font": - fontdesc = pango.FontDescription(self.prefs.get_current_font()) - self.textview.modify_font(fontdesc) + meldsettings.connect('changed', self.on_setting_changed) + + def on_setting_changed(self, setting, key): + if key == "font": + self.textview.modify_font(meldsettings.font) def on_buffer_selection_changed(self, radiobutton): if not radiobutton.get_active(): @@ -83,11 +80,11 @@ texts = [] for b in self.filediff.textbuffer: start, end = b.get_bounds() - text = unicode(b.get_text(start, end, False), 'utf8') + text = text_type(b.get_text(start, end, False), 'utf8') lines = text.splitlines(True) texts.append(lines) - names = [self.filediff._get_pane_label(i) for i in range(3)] + names = [self.filediff.textbuffer[i].data.label for i in range(3)] prefix = os.path.commonprefix(names) names = [n[prefix.rfind("/") + 1:] for n in names] @@ -107,11 +104,11 @@ buf = self.textview.get_buffer() start, end = buf.get_bounds() - txt = unicode(buf.get_text(start, end, False), 'utf8') + txt = text_type(buf.get_text(start, end, False), 'utf8') # Copy patch to clipboard if result == 1: - clip = gtk.clipboard_get() + clip = Gtk.clipboard_get() clip.set_text(txt) clip.store() break @@ -119,10 +116,9 @@ else: # FIXME: These filediff methods are actually general utility. filename = self.filediff._get_filename_for_saving( - _("Save Patch As...")) + _("Save Patch")) if filename: self.filediff._save_text_to_filename(filename, txt) break self.widget.hide() - diff -Nru meld-1.5.3/meld/paths.py meld-3.11.0/meld/paths.py --- meld-1.5.3/meld/paths.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/paths.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -### Copyright (C) 2002-2006 Stephen Kennedy - -### 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 - -_locale_dir = ( #LOCALEDIR# -) -_help_dir = ( #HELPDIR# -) -_share_dir = ( #SHAREDIR# -) - -appdir = os.path.dirname(os.path.dirname(__file__)) - -if not _locale_dir: _locale_dir = os.path.join(appdir,"po") -if not _help_dir: _help_dir = os.path.join(appdir,"help") -if not _share_dir: _share_dir = appdir - -def locale_dir(*args): # i18n files - return os.path.join(_locale_dir, *args) - -def help_dir(*args): # help - return os.path.join(_help_dir, *args) - -def ui_dir(*args): - if os.path.exists(os.path.join(_share_dir, "data")): - return os.path.join(_share_dir, "data", "ui", *args) - else: - return os.path.join(_share_dir, "ui", *args) - -def icon_dir(*args): - if os.path.exists(os.path.join(_share_dir, "data")): - return os.path.join(_share_dir, "data", "icons", *args) - else: - return os.path.join(_share_dir, "icons", *args) - diff -Nru meld-1.5.3/meld/preferences.py meld-3.11.0/meld/preferences.py --- meld-1.5.3/meld/preferences.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/preferences.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,50 +1,48 @@ -### Copyright (C) 2002-2009 Stephen Kennedy -### Copyright (C) 2010-2011 Kai Willadsen - -### 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 - +# Copyright (C) 2002-2009 Stephen Kennedy +# Copyright (C) 2010-2013 Kai Willadsen +# +# 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, see . from gettext import gettext as _ -import gtk - -from ui import gnomeglade -from ui import listwidget -import meldapp -import misc -import paths -from util import prefs -import vc +from gi.repository import Gio +from gi.repository import GLib +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import GtkSource -from util.sourceviewer import srcviewer +from meld.filters import FilterEntry +from meld.settings import settings +from meld.ui.gnomeglade import Component +from meld.ui.listwidget import ListWidget -class FilterList(listwidget.ListWidget): +class FilterList(ListWidget): - def __init__(self, prefs, key, filter_type): + def __init__(self, key, filter_type): default_entry = [_("label"), False, _("pattern"), True] - listwidget.ListWidget.__init__(self, default_entry) - self.prefs = prefs + ListWidget.__init__(self, "EditableList.ui", + "list_alignment", ["EditableListStore"], + "EditableList", default_entry) self.key = key self.filter_type = filter_type self.pattern_column.set_cell_data_func(self.validity_renderer, self.valid_icon_celldata) - for filtstring in getattr(self.prefs, self.key).split("\n"): - filt = meldapp.FilterEntry.parse(filtstring, filter_type) + for filter_params in settings.get_value(self.key): + filt = FilterEntry.new_from_gsetting(filter_params, filter_type) if filt is None: continue valid = filt.filter is not None @@ -69,246 +67,175 @@ self.model[path][1] = not ren.get_active() def on_pattern_edited(self, ren, path, text): - filt = meldapp.FilterEntry.compile_filter(text, self.filter_type) + filt = FilterEntry.compile_filter(text, self.filter_type) valid = filt is not None self.model[path][2] = text self.model[path][3] = valid def _update_filter_string(self, *args): - pref = [] - for row in self.model: - pattern = row[2] - if pattern: - pattern = pattern.replace('\r', '') - pattern = pattern.replace('\n', '') - pref.append("%s\t%s\t%s" % (row[0], 1 if row[1] else 0, pattern)) - setattr(self.prefs, self.key, "\n".join(pref)) + value = [(row[0], row[1], row[2]) for row in self.model] + settings.set_value(self.key, GLib.Variant('a(sbs)', value)) -class PreferencesDialog(gnomeglade.Component): - - def __init__(self, parent, prefs): - gnomeglade.Component.__init__(self, paths.ui_dir("preferences.ui"), - "preferencesdialog", ["adjustment1"]) - self.widget.set_transient_for(parent) - self.prefs = prefs - if not self.prefs.use_custom_font: - self.checkbutton_default_font.set_active(True) - self.fontpicker.set_sensitive(False) - else: - self.checkbutton_default_font.set_active(False) - self.fontpicker.set_sensitive(True) - self.fontpicker.set_font_name(self.prefs.custom_font) - self.fontpicker.set_font_name( self.prefs.custom_font ) - self.spinbutton_tabsize.set_value( self.prefs.tab_size ) - if srcviewer.gsv is not None: - self.checkbutton_spaces_instead_of_tabs.set_active( self.prefs.spaces_instead_of_tabs ) - self.checkbutton_show_line_numbers.set_active( self.prefs.show_line_numbers ) - self.checkbutton_show_whitespace.set_active(self.prefs.show_whitespace) - self.checkbutton_use_syntax_highlighting.set_active( self.prefs.use_syntax_highlighting ) - else: - no_sourceview_text = \ - _("Only available if you have gnome-python-desktop installed") - for w in (self.checkbutton_spaces_instead_of_tabs, - self.checkbutton_show_line_numbers, - self.checkbutton_use_syntax_highlighting, - self.checkbutton_show_whitespace): - w.set_sensitive(False) - w.set_tooltip_text(no_sourceview_text) - # TODO: This doesn't restore the state of character wrapping when word - # wrapping is disabled, but this is hard with our existing gconf keys - if self.prefs.edit_wrap_lines != gtk.WRAP_NONE: - if self.prefs.edit_wrap_lines == gtk.WRAP_CHAR: - self.checkbutton_split_words.set_active(False) - self.checkbutton_wrap_text.set_active(True) - - size_group = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) - size_group.add_widget(self.label1) - size_group.add_widget(self.label2) - size_group.add_widget(self.label16) - use_default = self.prefs.edit_command_type == "internal" or \ - self.prefs.edit_command_type == "gnome" - self.system_editor_checkbutton.set_active(use_default) - self.custom_edit_command_entry.set_sensitive(not use_default) - custom_command = " ".join(self.prefs.get_editor_command([], "custom")) - self.custom_edit_command_entry.set_text(custom_command) - - # file filters - self.filefilter = FilterList(self.prefs, "filters", - meldapp.FilterEntry.SHELL) - self.file_filters_tab.pack_start(self.filefilter.widget) - self.checkbutton_ignore_symlinks.set_active( self.prefs.ignore_symlinks) - - # text filters - self.textfilter = FilterList(self.prefs, "regexes", - meldapp.FilterEntry.REGEX) - self.text_filters_tab.pack_start(self.textfilter.widget) - self.checkbutton_ignore_blank_lines.set_active( self.prefs.ignore_blank_lines ) - # encoding - self.entry_text_codecs.set_text( self.prefs.text_codecs ) - self.widget.show() +class ColumnList(ListWidget): - def on_fontpicker_font_set(self, picker): - self.prefs.custom_font = picker.get_font_name() + available_columns = set(( + "size", + "modification time", + "permissions", + )) + + def __init__(self, key): + ListWidget.__init__(self, "EditableList.ui", + "columns_ta", ["ColumnsListStore"], + "columns_treeview") + self.key = key - def on_checkbutton_default_font_toggled(self, button): - use_custom = not button.get_active() - self.fontpicker.set_sensitive(use_custom) - self.prefs.use_custom_font = use_custom - - def on_spinbutton_tabsize_changed(self, spin): - self.prefs.tab_size = int(spin.get_value()) - def on_checkbutton_spaces_instead_of_tabs_toggled(self, check): - self.prefs.spaces_instead_of_tabs = check.get_active() + # Unwrap the variant + prefs_columns = [(k, v) for k, v in settings.get_value(self.key)] + missing = self.available_columns - set([c[0] for c in prefs_columns]) + prefs_columns.extend([(m, False) for m in missing]) + for column_name, visibility in prefs_columns: + self.model.append([visibility, _(column_name.capitalize())]) - def on_checkbutton_wrap_text_toggled(self, button): - if not self.checkbutton_wrap_text.get_active(): - self.prefs.edit_wrap_lines = 0 - self.checkbutton_split_words.set_sensitive(False) - else: - self.checkbutton_split_words.set_sensitive(True) - if self.checkbutton_split_words.get_active(): - self.prefs.edit_wrap_lines = 2 - else: - self.prefs.edit_wrap_lines = 1 - - def on_checkbutton_show_line_numbers_toggled(self, check): - self.prefs.show_line_numbers = check.get_active() - def on_checkbutton_show_whitespace_toggled(self, check): - self.prefs.show_whitespace = check.get_active() - def on_checkbutton_use_syntax_highlighting_toggled(self, check): - self.prefs.use_syntax_highlighting = check.get_active() - - def on_system_editor_checkbutton_toggled(self, check): - use_default = check.get_active() - self.custom_edit_command_entry.set_sensitive(not use_default) - if use_default: - self.prefs.edit_command_type = "gnome" - else: - self.prefs.edit_command_type = "custom" + for signal in ('row-changed', 'row-deleted', 'row-inserted', + 'rows-reordered'): + self.model.connect(signal, self._update_columns) - def on_custom_edit_command_entry_activate(self, entry, *args): - # Called on "activate" and "focus-out-event" - self.prefs.edit_command_custom = entry.props.text - - # - # filters - # - def on_checkbutton_ignore_symlinks_toggled(self, check): - self.prefs.ignore_symlinks = check.get_active() - def on_checkbutton_ignore_blank_lines_toggled(self, check): - self.prefs.ignore_blank_lines = check.get_active() - - def on_entry_text_codecs_activate(self, entry, *args): - # Called on "activate" and "focus-out-event" - self.prefs.text_codecs = entry.props.text + self._update_sensitivity() - def on_response(self, dialog, response_id): - self.widget.destroy() + def on_cellrenderertoggle_toggled(self, ren, path): + self.model[path][0] = not ren.get_active() + def _update_columns(self, *args): + value = [(c[1].lower(), c[0]) for c in self.model] + settings.set_value(self.key, GLib.Variant('a(sb)', value)) -class MeldPreferences(prefs.Preferences): - defaults = { - "window_size_x": prefs.Value(prefs.INT, 600), - "window_size_y": prefs.Value(prefs.INT, 600), - "use_custom_font": prefs.Value(prefs.BOOL,0), - "custom_font": prefs.Value(prefs.STRING,"monospace, 14"), - "tab_size": prefs.Value(prefs.INT, 4), - "spaces_instead_of_tabs": prefs.Value(prefs.BOOL, False), - "show_line_numbers": prefs.Value(prefs.BOOL, 0), - "show_whitespace": prefs.Value(prefs.BOOL, False), - "use_syntax_highlighting": prefs.Value(prefs.BOOL, 0), - "edit_wrap_lines" : prefs.Value(prefs.INT, 0), - "edit_command_type" : prefs.Value(prefs.STRING, "gnome"), #gnome, custom - "edit_command_custom" : prefs.Value(prefs.STRING, "gedit"), - "text_codecs": prefs.Value(prefs.STRING, "utf8 latin1"), - "ignore_symlinks": prefs.Value(prefs.BOOL,0), - "vc_console_visible": prefs.Value(prefs.BOOL, 0), - "color_delete_bg" : prefs.Value(prefs.STRING, "DarkSeaGreen1"), - "color_replace_bg" : prefs.Value(prefs.STRING, "#ddeeff"), - "color_conflict_bg" : prefs.Value(prefs.STRING, "Pink"), - "color_inline_bg" : prefs.Value(prefs.STRING, "LightSteelBlue2"), - "color_inline_fg" : prefs.Value(prefs.STRING, "Red"), - "filters" : prefs.Value(prefs.STRING, - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db Desktop.ini\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("Version Control\t1\t%s\n") % misc.shell_escape(' '.join(vc.get_plugins_metadata())) + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}")), - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - "regexes" : prefs.Value(prefs.STRING, _("CVS keywords\t0\t\$\\w+(:[^\\n$]+)?\$\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("C++ comment\t0\t//.*\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("C comment\t0\t/\*.*?\*/\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("All whitespace\t0\t[ \\t\\r\\f\\v]*\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n") + \ - #TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact - _("Script comment\t0\t#.*")), - "ignore_blank_lines" : prefs.Value(prefs.BOOL, False), - "toolbar_visible" : prefs.Value(prefs.BOOL, True), - "statusbar_visible" : prefs.Value(prefs.BOOL, True), - "dir_status_filters": prefs.Value(prefs.LIST, - ['normal', 'modified', 'new']), - "vc_status_filters": prefs.Value(prefs.LIST, - ['flatten', 'modified']), - } + +class GSettingsComboBox(Gtk.ComboBox): def __init__(self): - super(MeldPreferences, self).__init__("/apps/meld", self.defaults) + Gtk.ComboBox.__init__(self) + self.connect('notify::gsettings-value', self._setting_changed) + self.connect('notify::active', self._active_changed) - def get_current_font(self): - if self.use_custom_font: - return self.custom_font - else: - if not hasattr(self, "_gconf"): - return "Monospace 10" - return self._gconf.get_string('/desktop/gnome/interface/monospace_font_name') or "Monospace 10" - - def get_toolbar_style(self): - if not hasattr(self, "_gconf"): - style = "both-horiz" - else: - style = self._gconf.get_string( - '/desktop/gnome/interface/toolbar_style') or "both-horiz" - toolbar_styles = { - "both": gtk.TOOLBAR_BOTH, "text": gtk.TOOLBAR_TEXT, - "icon": gtk.TOOLBAR_ICONS, "icons": gtk.TOOLBAR_ICONS, - "both_horiz": gtk.TOOLBAR_BOTH_HORIZ, - "both-horiz": gtk.TOOLBAR_BOTH_HORIZ - } - return toolbar_styles[style] - - def get_editor_command(self, files, command_type=None): - if command_type is None: - command_type = self.edit_command_type + def bind_to(self, key): + settings.bind( + key, self, 'gsettings-value', Gio.SettingsBindFlags.DEFAULT) - if command_type == "custom": - return self.edit_command_custom.split() + files + def _setting_changed(self, obj, val): + column = self.get_property('gsettings-column') + value = self.get_property('gsettings-value') + + for row in self.get_model(): + if value == row[column]: + idx = row.path[0] + break else: - if not hasattr(self, "_gconf"): - return [] + idx = 0 + + if self.get_property('active') != idx: + self.set_property('active', idx) + + def _active_changed(self, obj, val): + column = self.get_property('gsettings-column') + value = self.get_model()[self.get_active_iter()][column] + self.set_property('gsettings-value', value) - editor_path = "/desktop/gnome/applications/editor/" - terminal_path = "/desktop/gnome/applications/terminal/" - editor = self._gconf.get_string(editor_path + "exec") or "gedit" - if self._gconf.get_bool(editor_path + "needs_term"): - argv = [] - texec = self._gconf.get_string(terminal_path + "exec") - if texec: - argv.append(texec) - targ = self._gconf.get_string(terminal_path + "exec_arg") - if targ: - argv.append(targ) - escaped_files = [f.replace(" ", "\\ ") for f in files] - argv.append("%s %s" % (editor, " ".join(escaped_files))) - return argv - else: - return [editor] + files + +class GSettingsIntComboBox(GSettingsComboBox): + + __gtype_name__ = "GSettingsIntComboBox" + + gsettings_column = GObject.property(type=int, default=0) + gsettings_value = GObject.property(type=int) + + +class GSettingsBoolComboBox(GSettingsComboBox): + + __gtype_name__ = "GSettingsBoolComboBox" + + gsettings_column = GObject.property(type=int, default=0) + gsettings_value = GObject.property(type=bool, default=False) + + +class PreferencesDialog(Component): + + def __init__(self, parent): + Component.__init__(self, "preferences.ui", "preferencesdialog", + ["adjustment1", "adjustment2", "fileorderstore", + "sizegroup_editor", "timestampstore"]) + self.widget.set_transient_for(parent) + + bindings = [ + ('use-system-font', self.checkbutton_default_font, 'active'), + ('custom-font', self.fontpicker, 'font'), + ('indent-width', self.spinbutton_tabsize, 'value'), + ('insert-spaces-instead-of-tabs', self.checkbutton_spaces_instead_of_tabs, 'active'), + ('highlight-current-line', self.checkbutton_highlight_current_line, 'active'), + ('show-line-numbers', self.checkbutton_show_line_numbers, 'active'), + ('highlight-syntax', self.checkbutton_use_syntax_highlighting, 'active'), + ('use-system-editor', self.system_editor_checkbutton, 'active'), + ('custom-editor-command', self.custom_edit_command_entry, 'text'), + ('folder-shallow-comparison', self.checkbutton_shallow_compare, 'active'), + ('folder-ignore-symlinks', self.checkbutton_ignore_symlinks, 'active'), + ('vc-show-commit-margin', self.checkbutton_show_commit_margin, 'active'), + ('vc-commit-margin', self.spinbutton_commit_margin, 'value'), + ('vc-break-commit-message', self.checkbutton_break_commit_lines, 'active'), + ('ignore-blank-lines', self.checkbutton_ignore_blank_lines, 'active'), + # Sensitivity bindings must come after value bindings, or the key + # writability in gsettings overrides manual sensitivity setting. + ('vc-show-commit-margin', self.spinbutton_commit_margin, 'sensitive'), + ('vc-show-commit-margin', self.checkbutton_break_commit_lines, 'sensitive'), + ] + for key, obj, attribute in bindings: + settings.bind(key, obj, attribute, Gio.SettingsBindFlags.DEFAULT) + + settings.bind( + 'use-system-editor', self.custom_edit_command_entry, 'sensitive', + Gio.SettingsBindFlags.DEFAULT | Gio.SettingsBindFlags.INVERT_BOOLEAN) + settings.bind( + 'use-system-font', self.fontpicker, 'sensitive', + Gio.SettingsBindFlags.DEFAULT | Gio.SettingsBindFlags.INVERT_BOOLEAN) + + self.checkbutton_wrap_text.bind_property( + 'active', self.checkbutton_wrap_word, 'sensitive', + GObject.BindingFlags.DEFAULT) + + # TODO: Fix once bind_with_mapping is available + self.checkbutton_show_whitespace.set_active( + bool(settings.get_flags('draw-spaces'))) + + wrap_mode = settings.get_enum('wrap-mode') + self.checkbutton_wrap_text.set_active(wrap_mode != Gtk.WrapMode.NONE) + self.checkbutton_wrap_word.set_active(wrap_mode == Gtk.WrapMode.WORD) + + filefilter = FilterList("filename-filters", FilterEntry.SHELL) + self.file_filters_tab.pack_start(filefilter.widget, True, True, 0) + + textfilter = FilterList("text-filters", FilterEntry.REGEX) + self.text_filters_tab.pack_start(textfilter.widget, True, True, 0) + + columnlist = ColumnList("folder-columns") + self.column_list_vbox.pack_start(columnlist.widget, True, True, 0) + + self.combo_timestamp.bind_to('folder-time-resolution') + self.combo_file_order.bind_to('vc-left-is-local') + + self.widget.show() + + def on_checkbutton_wrap_text_toggled(self, button): + if not self.checkbutton_wrap_text.get_active(): + wrap_mode = Gtk.WrapMode.NONE + elif self.checkbutton_wrap_word.get_active(): + wrap_mode = Gtk.WrapMode.WORD + else: + wrap_mode = Gtk.WrapMode.CHAR + settings.set_enum('wrap-mode', wrap_mode) + + def on_checkbutton_show_whitespace_toggled(self, widget): + value = GtkSource.DrawSpacesFlags.ALL if widget.get_active() else 0 + settings.set_flags('draw-spaces', value) + + def on_response(self, dialog, response_id): + self.widget.destroy() diff -Nru meld-1.5.3/meld/recent.py meld-3.11.0/meld/recent.py --- meld-1.5.3/meld/recent.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/recent.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,229 @@ +# Copyright (C) 2012-2013 Kai Willadsen +# +# 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, see . + +""" +Recent files integration for Meld's multi-element comparisons + +The GTK+ recent files mechanism is designed to take only single files with a +limited set of metadata. In Meld, we almost always need to enter pairs or +triples of files or directories, along with some information about the +comparison type. The solution provided by this module is to create fake +single-file registers for multi-file comparisons, and tell the recent files +infrastructure that that's actually what we opened. +""" + +try: + # py3k + import configparser +except ImportError: + import ConfigParser as configparser +import os +import sys +import tempfile + +from gettext import gettext as _ + +from gi.repository import Gio +from gi.repository import GLib +from gi.repository import Gtk + +import meld.misc + + +TYPE_FILE = "File" +TYPE_FOLDER = "Folder" +TYPE_VC = "Version control" +TYPE_MERGE = "Merge" +COMPARISON_TYPES = (TYPE_FILE, TYPE_FOLDER, TYPE_VC, TYPE_MERGE) + + +class RecentFiles(object): + + recent_path = os.path.join(GLib.get_user_data_dir(), "meld") + recent_path = recent_path.decode('utf8') + recent_suffix = ".meldcmp" + + # Recent data + app_name = "Meld" + + def __init__(self): + self.recent_manager = Gtk.RecentManager.get_default() + self.recent_filter = Gtk.RecentFilter() + self.recent_filter.add_application(self.app_name) + self._stored_comparisons = [] + self.app_exec = os.path.abspath(sys.argv[0]) + + if not os.path.exists(self.recent_path): + os.makedirs(self.recent_path) + + self._clean_recent_files() + self._update_recent_files() + self.recent_manager.connect("changed", self._update_recent_files) + + def add(self, tab, flags=None): + """Add a tab to our recently-used comparison list + + The passed flags are currently ignored. In the future these are to be + used for extra initialisation not captured by the tab itself. + """ + comp_type, paths = tab.get_comparison() + + # While Meld handles comparisons including None, recording these as + # recently-used comparisons just isn't that sane. + if None in paths: + return + + # If a (type, paths) comparison is already registered, then re-add + # the corresponding comparison file + comparison_key = (comp_type, tuple(paths)) + if comparison_key in self._stored_comparisons: + gio_file = Gio.File.new_for_uri(self._stored_comparisons[comparison_key]) + else: + recent_path = self._write_recent_file(comp_type, paths) + gio_file = Gio.File.new_for_path(recent_path) + + if len(paths) > 1: + display_name = " : ".join(meld.misc.shorten_names(*paths)) + else: + display_path = paths[0] + userhome = os.path.expanduser("~") + if display_path.startswith(userhome): + # FIXME: What should we show on Windows? + display_path = "~" + display_path[len(userhome):] + display_name = _("Version control:") + " " + display_path + # FIXME: Should this be translatable? It's not actually used anywhere. + description = "%s comparison\n%s" % (comp_type, ", ".join(paths)) + + recent_metadata = Gtk.RecentData() + recent_metadata.mime_type = "application/x-meld-comparison" + recent_metadata.app_name = self.app_name + recent_metadata.app_exec = "%s --comparison-file %%u" % self.app_exec + recent_metadata.display_name = display_name.encode('utf8') + recent_metadata.description = description.encode('utf8') + recent_metadata.is_private = True + self.recent_manager.add_full(gio_file.get_uri(), recent_metadata) + + def read(self, uri): + """Read stored comparison from URI + + Returns the comparison type, the paths involved and the comparison + flags. + """ + gio_file = Gio.File.new_for_uri(uri) + path = gio_file.get_path() + if not gio_file.query_exists(None) or not path: + raise IOError("File does not exist") + + try: + config = configparser.RawConfigParser() + config.read(path) + assert (config.has_section("Comparison") and + config.has_option("Comparison", "type") and + config.has_option("Comparison", "paths")) + except (configparser.Error, AssertionError): + raise ValueError("Invalid recent comparison file") + + comp_type = config.get("Comparison", "type") + paths = tuple(config.get("Comparison", "paths").split(";")) + flags = tuple() + + if comp_type not in COMPARISON_TYPES: + raise ValueError("Invalid recent comparison file") + + return comp_type, paths, flags + + def _write_recent_file(self, comp_type, paths): + # TODO: Use GKeyFile instead, and return a Gio.File. This is why we're + # using ';' to join comparison paths. + with tempfile.NamedTemporaryFile(prefix='recent-', + suffix=self.recent_suffix, + dir=self.recent_path, + delete=False) as f: + config = configparser.RawConfigParser() + config.add_section("Comparison") + config.set("Comparison", "type", comp_type) + config.set("Comparison", "paths", ";".join(paths)) + config.write(f) + name = f.name + return name + + def _clean_recent_files(self): + # Remove from RecentManager any comparisons with no existing file + meld_items = self._filter_items(self.recent_filter, + self.recent_manager.get_items()) + for item in meld_items: + if not item.exists(): + self.recent_manager.remove_item(item.get_uri()) + + meld_items = [item for item in meld_items if item.exists()] + + # Remove any comparison files that are not listed by RecentManager + item_uris = [item.get_uri() for item in meld_items] + item_paths = [Gio.File.new_for_uri(uri).get_path() for uri in item_uris] + stored = [p for p in os.listdir(self.recent_path) + if p.endswith(self.recent_suffix)] + for path in stored: + file_path = os.path.abspath(os.path.join(self.recent_path, path)) + if file_path not in item_paths: + os.remove(file_path) + + def _update_recent_files(self, *args): + meld_items = self._filter_items(self.recent_filter, + self.recent_manager.get_items()) + item_uris = [item.get_uri() for item in meld_items if item.exists()] + self._stored_comparisons = {} + for uri in item_uris: + try: + comp = self.read(uri) + except (IOError, ValueError): + continue + # Store and look up comparisons by type and paths, ignoring flags + self._stored_comparisons[comp[:2]] = uri + + def _filter_items(self, recent_filter, items): + getters = {Gtk.RecentFilterFlags.URI: "uri", + Gtk.RecentFilterFlags.DISPLAY_NAME: "display_name", + Gtk.RecentFilterFlags.MIME_TYPE: "mime_type", + Gtk.RecentFilterFlags.APPLICATION: "applications", + Gtk.RecentFilterFlags.GROUP: "groups", + Gtk.RecentFilterFlags.AGE: "age"} + needed = recent_filter.get_needed() + attrs = [v for k, v in getters.iteritems() if needed & k] + + filtered_items = [] + for i in items: + filter_data = {} + for attr in attrs: + filter_data[attr] = getattr(i, "get_" + attr)() + filter_info = Gtk.RecentFilterInfo() + for f, v in filter_data.iteritems(): + # https://bugzilla.gnome.org/show_bug.cgi?id=695970 + if isinstance(v, list): + continue + setattr(filter_info, f, v) + if recent_filter.filter(filter_info): + filtered_items.append(i) + return filtered_items + + def __str__(self): + items = self.recent_manager.get_items() + descriptions = [] + for i in self._filter_items(self.recent_filter, items): + descriptions.append("%s\n%s\n" % (i.get_display_name(), + i.get_uri_display())) + return "\n".join(descriptions) + + +recent_comparisons = RecentFiles() diff -Nru meld-1.5.3/meld/settings.py meld-3.11.0/meld/settings.py --- meld-1.5.3/meld/settings.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/settings.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,112 @@ +# Copyright (C) 2013 Kai Willadsen +# +# 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, see . + +import os + +from gi.repository import Gio +from gi.repository import GLib +from gi.repository import GObject +from gi.repository import Pango + +import meld.conf +import meld.filters + + +MELD_SCHEMA = 'org.gnome.meld' + + +class MeldSettings(GObject.GObject): + """Handler for settings that can't easily be bound to object properties""" + + __gsignals__ = { + 'file-filters-changed': (GObject.SignalFlags.RUN_FIRST, None, ()), + 'text-filters-changed': (GObject.SignalFlags.RUN_FIRST, None, ()), + 'changed': (GObject.SignalFlags.RUN_FIRST, None, (str,)), + } + + def __init__(self): + GObject.GObject.__init__(self) + self.on_setting_changed(settings, 'filename-filters') + self.on_setting_changed(settings, 'text-filters') + self.on_setting_changed(settings, 'use-system-font') + settings.connect('changed', self.on_setting_changed) + + def on_setting_changed(self, settings, key): + if key == 'filename-filters': + self.file_filters = self._filters_from_gsetting( + 'filename-filters', meld.filters.FilterEntry.SHELL) + self.emit('file-filters-changed') + elif key == 'text-filters': + self.text_filters = self._filters_from_gsetting( + 'text-filters', meld.filters.FilterEntry.REGEX) + self.emit('text-filters-changed') + elif key in ('use-system-font', 'custom-font'): + self.font = self._current_font_from_gsetting() + self.emit('changed', 'font') + + def _filters_from_gsetting(self, key, filt_type): + filter_params = settings.get_value(key) + filters = [ + meld.filters.FilterEntry.new_from_gsetting(params, filt_type) + for params in filter_params + ] + return filters + + def _current_font_from_gsetting(self, *args): + if settings.get_boolean('use-system-font'): + font_string = interface_settings.get_string('monospace-font-name') + else: + font_string = settings.get_string('custom-font') + return Pango.FontDescription(font_string) + + +def find_schema(): + schema_source = Gio.SettingsSchemaSource.new_from_directory( + meld.conf.DATADIR, + Gio.SettingsSchemaSource.get_default(), + False, + ) + return schema_source.lookup(MELD_SCHEMA, False) + + +def check_backend(): + force_ini = os.path.exists( + os.path.join(GLib.get_user_config_dir(), 'meld', 'use-rc-prefs')) + if force_ini: + # TODO: Use GKeyfileSettingsBackend once available (see bgo#682702) + print("Using a flat-file settings backend is not yet supported") + return None + return None + + +def create_settings(uninstalled=False): + global settings, interface_settings, meldsettings + + backend = check_backend() + if uninstalled: + schema = find_schema() + settings = Gio.Settings.new_full(schema, backend, None) + elif backend: + settings = Gio.Settings.new_with_backend(MELD_SCHEMA, backend) + else: + settings = Gio.Settings.new(MELD_SCHEMA) + + interface_settings = Gio.Settings.new('org.gnome.desktop.interface') + meldsettings = MeldSettings() + + +settings = None +interface_settings = None +meldsettings = None diff -Nru meld-1.5.3/meld/sourceview.py meld-3.11.0/meld/sourceview.py --- meld-1.5.3/meld/sourceview.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/sourceview.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,73 @@ +# Copyright (C) 2009 Vincent Legoll +# Copyright (C) 2010-2011, 2013 Kai Willadsen +# +# 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, see . + +from gi.repository import Gio +from gi.repository import GLib +from gi.repository import GtkSource + + +class LanguageManager(object): + + manager = GtkSource.LanguageManager() + + @classmethod + def get_language_from_file(cls, filename): + f = Gio.File.new_for_path(filename) + try: + info = f.query_info(Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, + 0, None) + except GLib.GError: + return None + content_type = info.get_content_type() + return cls.manager.guess_language(filename, content_type) + + @classmethod + def get_language_from_mime_type(cls, mime_type): + content_type = Gio.content_type_from_mime_type(mime_type) + return cls.manager.guess_language(None, content_type) + + +class MeldSourceView(GtkSource.View): + + __gtype_name__ = "MeldSourceView" + + # TODO: Figure out what bindings we need to add and remove for 3 + + # Some sourceviews bind their own undo mechanism, which we replace + # Gtk.binding_entry_remove(GtkSource.View, Gdk.KEY_z, + # Gdk.ModifierType.CONTROL_MASK) + # Gtk.binding_entry_remove(GtkSource.View, Gdk.KEY_z, + # Gdk.ModifierType.CONTROL_MASK | Gdk.ModifierType.SHIFT_MASK) + + # Gtk.binding_entry_remove(GtkSource.View, Gdk.KEY_Up, + # Gdk.ModifierType.MOD1_MASK) + # Gtk.binding_entry_remove(GtkSource.View, Gdk.KEY_KP_Up, + # Gdk.ModifierType.MOD1_MASK) + # Gtk.binding_entry_remove(GtkSource.View, Gdk.KEY_Down, + # Gdk.ModifierType.MOD1_MASK) + # Gtk.binding_entry_remove(GtkSource.View, Gdk.KEY_KP_Down, + # Gdk.ModifierType.MOD1_MASK) + + def get_y_for_line_num(self, line): + buf = self.get_buffer() + it = buf.get_iter_at_line(line) + y, h = self.get_line_yrange(it) + if line >= buf.get_line_count(): + return y + h - 1 + return y + + def get_line_num_for_y(self, y): + return self.get_line_at_y(y)[0].get_line() diff -Nru meld-1.5.3/meld/task.py meld-3.11.0/meld/task.py --- meld-1.5.3/meld/task.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/task.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,33 +1,33 @@ -### Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2012-2013 Kai Willadsen +# +# 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, see . -### 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 +"""Classes to implement scheduling for cooperative threads.""" -"""Classes to implement scheduling for cooperative threads. -""" +from __future__ import print_function import traceback + class SchedulerBase(object): - """Base class with common functionality for schedulers. + """Base class with common functionality for schedulers - Derived classes should implement the 'get_current_task' method. + Derived classes must implement get_current_task. """ def __init__(self): - """Create a scheduler with no current tasks. - """ self.tasks = [] self.callbacks = [] @@ -36,22 +36,17 @@ def connect(self, signal, action): assert signal == "runnable" - try: - self.callbacks.index(action) - except ValueError: - self.callbacks.append( action ) + if action not in self.callbacks: + self.callbacks.append(action) - def add_task(self, task, atfront=0): - """Add 'task' to the task list. + def add_task(self, task, atfront=False): + """Add a task to the scheduler's task list - 'task' may be a function, generator or scheduler. - The task is deemed to be finished when either it returns a - false value or raises StopIteration. + The task may be a function, generator or scheduler, and is + deemed to have finished when it returns a false value or raises + StopIteration. """ - try: - self.tasks.remove(task) - except ValueError: - pass + self.remove_task(task) if atfront: self.tasks.insert(0, task) @@ -62,26 +57,22 @@ callback(self) def remove_task(self, task): - """Remove 'task'. - """ + """Remove a single task from the scheduler""" try: self.tasks.remove(task) except ValueError: pass def remove_all_tasks(self): - """Remove all tasks. - """ + """Remove all tasks from the scheduler""" self.tasks = [] def add_scheduler(self, sched): - """Calls add_task and listens for 'sched' to emit 'runnable'. - """ - sched.connect("runnable", lambda t : self.add_task(t)) + """Adds a subscheduler as a child task of this scheduler""" + sched.connect("runnable", lambda t: self.add_task(t)) def remove_scheduler(self, sched): - """Remove 'task'. - """ + """Remove a sub-scheduler from this scheduler""" self.remove_task(sched) try: self.callbacks.remove(sched) @@ -89,16 +80,11 @@ pass def get_current_task(self): - """Function overridden by derived classes. - - The usual implementation will be to call self._iteration(task) where - 'task' is one of self.tasks. - """ - raise NotImplementedError("This method must be overridden by subclasses.") + """Overridden function returning the next task to run""" + raise NotImplementedError def __call__(self): - """Check for pending tasks and run an iteration of the current task. - """ + """Run an iteration of the current task""" if len(self.tasks): r = self.iteration() if r: @@ -106,28 +92,24 @@ return self.tasks_pending() def complete_tasks(self): - """Run all currently added tasks to completion. - - Tasks added after the call to complete_tasks are not run. - """ + """Run all of the scheduler's current tasks to completion""" while self.tasks_pending(): self.iteration() - + def tasks_pending(self): return len(self.tasks) != 0 def iteration(self): - """Perform one iteration of the current task.. - - Calls self.get_current_task() to find the current task. - Remove task from self.tasks if it is complete. - """ + """Perform one iteration of the current task""" try: task = self.get_current_task() except StopIteration: return 0 try: - ret = task() + if hasattr(task, "__iter__"): + ret = next(task) + else: + ret = task() except StopIteration: pass except Exception: @@ -140,10 +122,8 @@ class LifoScheduler(SchedulerBase): - """Most recently added tasks are called first. - """ - def __init__(self): - SchedulerBase.__init__(self) + """Scheduler calling most recently added tasks first""" + def get_current_task(self): try: return self.tasks[-1] @@ -152,10 +132,8 @@ class FifoScheduler(SchedulerBase): - """Subtasks are called in the order they were added. - """ - def __init__(self): - SchedulerBase.__init__(self) + """Scheduler calling tasks in the order they were added""" + def get_current_task(self): try: return self.tasks[0] @@ -164,10 +142,8 @@ class RoundRobinScheduler(SchedulerBase): - """Each subtask is called in turn. - """ - def __init__(self): - SchedulerBase.__init__(self) + """Scheduler repeatedly calling tasks in turn""" + def get_current_task(self): try: self.tasks.append(self.tasks.pop(0)) @@ -176,47 +152,30 @@ raise StopIteration - -if __name__=="__main__": +if __name__ == "__main__": import time import random m = LifoScheduler() + def timetask(t): while time.time() - t < 1: - print "***" + print("***") time.sleep(0.1) - print "!!!" + print("!!!") + def sayhello(x): - for i in range(random.randint(2,8)): - print "hello", x + for i in range(random.randint(2, 8)): + print("hello", x) time.sleep(0.1) yield 1 - print "end", x + print("end", x) + s = RoundRobinScheduler() m.add_task(s) - h = sayhello(10).next - #m.add_task(h) - #m.add_task(h) - s.add_task( sayhello(10).next ) - s.add_task( sayhello(20).next ) - s.add_task( sayhello(30).next ) - #s.add_task( sayhello(40).next ) - #s.add_task( sayhello(50).next ) - #s.add_task( sayhello(60).next ) - #m.add_task( s ) - #time.sleep(.71) - #m.add_task( s )#sayhello(2).next ) - #m.add_task( sayhello(3).next ) - #m.add_task( lambda t=time.time() : timetask(t) ) - #m.add_task( sayhello(4).next ) - #m.add_task( sayhello(5).next ) - #m.mainloop() - while s.tasks_pending(): s.iteration() + s.add_task(sayhello(10)) + s.add_task(sayhello(20)) + s.add_task(sayhello(30)) + while s.tasks_pending(): + s.iteration() time.sleep(2) - print "***" - #print "***" - #m.add_task( sayhello(20).next ) - #m.add_task( s ) - #s.complete_tasks() - #time.sleep(3) - + print("***") diff -Nru meld-1.5.3/meld/tree.py meld-3.11.0/meld/tree.py --- meld-1.5.3/meld/tree.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/tree.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,131 +1,169 @@ -### Copyright (C) 2002-2006 Stephen Kennedy - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2011-2013 Kai Willadsen +# +# 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, see . import os -import gobject -import gtk +from gi.repository import GLib +from gi.repository import Gtk +from gi.repository import Pango + +COL_PATH, COL_STATE, COL_TEXT, COL_ICON, COL_TINT, COL_FG, COL_STYLE, \ + COL_WEIGHT, COL_STRIKE, COL_END = list(range(10)) + +COL_TYPES = (str, str, str, str, str, str, Pango.Style, + Pango.Weight, bool) -COL_PATH, COL_STATE, COL_TEXT, COL_ICON, COL_TINT, COL_END = range(6) from meld.vc._vc import \ STATE_IGNORED, STATE_NONE, STATE_NORMAL, STATE_NOCHANGE, \ STATE_ERROR, STATE_EMPTY, STATE_NEW, \ STATE_MODIFIED, STATE_CONFLICT, STATE_REMOVED, \ - STATE_MISSING, STATE_MAX + STATE_MISSING, STATE_NONEXIST, STATE_MAX, \ + CONFLICT_BASE, CONFLICT_LOCAL, CONFLICT_REMOTE, \ + CONFLICT_MERGED, CONFLICT_OTHER, CONFLICT_THIS -class DiffTreeStore(gtk.TreeStore): +class DiffTreeStore(Gtk.TreeStore): def __init__(self, ntree, types): - gtk.TreeStore.__init__(self, *types) + full_types = [] + for col_type in (COL_TYPES + tuple(types)): + full_types.extend([col_type] * ntree) + Gtk.TreeStore.__init__(self, *full_types) self.ntree = ntree self._setup_default_styles() - def _setup_default_styles(self): - self.textstyle = [ - '%s', # STATE_IGNORED - '%s', # STATE_NONE - '%s', # STATE_NORMAL - '%s', # STATE_NOCHANGE - '%s', # STATE_ERROR - '%s', # STATE_EMPTY - '%s', # STATE_NEW - '%s', # STATE_MODIFIED - '%s', # STATE_CONFLICT - '%s', # STATE_REMOVED - '%s' # STATE_MISSING + def on_style_updated(self, widget): + style = widget.get_style_context() + self._setup_default_styles(style) + + def _setup_default_styles(self, style=None): + roman, italic = Pango.Style.NORMAL, Pango.Style.ITALIC + normal, bold = Pango.Weight.NORMAL, Pango.Weight.BOLD + + def lookup(name, default): + try: + found, colour = style.lookup_color(name) + if found: + colour = colour.to_string() + else: + colour = default + except AttributeError: + colour = default + return colour + + unk_fg = lookup("unknown-text", "#888888") + new_fg = lookup("insert-text", "#008800") + mod_fg = lookup("replace-text", "#0044dd") + del_fg = lookup("delete-text", "#880000") + err_fg = lookup("error-text", "#ffff00") + con_fg = lookup("conflict-text", "#ff0000") + + self.text_attributes = [ + # foreground, style, weight, strikethrough + (unk_fg, roman, normal, None), # STATE_IGNORED + (unk_fg, roman, normal, None), # STATE_NONE + (None, roman, normal, None), # STATE_NORMAL + (None, italic, normal, None), # STATE_NOCHANGE + (err_fg, roman, bold, None), # STATE_ERROR + (unk_fg, italic, normal, None), # STATE_EMPTY + (new_fg, roman, bold, None), # STATE_NEW + (mod_fg, roman, bold, None), # STATE_MODIFIED + (con_fg, roman, bold, None), # STATE_CONFLICT + (del_fg, roman, bold, True), # STATE_REMOVED + (del_fg, roman, bold, True), # STATE_MISSING + (unk_fg, roman, normal, True), # STATE_NONEXIST ] - assert len(self.textstyle) == STATE_MAX - self.pixstyle = [ - ("text-x-generic", "folder"), # IGNORED - ("text-x-generic", "folder"), # NONE - ("text-x-generic", "folder"), # NORMAL - ("text-x-generic", "folder"), # NOCHANGE - (None, None), # ERROR - (None, None), # EMPTY - ("text-x-generic", "folder"), # NEW - ("text-x-generic", "folder"), # MODIFIED - ("text-x-generic", "folder"), # CONFLICT - ("text-x-generic", "folder"), # REMOVED - ("text-x-generic", "folder"), # MISSING + self.icon_details = [ + # file-icon, folder-icon, file-tint, folder-tint + ("text-x-generic", "folder", None, None), # IGNORED + ("text-x-generic", "folder", None, None), # NONE + ("text-x-generic", "folder", None, None), # NORMAL + ("text-x-generic", "folder", None, None), # NOCHANGE + ("dialog-warning", None , None, None), # ERROR + (None, None , None, None), # EMPTY + ("text-x-generic", "folder", new_fg, None), # NEW + ("text-x-generic", "folder", mod_fg, None), # MODIFIED + ("text-x-generic", "folder", con_fg, None), # CONFLICT + ("text-x-generic", "folder", del_fg, None), # REMOVED + ("text-x-generic", "folder", unk_fg, unk_fg), # MISSING + ("text-x-generic", "folder", unk_fg, unk_fg), # NONEXIST ] - self.icon_tints = [ - (None, None), # IGNORED - (None, None), # NONE - (None, None), # NORMAL - (None, None), # NOCHANGE - (None, None), # ERROR - (None, None), # EMPTY - ("#00ff00", None), # NEW - ("#ff0000", None), # MODIFIED - ("#ff0000", None), # CONFLICT - ("#ff0000", None), # REMOVED - ("#ffffff", "#ffffff"), # MISSING - ] + assert len(self.icon_details) == len(self.text_attributes) == STATE_MAX + + def value_paths(self, it): + return [self.value_path(it, i) for i in range(self.ntree)] + + def value_path(self, it, pane): + path = self.get_value(it, self.column_index(COL_PATH, pane)) + if path is not None: + path = path.decode('utf8') + return path - assert len(self.pixstyle) == len(self.icon_tints) == STATE_MAX + def column_index(self, col, pane): + return self.ntree * col + pane def add_entries(self, parent, names): child = self.append(parent) - for i,f in enumerate(names): - self.set_value( child, self.column_index(COL_PATH,i), f) + for pane, path in enumerate(names): + self.set_value(child, self.column_index(COL_PATH, pane), path) return child def add_empty(self, parent, text="empty folder"): - child = self.append(parent) - for i in range(self.ntree): - self.set_value(child, self.column_index(COL_PATH, i), None) - self.set_value(child, self.column_index(COL_STATE, i), str(STATE_EMPTY)) - self.set_value(child, self.column_index(COL_ICON, i), self.pixstyle[STATE_EMPTY][0]) - self.set_value(child, self.column_index(COL_TEXT, i), self.textstyle[STATE_EMPTY] % gobject.markup_escape_text(text)) - return child + it = self.append(parent) + for pane in range(self.ntree): + self.set_value(it, self.column_index(COL_PATH, pane), None) + self.set_state(it, pane, STATE_EMPTY, text) def add_error(self, parent, msg, pane): - err = self.append(parent) + it = self.append(parent) for i in range(self.ntree): - self.set_value(err, self.column_index(COL_STATE, i), str(STATE_ERROR)) - self.set_value(err, self.column_index(COL_ICON, pane), self.pixstyle[STATE_ERROR][0] ) - self.set_value(err, self.column_index(COL_TINT, pane), - self.icon_tints[STATE_ERROR][0]) - self.set_value(err, self.column_index(COL_TEXT, pane), self.textstyle[STATE_ERROR] % gobject.markup_escape_text(msg)) - - def value_paths(self, it): - return [self.value_path(it, i) for i in range(self.ntree)] - def value_path(self, it, pane): - return self.get_value(it, self.column_index(COL_PATH, pane)) - def column_index(self, col, pane): - return self.ntree * col + pane + self.set_value(it, self.column_index(COL_STATE, i), + str(STATE_ERROR)) + self.set_state(it, pane, STATE_ERROR, msg) - def set_state(self, it, pane, state, isdir=0): + def set_path_state(self, it, pane, state, isdir=0): fullname = self.get_value(it, self.column_index(COL_PATH,pane)) - name = gobject.markup_escape_text(os.path.basename(fullname)) - STATE = self.column_index(COL_STATE, pane) - TEXT = self.column_index(COL_TEXT, pane) - ICON = self.column_index(COL_ICON, pane) - TINT = self.column_index(COL_TINT, pane) - self.set_value(it, STATE, str(state)) - self.set_value(it, TEXT, self.textstyle[state] % name) - self.set_value(it, ICON, self.pixstyle[state][isdir]) - self.set_value(it, TINT, self.icon_tints[state][isdir]) + name = GLib.markup_escape_text(os.path.basename(fullname)) + self.set_state(it, pane, state, name, isdir) + + def set_state(self, it, pane, state, label, isdir=0): + col_idx = self.column_index + icon = self.icon_details[state][1 if isdir else 0] + tint = self.icon_details[state][3 if isdir else 2] + self.set_value(it, col_idx(COL_STATE, pane), str(state)) + self.set_value(it, col_idx(COL_TEXT, pane), label) + self.set_value(it, col_idx(COL_ICON, pane), icon) + # FIXME: This is horrible, but EmblemCellRenderer crashes + # if you try to give it a Gdk.Color property + self.set_value(it, col_idx(COL_TINT, pane), tint) + + fg, style, weight, strike = self.text_attributes[state] + self.set_value(it, col_idx(COL_FG, pane), fg) + self.set_value(it, col_idx(COL_STYLE, pane), style) + self.set_value(it, col_idx(COL_WEIGHT, pane), weight) + self.set_value(it, col_idx(COL_STRIKE, pane), strike) def get_state(self, it, pane): STATE = self.column_index(COL_STATE, pane) - return int(self.get_value(it, STATE)) + try: + return int(self.get_value(it, STATE)) + except TypeError: + return None def inorder_search_down(self, it): while it: @@ -152,7 +190,7 @@ while it: path = self.get_path(it) if path[-1]: - path = path[:-1] + (path[-1]-1,) + path = path[:-1] + [path[-1] - 1] it = self.get_iter(path) while 1: nc = self.iter_n_children(it) @@ -185,3 +223,19 @@ break return prev_path, next_path + + def treeview_search_cb(self, model, column, key, it, data): + # If the key contains a path separator, search the whole path, + # otherwise just use the filename. If the key is all lower-case, do a + # case-insensitive match. + abs_search = key.find('/') >= 0 + lower_key = key.islower() + + for path in model.value_paths(it): + if not path: + continue + lineText = path if abs_search else os.path.basename(path) + lineText = lineText.lower() if lower_key else lineText + if lineText.find(key) != -1: + return False + return True diff -Nru meld-1.5.3/meld/ui/catalog.xml meld-3.11.0/meld/ui/catalog.xml --- meld-1.5.3/meld/ui/catalog.xml 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/catalog.xml 2014-02-16 20:23:22.000000000 +0000 @@ -5,18 +5,16 @@ - - - + + - - - + + diff -Nru meld-1.5.3/meld/ui/emblemcellrenderer.py meld-3.11.0/meld/ui/emblemcellrenderer.py --- meld-1.5.3/meld/ui/emblemcellrenderer.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/emblemcellrenderer.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,41 +1,45 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2010 Kai Willadsen - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2010, 2012-2013 Kai Willadsen +# +# 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, see . import cairo -import gobject -import gtk +from gi.repository import GObject +from gi.repository import Gdk +from gi.repository import Gtk + +class EmblemCellRenderer(Gtk.CellRenderer): -class EmblemCellRenderer(gtk.GenericCellRenderer): + __gtype_name__ = "EmblemCellRenderer" __gproperties__ = { "icon-name": (str, "Named icon", "Name for base icon", - "text-x-generic", gobject.PARAM_READWRITE), + "text-x-generic", GObject.PARAM_READWRITE), "emblem-name": (str, "Named emblem icon", "Name for emblem icon to overlay", - None, gobject.PARAM_READWRITE), + None, GObject.PARAM_READWRITE), "icon-tint": (str, "Icon tint", "GDK-parseable color to be used to tint icon", - None, gobject.PARAM_READWRITE), + None, GObject.PARAM_READWRITE), } + icon_cache = {} + def __init__(self): - self.__gobject_init__() + super(EmblemCellRenderer, self).__init__() self._icon_name = "text-x-generic" self._emblem_name = None self._icon_tint = None @@ -53,11 +57,12 @@ elif pspec.name == "icon-tint": self._icon_tint = value if self._icon_tint: - self._tint_color = gtk.gdk.color_parse(value) + self._tint_color = Gdk.RGBA() + self._tint_color.parse(value) else: self._tint_color = None else: - raise AttributeError, "unknown property %s" % name + raise AttributeError("unknown property %s" % pspec.name) def do_get_property(self, pspec): if pspec.name == "icon-name": @@ -67,11 +72,16 @@ elif pspec.name == "icon-tint": return self._icon_tint else: - raise AttributeError, "unknown property %s" % name + raise AttributeError("unknown property %s" % pspec.name) + + def _get_pixbuf(self, name, size): + if (name, size) not in self.icon_cache: + icon_theme = Gtk.IconTheme.get_default() + pixbuf = icon_theme.load_icon(name, size, 0).copy() + self.icon_cache[(name, size)] = pixbuf + return self.icon_cache[(name, size)] - def on_render(self, window, widget, background_area, cell_area, - expose_area, flags): - context = window.cairo_create() + def do_render(self, context, widget, background_area, cell_area, flags): context.translate(cell_area.x, cell_area.y) context.rectangle(0, 0, cell_area.width, cell_area.height) context.clip() @@ -79,38 +89,42 @@ # TODO: Incorporate padding context.push_group() if self._icon_name: - icon_theme = gtk.icon_theme_get_default() - # Assumes square icons; may break if we don't get the requested size - pixbuf = icon_theme.load_icon(self._icon_name, - self._icon_size, 0).copy() # FIXME: copy? - + pixbuf = self._get_pixbuf(self._icon_name, self._icon_size) context.set_operator(cairo.OPERATOR_SOURCE) - context.set_source_pixbuf(pixbuf, 0, 0) - context.rectangle(0, 0, cell_area.width, cell_area.height) + # Assumes square icons; may break if we don't get the requested size + height_offset = int((cell_area.height - pixbuf.get_height())/2) + Gdk.cairo_set_source_pixbuf(context, pixbuf, 0, height_offset) + context.rectangle(0, height_offset, + pixbuf.get_width(), pixbuf.get_height()) context.fill() if self._tint_color: c = self._tint_color - context.set_source_rgba(c.red, c.green, c.blue, 0.2) + r, g, b = c.red, c.green, c.blue + # Figure out the difference between our tint colour and an + # empirically determined (i.e., guessed) satisfying luma and + # adjust the base colours accordingly + luma = (r + r + b + g + g + g) / 6. + extra_luma = (1.2 - luma) / 3. + r, g, b = [min(x + extra_luma, 1.) for x in (r, g, b)] + context.set_source_rgba(r, g, b, 0.4) context.set_operator(cairo.OPERATOR_ATOP) context.paint() if self._emblem_name: - emblem_pixbuf = icon_theme.load_icon(self._emblem_name, - self._emblem_size, 0) - + pixbuf = self._get_pixbuf(self._emblem_name, self._emblem_size) x_offset = self._icon_size - self._emblem_size context.set_operator(cairo.OPERATOR_OVER) - context.set_source_pixbuf(emblem_pixbuf, x_offset, 0) + Gdk.cairo_set_source_pixbuf(context, pixbuf, x_offset, 0) context.rectangle(x_offset, 0, cell_area.width, self._emblem_size) context.fill() - context.set_source(context.pop_group()) + context.pop_group_to_source() context.set_operator(cairo.OPERATOR_OVER) context.paint() - def on_get_size(self, widget, cell_area): + def do_get_size(self, widget, cell_area): # TODO: Account for cell_area if we have alignment set x_offset, y_offset = 0, 0 width, height = self._icon_size, self._icon_size diff -Nru meld-1.5.3/meld/ui/findbar.py meld-3.11.0/meld/ui/findbar.py --- meld-1.5.3/meld/ui/findbar.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/findbar.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,43 +1,60 @@ -### Copyright (C) 2002-2009 Stephen Kennedy +# Copyright (C) 2002-2009 Stephen Kennedy +# Copyright (C) 2012-2013 Kai Willadsen +# +# 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, see . -### 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 +from gi.repository import Gdk +from gi.repository import Gtk +import re -import gnomeglade -from meld import paths from meld import misc -import gtk -import re +from . import gnomeglade + from gettext import gettext as _ + class FindBar(gnomeglade.Component): - def __init__(self): - gnomeglade.Component.__init__(self, paths.ui_dir("findbar.ui"), "findbar") - gnomeglade.connect_signal_handlers(self) + def __init__(self, parent): + gnomeglade.Component.__init__(self, "findbar.ui", "findbar", + ["arrow_left", "arrow_right"]) self.textview = None - self.orig_base_color = self.find_entry.get_style().base[0] + context = self.find_entry.get_style_context() + self.orig_base_color = context.get_background_color(Gtk.StateFlags.NORMAL) + self.arrow_left.show() + self.arrow_right.show() + parent.connect('set-focus-child', self.on_focus_child) + + def on_focus_child(self, container, widget): + if widget is not None: + visible = self.widget.props.visible + if widget is not self.widget and visible: + self.hide() + return False def hide(self): self.textview = None + self.wrap_box.set_visible(False) self.widget.hide() - def start_find(self, textview): + def start_find(self, textview, text=None): self.textview = textview self.replace_label.hide() self.replace_entry.hide() - self.replace_button.hide() - self.replace_all_button.hide() + self.hbuttonbox2.hide() + if text: + self.find_entry.set_text(text) + self.widget.set_row_spacing(0) self.widget.show() self.find_entry.grab_focus() @@ -48,102 +65,111 @@ else: self.start_find(self.textview) - def start_find_previous(self, textview): + def start_find_previous(self, textview, text=None): self.textview = textview if self.find_entry.get_text(): self.find_previous_button.activate() else: self.start_find(self.textview) - def start_replace(self, textview): + def start_replace(self, textview, text=None): self.textview = textview + if text: + self.find_entry.set_text(text) + self.widget.set_row_spacing(6) self.widget.show_all() self.find_entry.grab_focus() + self.wrap_box.set_visible(False) - def on_findbar_close__clicked(self, button): - self.hide() - - def on_find_entry__activate(self, entry): - self.find_next_button.activate() - - def on_replace_entry__activate(self, entry): - self.replace_button.activate() - - def on_find_next_button__clicked(self, button): + def on_find_next_button_clicked(self, button): self._find_text() - def on_find_previous_button__clicked(self, button): + def on_find_previous_button_clicked(self, button): self._find_text(backwards=True) - def on_replace_button__clicked(self, entry): + def on_replace_button_clicked(self, entry): buf = self.textview.get_buffer() oldsel = buf.get_selection_bounds() match = self._find_text(0) newsel = buf.get_selection_bounds() - # only replace if there is a match at the cursor and it was already selected - if match and oldsel and oldsel[0].equal(newsel[0]) and oldsel[1].equal(newsel[1]): + # Only replace if there is an already-selected match at the cursor + if (match and oldsel and oldsel[0].equal(newsel[0]) and + oldsel[1].equal(newsel[1])): buf.begin_user_action() - buf.delete_selection(False,False) - buf.insert_at_cursor( self.replace_entry.get_text() ) - self._find_text( 0 ) + buf.delete_selection(False, False) + buf.insert_at_cursor(self.replace_entry.get_text()) + self._find_text(0) buf.end_user_action() - def on_replace_all_button__clicked(self, entry): + def on_replace_all_button_clicked(self, entry): buf = self.textview.get_buffer() - saved_insert = buf.create_mark(None, buf.get_iter_at_mark(buf.get_insert()), True) + saved_insert = buf.create_mark( + None, buf.get_iter_at_mark(buf.get_insert()), True) buf.begin_user_action() while self._find_text(0): - buf.delete_selection(False,False) - buf.insert_at_cursor( self.replace_entry.get_text() ) + buf.delete_selection(False, False) + buf.insert_at_cursor(self.replace_entry.get_text()) buf.end_user_action() if not saved_insert.get_deleted(): - buf.place_cursor( buf.get_iter_at_mark(saved_insert) ) - self.textview.scroll_to_mark(buf.get_insert(), 0.25) - - def on_find_entry__changed(self, entry): - entry.modify_base( gtk.STATE_NORMAL, self.orig_base_color ) + buf.place_cursor(buf.get_iter_at_mark(saved_insert)) + self.textview.scroll_to_mark( + buf.get_insert(), 0.25, True, 0.5, 0.5) + + def on_find_entry_changed(self, entry): + entry.override_background_color(Gtk.StateType.NORMAL, + self.orig_base_color) - # - # find/replace buffer - # def _find_text(self, start_offset=1, backwards=False, wrap=True): match_case = self.match_case.get_active() whole_word = self.whole_word.get_active() regex = self.regex.get_active() assert self.textview buf = self.textview.get_buffer() - insert = buf.get_iter_at_mark( buf.get_insert() ) + insert = buf.get_iter_at_mark(buf.get_insert()) tofind_utf8 = self.find_entry.get_text() - tofind = tofind_utf8.decode("utf-8") # tofind is utf-8 encoded + tofind = tofind_utf8.decode("utf-8") start, end = buf.get_bounds() - text = buf.get_text(start, end, False).decode("utf-8") # as is buffer + text = buf.get_text(start, end, False).decode("utf-8") if not regex: tofind = re.escape(tofind) if whole_word: tofind = r'\b' + tofind + r'\b' try: - pattern = re.compile( tofind, (match_case and re.M or (re.M|re.I)) ) - except re.error, e: - misc.run_dialog( _("Regular expression error\n'%s'") % e, self, messagetype=gtk.MESSAGE_ERROR) + flags = re.M if match_case else re.M | re.I + pattern = re.compile(tofind, flags) + except re.error as e: + misc.error_dialog(_("Regular expression error"), str(e)) else: - if backwards == False: - match = pattern.search(text, insert.get_offset() + start_offset) + self.wrap_box.set_visible(False) + if not backwards: + match = pattern.search(text, + insert.get_offset() + start_offset) if match is None and wrap: + self.wrap_box.set_visible(True) match = pattern.search(text, 0) else: match = None for m in pattern.finditer(text, 0, insert.get_offset()): match = m if match is None and wrap: + self.wrap_box.set_visible(True) for m in pattern.finditer(text, insert.get_offset()): match = m if match: - it = buf.get_iter_at_offset( match.start() ) - buf.place_cursor( it ) - it.forward_chars( match.end() - match.start() ) - buf.move_mark( buf.get_selection_bound(), it ) - self.textview.scroll_to_mark(buf.get_insert(), 0.25) + it = buf.get_iter_at_offset(match.start()) + buf.place_cursor(it) + it.forward_chars(match.end() - match.start()) + buf.move_mark(buf.get_selection_bound(), it) + self.textview.scroll_to_mark( + buf.get_insert(), 0.25, True, 0.5, 0.5) return True else: - buf.place_cursor( buf.get_iter_at_mark(buf.get_insert()) ) - self.find_entry.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse("#ffdddd")) + buf.place_cursor(buf.get_iter_at_mark(buf.get_insert())) + # FIXME: Even though docs suggest this should work, it does + # not. It just sets the selection colour on the text, without + # affecting the entry colour at all. + color = Gdk.RGBA() + color.parse("#ffdddd") + self.find_entry.override_background_color( + Gtk.StateType.NORMAL, color) + self.wrap_box.set_visible(False) diff -Nru meld-1.5.3/meld/ui/gladesupport.py meld-3.11.0/meld/ui/gladesupport.py --- meld-1.5.3/meld/ui/gladesupport.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/gladesupport.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,6 +1,8 @@ -import historyentry -import msgarea -import meld.linkmap -import meld.diffmap -import meld.util.sourceviewer +from meld import diffmap +from meld import linkmap +from meld import preferences +from meld import sourceview +from meld.ui import historyentry +from meld.ui import msgarea +from meld.ui import statusbar diff -Nru meld-1.5.3/meld/ui/gnomeglade.py meld-3.11.0/meld/ui/gnomeglade.py --- meld-1.5.3/meld/ui/gnomeglade.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/gnomeglade.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,116 +1,75 @@ -### Copyright (C) 2002-2008 Stephen Kennedy -### Copyright (C) 2010 Kai Willadsen +# Copyright (C) 2002-2008 Stephen Kennedy +# Copyright (C) 2010, 2013 Kai Willadsen +# +# 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, see . + +import os -### 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. +from gi.repository import Gtk -### 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. +import meld.conf -### 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 gtk -import re - - -# FIXME: duplicate defn in bin/meld -locale_domain = "meld" +def ui_file(filename): + return os.path.join(meld.conf.DATADIR, "ui", filename) class Component(object): - """Base class for all glade objects. - - This class handles loading the xml glade file and autoconnects - all signals in the glade file. + """Base class for all Gtk.Builder created objects - The handle to the xml file is stored in 'self.xml'. The - toplevel widget is stored in 'self.widget'. + This class loads the UI file, autoconnects signals, and makes + widgets available as attributes. The toplevel widget is stored as + 'self.widget'. - In addition it calls widget.set_data("pyobject", self) - this - allows us to get the python object given only the 'raw' gtk+ - object, which is sadly sometimes necessary. + The python object can be accessed from the widget itself via + widget.pygobject, which is sadly sometimes necessary. """ def __init__(self, filename, root, extra=None): - """Load the widgets from the node 'root' in file 'filename'. - """ - self.builder = gtk.Builder() - self.builder.set_translation_domain(locale_domain) - if extra: - self.builder.add_objects_from_file(filename, extra) - self.builder.add_objects_from_file(filename, [root]) + """Load the widgets from the node 'root' in file 'filename'""" + self.builder = Gtk.Builder() + self.builder.set_translation_domain(meld.conf.__package__) + objects = [root] + extra if extra else [root] + filename = ui_file(filename) + self.builder.add_objects_from_file(filename, objects) self.builder.connect_signals(self) self.widget = getattr(self, root) - self.widget.set_data("pyobject", self) + self.widget.pyobject = self def __getattr__(self, key): - """Allow glade widgets to be accessed as self.widgetname. - """ + """Allow UI builder widgets to be accessed as self.widgetname""" widget = self.builder.get_object(key) - if widget: # cache lookups + if widget: setattr(self, key, widget) return widget raise AttributeError(key) def map_widgets_into_lists(self, widgetnames): """Put sequentially numbered widgets into lists. - - e.g. If an object had widgets self.button0, self.button1, ..., - then after a call to object._map_widgets_into_lists(["button"]) - object has an attribute self.button == [self.button0, self.button1, ...]." + + Given an object with widgets self.button0, self.button1, ..., + after a call to object.map_widgets_into_lists(["button"]) + object.button == [self.button0, self.button1, ...] """ for item in widgetnames: - setattr(self,item, []) - lst = getattr(self,item) - i = 0 + i, lst = 0, [] while 1: - key = "%s%i"%(item,i) + key = "%s%i" % (item, i) try: val = getattr(self, key) except AttributeError: break lst.append(val) i += 1 - -# Regular expression to match handler method names patterns -# on_widget__signal and after_widget__signal. Note that we use two -# underscores between the Glade widget name and the signal name. -handler_re = re.compile(r'^(on|after)_(.*)__(.*)$') - -def connect_signal_handlers(obj): - for attr in dir(obj): - match = handler_re.match(attr) - if match: - when, widgetname, signal = match.groups() - method = getattr(obj, attr) - assert callable(method) - try: - widget = getattr(obj, widgetname) - except AttributeError: - print "Widget '%s' not found in %s" % (widgetname, obj) - continue - if not isinstance(widget,list): - widget = [widget] - for w in widget: - try: - if when == 'on': - w.connect(signal, method) - elif when == 'after': - w.connect_after(signal, method) - except TypeError, e: - print e, "in", obj, attr - elif attr.startswith('on_') or attr.startswith('after_'): - continue # don't warn until all old code updated - # Warn about some possible typos like separating - # widget and signal name with _ instead of __. - print ('Warning: attribute %r not connected' - ' as a signal handler' % (attr,)) - - -import gladesupport + setattr(self, item, lst) diff -Nru meld-1.5.3/meld/ui/historyentry.py meld-3.11.0/meld/ui/historyentry.py --- meld-1.5.3/meld/ui/historyentry.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/historyentry.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,30 +1,32 @@ -# Copyright (C) 2008-2009 Kai Willadsen +# Copyright (C) 2008-2011, 2013 Kai Willadsen # -# This program is free software; you can redistribute it and/or modify +# 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. +# 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. +# 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 +# along with this program. If not, see . +try: + # py3k + import configparser +except ImportError: + import ConfigParser as configparser import os import sys -import gio -import gtk -import gobject -import atk -# gconf is also imported; see end of HistoryEntry class for details -from gettext import gettext as _ +from gi.repository import GLib +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import Pango -# This file is a Python translation of: +# This file started off as a Python translation of: # * gedit/gedit/gedit-history-entry.c # * libgnomeui/libgnomeui/gnome-file-entry.c # roughly based on Colin Walters' Python translation of msgarea.py from Hotwire @@ -32,455 +34,124 @@ MIN_ITEM_LEN = 3 HISTORY_ENTRY_HISTORY_LENGTH_DEFAULT = 10 + def _remove_item(store, text): if text is None: return False for row in store: - if row[0] == text: + if row[1] == text: store.remove(row.iter) return True return False + def _clamp_list_store(liststore, max_items): try: - it = liststore.get_iter(max_items - 1) # -1 because TreePath counts from 0 + # -1 because TreePath counts from 0 + it = liststore.get_iter(max_items - 1) except ValueError: return valid = True while valid: valid = liststore.remove(it) -def _escape_cell_data_func(col, renderer, model, it, escape_func): - string = model.get(it, 0) - escaped = escape_func(string) - renderer.set("text", escaped) - - -class HistoryEntry(gtk.ComboBoxEntry): - __gtype_name__ = "HistoryEntry" - - __gproperties__ = { - "history-id": (str, "History ID", - "Identifier associated with entry's history store", - None, gobject.PARAM_READWRITE), - } - - def __init__(self, history_id=None, enable_completion=False, **kwargs): - super(HistoryEntry, self).__init__(**kwargs) - - self.__history_id = history_id - self.__history_length = HISTORY_ENTRY_HISTORY_LENGTH_DEFAULT - self.__completion = None - self._get_gconf_client() - self.set_model(gtk.ListStore(str)) - self.props.text_column = 0 +class HistoryCombo(Gtk.ComboBox): + __gtype_name__ = "HistoryCombo" - self.set_enable_completion(enable_completion) + history_id = GObject.property( + type=str, + nick="History ID", + blurb="Identifier associated with entry's history store", + default=None, + flags=GObject.PARAM_READWRITE, + ) + + history_length = GObject.property( + type=int, + nick="History length", + blurb="Number of history items to display in the combo", + minimum=1, maximum=20, + default=HISTORY_ENTRY_HISTORY_LENGTH_DEFAULT, + ) + def __init__(self, **kwargs): + super(HistoryCombo, self).__init__(**kwargs) - def do_get_property(self, pspec): - if pspec.name == "history-id": - return self.__history_id + if sys.platform == "win32": + pref_dir = os.path.join(os.getenv("APPDATA"), "Meld") else: - raise AttributeError("Unknown property: %s" % pspec.name) + pref_dir = os.path.join(GLib.get_user_config_dir(), "meld") - def do_set_property(self, pspec, value): - if pspec.name == "history-id": - # FIXME: if we change history-id after our store is populated, odd - # things might happen - store = self.get_model() - store.clear() - self.__history_id = value - self._load_history() - else: - raise AttributeError("Unknown property: %s" % pspec.name) + if not os.path.exists(pref_dir): + os.makedirs(pref_dir) + + self.history_file = os.path.join(pref_dir, "history.ini") + self.config = configparser.SafeConfigParser() + if os.path.exists(self.history_file): + self.config.read(self.history_file) + + self.set_model(Gtk.ListStore(str, str)) + rentext = Gtk.CellRendererText() + rentext.props.width_chars = 60 + rentext.props.ellipsize = Pango.EllipsizeMode.END + self.pack_start(rentext, True) + self.add_attribute(rentext, 'text', 0) + + self.connect('notify::history-id', + lambda *args: self._load_history()) + self.connect('notify::history-length', + lambda *args: self._load_history()) - def _get_gconf_client(self): - self.__gconf_client = gconf.client_get_default() + def prepend_history(self, text): + self._insert_history_item(text, True) - def __get_history_key(self): - # We store data under /apps/gnome-settings/ like GnomeEntry did. - if not self.__history_id: - return None - key = ''.join(["/apps/gnome-settings/","meld","/history-", - gconf.escape_key(self.__history_id, -1)]) - return key + def append_history(self, text): + self._insert_history_item(text, False) - def _save_history(self): - key = self.__get_history_key() - if key is None: - return - gconf_items = [row[0] for row in self.get_model()] - self.__gconf_client.set_list(key, gconf.VALUE_STRING, gconf_items) + def clear(self): + self.get_model().clear() + self._save_history() - def __insert_history_item(self, text, prepend): - if len(text) <= MIN_ITEM_LEN: + def _insert_history_item(self, text, prepend): + if not text or len(text) <= MIN_ITEM_LEN: return store = self.get_model() if not _remove_item(store, text): - _clamp_list_store(store, self.__history_length - 1) + _clamp_list_store(store, self.props.history_length - 1) + + row = (text.splitlines()[0], text) - if (prepend): - store.insert(0, (text,)) + if prepend: + store.insert(0, row) else: - store.append((text,)) + store.append(row) self._save_history() - def prepend_text(self, text): - if not text: - return - self.__insert_history_item(text, True) - - def append_text(self, text): - if not text: - return - self.__insert_history_item(text, False) - def _load_history(self): - key = self.__get_history_key() - if key is None: + section_key = self.props.history_id + if section_key is None or not self.config.has_section(section_key): return - gconf_items = self.__gconf_client.get_list(key, gconf.VALUE_STRING) store = self.get_model() store.clear() + paths = sorted(self.config.items(section_key)) + for key, path in paths[:self.props.history_length - 1]: + path = path.decode("string-escape") + firstline = path.splitlines()[0] + store.append((firstline, path)) - for item in gconf_items[:self.__history_length - 1]: - store.append((item,)) - - def clear(self): - store = self.get_model() - store.clear() - self._save_history() - - def set_history_length(self, max_saved): - if max_saved <= 0: - return - self.__history_length = max_saved - if len(self.get_model()) > max_saved: - self._load_history() - - def get_history_length(self): - return self.__history_length - - def set_enable_completion(self, enable): - if enable: - if self.__completion is not None: - return - self.__completion = gtk.EntryCompletion() - self.__completion.set_model(self.get_model()) - self.__completion.set_text_column(0) - self.__completion.set_minimum_key_length(MIN_ITEM_LEN) - self.__completion.set_popup_completion(False) - self.__completion.set_inline_completion(True) - self.child.set_completion(self.__completion) - else: - if self.__completion is None: - return - self.get_entry().set_completion(None) - self.__completion = None - - def get_enable_completion(self): - return self.__completion is not None - - def get_entry(self): - return self.child - - def focus_entry(self): - self.child.grab_focus() - - def set_escape_func(self, escape_func): - cells = self.get_cells() - # We only have one cell renderer - if len(cells) == 0 or len(cells) > 1: - return - - if escape_func is not None: - self.set_cell_data_func(cells[0], _escape_cell_data_func, escape_func) - else: - self.set_cell_data_func(cells[0], None, None) - -try: - import gconf -except ImportError: - do_nothing = lambda *args: None - for m in ('_save_history', '_load_history', '_get_gconf_client'): - setattr(HistoryEntry, m, do_nothing) - - - -def _expand_filename(filename, default_dir): - if not filename: - return "" - if os.path.isabs(filename): - return filename - expanded = os.path.expanduser(filename) - if expanded != filename: - return expanded - elif default_dir: - return os.path.expanduser(os.path.join(default_dir, filename)) - else: - return os.path.join(os.getcwd(), filename) - - -last_open = {} - - -class HistoryFileEntry(gtk.HBox, gtk.Editable): - __gtype_name__ = "HistoryFileEntry" - - __gsignals__ = { - "browse_clicked" : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []), - "activate" : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []) - } - - __gproperties__ = { - "dialog-title": (str, "Default path", - "Default path for file chooser", - "~", gobject.PARAM_READWRITE), - "default-path": (str, "Default path", - "Default path for file chooser", - "~", gobject.PARAM_READWRITE), - "directory-entry": (bool, "File or directory entry", - "Whether the created file chooser should select directories instead of files", - False, gobject.PARAM_READWRITE), - "filename": (str, "Filename", - "Filename of the selected file", - "", gobject.PARAM_READWRITE), - "history-id": (str, "History ID", - "Identifier associated with entry's history store", - None, gobject.PARAM_READWRITE), - "modal": (bool, "File chooser modality", - "Whether the created file chooser is modal", - False, gobject.PARAM_READWRITE), - } - - - def __init__(self, **kwargs): - super(HistoryFileEntry, self).__init__(**kwargs) - - self.fsw = None - self.__browse_dialog_title = None - self.__filechooser_action = gtk.FILE_CHOOSER_ACTION_OPEN - self.__default_path = "~" - self.__directory_entry = False - self.__modal = False - - self.set_spacing(3) - - # TODO: completion would be nice, but some quirks make it currently too irritating to turn on by default - self.__gentry = HistoryEntry() - entry = self.__gentry.get_entry() - entry.connect("changed", lambda *args: self.emit("changed")) - entry.connect("activate", lambda *args: self.emit("activate")) - - # We need to get rid of the pre-existing drop site on the entry - self.__gentry.get_entry().drag_dest_unset() - self.drag_dest_set(gtk.DEST_DEFAULT_MOTION | - gtk.DEST_DEFAULT_HIGHLIGHT | - gtk.DEST_DEFAULT_DROP, - [], gtk.gdk.ACTION_COPY) - self.drag_dest_add_uri_targets() - self.connect("drag_data_received", - self.history_entry_drag_data_received) - - self.pack_start(self.__gentry, True, True, 0) - self.__gentry.show() - - button = gtk.Button(_("_Browse...")) - button.connect("clicked", self.__browse_clicked) - self.pack_start(button, False, False, 0) - button.show() - - access_entry = self.__gentry.get_accessible() - access_button = button.get_accessible() - if access_entry and access_button: - access_entry.set_name(_("Path")) - access_entry.set_description(_("Path to file")) - access_button.set_description(_("Pop up a file selector to choose a file")) - access_button.add_relationship(atk.RELATION_CONTROLLER_FOR, access_entry) - access_entry.add_relationship(atk.RELATION_CONTROLLED_BY, access_button) - - def do_get_property(self, pspec): - if pspec.name == "dialog-title": - return self.__browse_dialog_title - elif pspec.name == "default-path": - return self.__default_path - elif pspec.name == "directory-entry": - return self.__directory_entry - elif pspec.name == "filename": - return self.get_full_path() - elif pspec.name == "history-id": - return self.__gentry.props.history_id - elif pspec.name == "modal": - return self.__modal - else: - raise AttributeError("Unknown property: %s" % pspec.name) - - def do_set_property(self, pspec, value): - if pspec.name == "dialog-title": - self.__browse_dialog_title = value - elif pspec.name == "default-path": - if value: - self.__default_path = os.path.abspath(value) - else: - self.__default_path = None - elif pspec.name == "directory-entry": - self.__directory_entry = value - elif pspec.name == "filename": - self.set_filename(value) - elif pspec.name == "history-id": - self.__gentry.props.history_id = value - elif pspec.name == "modal": - self.__modal = value - else: - raise AttributeError("Unknown property: %s" % pspec.name) - - def _get_last_open(self): - try: - return last_open[self.props.history_id] - except KeyError: - return None - - def _set_last_open(self, path): - last_open[self.props.history_id] = path - - def append_history(self, text): - self.__gentry.append_text(text) - - def prepend_history(self, text): - self.__gentry.prepend_text(text) - - def focus_entry(self): - self.__gentry.focus_entry() - - def set_default_path(self, path): - if path: - self.__default_path = os.path.abspath(path) - else: - self.__default_path = None - - def set_directory_entry(self, is_directory_entry): - self.directory_entry = is_directory_entry - - def get_directory_entry(self): - return self.directory_entry - - def _get_default(self): - default = self.__default_path - last_path = self._get_last_open() - if last_path and os.path.exists(last_path): - default = last_path - return default - - def get_full_path(self): - text = self.__gentry.get_entry().get_text() - if not text: - return None - sys_text = gobject.filename_from_utf8(text) - filename = _expand_filename(sys_text, self._get_default()) - if not filename: - return None - return filename - - def set_filename(self, filename): - self.__gentry.get_entry().set_text(filename) - - def __browse_dialog_ok(self, filewidget): - filename = filewidget.get_filename() - if not filename: - return - - encoding = sys.getfilesystemencoding() - if encoding: - filename = unicode(filename, encoding) - entry = self.__gentry.get_entry() - entry.set_text(filename) - self._set_last_open(filename) - entry.activate() - - def __browse_dialog_response(self, widget, response): - if response == gtk.RESPONSE_ACCEPT: - self.__browse_dialog_ok(widget) - widget.destroy() - self.fsw = None - - def __build_filename(self): - default = self._get_default() - - text = self.__gentry.get_entry().get_text() - if not text: - return default + os.sep - - locale_text = gobject.filename_from_utf8(text) - if not locale_text: - return default + os.sep - - filename = _expand_filename(locale_text, default) - if not filename: - return default + os.sep - - if not filename.endswith(os.sep) and (self.__directory_entry or os.path.isdir(filename)): - filename += os.sep - return filename - - def __browse_clicked(self, *args): - if self.fsw: - self.fsw.show() - if self.fsw.window: - self.fsw.window.raise_() - return - - if self.__directory_entry: - action = gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER - filefilter = gtk.FileFilter() - filefilter.add_mime_type("x-directory/normal") - title = self.__browse_dialog_title or _("Select directory") - else: - action = self.__filechooser_action - filefilter = None - title = self.__browse_dialog_title or _("Select file") - - if action == gtk.FILE_CHOOSER_ACTION_SAVE: - buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_ACCEPT) - else: - buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_ACCEPT) - - self.fsw = gtk.FileChooserDialog(title, None, action, buttons, None) - self.fsw.props.filter = filefilter - self.fsw.set_default_response(gtk.RESPONSE_ACCEPT) - self.fsw.set_filename(self.__build_filename()) - self.fsw.connect("response", self.__browse_dialog_response) - - toplevel = self.get_toplevel() - modal_fentry = False - if toplevel.flags() & gtk.TOPLEVEL: - self.fsw.set_transient_for(toplevel) - modal_fentry = toplevel.get_modal() - if self.__modal or modal_fentry: - self.fsw.set_modal(True) - - self.fsw.show() - - def history_entry_drag_data_received(self, widget, context, x, y, selection_data, info, time): - uris = selection_data.data.split() - if not uris: - context.finish(False, False, time) - return - - for uri in uris: - path = gio.File(uri=uri).get_path() - if path: - break - else: - context.finish(False, False, time) + def _save_history(self): + section_key = self.props.history_id + if section_key is None: return - entry = self.__gentry.get_entry() - entry.set_text(path) - context.finish(True, False, time) - self._set_last_open(path) - entry.activate() + self.config.remove_section(section_key) + self.config.add_section(section_key) + for i, row in enumerate(self.get_model()): + message = row[1].encode('string-escape') + self.config.set(section_key, "item%d" % i, message) + with open(self.history_file, 'w') as f: + self.config.write(f) diff -Nru meld-1.5.3/meld/ui/listwidget.py meld-3.11.0/meld/ui/listwidget.py --- meld-1.5.3/meld/ui/listwidget.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/listwidget.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,33 +1,31 @@ -### Copyright (C) 2002-2009 Stephen Kennedy -### Copyright (C) 2010-2011 Kai Willadsen +# Copyright (C) 2002-2009 Stephen Kennedy +# Copyright (C) 2010-2011, 2013 Kai Willadsen +# +# 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, see . -### 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 gnomeglade -from meld import paths +from . import gnomeglade class ListWidget(gnomeglade.Component): - def __init__(self, new_row_data=None): - gnomeglade.Component.__init__(self, paths.ui_dir("EditableList.ui"), - "list_alignment", ["EditableListStore"]) + def __init__(self, ui_file, widget, store, treeview, new_row_data=None): + gnomeglade.Component.__init__(self, ui_file, + widget, store) self.new_row_data = new_row_data - self.model = self.EditableList.get_model() - selection = self.EditableList.get_selection() + self.list = getattr(self, treeview) + self.model = self.list.get_model() + selection = self.list.get_selection() selection.connect("changed", self._update_sensitivity) def _update_sensitivity(self, *args): @@ -42,7 +40,7 @@ self.move_down.set_sensitive(path < len(model) - 1) def _get_selected(self): - (model, it) = self.EditableList.get_selection().get_selected() + (model, it) = self.list.get_selection().get_selected() if it: path = model.get_path(it)[0] else: @@ -63,4 +61,3 @@ def on_move_down_clicked(self, button): (model, it, path) = self._get_selected() model.swap(it, model.get_iter(path + 1)) - diff -Nru meld-1.5.3/meld/ui/msgarea.py meld-3.11.0/meld/ui/msgarea.py --- meld-1.5.3/meld/ui/msgarea.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/msgarea.py 2014-02-16 20:23:22.000000000 +0000 @@ -2,230 +2,67 @@ # # Copyright (C) 2007,2008 Colin Walters # -# This program is free software; you can redistribute it and/or modify +# 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. +# 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. +# 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 logging - -import gobject -import gtk +# along with this program. If not, see . +# +# Additional modifications made for use in Meld and adaptations for +# newer GTK+. +# Copyright (C) 2013 Kai Willadsen + +from gi.repository import Gtk + +from meld.ui.wraplabel import WrapLabel + + +def layout_text_and_icon(stockid, primary_text, secondary_text=None): + hbox_content = Gtk.HBox(False, 8) + hbox_content.show() + + image = Gtk.Image() + image.set_from_stock(stockid, Gtk.IconSize.DIALOG) + image.show() + hbox_content.pack_start(image, False, False, 0) + image.set_alignment(0.5, 0.5) + + vbox = Gtk.VBox(False, 6) + vbox.show() + hbox_content.pack_start(vbox, True, True, 0) + + primary_markup = "%s" % (primary_text,) + primary_label = WrapLabel(primary_markup) + primary_label.show() + vbox.pack_start(primary_label, True, True, 0) + primary_label.set_use_markup(True) + primary_label.set_line_wrap(True) + primary_label.set_alignment(0, 0.5) + primary_label.set_can_focus(True) + primary_label.set_selectable(True) + + if secondary_text: + secondary_markup = "%s" % (secondary_text,) + secondary_label = WrapLabel(secondary_markup) + secondary_label.show() + vbox.pack_start(secondary_label, True, True, 0) + secondary_label.set_can_focus(True) + secondary_label.set_use_markup(True) + secondary_label.set_line_wrap(True) + secondary_label.set_selectable(True) + secondary_label.set_alignment(0, 0.5) -from wraplabel import WrapLabel - -_logger = logging.getLogger("hotwire.ui.MsgArea") - -# This file is a Python translation of gedit/gedit/gedit-message-area.c - -class MsgArea(gtk.HBox): - __gtype_name__ = "MsgArea" - - __gsignals__ = { - "response" : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT,)), - "close" : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, []) - } - - def __init__(self, buttons, **kwargs): - super(MsgArea, self).__init__(**kwargs) - - self.__contents = None - self.__labels = [] - self.__changing_style = False - - self.__main_hbox = gtk.HBox(False, 16) # FIXME: use style properties - self.__main_hbox.show() - self.__main_hbox.set_border_width(8) # FIXME: use style properties - - self.__action_area = gtk.VBox(True, 4); # FIXME: use style properties - self.__action_area.show() - self.__main_hbox.pack_end (self.__action_area, False, True, 0) - - self.pack_start(self.__main_hbox, True, True, 0) - - self.set_app_paintable(True) - - self.connect("expose-event", self.__paint) - - # Note that we connect to style-set on one of the internal - # widgets, not on the message area itself, since gtk does - # not deliver any further style-set signals for a widget on - # which the style has been forced with gtk_widget_set_style() - self.__main_hbox.connect("style-set", self.__on_style_set) - - self.add_buttons(buttons) - - def __get_response_data(self, w, create): - d = w.get_data('hotwire-msg-area-data') - if (d is None) and create: - d = {'respid': None} - w.set_data('hotwire-msg-area-data', d) - return d - - def __find_button(self, respid): - children = self.__actionarea.get_children() - for child in children: - rd = self.__get_response_data(child, False) - if rd is not None and rd['respid'] == respid: - return child - - def __close(self): - cancel = self.__find_button(gtk.RESPONSE_CANCEL) - if cancel is None: - return - self.response(gtk.RESPONSE_CANCEL) - - def __paint(self, w, event): - gtk.Style.paint_flat_box(w.style, - w.window, - gtk.STATE_NORMAL, - gtk.SHADOW_OUT, - None, - w, - "tooltip", - w.allocation.x + 1, - w.allocation.y + 1, - w.allocation.width - 2, - w.allocation.height - 2) - - return False - - def __on_style_set(self, w, style): - if self.__changing_style: - return - # This is a hack needed to use the tooltip background color - window = gtk.Window(gtk.WINDOW_POPUP); - window.set_name("gtk-tooltip") - window.ensure_style() - style = window.get_style() - - self.__changing_style = True - self.set_style(style) - for label in self.__labels: - label.set_style(style) - self.__changing_style = False - - window.destroy() - - self.queue_draw() - - def __get_response_for_widget(self, w): - rd = self.__get_response_data(w, False) - if rd is None: - return gtk.RESPONSE_NONE - return rd['respid'] - - def __on_action_widget_activated(self, w): - response_id = self.__get_response_for_widget(w) - self.response(response_id) - - def add_action_widget(self, child, respid): - rd = self.__get_response_data(child, True) - rd['respid'] = respid - if not isinstance(child, gtk.Button): - raise ValueError("Can only pack buttons as action widgets") - child.connect('clicked', self.__on_action_widget_activated) - if respid != gtk.RESPONSE_HELP: - self.__action_area.pack_start(child, False, False, 0) - else: - self.__action_area.pack_end(child, False, False, 0) - - def set_contents(self, contents): - self.__contents = contents - self.__main_hbox.pack_start(contents, True, True, 0) - - - def add_button(self, btext, respid): - button = gtk.Button(stock=btext) - button.set_focus_on_click(False) - button.set_flags(gtk.CAN_DEFAULT) - button.show() - self.add_action_widget(button, respid) - return button - - def add_buttons(self, args): - _logger.debug("init buttons: %r", args) - for (btext, respid) in args: - self.add_button(btext, respid) - - def set_response_sensitive(self, respid, setting): - for child in self.__action_area.get_children(): - rd = self.__get_response_data(child, False) - if rd is not None and rd['respid'] == respid: - child.set_sensitive(setting) - break - - def set_default_response(self, respid): - for child in self.__action_area.get_children(): - rd = self.__get_response_data(child, False) - if rd is not None and rd['respid'] == respid: - child.grab_default() - break - - def response(self, respid): - self.emit('response', respid) - - def add_stock_button_with_text(self, text, stockid, respid): - b = gtk.Button(label=text) - b.set_focus_on_click(False) - img = gtk.Image() - img.set_from_stock(stockid, gtk.ICON_SIZE_BUTTON) - b.set_image(img) - b.show_all() - self.add_action_widget(b, respid) - return b - - def set_text_and_icon(self, stockid, primary_text, secondary_text=None): - hbox_content = gtk.HBox(False, 8) - hbox_content.show() - - image = gtk.Image() - image.set_from_stock(stockid, gtk.ICON_SIZE_DIALOG) - image.show() - hbox_content.pack_start(image, False, False, 0) - image.set_alignment(0.5, 0.5) - - vbox = gtk.VBox(False, 6) - vbox.show() - hbox_content.pack_start (vbox, True, True, 0) - - self.__labels = [] - - primary_markup = "%s" % (primary_text,) - primary_label = WrapLabel(primary_markup) - primary_label.show() - vbox.pack_start(primary_label, True, True, 0) - primary_label.set_use_markup(True) - primary_label.set_line_wrap(True) - primary_label.set_alignment(0, 0.5) - primary_label.set_flags(gtk.CAN_FOCUS) - primary_label.set_selectable(True) - self.__labels.append(primary_label) - - if secondary_text: - secondary_markup = "%s" % (secondary_text,) - secondary_label = WrapLabel(secondary_markup) - secondary_label.show() - vbox.pack_start(secondary_label, True, True, 0) - secondary_label.set_flags(gtk.CAN_FOCUS) - secondary_label.set_use_markup(True) - secondary_label.set_line_wrap(True) - secondary_label.set_selectable(True) - secondary_label.set_alignment(0, 0.5) - self.__labels.append(secondary_label) + return hbox_content - self.set_contents(hbox_content) -class MsgAreaController(gtk.HBox): +class MsgAreaController(Gtk.HBox): __gtype_name__ = "MsgAreaController" def __init__(self): @@ -250,9 +87,19 @@ self.__msgarea = None self.__msgid = None - def new_from_text_and_icon(self, stockid, primary, secondary=None, buttons=[]): + def new_from_text_and_icon(self, stockid, primary, secondary=None, + buttons=[]): self.clear() - msgarea = self.__msgarea = MsgArea(buttons) - msgarea.set_text_and_icon(stockid, primary, secondary) - self.pack_start(msgarea, expand=True) + msgarea = self.__msgarea = Gtk.InfoBar() + + for (text, respid) in buttons: + self.add_button(text, respid) + + content = layout_text_and_icon(stockid, primary, secondary) + + content_area = msgarea.get_content_area() + content_area.foreach(content_area.remove, None) + content_area.add(content) + + self.pack_start(msgarea, True, True, 0) return msgarea diff -Nru meld-1.5.3/meld/ui/notebooklabel.py meld-3.11.0/meld/ui/notebooklabel.py --- meld-1.5.3/meld/ui/notebooklabel.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/notebooklabel.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,79 +1,88 @@ -### Copyright (C) 2002-2009 Stephen Kennedy -### Copyright (C) 2008-2009 Kai Willadsen - -### 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 - +# Copyright (C) 2002-2009 Stephen Kennedy +# Copyright (C) 2008-2009, 2013 Kai Willadsen +# +# 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, see . from gettext import gettext as _ -import gtk -import pango - -gtk.rc_parse_string( - """ - style "meld-tab-close-button-style" { - GtkWidget::focus-padding = 0 - GtkWidget::focus-line-width = 0 - xthickness = 0 - ythickness = 0 +from gi.repository import Gdk +from gi.repository import Gio +from gi.repository import Gtk +from gi.repository import Pango + + +class NotebookLabel(Gtk.HBox): + __gtype_name__ = "NotebookLabel" + + css = """ + * { + -GtkButton-default-border : 0; + -GtkButton-default-outside-border : 0; + -GtkButton-inner-border: 0; + -GtkWidget-focus-line-width : 0; + -GtkWidget-focus-padding : 0; + padding : 0; } - widget "*.meld-tab-close-button" style "meld-tab-close-button-style" - """) - -class NotebookLabel(gtk.HBox): + """ tab_width_in_chars = 30 def __init__(self, iconname, text, onclose): - gtk.HBox.__init__(self, False, 4) + Gtk.HBox.__init__(self, False, 4) - label = gtk.Label(text) + label = Gtk.Label(label=text) # FIXME: ideally, we would use custom ellipsization that ellipsized the # two paths separately, but that requires significant changes to label # generation in many different parts of the code - label.set_ellipsize(pango.ELLIPSIZE_MIDDLE) + label.set_ellipsize(Pango.EllipsizeMode.MIDDLE) label.set_single_line_mode(True) label.set_alignment(0.0, 0.5) label.set_padding(0, 0) context = self.get_pango_context() - metrics = context.get_metrics(self.style.font_desc, context.get_language()) - char_width = metrics.get_approximate_digit_width() - (w, h) = gtk.icon_size_lookup_for_settings (self.get_settings(), gtk.ICON_SIZE_MENU) - self.set_size_request(self.tab_width_in_chars * pango.PIXELS(char_width) + 2 * w, -1) + font_desc = self.get_style_context().get_font(Gtk.StateFlags.NORMAL) + metrics = context.get_metrics(font_desc, context.get_language()) + char_width = metrics.get_approximate_char_width() / Pango.SCALE + valid, w, h = Gtk.icon_size_lookup_for_settings(self.get_settings(), Gtk.IconSize.MENU) + # FIXME: PIXELS replacement + self.set_size_request(self.tab_width_in_chars * char_width + 2 * w, -1) - button = gtk.Button() - button.set_relief(gtk.RELIEF_NONE) + button = Gtk.Button() + button.set_relief(Gtk.ReliefStyle.NONE) button.set_focus_on_click(False) - image = gtk.image_new_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU) + icon = Gio.ThemedIcon.new_with_default_fallbacks('window-close-symbolic') + image = Gtk.Image.new_from_gicon(icon, Gtk.IconSize.MENU) image.set_tooltip_text(_("Close tab")) button.add(image) button.set_name("meld-tab-close-button") - button.set_size_request(w + 2, h + 2) button.connect("clicked", onclose) - icon = gtk.image_new_from_icon_name(iconname, gtk.ICON_SIZE_MENU) + context = button.get_style_context() + provider = Gtk.CssProvider() + provider.load_from_data(self.css) + context.add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) - label_box = gtk.EventBox() - label_box.add_events(gtk.gdk.BUTTON_PRESS_MASK) + icon = Gtk.Image.new_from_icon_name(iconname, Gtk.IconSize.MENU) + + label_box = Gtk.EventBox() + label_box.add_events(Gdk.EventMask.BUTTON_PRESS_MASK) label_box.props.visible_window = False label_box.connect("button-press-event", self.on_label_clicked) label_box.add(label) - self.pack_start(icon, expand=False) - self.pack_start(label_box) - self.pack_start(button, expand=False) + self.pack_start(icon, False, True, 0) + self.pack_start(label_box, True, True, 0) + self.pack_start(button, False, True, 0) self.set_tooltip_text(text) self.show_all() @@ -81,7 +90,7 @@ self.__onclose = onclose def on_label_clicked(self, box, event): - if event.type == gtk.gdk.BUTTON_PRESS and event.button == 2: + if event.type == Gdk.EventType.BUTTON_PRESS and event.button == 2: self.__onclose(None) def get_label_text(self): @@ -90,4 +99,3 @@ def set_label_text(self, text): self.__label.set_text(text) self.set_tooltip_text(text) - diff -Nru meld-1.5.3/meld/ui/statusbar.py meld-3.11.0/meld/ui/statusbar.py --- meld-1.5.3/meld/ui/statusbar.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/ui/statusbar.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,55 @@ +# Copyright (C) 2012-2013 Kai Willadsen +# +# 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, see . + +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import Pango + + +Gtk.rc_parse_string( + """ + style "meld-statusbar-style" { + GtkStatusbar::shadow-type = GTK_SHADOW_NONE + } + class "MeldStatusBar" style "meld-statusbar-style" + """) + + +class MeldStatusBar(Gtk.Statusbar): + __gtype_name__ = "MeldStatusBar" + + def __init__(self): + GObject.GObject.__init__(self) + self.props.spacing = 6 + + hbox = self.get_message_area() + label = hbox.get_children()[0] + hbox.props.spacing = 6 + label.props.ellipsize = Pango.EllipsizeMode.NONE + hbox.remove(label) + hbox.pack_start(label, True, True, 0) + + alignment = Gtk.Alignment.new(xalign=1.0, yalign=0.5, xscale=1.0, yscale=1.0) + self.info_box = Gtk.HBox(False, 12) + self.info_box.show() + alignment.add(self.info_box) + self.pack_start(alignment, True, True, 0) + alignment.show() + + def set_info_box(self, widgets): + for child in self.info_box.get_children(): + self.info_box.remove(child) + for widget in widgets: + self.info_box.pack_end(widget, False, True, 0) diff -Nru meld-1.5.3/meld/ui/util.py meld-3.11.0/meld/ui/util.py --- meld-1.5.3/meld/ui/util.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/ui/util.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,41 @@ +# Copyright (C) 2013 Kai Willadsen +# +# 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, see . + +import os + +from gi.repository import Gtk + +import meld.conf + +# Import support module to get all builder-constructed widgets in the namespace +from meld.ui import gladesupport + + +def ui_file(filename): + return os.path.join(meld.conf.DATADIR, "ui", filename) + + +def get_widget(filename, widget): + builder = Gtk.Builder() + builder.set_translation_domain(meld.conf.__package__) + builder.add_objects_from_file(ui_file(filename), [widget]) + return builder.get_object(widget) + + +def get_builder(filename): + builder = Gtk.Builder() + builder.set_translation_domain(meld.conf.__package__) + builder.add_from_file(ui_file(filename)) + return builder diff -Nru meld-1.5.3/meld/ui/vcdialogs.py meld-3.11.0/meld/ui/vcdialogs.py --- meld-1.5.3/meld/ui/vcdialogs.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/ui/vcdialogs.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,133 @@ +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2010-2013 Kai Willadsen +# +# 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, see . + +from __future__ import print_function + +import os +import textwrap +from gettext import gettext as _ + +from gi.repository import Gio +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import Pango + +from meld.misc import commonprefix +from meld.settings import meldsettings, settings +from meld.ui.gnomeglade import Component + + +# FIXME: Duplication from vcview +def _commonprefix(files): + if len(files) != 1: + workdir = commonprefix(files) + else: + workdir = os.path.dirname(files[0]) or "." + return workdir + + +class CommitDialog(GObject.GObject, Component): + + __gtype_name__ = "CommitDialog" + + break_commit_message = GObject.property(type=bool, default=False) + + def __init__(self, parent): + GObject.GObject.__init__(self) + Component.__init__(self, "vcview.ui", "commitdialog") + self.parent = parent + self.widget.set_transient_for(parent.widget.get_toplevel()) + selected = parent._get_selected_files() + + try: + to_commit = parent.vc.get_files_to_commit(selected) + topdir = parent.vc.root + if to_commit: + to_commit = ["\t" + s for s in to_commit] + else: + to_commit = ["\t" + _("No files will be committed")] + except NotImplementedError: + topdir = _commonprefix(selected) + to_commit = ["\t" + s[len(topdir) + 1:] for s in selected] + self.changedfiles.set_text("(in %s)\n%s" % + (topdir, "\n".join(to_commit))) + + self.textview.modify_font(meldsettings.font) + commit_prefill = self.parent.vc.get_commit_message_prefill() + if commit_prefill: + buf = self.textview.get_buffer() + buf.set_text(commit_prefill) + buf.place_cursor(buf.get_start_iter()) + + # Try and make the textview wide enough for a standard 80-character + # commit message. + context = self.textview.get_pango_context() + metrics = context.get_metrics(meldsettings.font, + context.get_language()) + char_width = metrics.get_approximate_char_width() / Pango.SCALE + self.scrolledwindow1.set_size_request(80 * char_width, -1) + + settings.bind('vc-show-commit-margin', self.textview, + 'show-right-margin', Gio.SettingsBindFlags.DEFAULT) + settings.bind('vc-commit-margin', self.textview, + 'right-margin-position', Gio.SettingsBindFlags.DEFAULT) + settings.bind('vc-break-commit-message', self, + 'break-commit-message', Gio.SettingsBindFlags.DEFAULT) + self.widget.show_all() + + def run(self): + self.previousentry.set_active(-1) + self.textview.grab_focus() + response = self.widget.run() + if response == Gtk.ResponseType.OK: + show_margin = self.textview.get_show_right_margin() + margin = self.textview.get_right_margin_position() + buf = self.textview.get_buffer() + msg = buf.get_text(*buf.get_bounds(), include_hidden_chars=False) + # This is a dependent option because of the margin column + if show_margin and self.props.break_commit_message: + paragraphs = msg.split("\n\n") + msg = "\n\n".join(textwrap.fill(p, margin) for p in paragraphs) + self.parent._command_on_selected( + self.parent.vc.commit_command(msg)) + if msg.strip(): + self.previousentry.prepend_history(msg) + self.widget.destroy() + + def on_previousentry_activate(self, gentry): + idx = gentry.get_active() + if idx != -1: + model = gentry.get_model() + buf = self.textview.get_buffer() + buf.set_text(model[idx][1]) + + +class PushDialog(Component): + + def __init__(self, parent): + Component.__init__(self, "vcview.ui", "pushdialog") + self.parent = parent + self.widget.set_transient_for(parent.widget.get_toplevel()) + self.widget.show_all() + + def run(self): + # TODO: Ask the VC for a more informative label for what will happen. + # In git, this is probably the parsed output of push --dry-run. + + response = self.widget.run() + if response == Gtk.ResponseType.OK: + self.parent.vc.push(self.parent._command) + self.widget.destroy() diff -Nru meld-1.5.3/meld/ui/wraplabel.py meld-3.11.0/meld/ui/wraplabel.py --- meld-1.5.3/meld/ui/wraplabel.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/ui/wraplabel.py 2014-02-16 20:23:22.000000000 +0000 @@ -20,23 +20,22 @@ # Python translation from wrapLabel.{cc|h} by Gian Mario Tagliaretti -import gtk -import gobject -import pango +from gi.repository import Gtk +from gi.repository import Pango -class WrapLabel(gtk.Label): +class WrapLabel(Gtk.Label): __gtype_name__ = 'WrapLabel' - def __init__(self, str=None): - gtk.Label.__init__(self) + def __init__(self, text=None): + Gtk.Label.__init__(self) self.__wrap_width = 0 self.layout = self.get_layout() - self.layout.set_wrap(pango.WRAP_WORD_CHAR) + self.layout.set_wrap(Pango.WrapMode.WORD_CHAR) - if str != None: - self.set_text(str) + if text is not None: + self.set_text(text) self.set_alignment(0.0, 0.0) @@ -47,22 +46,22 @@ requisition.height = height def do_size_allocate(self, allocation): - gtk.Label.do_size_allocate(self, allocation) + Gtk.Label.do_size_allocate(self, allocation) self.__set_wrap_width(allocation.width) - def set_text(self, str): - gtk.Label.set_text(self, str) + def set_text(self, text): + Gtk.Label.set_text(self, text) self.__set_wrap_width(self.__wrap_width) - def set_markup(self, str): - gtk.Label.set_markup(self, str) + def set_markup(self, text): + Gtk.Label.set_markup(self, text) self.__set_wrap_width(self.__wrap_width) def __set_wrap_width(self, width): if width == 0: return layout = self.get_layout() - layout.set_width(width * pango.SCALE) + layout.set_width(width * Pango.SCALE) if self.__wrap_width != width: self.__wrap_width = width self.queue_resize() diff -Nru meld-1.5.3/meld/undo.py meld-3.11.0/meld/undo.py --- meld-1.5.3/meld/undo.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/undo.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,19 +1,18 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2010-2011 Kai Willadsen - -### 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 +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2010-2011 Kai Willadsen +# +# 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, see . """Module to help implement undo functionality. @@ -32,7 +31,8 @@ s.undo() """ -import gobject +from gi.repository import GObject + class GroupAction(object): """A group action combines several actions into one logical action. @@ -42,27 +42,30 @@ # TODO: If a GroupAction affects more than one sequence, our logic # breaks. Currently, this isn't a problem. self.buffer = seq.actions[0].buffer + def undo(self): while self.seq.can_undo(): self.seq.undo() + def redo(self): while self.seq.can_redo(): self.seq.redo() -class UndoSequence(gobject.GObject): + +class UndoSequence(GObject.GObject): """A manager class for operations which can be undone/redone. """ __gsignals__ = { - 'can-undo': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_BOOLEAN,)), - 'can-redo': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_BOOLEAN,)), - 'checkpointed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_OBJECT, gobject.TYPE_BOOLEAN,)), + 'can-undo': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_BOOLEAN,)), + 'can-redo': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_BOOLEAN,)), + 'checkpointed': (GObject.SignalFlags.RUN_FIRST, None, (GObject.TYPE_OBJECT, GObject.TYPE_BOOLEAN,)), } def __init__(self): """Create an empty UndoSequence. """ - gobject.GObject.__init__(self) + GObject.GObject.__init__(self) self.actions = [] self.next_redo = 0 self.checkpoints = {} @@ -152,7 +155,7 @@ def redo(self): """Redo an action. - + Raises and AssertionError if the sequence is not undoable. """ assert self.next_redo < len(self.actions) @@ -177,8 +180,8 @@ while start > 0 and self.actions[start - 1].buffer != buf: start -= 1 end = self.next_redo - while end < len(self.actions) - 1 and \ - self.actions[end + 1].buffer != buf: + while (end < len(self.actions) - 1 and + self.actions[end + 1].buffer != buf): end += 1 if end == len(self.actions): end = None @@ -208,13 +211,13 @@ return if self.group: - self.group.begin_group() + self.group.begin_group() else: self.group = UndoSequence() def end_group(self): """End a logical group action. See also begin_group(). - + Raises an AssertionError if there was not a matching call to begin_group(). """ @@ -227,14 +230,15 @@ else: group = self.group self.group = None - if len(group.actions) == 1: # collapse - self.add_action( group.actions[0] ) + # Collapse single action groups + if len(group.actions) == 1: + self.add_action(group.actions[0]) elif len(group.actions) > 1: - self.add_action( GroupAction(group) ) + self.add_action(GroupAction(group)) def abort_group(self): """Revert the sequence to the state before begin_group() was called. - + Raises an AssertionError if there was no a matching call to begin_group(). """ if self.busy: @@ -248,4 +252,3 @@ def in_grouped_action(self): return self.group is not None - diff -Nru meld-1.5.3/meld/util/compat.py meld-3.11.0/meld/util/compat.py --- meld-1.5.3/meld/util/compat.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/meld/util/compat.py 2014-02-08 21:03:00.000000000 +0000 @@ -0,0 +1,6 @@ + +import sys + +# Python 2/3 compatibility, named as per six +text_type = str if sys.version_info[0] == 3 else unicode +string_types = str if sys.version_info[0] == 3 else basestring diff -Nru meld-1.5.3/meld/util/namedtuple.py meld-3.11.0/meld/util/namedtuple.py --- meld-1.5.3/meld/util/namedtuple.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/util/namedtuple.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,151 +0,0 @@ - -# Retrieved from http://code.activestate.com/recipes/500261/ -# Licensed under the PSF license - -from operator import itemgetter as _itemgetter -from keyword import iskeyword as _iskeyword -import sys as _sys - -def namedtuple(typename, field_names, verbose=False, rename=False): - """Returns a new subclass of tuple with named fields. - - >>> Point = namedtuple('Point', 'x y') - >>> Point.__doc__ # docstring for the new class - 'Point(x, y)' - >>> p = Point(11, y=22) # instantiate with positional args or keywords - >>> p[0] + p[1] # indexable like a plain tuple - 33 - >>> x, y = p # unpack like a regular tuple - >>> x, y - (11, 22) - >>> p.x + p.y # fields also accessable by name - 33 - >>> d = p._asdict() # convert to a dictionary - >>> d['x'] - 11 - >>> Point(**d) # convert from a dictionary - Point(x=11, y=22) - >>> p._replace(x=100) # _replace() is like str.replace() but targets named fields - Point(x=100, y=22) - - """ - - # Parse and validate the field names. Validation serves two purposes, - # generating informative error messages and preventing template injection attacks. - if isinstance(field_names, basestring): - field_names = field_names.replace(',', ' ').split() # names separated by whitespace and/or commas - field_names = tuple(map(str, field_names)) - if rename: - names = list(field_names) - seen = set() - for i, name in enumerate(names): - if (not min(c.isalnum() or c=='_' for c in name) or _iskeyword(name) - or not name or name[0].isdigit() or name.startswith('_') - or name in seen): - names[i] = '_%d' % i - seen.add(name) - field_names = tuple(names) - for name in (typename,) + field_names: - if not min(c.isalnum() or c=='_' for c in name): - raise ValueError('Type names and field names can only contain alphanumeric characters and underscores: %r' % name) - if _iskeyword(name): - raise ValueError('Type names and field names cannot be a keyword: %r' % name) - if name[0].isdigit(): - raise ValueError('Type names and field names cannot start with a number: %r' % name) - seen_names = set() - for name in field_names: - if name.startswith('_') and not rename: - raise ValueError('Field names cannot start with an underscore: %r' % name) - if name in seen_names: - raise ValueError('Encountered duplicate field name: %r' % name) - seen_names.add(name) - - # Create and fill-in the class template - numfields = len(field_names) - argtxt = repr(field_names).replace("'", "")[1:-1] # tuple repr without parens or quotes - reprtxt = ', '.join('%s=%%r' % name for name in field_names) - template = '''class %(typename)s(tuple): - '%(typename)s(%(argtxt)s)' \n - __slots__ = () \n - _fields = %(field_names)r \n - def __new__(_cls, %(argtxt)s): - return _tuple.__new__(_cls, (%(argtxt)s)) \n - @classmethod - def _make(cls, iterable, new=tuple.__new__, len=len): - 'Make a new %(typename)s object from a sequence or iterable' - result = new(cls, iterable) - if len(result) != %(numfields)d: - raise TypeError('Expected %(numfields)d arguments, got %%d' %% len(result)) - return result \n - def __repr__(self): - return '%(typename)s(%(reprtxt)s)' %% self \n - def _asdict(self): - 'Return a new dict which maps field names to their values' - return dict(zip(self._fields, self)) \n - def _replace(_self, **kwds): - 'Return a new %(typename)s object replacing specified fields with new values' - result = _self._make(map(kwds.pop, %(field_names)r, _self)) - if kwds: - raise ValueError('Got unexpected field names: %%r' %% kwds.keys()) - return result \n - def __getnewargs__(self): - return tuple(self) \n\n''' % locals() - for i, name in enumerate(field_names): - template += ' %s = _property(_itemgetter(%d))\n' % (name, i) - if verbose: - print template - - # Execute the template string in a temporary namespace - namespace = dict(_itemgetter=_itemgetter, __name__='namedtuple_%s' % typename, - _property=property, _tuple=tuple) - try: - exec template in namespace - except SyntaxError, e: - raise SyntaxError(e.message + ':\n' + template) - result = namespace[typename] - - # For pickling to work, the __module__ variable needs to be set to the frame - # where the named tuple is created. Bypass this step in enviroments where - # sys._getframe is not defined (Jython for example) or sys._getframe is not - # defined for arguments greater than 0 (IronPython). - try: - result.__module__ = _sys._getframe(1).f_globals.get('__name__', '__main__') - except (AttributeError, ValueError): - pass - - return result - - - - - - -if __name__ == '__main__': - # verify that instances can be pickled - from cPickle import loads, dumps - Point = namedtuple('Point', 'x, y', True) - p = Point(x=10, y=20) - assert p == loads(dumps(p, -1)) - - # test and demonstrate ability to override methods - class Point(namedtuple('Point', 'x y')): - @property - def hypot(self): - return (self.x ** 2 + self.y ** 2) ** 0.5 - def __str__(self): - return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot) - - for p in Point(3,4), Point(14,5), Point(9./7,6): - print p - - class Point(namedtuple('Point', 'x y')): - 'Point class with optimized _make() and _replace() without error-checking' - _make = classmethod(tuple.__new__) - def _replace(self, _map=map, **kwds): - return self._make(_map(kwds.get, ('x', 'y'), self)) - - print Point(11, 22)._replace(x=100) - - import doctest - TestResults = namedtuple('TestResults', 'failed attempted') - print TestResults(*doctest.testmod()) diff -Nru meld-1.5.3/meld/util/prefs.py meld-3.11.0/meld/util/prefs.py --- meld-1.5.3/meld/util/prefs.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/util/prefs.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,276 +0,0 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2011-2012 Kai Willadsen - -### 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 - -"""Module to help implement 'instant-apply' preferences. - -Usage: - -import prefs -defaults = { - "colour" : prefs.Value(prefs.STRING, "red") - "size" : prefs.Value(prefs.INT, 10) -} - -p = prefs.Preferences("/apps/myapp", defaults) -# use variables as if they were normal attributes. -draw(p.colour, p.size) -# settings are persistent -p.color = "blue" - -""" - -import os -import sys - -import glib - - -class Value(object): - """Represents a settable preference. - """ - - __slots__ = ["type", "default", "current"] - - def __init__(self, t, d): - """Create a value. - - t : a string : one of ("bool", "int", "string") - d : the default value, also the initial value - """ - self.type = t - self.default = d - self.current = d - -# types of values allowed -BOOL = "bool" -INT = "int" -STRING = "string" -FLOAT = "float" -LIST = "list" - - -class GConfPreferences(object): - """Persistent preferences object that handles preferences via gconf. - - Example: - import prefs - defaults = {"spacing": prefs.Value(prefs.INT, 4), - "font": prefs.Value(prefs.STRING, "monospace") } - p = prefs.Prefs("myapp", defaults) - print p.font - p.font = "sans" # written to gconf too - p2 = prefs.Prefs("myapp", defaults) - print p.font # prints "sans" - """ - - def __init__(self, rootkey, initial): - """Create a preferences object. - - Settings are initialised with 'initial' and then overriden - from values in the gconf database if available. - - rootkey : the root gconf key where the values will be stored - initial : a dictionary of string to Value objects. - """ - self.__dict__["_gconf"] = gconf.client_get_default() - self.__dict__["_listeners"] = [] - self.__dict__["_rootkey"] = rootkey - self.__dict__["_prefs"] = initial - self._gconf.add_dir(rootkey, gconf.CLIENT_PRELOAD_NONE) - self._gconf.notify_add(rootkey, self._on_preference_changed) - for key, value in self._prefs.items(): - gval = self._gconf.get_without_default("%s/%s" % (rootkey, key)) - if gval is not None: - if value.type == LIST: - # We only use/support str lists at the moment - val_tuple = getattr(gval, "get_%s" % value.type)() - value.current = [v.get_string() for v in val_tuple] - else: - value.current = getattr(gval, "get_%s" % value.type)() - - def __getattr__(self, attr): - return self._prefs[attr].current - - def get_default(self, attr): - return self._prefs[attr].default - - def __setattr__(self, attr, val): - value = self._prefs[attr] - if value.current != val: - value.current = val - setfunc = getattr(self._gconf, "set_%s" % value.type) - if value.type == LIST: - # We only use/support str lists at the moment - setfunc("%s/%s" % (self._rootkey, attr), gconf.VALUE_STRING, - val) - else: - setfunc("%s/%s" % (self._rootkey, attr), val) - try: - for l in self._listeners: - l(attr, val) - except StopIteration: - pass - - def _on_preference_changed(self, client, timestamp, entry, extra): - attr = entry.key[entry.key.rfind("/") + 1:] - try: - value = self._prefs[attr] - # Changes for unknown keys are ignored - except KeyError: - pass - else: - if entry.value is not None: - val = getattr(entry.value, "get_%s" % value.type)() - if value.type == LIST: - # We only use/support str lists at the moment - val = [v.get_string() for v in val] - setattr(self, attr, val) - # Setting a value to None deletes it and uses the default value - else: - setattr(self, attr, value.default) - - def notify_add(self, callback): - """Register a callback to be called when a preference changes. - - callback : a callable object which take two parameters, 'attr' the - name of the attribute changed and 'val' the new value. - """ - self._listeners.append(callback) - - def dump(self): - """Print all preferences. - """ - for k, v in self._prefs.items(): - print k, v.type, v.current - - -class ConfigParserPreferences(object): - """Persistent preferences object that handles preferences via ConfigParser. - - This preferences implementation is provided as a fallback for gconf-less - platforms. The ConfigParser library is included in Python and should be - available everywhere. The biggest drawbacks to this backend are lack of - access to desktop-wide settings, and lack of external change notification. - """ - - def __init__(self, rootkey, initial): - """Create a preferences object. - - Settings are initialised with 'initial' and then overriden - from values in the ConfigParser database if available. - - rootkey : unused (retained for compatibility with existing gconf API) - initial : a dictionary of string to Value objects. - """ - self.__dict__["_parser"] = ConfigParser.SafeConfigParser() - self.__dict__["_listeners"] = [] - self.__dict__["_prefs"] = initial - self.__dict__["_type_mappings"] = { - BOOL: self._parser.getboolean, - INT: self._parser.getint, - STRING: self._parser.get, - FLOAT: self._parser.getfloat, - LIST: self._parser.get, - } - - if sys.platform == "win32": - pref_dir = os.path.join(os.getenv("APPDATA"), "Meld") - else: - pref_dir = os.path.join(glib.get_user_config_dir(), "meld") - - if not os.path.exists(pref_dir): - os.makedirs(pref_dir) - - self.__dict__["_file_path"] = os.path.join(pref_dir, "meldrc.ini") - - try: - config_file = open(self._file_path, "r") - try: - self._parser.readfp(config_file) - finally: - config_file.close() - except IOError: - # One-way move of old preferences - old_path = os.path.join(os.path.expanduser("~"), ".meld") - old_file_path = os.path.join(old_path, "meldrc.ini") - if os.path.exists(old_file_path): - try: - config_file = open(old_file_path, "r") - try: - self._parser.readfp(config_file) - finally: - config_file.close() - new_config_file = open(self._file_path, "w") - try: - self._parser.write(new_config_file) - finally: - new_config_file.close() - except IOError: - pass - - for key, value in self._prefs.items(): - if self._parser.has_option("DEFAULT", key): - value.current = self._type_mappings[value.type]("DEFAULT", key) - - def __getattr__(self, attr): - return self._prefs[attr].current - - def get_default(self, attr): - return self._prefs[attr].default - - def __setattr__(self, attr, val): - value = self._prefs[attr] - if value.current != val: - value.current = val - self._parser.set(None, attr, str(val)) - - try: - fp = open(self._file_path, "w") - try: - self._parser.write(fp) - finally: - fp.close() - except IOError: - pass - - try: - for l in self._listeners: - l(attr, val) - except StopIteration: - pass - - def notify_add(self, callback): - """Register a callback to be called when a preference changes. - - callback : a callable object which take two parameters, 'attr' the - name of the attribute changed and 'val' the new value. - """ - self._listeners.append(callback) - - def dump(self): - """Print all preferences. - """ - for k, v in self._prefs.items(): - print k, v.type, v.current - -# Prefer gconf, falling back to ConfigParser -try: - import gconf - Preferences = GConfPreferences -except ImportError: - import ConfigParser - Preferences = ConfigParserPreferences diff -Nru meld-1.5.3/meld/util/sourceviewer.py meld-3.11.0/meld/util/sourceviewer.py --- meld-1.5.3/meld/util/sourceviewer.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/util/sourceviewer.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,199 +0,0 @@ -### Copyright (C) 2009 Vincent Legoll -### Copyright (C) 2010-2011 Kai Willadsen - -### 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 - -'''Abstraction from sourceview version API incompatibilities -''' - -import os - -import gio -import gtk - - -class _srcviewer(object): - # Module name to be imported for the sourceviewer class - srcviewer_module = None - # instance of the imported sourceviewer module - gsv = None - - spaces_flag = 0 - - def __init__(self): - if self.srcviewer_module is not None: - self.gsv = __import__(self.srcviewer_module) - self.glm = None - self.version_check() - self.GtkTextView = None - self.GtkTextBuffer = None - self.overrides() - - def version_check(self): - raise NotImplementedError - - def overrides(self): - raise NotImplementedError - - def GtkLanguageManager(self): - raise NotImplementedError - - def set_highlight_syntax(self, buf, enabled): - raise NotImplementedError - - def set_tab_width(self, tab, tab_size): - raise NotImplementedError - - def get_language_from_file(self, filename): - raise NotImplementedError - - def get_language_from_mime_type(self, mimetype): - raise NotImplementedError - - def get_language_manager(self): - if self.glm is None: - self.glm = self.GtkLanguageManager() - return self.glm - - def set_language(self, buf, lang): - raise NotImplementedError - - -class _gtksourceview2(_srcviewer): - srcviewer_module = "gtksourceview2" - - def version_check(self): - raise NotImplementedError - - def overrides(self): - self.GtkTextView = self.gsv.View - self.GtkTextBuffer = self.gsv.Buffer - self.spaces_flag = self.gsv.DRAW_SPACES_ALL - - def GtkLanguageManager(self): - return self.gsv.LanguageManager() - - def set_tab_width(self, tab, tab_size): - return tab.set_tab_width(tab_size) - - def set_highlight_syntax(self, buf, enabled): - return buf.set_highlight_syntax(enabled) - - def get_language_from_file(self, filename): - return self.get_language_manager().guess_language(filename) - - def get_language_from_mime_type(self, mime_type): - content_type = gio.content_type_from_mime_type(mime_type) - return self.get_language_manager().guess_language(None, content_type) - - def set_language(self, buf, lang): - buf.set_language(lang) - - -class gtksourceview24(_gtksourceview2): - - def version_check(self): - if self.gsv.pygtksourceview2_version[1] < 4: - raise ImportError - - def overrides(self): - _gtksourceview2.overrides(self) - viewClass = self.gsv.View - - class SourceView(viewClass): - - __gsignals__ = { - 'key-press-event': 'override' - } - - def do_key_press_event(self, event): - if event.keyval in (gtk.keysyms.KP_Up, gtk.keysyms.KP_Down, - gtk.keysyms.Up, gtk.keysyms.Down) and \ - (event.state & gtk.gdk.MOD1_MASK) != 0 and \ - (event.state & gtk.gdk.SHIFT_MASK) == 0: - return True - return viewClass.do_key_press_event(self, event) - - self.GtkTextView = SourceView - - -class gtksourceview210(_gtksourceview2): - - def version_check(self): - if self.gsv.pygtksourceview2_version[1] < 10: - raise ImportError - - def overrides(self): - _gtksourceview2.overrides(self) - gtk.binding_entry_remove(self.GtkTextView, gtk.keysyms.Up, - gtk.gdk.MOD1_MASK) - gtk.binding_entry_remove(self.GtkTextView, gtk.keysyms.KP_Up, - gtk.gdk.MOD1_MASK) - gtk.binding_entry_remove(self.GtkTextView, gtk.keysyms.Down, - gtk.gdk.MOD1_MASK) - gtk.binding_entry_remove(self.GtkTextView, gtk.keysyms.KP_Down, - gtk.gdk.MOD1_MASK) - - -class nullsourceview(_srcviewer): - """Implement the sourceviewer API when no real one is available - """ - - get_language_from_file = lambda *args: None - set_highlight_syntax = lambda *args: None - set_language = lambda *args: None - set_tab_width = lambda *args: None - get_language_from_mime_type = lambda *args: None - - def overrides(self): - import gobject - import gtk - - class NullTextView(gtk.TextView): - set_tab_width = lambda *args: None - set_show_line_numbers = lambda *args: None - set_insert_spaces_instead_of_tabs = lambda *args: None - set_draw_spaces = lambda *args: None - gobject.type_register(NullTextView) - - self.GtkTextView = NullTextView - self.GtkTextBuffer = gtk.TextBuffer - - def version_check(self): - pass - -def _get_srcviewer(): - for srcv in (gtksourceview210, gtksourceview24): - try: - return srcv() - except ImportError: - pass - return nullsourceview() - -srcviewer = _get_srcviewer() - -class MeldSourceView(srcviewer.GtkTextView): - __gtype_name__ = "MeldSourceView" - - def get_y_for_line_num(self, line): - buf = self.get_buffer() - it = buf.get_iter_at_line(line) - y, h = self.get_line_yrange(it) - if line >= buf.get_line_count(): - return y + h - 1 - return y - - def get_line_num_for_y(self, y): - return self.get_line_at_y(y)[0].get_line() diff -Nru meld-1.5.3/meld/vc/bzr.py meld-3.11.0/meld/vc/bzr.py --- meld-1.5.3/meld/vc/bzr.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/bzr.py 2014-02-16 20:23:22.000000000 +0000 @@ -22,78 +22,140 @@ ### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import os import errno -import _vc +import os +import re +import shutil +import subprocess +import tempfile + +from . import _vc + class Vc(_vc.CachedVc): CMD = "bzr" CMDARGS = ["--no-aliases", "--no-plugins"] - NAME = "Bazaar-NG" + NAME = "Bazaar" VC_DIR = ".bzr" - PATCH_INDEX_RE = "^=== modified file '(.*)'$" + CONFLICT_RE = "conflict in (.*)$" + + commit_statuses = ( + _vc.STATE_MODIFIED, _vc.STATE_NEW, _vc.STATE_REMOVED + ) + + conflict_map = { + _vc.CONFLICT_BASE: '.BASE', + _vc.CONFLICT_OTHER: '.OTHER', + _vc.CONFLICT_THIS: '.THIS', + _vc.CONFLICT_MERGED: '', + } # We use None here to indicate flags that we don't deal with or care about state_1_map = { - "+": None, # File versioned - "-": None, # File unversioned - "R": None, # File renamed - "?": _vc.STATE_NONE, # File unknown - "X": None, # File nonexistent (and unknown to bzr) - "C": _vc.STATE_CONFLICT, # File has conflicts - "P": None, # Entry for a pending merge (not a file) + " ": None, # First status column empty + "+": None, # File versioned + "-": None, # File unversioned + "R": None, # File renamed + "?": _vc.STATE_NONE, # File unknown + "X": None, # File nonexistent (and unknown to bzr) + "C": _vc.STATE_CONFLICT, # File has conflicts + "P": None, # Entry for a pending merge (not a file) } state_2_map = { - "N": _vc.STATE_NEW, # File created - "D": _vc.STATE_REMOVED, # File deleted - "K": None, # File kind changed - "M": _vc.STATE_MODIFIED, # File modified + " ": _vc.STATE_NORMAL, # Second status column empty + "N": _vc.STATE_NEW, # File created + "D": _vc.STATE_REMOVED, # File deleted + "K": None, # File kind changed + "M": _vc.STATE_MODIFIED, # File modified } + valid_status_re = r'[%s][%s][\*\s]\s*' % (''.join(state_1_map.keys()), + ''.join(state_2_map.keys())) + def commit_command(self, message): return [self.CMD] + self.CMDARGS + ["commit", "-m", message] - def diff_command(self): - return [self.CMD] + self.CMDARGS + ["diff"] - def update_command(self): - return [self.CMD] + self.CMDARGS + ["pull"] - def add_command(self, binary=0): + + def add_command(self): return [self.CMD] + self.CMDARGS + ["add"] - def remove_command(self, force=0): - return [self.CMD] + self.CMDARGS + ["rm"] - def revert_command(self): - return [self.CMD] + self.CMDARGS + ["revert"] - def resolved_command(self): - return [self.CMD] + self.CMDARGS + ["resolve"] - def valid_repo(self): - if _vc.call([self.CMD, "status"], cwd=self.root): - return False - else: - return True + + def revert(self, runner, files): + runner( + [self.CMD] + self.CMDARGS + ["revert"] + files, [], refresh=True, + working_dir=self.root) + + def push(self, runner): + runner( + [self.CMD] + self.CMDARGS + ["push"], [], refresh=True, + working_dir=self.root) + + def update(self, runner, files): + # TODO: Handle checkouts/bound branches by calling + # update instead of pull. For now we've replicated existing + # functionality, as update will not work for unbound branches. + runner( + [self.CMD] + self.CMDARGS + ["pull"], [], refresh=True, + working_dir=self.root) + + def resolve(self, runner, files): + runner( + [self.CMD] + self.CMDARGS + ["resolve"] + files, [], refresh=True, + working_dir=self.root) + + def remove(self, runner, files): + runner( + [self.CMD] + self.CMDARGS + ["rm"] + files, [], refresh=True, + working_dir=self.root) + + @classmethod + def valid_repo(cls, path): + return not _vc.call([cls.CMD, "root"], cwd=path) + def get_working_directory(self, workdir): return self.root + def get_files_to_commit(self, paths): + files = [] + for p in paths: + if os.path.isdir(p): + entries = self._lookup_tree_cache(p) + names = [ + x for x, y in entries.items() if y in self.commit_statuses] + files.extend(names) + else: + files.append(os.path.relpath(p, self.root)) + return sorted(list(set(files))) + def _lookup_tree_cache(self, rootdir): - branch_root = _vc.popen([self.CMD] + self.CMDARGS + ["root", rootdir]).read().rstrip('\n') + branch_root = _vc.popen( + [self.CMD] + self.CMDARGS + ["root", rootdir]).read().rstrip('\n') while 1: try: proc = _vc.popen([self.CMD] + self.CMDARGS + ["status", "-S", "--no-pending", branch_root]) entries = proc.read().split("\n")[:-1] break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise + tree_state = {} for entry in entries: - state_string, name = entry[:3], entry[4:] - + state_string, name = entry[:3], entry[4:].strip() + if not re.match(self.valid_status_re, state_string): + continue # TODO: We don't do anything with exec bit changes. - path = os.path.join(branch_root, name.strip()) state = self.state_1_map.get(state_string[0], None) if state is None: state = self.state_2_map.get(state_string[1], _vc.STATE_NORMAL) + elif state == _vc.STATE_CONFLICT: + real_path_match = re.search(self.CONFLICT_RE, name) + if real_path_match is None: + continue + name = real_path_match.group(1) + + path = os.path.join(branch_root, name) tree_state[path] = state return tree_state @@ -104,26 +166,79 @@ retfiles = [] retdirs = [] bzrfiles = {} - for path,state in tree.iteritems(): + for path, state in tree.items(): mydir, name = os.path.split(path) if path.endswith('/'): mydir, name = os.path.split(mydir) if mydir != directory: continue - rev, options, tag = "","","" if path.endswith('/'): - retdirs.append( _vc.Dir(path[:-1], name, state)) + retdirs.append(_vc.Dir(path[:-1], name, state)) else: - retfiles.append( _vc.File(path, name, state, rev, tag, options) ) + retfiles.append(_vc.File(path, name, state)) bzrfiles[name] = 1 - for f,path in files: + for f, path in files: if f not in bzrfiles: - #state = ignore_re.match(f) is None and _vc.STATE_NONE or _vc.STATE_IGNORED state = _vc.STATE_NORMAL - retfiles.append( _vc.File(path, f, state, "") ) - for d,path in dirs: + retfiles.append(_vc.File(path, f, state)) + for d, path in dirs: if d not in bzrfiles: - #state = ignore_re.match(f) is None and _vc.STATE_NONE or _vc.STATE_IGNORED state = _vc.STATE_NORMAL - retdirs.append( _vc.Dir(path, d, state) ) + retdirs.append(_vc.Dir(path, d, state)) return retdirs, retfiles + + def get_path_for_repo_file(self, path, commit=None): + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + + path = path[len(self.root) + 1:] + + args = [self.CMD, "cat", path] + if commit: + args.append("-r%s" % commit) + + process = subprocess.Popen(args, + cwd=self.root, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + vc_file = process.stdout + + # Error handling here involves doing nothing; in most cases, the only + # sane response is to return an empty temp file. + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + shutil.copyfileobj(vc_file, f) + return f.name + + def get_path_for_conflict(self, path, conflict): + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + + # bzr paths are all temporary files + return "%s%s" % (path, self.conflict_map[conflict]), False + + # Sensitivity button mappings. + def update_actions_for_paths(self, path_states, actions): + states = path_states.values() + + actions["VcCompare"] = bool(path_states) + # TODO: We can't disable this for NORMAL, because folders don't + # inherit any state from their children, but committing a folder with + # modified children is expected behaviour. + actions["VcCommit"] = all(s not in ( + _vc.STATE_NONE, _vc.STATE_IGNORED) for s in states) + + actions["VcUpdate"] = True + # TODO: We can't do this; this shells out for each selection change... + # actions["VcPush"] = bool(self.get_commits_to_push()) + actions["VcPush"] = True + + actions["VcAdd"] = all(s not in ( + _vc.STATE_NORMAL, _vc.STATE_REMOVED) for s in states) + actions["VcResolved"] = all(s == _vc.STATE_CONFLICT for s in states) + actions["VcRemove"] = (all(s not in ( + _vc.STATE_NONE, _vc.STATE_IGNORED, + _vc.STATE_REMOVED) for s in states) and + self.root not in path_states.keys()) + actions["VcRevert"] = all(s not in ( + _vc.STATE_NONE, _vc.STATE_NORMAL, + _vc.STATE_IGNORED) for s in states) diff -Nru meld-1.5.3/meld/vc/cdv.py meld-3.11.0/meld/vc/cdv.py --- meld-1.5.3/meld/vc/cdv.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/cdv.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -### Copyright (C) 2009 Vincent Legoll - -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -import _vc -import svn - -class Vc(svn.Vc): - - CMD = "cdv" - NAME = "Codeville" - VC_DIR = ".cdv" - PATCH_INDEX_RE = "^[+]{3} (.+)$" - state_map = {"M": _vc.STATE_MODIFIED,} - - def get_working_directory(self, workdir): - return self.root - - def _get_matches(self, directory): - entries = _vc.popen([self.CMD, "status"], cwd=directory).read() - for line in entries.split("\n")[1:-1]: - yield line[3:], line[0], "" diff -Nru meld-1.5.3/meld/vc/cvs.py meld-3.11.0/meld/vc/cvs.py --- meld-1.5.3/meld/vc/cvs.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/cvs.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,32 +1,44 @@ -### Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2013 Kai Willadsen -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import logging import os -from gettext import gettext as _ import re +import shutil +import tempfile import time + from meld import misc -import _vc +from . import _vc + +log = logging.getLogger(__name__) + + +class FakeErrorStream(object): + def error(self, error): + pass + class Vc(_vc.Vc): CMD = "cvs" @@ -35,61 +47,120 @@ NAME = "CVS" VC_DIR = "CVS" VC_ROOT_WALK = False + PATCH_STRIP_NUM = 0 PATCH_INDEX_RE = "^Index:(.*)$" + VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_REVISION, + _vc.DATA_OPTIONS) + def __init__(self, location): super(Vc, self).__init__(location) if not _vc.call(["which", self.ALT_CMD]): self.CMD = self.ALT_CMD def commit_command(self, message): - return [self.CMD,"commit","-m",message] - def diff_command(self): - return [self.CMD,"diff","-u"] + return [self.CMD, "commit", "-m", message] + def update_command(self): - return [self.CMD,"update"] - def add_command(self, binary=0): - if binary: - return [self.CMD,"add","-kb"] - return [self.CMD,"add"] + return [self.CMD, "update"] + def remove_command(self, force=0): - return [self.CMD,"rm","-f"] + return [self.CMD, "rm", "-f"] + def revert_command(self): - return [self.CMD,"update","-C"] - def valid_repo(self): - if _vc.call([self.CMD, "version"], cwd=self.root): - return False - else: - return True + return [self.CMD, "update", "-C"] + + @classmethod + def valid_repo(cls, path): + return os.path.exists(os.path.join(path, cls.VC_DIR, "Entries")) + + def get_path_for_repo_file(self, path, commit=None): + if commit is not None: + raise NotImplementedError + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + path = path[len(self.root) + 1:] + + diffiter = misc.read_pipe_iter([self.CMD, "diff", "-u", path], + FakeErrorStream(), workdir=self.root) + patch = None + while patch is None: + patch = next(diffiter) + status = next(diffiter) + + tmpdir = tempfile.mkdtemp("-meld") + destfile = os.path.join(tmpdir, os.path.basename(path)) + + try: + shutil.copyfile(os.path.join(self.root, path), destfile) + except IOError: + # For missing files, create a new empty file + open(destfile, "w").close() + + patchcmd = ["patch", "-R", "-d", tmpdir] + try: + with open(os.devnull, "w") as NULL: + result = misc.write_pipe(patchcmd, patch, error=NULL) + assert result == 0 + + with open(destfile) as patched_file: + with tempfile.NamedTemporaryFile(prefix='meld-tmp', + delete=False) as temp_file: + shutil.copyfileobj(patched_file, temp_file) + + return temp_file.name + except (OSError, AssertionError): + return + finally: + if os.path.exists(destfile): + os.remove(destfile) + if os.path.exists(destfile): + os.rmdir(tmpdir) + + def add(self, runner, files): + # CVS needs to add folders from their immediate parent + dirs = [s for s in files if os.path.isdir(s)] + files = [s for s in files if os.path.isfile(s)] + command = [self.CMD, 'add'] + for path in dirs: + runner(command, [path], refresh=True, + working_dir=os.path.dirname(path)) + if files: + runner(command, files, refresh=True) def _get_dirsandfiles(self, directory, dirs, files): + vc_path = os.path.join(directory, self.VC_DIR) try: - entries = open(os.path.join(directory, self.VC_DIR, "Entries")).read() + with open(os.path.join(vc_path, "Entries")) as f: + entries = f.read() # poor mans universal newline - entries = entries.replace("\r","\n").replace("\n\n","\n") - except IOError, e: # no cvs dir - d = map(lambda x: _vc.Dir(x[1],x[0], _vc.STATE_NONE), dirs) - f = map(lambda x: _vc.File(x[1],x[0], _vc.STATE_NONE, None), files) - return d,f + entries = entries.replace("\r", "\n").replace("\n\n", "\n") + # No CVS directory + except IOError as e: + d = [_vc.Dir(x[1], x[0], _vc.STATE_NONE) for x in dirs] + f = [_vc.File(x[1], x[0], _vc.STATE_NONE) for x in files] + return d, f try: - logentries = open(os.path.join(directory, self.VC_DIR, "Entries.Log")).read() - except IOError, e: + with open(os.path.join(vc_path, "Entries.Log")) as f: + logentries = f.read() + except IOError as e: pass else: matches = re.findall("^([AR])\s*(.+)$(?m)", logentries) toadd = [] for match in matches: if match[0] == "A": - toadd.append( match[1] ) + toadd.append(match[1]) elif match[0] == "R": try: - toadd.remove( match[1] ) + toadd.remove(match[1]) except ValueError: pass else: - print "Unknown Entries.Log line '%s'" % match[0] + log.warning("Unknown Entries.Log line '%s'", match[0]) entries += "\n".join(toadd) retfiles = [] @@ -102,26 +173,25 @@ name = match[1] path = os.path.join(directory, name) rev, date, options, tag = match[2].split("/") - if tag: - tag = tag[1:] if isdir: if os.path.exists(path): state = _vc.STATE_NORMAL else: state = _vc.STATE_MISSING - retdirs.append( _vc.Dir(path,name,state) ) + retdirs.append(_vc.Dir(path, name, state)) else: if rev.startswith("-"): state = _vc.STATE_REMOVED - elif date=="dummy timestamp": + elif date == "dummy timestamp": if rev[0] == "0": state = _vc.STATE_NEW else: - print "Revision '%s' not understood" % rev - elif date=="dummy timestamp from new-entry": + state = _vc.STATE_ERROR + elif date == "dummy timestamp from new-entry": state = _vc.STATE_MODIFIED else: - date = re.sub(r"\s*\d+", lambda x : "%3i" % int(x.group()), date, 1) + date_sub = lambda x: "%3i" % int(x.group()) + date = re.sub(r"\s*\d+", date_sub, date, 1) plus = date.find("+") if plus >= 0: state = _vc.STATE_CONFLICT @@ -138,43 +208,48 @@ except OSError: state = _vc.STATE_MISSING else: - if time.asctime(time.gmtime(mtime))==date: + if time.asctime(time.gmtime(mtime)) == date: state = _vc.STATE_NORMAL else: state = _vc.STATE_MODIFIED - retfiles.append( _vc.File(path, name, state, rev, tag, options) ) + retfiles.append(_vc.File(path, name, state, rev, options)) # known - cvsfiles = map(lambda x: x[1], matches) + cvsfiles = [x[1] for x in matches] # ignored try: - ignored = open(os.path.join(os.environ["HOME"], ".cvsignore")).read().split() + with open(os.path.join(os.environ["HOME"], ".cvsignore")) as f: + ignored = f.read().split() except (IOError, KeyError): ignored = [] try: - ignored += open( os.path.join(directory, ".cvsignore")).read().split() + with open(os.path.join(directory, ".cvsignore")) as f: + ignored += f.read().split() except IOError: pass if len(ignored): try: - regexes = [ misc.shell_to_regex(i)[:-1] for i in ignored ] - ignore_re = re.compile( "(" + "|".join(regexes) + ")" ) - except re.error, e: - misc.run_dialog(_("Error converting to a regular expression\n" - "The pattern was '%s'\n" - "The error was '%s'") % (",".join(ignored), e)) + regexes = [misc.shell_to_regex(i)[:-1] for i in ignored] + ignore_re = re.compile("(" + "|".join(regexes) + ")") + except re.error as err: + log.warning( + "Error converting %s to a regular expression: %s'" % + (",".join(ignored), err)) else: class dummy(object): - def match(self, *args): return None + def match(self, *args): + return None ignore_re = dummy() - for f,path in files: + for f, path in files: if f not in cvsfiles: - state = ignore_re.match(f) is None and _vc.STATE_NONE or _vc.STATE_IGNORED - retfiles.append( _vc.File(path, f, state, "") ) - for d,path in dirs: + state = (ignore_re.match(f) is None and _vc.STATE_NONE or + _vc.STATE_IGNORED) + retfiles.append(_vc.File(path, f, state)) + for d, path in dirs: if d not in cvsfiles: - state = ignore_re.match(d) is None and _vc.STATE_NONE or _vc.STATE_IGNORED - retdirs.append( _vc.Dir(path, d, state) ) + state = (ignore_re.match(d) is None and _vc.STATE_NONE or + _vc.STATE_IGNORED) + retdirs.append(_vc.Dir(path, d, state)) return retdirs, retfiles diff -Nru meld-1.5.3/meld/vc/darcs.py meld-3.11.0/meld/vc/darcs.py --- meld-1.5.3/meld/vc/darcs.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/darcs.py 2014-02-16 20:23:22.000000000 +0000 @@ -21,17 +21,20 @@ #OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE #SOFTWARE. -import os import errno -import _vc +import os +import shutil +import subprocess +import tempfile + +from . import _vc + class Vc(_vc.CachedVc): CMD = "darcs" NAME = "Darcs" VC_DIR = "_darcs" - PATCH_STRIP_NUM = 1 - PATCH_INDEX_RE = "--- old.+?/(.+?)\\t+.*[0-9]{4}$" state_map = { "a": _vc.STATE_NONE, "A": _vc.STATE_NEW, @@ -47,16 +50,12 @@ "-a", "-m", message] - def diff_command(self): - return [self.CMD, "diff", "-u", - "--repodir=%s" % self.root] - def update_command(self): # This will not work while passing the files parameter after it # This hack allows you to update in the root directory return [self.CMD, "pull", "-a", "-p"] - def add_command(self, binary=0): + def add_command(self): return [self.CMD, "add"] def remove_command(self, force=0): @@ -70,15 +69,34 @@ # untested return [self.CMD, "resolve"] - def valid_repo(self): - if _vc.call([self.CMD, "query", "tags"], cwd=self.root): - return False - else: - return True + @classmethod + def valid_repo(cls, path): + return not _vc.call([cls.CMD, "query", "tags"], cwd=path) def get_working_directory(self, workdir): return self.root + def get_path_for_repo_file(self, path, commit=None): + if commit is not None: + raise NotImplementedError() + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + path = path[len(self.root) + 1:] + + process = subprocess.Popen([self.CMD, "show", "contents", + "--repodir=" + self.root, path], + cwd=self.root, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + vc_file = process.stdout + + # Error handling here involves doing nothing; in most cases, the only + # sane response is to return an empty temp file. + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + shutil.copyfileobj(vc_file, f) + return f.name + def _get_dirsandfiles(self, directory, dirs, files): whatsnew = self._get_tree_cache(directory) retfiles, retdirs = (self._get_statuses(whatsnew, files, _vc.File), @@ -102,7 +120,7 @@ try: p = _vc.popen(commandline) break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise for line in p: diff -Nru meld-1.5.3/meld/vc/fossil.py meld-3.11.0/meld/vc/fossil.py --- meld-1.5.3/meld/vc/fossil.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/fossil.py 2014-02-16 20:23:22.000000000 +0000 @@ -23,17 +23,23 @@ ### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import os -import _vc import errno +import logging +import os +import shutil +import subprocess +import tempfile + +from . import _vc class Vc(_vc.CachedVc): CMD = "fossil" NAME = "Fossil" - VC_METADATA = ["_FOSSIL_", ".fos"] # One or the other - PATCH_INDEX_RE = "^--- (.*)$" + VC_METADATA = [".fslckout", "_FOSSIL_", ".fos"] # One or the other + + VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_REVISION) state_map = { 'ADDED' : _vc.STATE_NEW, @@ -47,13 +53,10 @@ def commit_command(self, message): return [self.CMD, "commit", "-m", message] - def diff_command(self): - return [self.CMD, "diff"] - def update_command(self): return [self.CMD, "update"] - def add_command(self, binary=0): + def add_command(self): return [self.CMD, "add"] def remove_command(self, force=0): @@ -62,29 +65,49 @@ def revert_command(self): return [self.CMD, "revert"] - def valid_repo(self): - if _vc.call([self.CMD, "info"], cwd=self.root): - return False - else: - return True + @classmethod + def valid_repo(cls, path): + return not _vc.call([cls.CMD, "info"], cwd=path) + @classmethod def check_repo_root(self, location): # Fossil uses a file -- not a directory - for metafile in self.VC_METADATA: - if os.path.isfile(os.path.join(location, metafile)): - return location - raise ValueError + return any(os.path.isfile(os.path.join(location, m)) + for m in self.VC_METADATA) def get_working_directory(self, workdir): return self.root + def get_path_for_repo_file(self, path, commit=None): + if commit is None: + commit = "" + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + path = path[len(self.root) + 1:] + + command = [self.CMD, "finfo", "-p", path] + if commit: + command.extend(["-r", commit]) + + process = subprocess.Popen(command, + cwd=self.root, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + vc_file = process.stdout + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + shutil.copyfileobj(vc_file, f) + return f.name + def _lookup_tree_cache(self, rootdir): + log = logging.getLogger(__name__) + while 1: try: entries = _vc.popen([self.CMD, "ls", "-l"], cwd=self.root).read().split("\n")[:-1] break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise @@ -102,19 +125,16 @@ os.sep + fname): state = _vc.STATE_MISSING - if state == _vc.STATE_ERROR: - print "WARNING: unknown state ('%s') reported by " \ - "'ls -l'" % mstate else: state = _vc.STATE_ERROR - print "WARNING: unknown state ('%s') reported by 'ls -l' " \ - "(version skew?)" % mstate + log.warning("Unknown state '%s'", mstate) tree_state[os.path.join(self.root, fname)] = state return tree_state def _get_dirsandfiles(self, directory, dirs, files): + log = logging.getLogger(__name__) tree = self._get_tree_cache(directory) @@ -122,7 +142,7 @@ retdirs = [] vcfiles = {} - for path, state in tree.iteritems(): + for path, state in tree.items(): mydir, name = os.path.split(path) if path.endswith('/'): mydir, name = os.path.split(mydir) @@ -139,16 +159,14 @@ 'unchanged']: rev = entries[1].strip() break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise - options, tag = "", "" if path.endswith('/'): retdirs.append(_vc.Dir(path[:-1], name, state)) else: - retfiles.append(_vc.File(path, name, state, rev, tag, - options)) + retfiles.append(_vc.File(path, name, state, rev)) vcfiles[name] = 1 for f, path in files: @@ -163,12 +181,12 @@ 'manifest.uuid'] if f not in ignorelist: - print "WARNING: '%s' was not listed by 'ls -l'" % f + log.warning("'%s' was not listed", f) # If it ain't listed by the inventory it's not under version # control state = _vc.STATE_NONE - retfiles.append(_vc.File(path, f, state, "")) + retfiles.append(_vc.File(path, f, state)) for d, path in dirs: if d not in vcfiles: diff -Nru meld-1.5.3/meld/vc/git.py meld-3.11.0/meld/vc/git.py --- meld-1.5.3/meld/vc/git.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/git.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,122 +1,320 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2005 Aaron Bentley +# Copyright (C) 2007 José Fonseca +# Copyright (C) 2010-2013 Kai Willadsen + +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: +import errno +import os +import re +import shutil +import subprocess +import tempfile -### Copyright (C) 2002-2005 Stephen Kennedy -### Copyright (C) 2005 Aaron Bentley -### Copyright (C) 2007 José Fonseca - -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +from gettext import gettext as _, ngettext + +from . import _vc -import os -import errno -import _vc class Vc(_vc.CachedVc): CMD = "git" NAME = "Git" VC_DIR = ".git" - PATCH_STRIP_NUM = 1 - PATCH_INDEX_RE = "^diff --git [ac]/(.*) [bw]/.*$" + + VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_OPTIONS) + + GIT_DIFF_FILES_RE = ":(\d+) (\d+) [a-z0-9]+ [a-z0-9]+ ([XADMTU])\t(.*)" + DIFF_RE = re.compile(GIT_DIFF_FILES_RE) + + conflict_map = { + # These are the arguments for git-show + # CONFLICT_MERGED has no git-show argument unfortunately. + _vc.CONFLICT_BASE: 1, + _vc.CONFLICT_LOCAL: 2, + _vc.CONFLICT_REMOTE: 3, + } + state_map = { - "X": _vc.STATE_NONE, # Unknown - "A": _vc.STATE_NEW, # New - "D": _vc.STATE_REMOVED, # Deleted - "M": _vc.STATE_MODIFIED, # Modified - "T": _vc.STATE_MODIFIED, # Type-changed - "U": _vc.STATE_CONFLICT, # Unmerged - "I": _vc.STATE_IGNORED, # Ignored (made-up status letter) - "?": _vc.STATE_NONE, # Unversioned + "X": _vc.STATE_NONE, # Unknown + "A": _vc.STATE_NEW, # New + "D": _vc.STATE_REMOVED, # Deleted + "M": _vc.STATE_MODIFIED, # Modified + "T": _vc.STATE_MODIFIED, # Type-changed + "U": _vc.STATE_CONFLICT, # Unmerged } + def __init__(self, location): + super(Vc, self).__init__(location) + self._tree_cache = {} + self._tree_meta_cache = {} + + @classmethod + def is_installed(cls): + try: + proc = _vc.popen([cls.CMD, '--version']) + assert proc.read().startswith('git version') + return True + except: + return False + + @classmethod def check_repo_root(self, location): # Check exists instead of isdir, since .git might be a git-file - if not os.path.exists(os.path.join(location, self.VC_DIR)): - raise ValueError - return location + return os.path.exists(os.path.join(location, self.VC_DIR)) def commit_command(self, message): - return [self.CMD,"commit","-m",message] - def diff_command(self): - return [self.CMD, "diff", "--relative", "HEAD"] - def update_command(self): - return [self.CMD,"pull"] - def add_command(self, binary=0): - return [self.CMD,"add"] - def remove_command(self, force=0): - return [self.CMD,"rm"] - def revert_command(self): - return [self.CMD,"checkout"] - def valid_repo(self): - if _vc.call([self.CMD, "branch"], cwd=self.root): - return False + return [self.CMD, "commit", "-m", message] + + # Prototyping VC interface version 2 + + def update_actions_for_paths(self, path_states, actions): + states = path_states.values() + + actions["VcCompare"] = bool(path_states) + # TODO: We can't disable this for NORMAL, because folders don't + # inherit any state from their children, but committing a folder with + # modified children is expected behaviour. + actions["VcCommit"] = all(s not in ( + _vc.STATE_NONE, _vc.STATE_IGNORED) for s in states) + + actions["VcUpdate"] = True + # TODO: We can't do this; this shells out for each selection change... + # actions["VcPush"] = bool(self.get_commits_to_push()) + actions["VcPush"] = True + + actions["VcAdd"] = all(s not in ( + _vc.STATE_NORMAL, _vc.STATE_REMOVED) for s in states) + actions["VcResolved"] = all(s == _vc.STATE_CONFLICT for s in states) + actions["VcRemove"] = (all(s not in ( + _vc.STATE_NONE, _vc.STATE_IGNORED, + _vc.STATE_REMOVED) for s in states) and + self.root not in path_states.keys()) + actions["VcRevert"] = all(s not in ( + _vc.STATE_NONE, _vc.STATE_NORMAL, + _vc.STATE_IGNORED) for s in states) + + def get_commits_to_push_summary(self): + branch_refs = self.get_commits_to_push() + unpushed_branches = len([v for v in branch_refs.values() if v]) + unpushed_commits = sum(len(v) for v in branch_refs.values()) + if unpushed_commits: + if unpushed_branches > 1: + # Translators: First %s is replaced by translated "%d unpushed + # commits", second %s is replaced by translated "%d branches" + label = _("%s in %s") % ( + ngettext("%d unpushed commit", "%d unpushed commits", + unpushed_commits) % unpushed_commits, + ngettext("%d branch", "%d branches", + unpushed_branches) % unpushed_branches) + else: + # Translators: These messages cover the case where there is + # only one branch, and are not part of another message. + label = ngettext("%d unpushed commit", "%d unpushed commits", + unpushed_commits) % (unpushed_commits) else: - return True + label = "" + return label + + def get_commits_to_push(self): + proc = _vc.popen([self.CMD, "for-each-ref", + "--format=%(refname:short) %(upstream:short)", + "refs/heads"], cwd=self.location) + branch_remotes = proc.read().split("\n")[:-1] + + branch_revisions = {} + for line in branch_remotes: + try: + branch, remote = line.split() + except ValueError: + continue + + proc = _vc.popen([self.CMD, "rev-list", branch, "^" + remote], + cwd=self.location) + revisions = proc.read().split("\n")[:-1] + branch_revisions[branch] = revisions + return branch_revisions + + def get_files_to_commit(self, paths): + files = [] + for p in paths: + if os.path.isdir(p): + entries = self._get_modified_files(p) + names = [self.DIFF_RE.search(e).groups()[3] for e in entries] + files.extend(names) + else: + files.append(os.path.relpath(p, self.root)) + return sorted(list(set(files))) + + def get_commit_message_prefill(self): + """This will be inserted into the commit dialog when commit is run""" + commit_path = os.path.join(self.root, ".git", "MERGE_MSG") + if os.path.exists(commit_path): + # If I have to deal with non-ascii, non-UTF8 pregenerated commit + # messages, I'm taking up pig farming. + with open(commit_path) as f: + message = f.read().decode('utf8') + return "\n".join( + (l for l in message.splitlines() if not l.startswith("#"))) + return None + + def update(self, runner, files): + command = [self.CMD, 'pull'] + runner(command, [], refresh=True, working_dir=self.root) + + def push(self, runner): + command = [self.CMD, 'push'] + runner(command, [], refresh=True, working_dir=self.root) + + def add(self, runner, files): + command = [self.CMD, 'add'] + runner(command, files, refresh=True, working_dir=self.root) + + def remove(self, runner, files): + command = [self.CMD, 'rm', '-r'] + runner(command, files, refresh=True, working_dir=self.root) + + def revert(self, runner, files): + exists = [f for f in files if os.path.exists(f)] + missing = [f for f in files if not os.path.exists(f)] + if exists: + command = [self.CMD, 'checkout'] + runner(command, exists, refresh=True, working_dir=self.root) + if missing: + command = [self.CMD, 'checkout', 'HEAD'] + runner(command, missing, refresh=True, working_dir=self.root) + + def get_path_for_conflict(self, path, conflict): + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + + if conflict == _vc.CONFLICT_MERGED: + # Special case: no way to get merged result from git directly + return path, False + + path = path[len(self.root) + 1:] + if os.name == "nt": + path = path.replace("\\", "/") + + args = ["git", "show", ":%s:%s" % (self.conflict_map[conflict], path)] + process = subprocess.Popen(args, + cwd=self.location, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + vc_file = process.stdout + + # Error handling here involves doing nothing; in most cases, the only + # sane response is to return an empty temp file. + + prefix = 'meld-tmp-%s-' % _vc.conflicts[conflict] + with tempfile.NamedTemporaryFile(prefix=prefix, delete=False) as f: + shutil.copyfileobj(vc_file, f) + return f.name, True + + def get_path_for_repo_file(self, path, commit=None): + if commit is None: + commit = "HEAD" + else: + raise NotImplementedError() + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + path = path[len(self.root) + 1:] + if os.name == "nt": + path = path.replace("\\", "/") + + obj = commit + ":" + path + process = subprocess.Popen([self.CMD, "cat-file", "blob", obj], + cwd=self.root, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + vc_file = process.stdout + + # Error handling here involves doing nothing; in most cases, the only + # sane response is to return an empty temp file. + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + shutil.copyfileobj(vc_file, f) + return f.name + + @classmethod + def valid_repo(cls, path): + # TODO: On Windows, this exit code is wrong under the normal shell; it + # appears to be correct under the default git bash shell however. + return not _vc.call([cls.CMD, "branch"], cwd=path) + def get_working_directory(self, workdir): if workdir.startswith("/"): return self.root else: return '' + def _get_modified_files(self, path): + # Update the index before getting status, otherwise we could + # be reading stale status information + _vc.call([self.CMD, "update-index", "--refresh"], + cwd=self.location) + + # Get the status of files that are different in the "index" vs + # the HEAD of the git repository + proc = _vc.popen([self.CMD, "diff-index", + "--cached", "HEAD", path], cwd=self.location) + entries = proc.read().split("\n")[:-1] + + # Get the status of files that are different in the "index" vs + # the files on disk + proc = _vc.popen([self.CMD, "diff-files", + "-0", path], cwd=self.location) + entries += (proc.read().split("\n")[:-1]) + + # An unmerged file or a file that has been modified, added to + # git's index, then modified again would result in the file + # showing up in both the output of "diff-files" and + # "diff-index". The following command removes duplicate + # file entries. + entries = list(set(entries)) + + return entries + def _update_tree_state_cache(self, path, tree_state): """ Update the state of the file(s) at tree_state['path'] """ while 1: try: - # Update the index before getting status, otherwise we could - # be reading stale status information - _vc.popen(["git", "update-index", "--refresh"], - cwd=self.location) - - # Get the status of files that are different in the "index" vs - # the HEAD of the git repository - proc = _vc.popen([self.CMD, "diff-index", "--name-status", \ - "--cached", "HEAD", path], cwd=self.location) - entries = proc.read().split("\n")[:-1] - - # Get the status of files that are different in the "index" vs - # the files on disk - proc = _vc.popen([self.CMD, "diff-files", "--name-status", \ - "-0", path], cwd=self.location) - entries += (proc.read().split("\n")[:-1]) + entries = self._get_modified_files(path) # Identify ignored files - proc = _vc.popen([self.CMD, "ls-files", "--others", \ - "--ignored", "--exclude-standard", path], cwd=self.location) - entries += ("I\t%s" % f for f in proc.read().split("\n")[:-1]) + proc = _vc.popen([self.CMD, "ls-files", "--others", + "--ignored", "--exclude-standard", path], + cwd=self.location) + ignored_entries = proc.read().split("\n")[:-1] # Identify unversioned files - proc = _vc.popen([self.CMD, "ls-files", "--others", \ - "--exclude-standard", path], cwd=self.location) - entries += ("?\t%s" % f for f in proc.read().split("\n")[:-1]) - - # An unmerged file or a file that has been modified, added to - # git's index, then modified again would result in the file - # showing up in both the output of "diff-files" and - # "diff-index". The following command removes duplicate - # file entries. - entries = list(set(entries)) + proc = _vc.popen([self.CMD, "ls-files", "--others", + "--exclude-standard", path], + cwd=self.location) + unversioned_entries = proc.read().split("\n")[:-1] + break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise @@ -131,16 +329,31 @@ else: # There are 1 or more modified files, parse their state for entry in entries: - statekey, name = entry.split("\t", 2) + columns = self.DIFF_RE.search(entry).groups() + old_mode, new_mode, statekey, name = columns + if os.name == 'nt': + # Git returns unix-style paths on Windows + name = os.path.normpath(name.strip()) path = os.path.join(self.root, name.strip()) state = self.state_map.get(statekey.strip(), _vc.STATE_NONE) tree_state[path] = state + if old_mode != new_mode: + msg = _("Mode changed from %s to %s" % + (old_mode, new_mode)) + self._tree_meta_cache[path] = msg + + for entry in ignored_entries: + path = os.path.join(self.location, entry.strip()) + tree_state[path] = _vc.STATE_IGNORED + + for entry in unversioned_entries: + path = os.path.join(self.location, entry.strip()) + tree_state[path] = _vc.STATE_NONE def _lookup_tree_cache(self, rootdir): # Get a list of all files in rootdir, as well as their status tree_state = {} self._update_tree_state_cache("./", tree_state) - return tree_state def update_file_state(self, path): @@ -153,16 +366,17 @@ retfiles = [] retdirs = [] - for name,path in files: + for name, path in files: state = tree.get(path, _vc.STATE_NORMAL) - retfiles.append( _vc.File(path, name, state) ) - for name,path in dirs: + meta = self._tree_meta_cache.get(path, "") + retfiles.append(_vc.File(path, name, state, options=meta)) + for name, path in dirs: # git does not operate on dirs, just files - retdirs.append( _vc.Dir(path, name, _vc.STATE_NORMAL)) - for path, state in tree.iteritems(): + retdirs.append(_vc.Dir(path, name, _vc.STATE_NORMAL)) + for path, state in tree.items(): # removed files are not in the filesystem, so must be added here - if state is _vc.STATE_REMOVED: + if state in (_vc.STATE_REMOVED, _vc.STATE_MISSING): folder, name = os.path.split(path) if folder == directory: - retfiles.append( _vc.File(path, name, state) ) + retfiles.append(_vc.File(path, name, state)) return retdirs, retfiles diff -Nru meld-1.5.3/meld/vc/__init__.py meld-3.11.0/meld/vc/__init__.py --- meld-1.5.3/meld/vc/__init__.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/__init__.py 2014-02-16 20:23:22.000000000 +0000 @@ -23,7 +23,9 @@ import os import glob -import _null +from . import _null +from ._vc import DATA_NAME, DATA_STATE, DATA_REVISION, DATA_OPTIONS + def load_plugins(): _vcdir = os.path.dirname(os.path.abspath(__file__)) @@ -47,18 +49,15 @@ vc_sort_order = ( "Git", - "Bazaar-NG", + "Bazaar", "Mercurial", "Fossil", "Monotone", "Darcs", - "Arch", - "Codeville", "SVK", "Subversion", "Subversion 1.7", "CVS", - "RCS", ) def get_vcs(location): @@ -74,30 +73,23 @@ """ vcs = [] - max_len = 0 + max_depth = 0 for plugin in _plugins: - try: - avc = plugin.Vc(location) - l = len(avc.root) - if l == max_len: - vcs.append(avc) - elif l > max_len: - max_len = l - vcs = [avc] - except ValueError: - pass + root, location = plugin.Vc.is_in_repo(location) + if not root: + continue + + # Choose the deepest root we find, unless it's from a VC that + # doesn't walk; these can be spurious as the real root may be + # much higher up in the tree. + depth = len(root) + if depth > max_depth and plugin.Vc.VC_ROOT_WALK: + vcs, max_depth = [], depth + if depth >= max_depth: + vcs.append(plugin.Vc) if not vcs: # No plugin recognized that location, fallback to _null - return [_null.Vc(location)] - - vc_comp = lambda a, b: cmp(vc_sort_order.index(a), vc_sort_order.index(b)) - vc_name = lambda x: x.NAME - vcs.sort(cmp=vc_comp, key=vc_name) - - # Simplistic hack so that we don't offer both 1.7 and <1.6 SVN - vc_names = [plugin.NAME for plugin in vcs] - if "Subversion" in vc_names and "Subversion 1.7" in vc_names: - vcs = [plugin for plugin in vcs if plugin.NAME != "Subversion 1.7"] + return [_null.Vc] - return vcs + return sorted(vcs, key=lambda v: vc_sort_order.index(v.NAME)) diff -Nru meld-1.5.3/meld/vc/mercurial.py meld-3.11.0/meld/vc/mercurial.py --- meld-1.5.3/meld/vc/mercurial.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/mercurial.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,39 +1,41 @@ -### Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2002-2005 Stephen Kennedy -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import os import errno -import _vc +import os +import shutil +import subprocess +import tempfile + +from . import _vc -class Vc(_vc.Vc): + +class Vc(_vc.CachedVc): CMD = "hg" NAME = "Mercurial" VC_DIR = ".hg" - PATCH_STRIP_NUM = 1 - # Mercurial diffs can be run in "git" mode - PATCH_INDEX_RE = "^diff (?:-r \w+ |--git a/.* b/)(.*)$" - DIFF_GIT_MODE = False + state_map = { "?": _vc.STATE_NONE, "A": _vc.STATE_NEW, @@ -45,56 +47,107 @@ } def commit_command(self, message): - return [self.CMD,"commit","-m",message] - def diff_command(self): - ret = [self.CMD,"diff"] - if self.DIFF_GIT_MODE: - ret.append("--git") - return ret + return [self.CMD, "commit", "-m", message] + def update_command(self): - return [self.CMD,"update"] - def add_command(self, binary=0): - return [self.CMD,"add"] + return [self.CMD, "update"] + + def add_command(self): + return [self.CMD, "add"] + def remove_command(self, force=0): - return [self.CMD,"rm"] + return [self.CMD, "rm"] + def revert_command(self): - return [self.CMD,"revert"] - def valid_repo(self): - if _vc.call([self.CMD, "root"], cwd=self.root): - return False - else: - return True + return [self.CMD, "revert"] + + @classmethod + def valid_repo(cls, path): + return not _vc.call([cls.CMD, "root"], cwd=path) + def get_working_directory(self, workdir): - return self.root + if workdir.startswith("/"): + return self.root + else: + return '' - def _get_dirsandfiles(self, directory, dirs, files): + def get_path_for_repo_file(self, path, commit=None): + if commit is not None: + raise NotImplementedError() + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + path = path[len(self.root) + 1:] + + process = subprocess.Popen([self.CMD, "cat", path], cwd=self.root, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + shutil.copyfileobj(process.stdout, f) + return f.name + def _update_tree_state_cache(self, path, tree_state): + """ Update the state of the file(s) at tree_state['path'] """ while 1: try: - entries = _vc.popen([self.CMD, "status", "-A", "."], cwd=directory).read().split("\n")[:-1] + # Get the status of modified files + proc = _vc.popen([self.CMD, "status", '-A', path], + cwd=self.location) + entries = proc.read().split("\n")[:-1] + + # The following command removes duplicate file entries. + # Just in case. + entries = list(set(entries)) break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise + if len(entries) == 0 and os.path.isfile(path): + # If we're just updating a single file there's a chance that it + # was it was previously modified, and now has been edited + # so that it is un-modified. This will result in an empty + # 'entries' list, and tree_state['path'] will still contain stale + # data. When this corner case occurs we force tree_state['path'] + # to STATE_NORMAL. + tree_state[path] = _vc.STATE_NORMAL + else: + # There are 1 or more modified files, parse their state + for entry in entries: + # we might have a space in file name, it should be ignored + statekey, name = entry.split(" ", 1) + path = os.path.join(self.location, name.strip()) + state = self.state_map.get(statekey.strip(), _vc.STATE_NONE) + tree_state[path] = state + + def _lookup_tree_cache(self, rootdir): + # Get a list of all files in rootdir, as well as their status + tree_state = {} + self._update_tree_state_cache("./", tree_state) + + return tree_state + + def update_file_state(self, path): + tree_state = self._get_tree_cache(os.path.dirname(path)) + self._update_tree_state_cache(path, tree_state) + + def _get_dirsandfiles(self, directory, dirs, files): + + tree = self._get_tree_cache(directory) + retfiles = [] retdirs = [] - hgfiles = {} - for statekey, name in [ (entry[0], entry[2:]) for entry in entries if entry.find("/")==-1 ]: - path = os.path.join(directory, name) - rev, options, tag = "","","" - state = self.state_map.get(statekey, _vc.STATE_NONE) - retfiles.append( _vc.File(path, name, state, rev, tag, options) ) - hgfiles[name] = 1 - for f,path in files: - if f not in hgfiles: - #state = ignore_re.match(f) is None and _vc.STATE_NONE or _vc.STATE_IGNORED - state = _vc.STATE_NORMAL - retfiles.append( _vc.File(path, f, state, "") ) - for d,path in dirs: - if d not in hgfiles: - #state = ignore_re.match(f) is None and _vc.STATE_NONE or _vc.STATE_IGNORED - state = _vc.STATE_NORMAL - retdirs.append( _vc.Dir(path, d, state) ) - + for name, path in files: + state = tree.get(path, _vc.STATE_NORMAL) + retfiles.append(_vc.File(path, name, state)) + for name, path in dirs: + # mercurial does not operate on dirs, just files + retdirs.append(_vc.Dir(path, name, _vc.STATE_NORMAL)) + for path, state in tree.items(): + # removed files are not in the filesystem, so must be added here + if state in (_vc.STATE_REMOVED, _vc.STATE_MISSING): + folder, name = os.path.split(path) + if folder == directory: + retfiles.append(_vc.File(path, name, state)) return retdirs, retfiles diff -Nru meld-1.5.3/meld/vc/monotone.py meld-3.11.0/meld/vc/monotone.py --- meld-1.5.3/meld/vc/monotone.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/monotone.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,35 +1,41 @@ -### Copyright (C) 2002-2005 Stephen Kennedy -### Copyright (C) 2005 Daniel Thompson +# Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2005 Daniel Thompson -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import os -import _vc import errno +import logging +import os +import shutil +import subprocess +import tempfile + +from . import _vc + class Vc(_vc.CachedVc): + CMD = "mtn" NAME = "Monotone" - VC_METADATA = ['MT', '_MTN'] - PATCH_INDEX_RE = "^[+]{3,3} ([^ ]*)\t[0-9a-f]{40,40}$" + VC_DIR = "_MTN" state_map_6 = { 'added known rename_source' : _vc.STATE_NEW, @@ -109,124 +115,115 @@ 'RRM' : _vc.STATE_MISSING, # rename source and target and target missing } - def __init__(self, location): - self.interface_version = 0.0 - self.choose_monotone_version() - super(Vc, self).__init__(os.path.normpath(location)) - - def choose_monotone_version(self): - try: - # for monotone >= 0.26 - self.VC_DIR = "_MTN" - self.CMD = "mtn" - self.interface_version = float(_vc.popen([self.CMD, "automate", "interface_version"]).read()) - if self.interface_version > 9.0: - print "WARNING: Unsupported interface version (please report any problems to the meld mailing list)" - except (ValueError, OSError): - # for monotone <= 0.25 - self.VC_DIR = "MT" - self.CMD = "monotone" - def commit_command(self, message): - return [self.CMD,"commit","-m",message] - def diff_command(self): - return [self.CMD,"diff"] + return [self.CMD, "commit", "-m", message] + def update_command(self): - return [self.CMD,"update"] - def add_command(self, binary=0): - #if binary: - # return [self.CMD,"add","-kb"] - return [self.CMD,"add"] + return [self.CMD, "update"] + + def add_command(self): + return [self.CMD, "add"] + def remove_command(self, force=0): - return [self.CMD,"drop"] + return [self.CMD, "drop"] + def revert_command(self): - return [self.CMD,"revert"] + return [self.CMD, "revert"] + def resolved_command(self): - return [self.CMD,"resolved"] - def valid_repo(self): - if _vc.call([self.CMD, "list", "tags"], cwd=self.root): - return False - else: - return True + return [self.CMD, "resolved"] + + @classmethod + def valid_repo(cls, path): + return not _vc.call([cls.CMD, "list", "tags"], cwd=path) + def get_working_directory(self, workdir): return self.root + def get_path_for_repo_file(self, path, commit=None): + if commit is None: + commit = "" + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + path = path[len(self.root) + 1:] + + command = [self.CMD, "cat", path] + if commit: + command.extend(["--revision", commit]) + + process = subprocess.Popen(command, + cwd=self.root, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + vc_file = process.stdout + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + shutil.copyfileobj(vc_file, f) + return f.name + def _lookup_tree_cache(self, rootdir): + log = logging.getLogger(__name__) + while 1: try: entries = _vc.popen([self.CMD, "automate", "inventory"], cwd=self.root).read().split("\n")[:-1] break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise - if self.interface_version >= 6.0: - # this version of monotone uses the new inventory format - - # terminate the final stanza. basic io stanzas are blank line seperated with no - # blank line at the beginning or end (and we need to loop below to act upon the - # final stanza - entries.append('') - - tree_state = {} - stanza = {} - for entry in entries: - if entry != '': - # this is part of a stanza and is structured ' word "value1" "value2"', - # we convert this into a dictionary of lists: stanza['word'] = [ 'value1', 'value2' ] - entry = entry.strip().split() - tag = entry[0] - values = [i.strip('"') for i in entry[1:]] - stanza[tag] = values - else: - # extract the filename (and append / if is is a directory) - fname = stanza['path'][0] - if stanza['fs_type'][0] == 'directory': - fname = fname + '/' - - # sort the list and reduce it from a list to a space seperated string. - mstate = stanza['status'] - mstate.sort() - mstate = ' '.join(mstate) - - if mstate in self.state_map_6: - if 'changes' in stanza: - state = _vc.STATE_MODIFIED - else: - state = self.state_map_6[mstate] - if state == _vc.STATE_ERROR: - print "WARNING: invalid state ('%s') reported by 'automate inventory' for %s" % (mstate, fname) - else: - state = _vc.STATE_ERROR - print "WARNING: impossible state ('%s') reported by 'automate inventory' for %s (version skew?)" % (mstate, fname) - - # insert the file into the summarized inventory - tree_state[os.path.join(self.root, fname)] = state - - # clear the stanza ready for next iteration - stanza = {} - - return tree_state + # This handles interface versions from 6.0 to 9.0 + interface_version = float( + _vc.popen([self.CMD, "automate", "interface_version"]).read()) + if interface_version < 6.0 or interface_version > 9.0: + log.error("Unsupported monotone interface version; please " + "report any problems to the Meld mailing list.") + + # Terminate the final stanza, since basic stanzas are blank line + # seperated with no blank line at the beginning or end. + entries.append('') tree_state = {} + stanza = {} for entry in entries: - mstate = entry[0:3] - fname = entry[8:] - - if mstate in self.state_map_old: - state = self.state_map_old[mstate] - if state == _vc.STATE_ERROR: - print "WARNING: invalid state ('%s') reported by 'automate inventory'" % mstate + if entry != '': + # This is part of a stanza and is structured: + # ' word "value1" "value2"' + # We convert this into a dictionary of lists: + # stanza['word'] = [ 'value1', 'value2' ] + entry = entry.strip().split() + tag = entry[0] + values = [i.strip('"') for i in entry[1:]] + stanza[tag] = values else: - state = _vc.STATE_ERROR - print "WARNING: impossible state ('%s') reported by 'automate inventory' (version skew?)" % mstate + fname = stanza['path'][0] + if stanza['fs_type'][0] == 'directory': + fname = fname + '/' + + mstate = ' '.join(sorted(stanza['status'])) + if mstate in self.state_map_6: + if 'changes' in stanza: + state = _vc.STATE_MODIFIED + else: + state = self.state_map_6[mstate] + if state == _vc.STATE_ERROR: + log.warning("Invalid state '%s' reported for " + "%s", mstate, fname) + else: + state = _vc.STATE_ERROR + log.warning("Invalid state '%s' reported for %s " + "(version skew?)", mstate, fname) + + tree_state[os.path.join(self.root, fname)] = state - tree_state[os.path.join(self.root, fname)] = state + # Clear the stanza ready for next iteration + stanza = {} return tree_state def _get_dirsandfiles(self, directory, dirs, files): + log = logging.getLogger(__name__) tree = self._get_tree_cache(directory) @@ -234,39 +231,38 @@ retdirs = [] vcfiles = {} - for path,state in tree.iteritems(): + for path, state in tree.items(): mydir, name = os.path.split(path) if path.endswith('/'): mydir, name = os.path.split(mydir) if mydir != directory: continue - rev, options, tag = "","","" if path.endswith('/'): - retdirs.append( _vc.Dir(path[:-1], name, state)) + retdirs.append(_vc.Dir(path[:-1], name, state)) else: - retfiles.append( _vc.File(path, name, state, rev, tag, options) ) + retfiles.append(_vc.File(path, name, state)) vcfiles[name] = 1 - for f,path in files: + for f, path in files: if f not in vcfiles: # if the ignore MT filter is not enabled these will crop up - ignorelist = [ 'format', 'log', 'options', 'revision', 'work', 'debug', 'inodeprints' ] + ignorelist = ['format', 'log', 'options', 'revision', 'work', + 'debug', 'inodeprints'] if f not in ignorelist: - print "WARNING: '%s' was not listed by 'automate inventory'" % f + log.warning("'%s' was not listed", f) - # if it ain't listed by the inventory it's not under version - # control + # If not in the inventory it's not under version control. state = _vc.STATE_NONE - retfiles.append( _vc.File(path, f, state, "") ) - for d,path in dirs: + retfiles.append(_vc.File(path, f, state)) + for d, path in dirs: if d not in vcfiles: # if the ignore MT filter is not enabled these will crop up - ignorelist = [ 'MT' ] + ignorelist = ['MT'] if d in ignorelist: state = _vc.STATE_NONE else: # monotone does not version (or inventory) directories # so these are always normal state = _vc.STATE_NORMAL - retdirs.append( _vc.Dir(path, d, state) ) + retdirs.append(_vc.Dir(path, d, state)) return retdirs, retfiles diff -Nru meld-1.5.3/meld/vc/_null.py meld-3.11.0/meld/vc/_null.py --- meld-1.5.3/meld/vc/_null.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/_null.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,56 +1,45 @@ -### Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2002-2005 Stephen Kennedy -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +import shutil +import tempfile + +from meld.vc import _vc -import _vc class Vc(_vc.Vc): - CMD = "true" - NAME = "Null" - VC_DIR = "." # Accept any directory - - def commit_command(self, message): - return [self.CMD,"commit","-m",message] - def diff_command(self): - return [self.CMD,"diff","-u"] - def update_command(self): - return [self.CMD,"update"] - def add_command(self, binary=0): - if binary: - return [self.CMD,"add","-kb"] - return [self.CMD,"add"] - def remove_command(self, force=0): - return [self.CMD,"rm","-f"] - def revert_command(self): - return [self.CMD,"update","-C"] - def resolved_command(self): - return [self.CMD,"resolved"] - - def lookup_files(self, dirs, files): - "files is array of (name, path). assume all files in same dir" - if len(files) == 0 and len(dirs) == 0: - return [],[] - - d = map(lambda x: _vc.Dir(x[1],x[0], _vc.STATE_NONE), dirs) - f = map(lambda x: _vc.File(x[1],x[0], _vc.STATE_NONE, None), files) - return d,f + CMD = None + NAME = "" + VC_DIR = "." + + def lookup_files(self, dirs, files, directory=None): + dirs = [_vc.Dir(d[1], d[0], _vc.STATE_NONE) for d in dirs] + files = [_vc.File(f[1], f[0], _vc.STATE_NONE) for f in files] + return dirs, files + + def get_path_for_repo_file(self, path, commit=None): + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + with open(path, 'r') as vc_file: + shutil.copyfileobj(vc_file, f) + return f.name diff -Nru meld-1.5.3/meld/vc/rcs.py meld-3.11.0/meld/vc/rcs.py --- meld-1.5.3/meld/vc/rcs.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/rcs.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -### Copyright (C) 2002-2005 Stephen Kennedy , Oliver Gerlich -### Copyright (C) 2009 Vincent Legoll - -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -import os -import _vc - -class Vc(_vc.Vc): - CMD = "rcs" - NAME = "RCS" - VC_DIR = "RCS" - VC_ROOT_WALK = False - PATCH_INDEX_RE = "^[+]{3} ([^\t]*)\t.*$" - - def commit_command(self, message): - return ["ci", "-l", "-m%s" % (message,)] - - def diff_command(self): - return ["rcsdiff", "-u"] - - def add_command(self, binary=0): - return ["ci", "-l", "-i", "-t-'some file'", "-m'first revision'"] - - def _get_dirsandfiles(self, directory, dirs, files): - "files is array of (name, path). Assume all files in same dir." - - retfiles = [] - retdirs = [_vc.Dir(x[1], x[0], _vc.STATE_NONE) for x in dirs] - rcscontents = os.listdir(os.path.join(directory, self.VC_DIR)) - - for name, path in files: - assert path.startswith(directory) - - if name + ",v" not in rcscontents: - # not versioned - state = _vc.STATE_NONE - else: - cmd = "rcsdiff -q --brief %s > /dev/null 2>&1" % path - result = os.system(cmd) - sysresult = (result & 0x00FF) - cmdresult = (result & 0xFF00) >> 8 - if sysresult != 0: - print "Error getting state of file %s (exec error %d)" % (path, sysresult) - state = _vc.STATE_ERROR - elif cmdresult == 0: - state = _vc.STATE_NORMAL - elif cmdresult == 1: - state = _vc.STATE_MODIFIED - else: - print "Error getting state of file %s: %d" % (path, result) - state = _vc.STATE_ERROR - - retfiles.append(_vc.File(path, name, state, "", "", "")) - - return retdirs, retfiles diff -Nru meld-1.5.3/meld/vc/svk.py meld-3.11.0/meld/vc/svk.py --- meld-1.5.3/meld/vc/svk.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/svk.py 2014-02-16 20:23:22.000000000 +0000 @@ -21,26 +21,45 @@ ### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from meld import misc -import svn +import os +import subprocess + +from . import svn + +NULL = open(os.devnull, "w+b") + + +def cmdout(cmd, text=None, **kwargs): + stdin = NULL + if text is not None: + stdin = subprocess.PIPE + new_kwargs = { + 'stdin': stdin, + 'stdout': subprocess.PIPE, + 'stderr': NULL, + } + new_kwargs.update(kwargs) + p = subprocess.Popen(cmd, **new_kwargs) + out = p.communicate(text)[0] + status = p.wait() + return out, status + class Vc(svn.Vc): CMD = "svk" NAME = "SVK" - PATCH_INDEX_RE = "^=== (.*)$" + @classmethod def check_repo_root(self, location): try: # `svk info` may be interactive. It can ask to create its repository, we # don't want that to happen, so provide the right answer with `text="n"` - status = misc.cmdout([self.CMD, "info"], cwd=location, stdout=misc.NULL, - stderr=misc.NULL, text='n')[1] + status = cmdout([self.CMD, "info"], cwd=location, stdout=NULL, + stderr=NULL, text='n')[1] # SVK does evil things to the real stdin, even when having its input # stream redirected to a newly created pipe, restore sanity manually - misc.cmdout(['stty', 'sane'], stdout=misc.NULL, stderr=misc.NULL, stdin=None) + cmdout(['stty', 'sane'], stdout=NULL, stderr=NULL, stdin=None) except OSError: - raise ValueError() - if status != 0: - raise ValueError() - return location + return False + return status == 0 diff -Nru meld-1.5.3/meld/vc/svn_17.py meld-3.11.0/meld/vc/svn_17.py --- meld-1.5.3/meld/vc/svn_17.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/svn_17.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,9 +1,9 @@ -### Copyright (C) 2011 Kai Willadsen +### Copyright (C) 2011-2012 Kai Willadsen ### Redistribution and use in source and binary forms, with or without ### modification, are permitted provided that the following conditions ### are met: -### +### ### 1. Redistributions of source code must retain the above copyright ### notice, this list of conditions and the following disclaimer. ### 2. Redistributions in binary form must reproduce the above copyright @@ -21,7 +21,13 @@ ### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import svn +import os +import shutil +import subprocess +import tempfile + +from . import _vc +from . import svn class Vc(svn.Vc): @@ -29,3 +35,29 @@ NAME = "Subversion 1.7" VC_ROOT_WALK = True + @classmethod + def _repo_version_support(cls, version): + return version >= 12 + + def get_path_for_repo_file(self, path, commit=None): + if commit is None: + commit = "BASE" + else: + raise NotImplementedError() + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + path = path[len(self.root) + 1:] + + process = subprocess.Popen([self.CMD, "cat", "-r", commit, path], + cwd=self.root, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + vc_file = process.stdout + + # Error handling here involves doing nothing; in most cases, the only + # sane response is to return an empty temp file. The most common error + # is "no base revision until committed" from diffing a new file. + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + shutil.copyfileobj(vc_file, f) + return f.name diff -Nru meld-1.5.3/meld/vc/svn.py meld-3.11.0/meld/vc/svn.py --- meld-1.5.3/meld/vc/svn.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/svn.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,4 +1,5 @@ ### Copyright (C) 2002-2005 Stephen Kennedy +### Copyright (C) 2011-2012 Kai Willadsen ### Redistribution and use in source and binary forms, with or without ### modification, are permitted provided that the following conditions @@ -21,12 +22,15 @@ ### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -import os -import re import errno -import _vc +import glob +import os +import shutil +import tempfile import xml.etree.ElementTree as ElementTree +from . import _vc + class Vc(_vc.CachedVc): @@ -34,7 +38,9 @@ NAME = "Subversion" VC_DIR = ".svn" VC_ROOT_WALK = False - PATCH_INDEX_RE = "^Index:(.*)$" + + VC_COLUMNS = (_vc.DATA_NAME, _vc.DATA_STATE, _vc.DATA_REVISION) + state_map = { "unversioned": _vc.STATE_NONE, "added": _vc.STATE_NEW, @@ -48,30 +54,132 @@ def commit_command(self, message): return [self.CMD,"commit","-m",message] - def diff_command(self): - if hasattr(self, "external_diff"): - return [self.CMD, "diff", "--diff-cmd", self.external_diff] - else: - return [self.CMD, "diff"] def update_command(self): return [self.CMD,"update"] - def add_command(self, binary=0): - return [self.CMD,"add"] + def remove_command(self, force=0): return [self.CMD,"rm","--force"] def revert_command(self): return [self.CMD,"revert"] def resolved_command(self): return [self.CMD,"resolved"] - def valid_repo(self): - if _vc.call([self.CMD, "info"], cwd=self.root): + + def get_path_for_repo_file(self, path, commit=None): + if commit is not None: + raise NotImplementedError() + + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + + base, fname = os.path.split(path) + svn_path = os.path.join(base, ".svn", "text-base", fname + ".svn-base") + + with tempfile.NamedTemporaryFile(prefix='meld-tmp', delete=False) as f: + try: + with open(svn_path, 'r') as vc_file: + shutil.copyfileobj(vc_file, f) + except IOError as err: + if err.errno != errno.ENOENT: + raise + # If the repository path doesn't exist, we either have an + # invalid path (difficult to check) or a new file. Either way, + # we just return an empty file + + return f.name + + def get_path_for_conflict(self, path, conflict=None): + """ + SVN has two types of conflicts: + Merge conflicts, which give 3 files: + .left.r* (THIS) + .working (BASE... although this is a bit debateable) + .right.r* (OTHER) + Update conflicts which give 3 files: + .mine (THIS) + .r* (lower - BASE) + .r* (higher - OTHER) + """ + if not path.startswith(self.root + os.path.sep): + raise _vc.InvalidVCPath(self, path, "Path not in repository") + + # If this is merged, we just return the merged output + if conflict == _vc.CONFLICT_MERGED: + return path, False + + CONFLICT_TYPE_MERGE = 1 + CONFLICT_TYPE_UPDATE = 2 + + # First fine what type of conflict this is by looking at the base + # we can possibly return straight away! + conflict_type = None + base = glob.glob('%s.working' % path) + if len(base) == 1: + # We have a merge conflict + conflict_type = CONFLICT_TYPE_MERGE + else: + base = glob.glob('%s.mine' % path) + if len(base) == 1: + # We have an update conflict + conflict_type = CONFLICT_TYPE_UPDATE + + if conflict_type is None: + raise _vc.InvalidVCPath(self, path, "No known conflict type found") + + if conflict == _vc.CONFLICT_BASE: + return base[0], False + elif conflict == _vc.CONFLICT_THIS: + if conflict_type == CONFLICT_TYPE_MERGE: + return glob.glob('%s.merge-left.r*' % path)[0], False + else: + return glob.glob('%s.r*' % path)[0], False + elif conflict == _vc.CONFLICT_OTHER: + if conflict_type == CONFLICT_TYPE_MERGE: + return glob.glob('%s.merge-right.r*' % path)[0], False + else: + return glob.glob('%s.r*' % path)[-1], False + + raise KeyError("Conflict file does not exist") + + def add(self, runner, files): + # SVN < 1.7 needs to add folders from their immediate parent + dirs = [s for s in files if os.path.isdir(s)] + files = [s for s in files if os.path.isfile(s)] + command = [self.CMD, 'add'] + for path in dirs: + runner(command, [path], refresh=True, + working_dir=os.path.dirname(path)) + if files: + runner(command, files, refresh=True) + + @classmethod + def _repo_version_support(cls, version): + return version < 12 + + @classmethod + def valid_repo(cls, path): + if _vc.call([cls.CMD, "info"], cwd=path): return False + + # Check for repository version, trusting format file then entries file + format_path = os.path.join(path, cls.VC_DIR, "format") + entries_path = os.path.join(path, cls.VC_DIR, "entries") + wcdb_path = os.path.join(path, cls.VC_DIR, "wc.db") + format_exists = os.path.exists(format_path) + entries_exists = os.path.exists(entries_path) + wcdb_exists = os.path.exists(wcdb_path) + if format_exists: + with open(format_path) as f: + repo_version = int(f.readline().strip()) + elif entries_exists: + with open(entries_path) as f: + repo_version = int(f.readline().strip()) + elif wcdb_exists: + repo_version = 12 else: - return True + return False - def switch_to_external_diff(self): - self.external_diff = "diff" + return cls._repo_version_support(repo_version) def _update_tree_state_cache(self, path, tree_state): while 1: @@ -79,15 +187,19 @@ status_cmd = [self.CMD, "status", "-v", "--xml", path] tree = ElementTree.parse(_vc.popen(status_cmd)) break - except OSError, e: + except OSError as e: if e.errno != errno.EAGAIN: raise for target in tree.findall("target") + tree.findall("changelist"): for entry in (t for t in target.getchildren() if t.tag == "entry"): path = entry.attrib["path"] + if path == ".": + path = os.getcwd() if path == "": continue + if not os.path.isabs(path): + path = os.path.abspath(path) for status in (e for e in entry.getchildren() \ if e.tag == "wc-status"): item = status.attrib["item"] @@ -127,7 +239,6 @@ path = os.path.join(directory, name) isdir = os.path.isdir(path) - options = "" if isdir: if os.path.exists(path): state = _vc.STATE_NORMAL @@ -138,6 +249,6 @@ retdirs.append( _vc.Dir(path,name,state) ) else: state = self.state_map.get(svn_state, _vc.STATE_NONE) - retfiles.append( _vc.File(path, name, state, rev, "", options) ) + retfiles.append(_vc.File(path, name, state, rev)) return retdirs, retfiles diff -Nru meld-1.5.3/meld/vc/tla.py meld-3.11.0/meld/vc/tla.py --- meld-1.5.3/meld/vc/tla.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/tla.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ -# -*- coding: utf-8 -*- - -# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: -#Copyright (c) 2005 Ali Afshar - -#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 -#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -#SOFTWARE. - -import os -import errno -import _vc - -# From the Arch manual (kept here for reference) - -# A/ added directory -# D/ deleted directory -# /> renamed directory -# -/ directory permissions changed - -# A added file -# D deleted file -# M file modified -# Mb binary file modified -# -- permissions of file changed -# => renamed file -# fl file replaced by link -# lf link replaced by file -# -> link target changed - -class Vc(_vc.CachedVc): - - CMD = "tla" - NAME = "Arch" - VC_DIR = "{arch}" - VC_METADATA = ['.arch-ids', '.arch-inventory'] - PATCH_STRIP_NUM = 1 - PATCH_INDEX_RE = "--- orig/(.*)" - state_map = { - "a": _vc.STATE_NONE, - "A": _vc.STATE_NEW, - "M": _vc.STATE_MODIFIED, - "C": _vc.STATE_CONFLICT, - "D": _vc.STATE_REMOVED, - "--": _vc.STATE_MODIFIED, - "=>": _vc.STATE_REMOVED, - "->": _vc.STATE_MODIFIED, - "A/": _vc.STATE_NEW, - "D/": _vc.STATE_REMOVED, - "/>": _vc.STATE_REMOVED, - "-/": _vc.STATE_MODIFIED, - } - - def commit_command(self, message): - return [self.CMD, "commit", - "-s", message] - - def diff_command(self): - return [self.CMD, "file-diff"] - - def update_command(self): - return [self.CMD, "update", "--dir"] - - def add_command(self, binary=0): - return [self.CMD, "add-id"] - - def remove_command(self, force=0): - return [self.CMD, "rm"] - - def revert_command(self): - # Will only work on later versions of tla - return [self.CMD, "undo", "--"] - - def valid_repo(self): - if _vc.call([self.CMD, "tree-version"], cwd=self.root): - return False - else: - return True - - def get_working_directory(self, workdir): - return self.root - - def _get_dirsandfiles(self, directory, dirs, files): - whatsnew = self._get_tree_cache(directory) - retfiles, retdirs = (self._get_statuses(whatsnew, files, _vc.File), - self._get_statuses(whatsnew, dirs, _vc.Dir)) - return retfiles, retdirs - - def _lookup_tree_cache(self, rootdir): - whatsnew = {} - commandline = [self.CMD, "changes", "-d", self.root] - while 1: - try: - p = _vc.popen(commandline) - break - except OSError, e: - if e.errno != errno.EAGAIN: - raise - for line in p: - if line.startswith('*'): - continue - elements = line.split() - if len(elements) > 1: - status = self.state_map[elements.pop(0)] - filename = elements.pop(0) - filepath = os.path.join(self.root, - os.path.normpath(filename)) - whatsnew[filepath] = status - return whatsnew - - def _get_statuses(self, whatsnew, files, fstype): - rets = [] - for filename, path in files: - state = _vc.STATE_NORMAL - if path in whatsnew: - state = whatsnew[path] - vcfile = fstype(path, filename, state) - if filename != self.VC_DIR: - rets.append(vcfile) - return rets diff -Nru meld-1.5.3/meld/vc/_vc.py meld-3.11.0/meld/vc/_vc.py --- meld-1.5.3/meld/vc/_vc.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vc/_vc.py 2014-02-16 20:23:22.000000000 +0000 @@ -1,26 +1,28 @@ -### Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2002-2005 Stephen Kennedy +# Copyright (C) 2010, 2012-2013 Kai Willadsen -### Redistribution and use in source and binary forms, with or without -### modification, are permitted provided that the following conditions -### are met: -### -### 1. Redistributions of source code must retain the above copyright -### notice, this list of conditions and the following disclaimer. -### 2. Redistributions in binary form must reproduce the above copyright -### notice, this list of conditions and the following disclaimer in the -### documentation and/or other materials provided with the distribution. - -### THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -### IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -### OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -### IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -### INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -### NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -### DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -### THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -### (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -### THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. + +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import itertools import os import re import subprocess @@ -30,102 +32,170 @@ # error, placeholder, vc added # vc modified, vc conflict, vc removed # locally removed, end -STATE_IGNORED, STATE_NONE, STATE_NORMAL, STATE_NOCHANGE, \ -STATE_ERROR, STATE_EMPTY, STATE_NEW, \ -STATE_MODIFIED, STATE_CONFLICT, STATE_REMOVED, \ -STATE_MISSING, STATE_MAX = range(12) +(STATE_IGNORED, STATE_NONE, STATE_NORMAL, STATE_NOCHANGE, + STATE_ERROR, STATE_EMPTY, STATE_NEW, + STATE_MODIFIED, STATE_CONFLICT, STATE_REMOVED, + STATE_MISSING, STATE_NONEXIST, STATE_MAX) = list(range(13)) + +# VC conflict types +(CONFLICT_MERGED, CONFLICT_BASE, CONFLICT_LOCAL, + CONFLICT_REMOTE, CONFLICT_MAX) = list(range(5)) +# These names are used by BZR, and are logically identical. +CONFLICT_OTHER = CONFLICT_REMOTE +CONFLICT_THIS = CONFLICT_LOCAL + +conflicts = [_("Merged"), _("Base"), _("Local"), _("Remote")] +assert len(conflicts) == CONFLICT_MAX + +DATA_NAME, DATA_STATE, DATA_REVISION, DATA_OPTIONS = list(range(4)) + + +# Lifted from the itertools recipes section +def partition(pred, iterable): + t1, t2 = itertools.tee(iterable) + return (list(itertools.ifilterfalse(pred, t1)), + list(itertools.ifilter(pred, t2))) + class Entry(object): - # These are the possible states of files. Be sure to get the colons correct. - states = _("Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing").split(":") - states[STATE_CONFLICT] = "%s" % states[STATE_CONFLICT] - assert len(states)==STATE_MAX + # These are labels for possible states of version controlled files; + # not all states have a label to avoid visual clutter. + state_names = { + STATE_IGNORED: _("Ignored"), + STATE_NONE: _("Unversioned"), + STATE_NORMAL: "", + STATE_NOCHANGE: "", + STATE_ERROR: _("Error"), + STATE_EMPTY: "", + STATE_NEW: _("Newly added"), + STATE_MODIFIED: _("Modified"), + STATE_CONFLICT: "%s" % _("Conflict"), + STATE_REMOVED: _("Removed"), + STATE_MISSING: _("Missing"), + STATE_NONEXIST: _("Not present"), + } def __init__(self, path, name, state): self.path = path self.state = state self.parent, self.name = os.path.split(path.rstrip("/")) + def __str__(self): - return "<%s:%s %s>\n" % (self.__class__, self.name, (self.path, self.state)) + return "<%s:%s %s>" % (self.__class__.__name__, self.path, + self.get_status() or "Normal") + def __repr__(self): - return "%s %s\n" % (self.name, (self.path, self.state)) + return "%s(%r, %r, %r)" % (self.__class__.__name__, self.name, + self.path, self.state) + def get_status(self): - return self.states[self.state] + return self.state_names[self.state] + class Dir(Entry): def __init__(self, path, name, state): Entry.__init__(self, path, name, state) self.isdir = 1 self.rev = "" - self.tag = "" self.options = "" + class File(Entry): - def __init__(self, path, name, state, rev="", tag="", options=""): + def __init__(self, path, name, state, rev="", options=""): assert path[-1] != "/" Entry.__init__(self, path, name, state) self.isdir = 0 self.rev = rev - self.tag = tag self.options = options + class Vc(object): - PATCH_STRIP_NUM = 0 - PATCH_INDEX_RE = '' VC_DIR = None VC_ROOT_WALK = True VC_METADATA = None - def __init__(self, location): - # Save the requested diff directory/file. It may be a sub-directory - # of the repository we are diffing and can be useful in limiting meld's - # output to the requested location. It can also be used to determine - # if the user is requesting a single-file diff or a diretcory diff. - self.location = location - - if not os.path.isdir(location): - path = os.path.dirname(self.location) - else: - path = location - if self.VC_ROOT_WALK: - self.root = self.find_repo_root(path) - else: - self.root = self.check_repo_root(path) + VC_COLUMNS = (DATA_NAME, DATA_STATE) + + def __init__(self, path): + # Save the requested comparison location. The location may be a + # sub-directory of the repository we are diffing and can be useful in + # limiting meld's output to the requested location. + # + # If the location requested is a file (e.g., a single-file command line + # comparison) then the location is set to the containing directory. + self.root, self.location = self.is_in_repo(path) + if not self.root: + raise ValueError def commit_command(self, message): raise NotImplementedError() - def diff_command(self): - raise NotImplementedError() + def update_command(self): raise NotImplementedError() - def add_command(self, binary=0): + + def add_command(self): raise NotImplementedError() + def remove_command(self, force=0): raise NotImplementedError() + def revert_command(self): raise NotImplementedError() + def resolved_command(self): raise NotImplementedError() - def patch_command(self, workdir): - return ["patch", "-p%i" % self.PATCH_STRIP_NUM, "-R", "-d", workdir] - def check_repo_root(self, location): - if not os.path.isdir(os.path.join(location, self.VC_DIR)): - raise ValueError - return location + # Prototyping VC interface version 2 - def find_repo_root(self, location): - while True: - try: - return self.check_repo_root(location) - except ValueError: - pass - tmp = os.path.dirname(location) - if tmp == location: - break - location = tmp - raise ValueError() + def get_files_to_commit(self, paths): + raise NotImplementedError() + + def get_commit_message_prefill(self): + return None + + def update(self, runner, files): + raise NotImplementedError() + + def push(self, runner): + raise NotImplementedError() + + def revert(self, runner, files): + raise NotImplementedError() + + def get_commits_to_push_summary(self): + raise NotImplementedError() + + def add(self, runner, files): + raise NotImplementedError() + + def remove(self, runner, files): + raise NotImplementedError() + + def resolve(self, runner, files): + raise NotImplementedError() + + def get_path_for_repo_file(self, path, commit=None): + """Returns a file path for the repository path at commit + + If *commit* is given, the path returned will point to a copy of + the file at *path* at the given commit, as interpreted by the + VCS. If *commit* is **None**, the current revision is used. + + Even if the VCS maintains an on-disk copy of the given path, a + temp file with file-at-commit content must be created and its + path returned, to avoid destructive editing. The VCS plugin + must **not** delete temp files it creates. + """ + raise NotImplementedError() + + def get_path_for_conflict(self, path, conflict): + """Returns a file path for the conflicted repository path + + *conflict* is the side of the conflict to be retrieved, and + must be one of the CONFLICT_* constants. + """ + raise NotImplementedError() def get_working_directory(self, workdir): return workdir @@ -145,55 +215,82 @@ """ pass - def get_patch_files(self, patch): - regex = re.compile(self.PATCH_INDEX_RE, re.M) - return [f.strip() for f in regex.findall(patch)] - - def listdir_filter(self, entries): - return [f for f in entries if f != self.VC_DIR] - - # Determine if a directory is a valid git/svn/hg/cvs/etc repository - def valid_repo(self): - return True - - def listdir(self, start): - if start=="": start="." - cfiles = [] - cdirs = [] + def listdir(self, path="."): try: - entries = os.listdir(start) - entries.sort() + entries = sorted(e for e in os.listdir(path) if e != self.VC_DIR) except OSError: entries = [] - for f in self.listdir_filter(entries): - fname = os.path.join(start, f) - lname = fname - if os.path.isdir(fname): - cdirs.append( (f, lname) ) - else: - cfiles.append( (f, lname) ) - dirs, files = self.lookup_files(cdirs, cfiles) - return dirs+files - - def lookup_files(self, dirs, files): - "Assume all files are in the same dir, files is an array of (name, path) tuples." - directory = self._get_directoryname(files, dirs) - if directory is None: - return [], [] - else: - return self._get_dirsandfiles(directory, dirs, files) - - def _get_directoryname(self, dirs, files): - directory = None - if len(files): - directory = os.path.dirname(files[0][1]) - elif len(dirs): + full_entries = [(f, os.path.join(path, f)) for f in entries] + cfiles, cdirs = partition(lambda e: os.path.isdir(e[1]), full_entries) + dirs, files = self.lookup_files(cdirs, cfiles, path) + return dirs + files + + def lookup_files(self, dirs, files, directory=None): + # Assumes that all files are in the same directory. files is an array + # of (name, path) tuples. + if len(dirs): directory = os.path.dirname(dirs[0][1]) - return directory + elif len(files): + directory = os.path.dirname(files[0][1]) + return self._get_dirsandfiles(directory, dirs, files) def _get_dirsandfiles(self, directory, dirs, files): raise NotImplementedError() + def get_entry(self, path): + """Return the entry associated with the given path in this VC + + If the given path does not correspond to any entry in the VC, this + method returns return None. + """ + vc_files = [ + x for x in + self.lookup_files( + [], [(os.path.basename(path), path)])[1] + if x.path == path + ] + if not vc_files: + return None + return vc_files[0] + + @classmethod + def is_installed(cls): + try: + call([cls.CMD]) + return True + except: + return False + + @classmethod + def is_in_repo(cls, path): + root = None + location = path if os.path.isdir(path) else os.path.dirname(path) + + if cls.VC_ROOT_WALK: + root = cls.find_repo_root(location) + elif cls.check_repo_root(location): + root = location + return root, location + + @classmethod + def check_repo_root(cls, location): + return os.path.isdir(os.path.join(location, cls.VC_DIR)) + + @classmethod + def find_repo_root(cls, location): + while location: + if cls.check_repo_root(location): + return location + + location, old = os.path.dirname(location), location + if location == old: + break + + @classmethod + def valid_repo(cls, path): + """Determine if a directory is a valid repository for this class""" + raise NotImplementedError + class CachedVc(Vc): @@ -215,11 +312,39 @@ self.cache_inventory(directory) return self._tree_cache + +class InvalidVCPath(ValueError): + """Raised when a VC module is passed an invalid (or not present) path.""" + + def __init__(self, vc, path, err): + self.vc = vc + self.path = path + self.error = err + + def __str__(self): + return "%s: Path %s is invalid or not present\nError: %s\n" % \ + (self.vc.NAME, self.path, self.error) + + +class InvalidVCRevision(ValueError): + """Raised when a VC module is passed a revision spec it can't handle.""" + + def __init__(self, vc, rev, err): + self.vc = vc + self.revision = rev + self.error = err + + def __str__(self): + return "%s: Doesn't understand or have revision %s\nError: %s\n" % \ + (self.vc.NAME, self.revision, self.error) + + # Return the stdout output of a given command def popen(cmd, cwd=None): return subprocess.Popen(cmd, cwd=cwd, stdout=subprocess.PIPE).stdout + # Return the return value of a given command def call(cmd, cwd=None): - return subprocess.call(cmd, cwd=cwd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) + NULL = open(os.devnull, "wb") + return subprocess.call(cmd, cwd=cwd, stdout=NULL, stderr=NULL) diff -Nru meld-1.5.3/meld/vcview.py meld-3.11.0/meld/vcview.py --- meld-1.5.3/meld/vcview.py 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld/vcview.py 2014-02-22 03:14:57.000000000 +0000 @@ -1,39 +1,48 @@ -### Copyright (C) 2002-2006 Stephen Kennedy -### Copyright (C) 2010-2012 Kai Willadsen +# Copyright (C) 2002-2006 Stephen Kennedy +# Copyright (C) 2010-2013 Kai Willadsen +# +# 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, see . -### 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 +from __future__ import print_function +import atexit import tempfile import shutil -import gtk import os +import stat +import sys from gettext import gettext as _ -import tree -import misc -from ui import gnomeglade -import melddoc -import paths -import ui.emblemcellrenderer -import vc +from gi.repository import Gdk +from gi.repository import GLib +from gi.repository import Gio +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import Pango + +from . import melddoc +from . import misc +from . import recent +from . import tree +from . import vc +from .ui import emblemcellrenderer +from .ui import gnomeglade +from .ui import vcdialogs + +from meld.settings import settings +from meld.vc import _null -################################################################################ -# -# Local Functions -# -################################################################################ def _commonprefix(files): if len(files) != 1: @@ -42,48 +51,75 @@ workdir = os.path.dirname(files[0]) or "." return workdir -################################################################################ -# -# CommitDialog -# -################################################################################ -class CommitDialog(gnomeglade.Component): - def __init__(self, parent): - gnomeglade.Component.__init__(self, paths.ui_dir("vcview.ui"), "commitdialog") - self.parent = parent - self.widget.set_transient_for( parent.widget.get_toplevel() ) - selected = parent._get_selected_files() - topdir = _commonprefix(selected) - selected = [ s[len(topdir):] for s in selected ] - self.changedfiles.set_text( ("(in %s) "%topdir) + " ".join(selected) ) - self.widget.show_all() - - def run(self): - self.previousentry.child.set_editable(False) - self.previousentry.set_active(0) - self.textview.grab_focus() - buf = self.textview.get_buffer() - buf.place_cursor( buf.get_start_iter() ) - buf.move_mark( buf.get_selection_bound(), buf.get_end_iter() ) - response = self.widget.run() - msg = buf.get_text(buf.get_start_iter(), buf.get_end_iter(), 0) - if response == gtk.RESPONSE_OK: - self.parent._command_on_selected( self.parent.vc.commit_command(msg) ) - if len(msg.strip()): - self.previousentry.prepend_text(msg) - self.widget.destroy() - def on_previousentry_activate(self, gentry): + +def cleanup_temp(): + temp_location = tempfile.gettempdir() + # The strings below will probably end up as debug log, and are deliberately + # not marked for translation. + for f in _temp_files: + try: + assert (os.path.exists(f) and os.path.isabs(f) and + os.path.dirname(f) == temp_location) + # Windows throws permissions errors if we remove read-only files + if os.name == "nt": + os.chmod(f, stat.S_IWRITE) + os.remove(f) + except: + except_str = "{0[0]}: \"{0[1]}\"".format(sys.exc_info()) + print("File \"{0}\" not removed due to".format(f), except_str, + file=sys.stderr) + for f in _temp_dirs: + try: + assert (os.path.exists(f) and os.path.isabs(f) and + os.path.dirname(f) == temp_location) + shutil.rmtree(f, ignore_errors=1) + except: + except_str = "{0[0]}: \"{0[1]}\"".format(sys.exc_info()) + print("Directory \"{0}\" not removed due to".format(f), except_str, + file=sys.stderr) + +_temp_dirs, _temp_files = [], [] +atexit.register(cleanup_temp) + + +class ConsoleStream(object): + + def __init__(self, textview): + self.textview = textview + buf = textview.get_buffer() + self.command_tag = buf.create_tag("command") + self.command_tag.props.weight = Pango.Weight.BOLD + self.output_tag = buf.create_tag("output") + self.error_tag = buf.create_tag("error") + # FIXME: Need to add this to the gtkrc? + self.error_tag.props.foreground = "#cc0000" + self.end_mark = buf.create_mark(None, buf.get_end_iter(), + left_gravity=False) + + def command(self, message): + self.write(message, self.command_tag) + + def output(self, message): + self.write(message, self.output_tag) + + def error(self, message): + self.write(message, self.error_tag) + + def write(self, message, tag): + if not message: + return buf = self.textview.get_buffer() - buf.set_text( gentry.child.get_text() ) + buf.insert_with_tags(buf.get_end_iter(), message, tag) + self.textview.scroll_mark_onscreen(self.end_mark) + + +COL_LOCATION, COL_STATUS, COL_REVISION, COL_OPTIONS, COL_END = \ + list(range(tree.COL_END, tree.COL_END + 5)) -COL_LOCATION, COL_STATUS, COL_REVISION, COL_TAG, COL_OPTIONS, COL_END = range(tree.COL_END, tree.COL_END+6) class VcTreeStore(tree.DiffTreeStore): def __init__(self): - ntree = 1 - types = [str] * COL_END * ntree - tree.DiffTreeStore.__init__(self, ntree, types) - self.textstyle[tree.STATE_MISSING] = '%s' + tree.DiffTreeStore.__init__(self, 1, [str] * 5) ################################################################################ # filters @@ -93,23 +129,28 @@ entry_nonvc = lambda x: (x.state == tree.STATE_NONE) or (x.isdir and (x.state > tree.STATE_IGNORED)) entry_ignored = lambda x: (x.state == tree.STATE_IGNORED) or x.isdir -################################################################################ -# -# VcView -# -################################################################################ + class VcView(melddoc.MeldDoc, gnomeglade.Component): + + __gtype_name__ = "VcView" + + status_filters = GObject.property( + type=GObject.TYPE_STRV, + nick="File status filters", + blurb="Files with these statuses will be shown by the comparison.", + ) + left_is_local = GObject.property(type=bool, default=False) + # Map action names to VC commands and required arguments list action_vc_cmds_map = { - "VcCompare": ("diff_command", ()), - "VcCommit": ("commit_command", ("",)), - "VcUpdate": ("update_command", ()), - "VcAdd": ("add_command", ()), - "VcAddBinary": ("add_command", ()), - "VcResolved": ("resolved_command", ()), - "VcRemove": ("remove_command", ()), - "VcRevert": ("revert_command", ()), - } + "VcCommit": ("commit_command", ("",)), + "VcUpdate": ("update_command", ()), + "VcPush": ("push", (lambda *args, **kwargs: None, )), + "VcAdd": ("add_command", ()), + "VcResolved": ("resolved_command", ()), + "VcRemove": ("remove_command", ()), + "VcRevert": ("revert_command", ()), + } state_actions = { "flatten": ("VcFlatten", None), @@ -119,137 +160,130 @@ "ignored": ("VcShowIgnored", entry_ignored), } - def __init__(self, prefs): - melddoc.MeldDoc.__init__(self, prefs) - gnomeglade.Component.__init__(self, paths.ui_dir("vcview.ui"), "vcview") - - actions = ( - ("VcCompare", gtk.STOCK_DIALOG_INFO, _("_Compare"), None, _("Compare selected"), self.on_button_diff_clicked), - ("VcCommit", "vc-commit-24", _("Co_mmit"), None, _("Commit"), self.on_button_commit_clicked), - ("VcUpdate", "vc-update-24", _("_Update"), None, _("Update"), self.on_button_update_clicked), - ("VcAdd", "vc-add-24", _("_Add"), None, _("Add to VC"), self.on_button_add_clicked), - ("VcAddBinary", None, _("Add _Binary"), None, _("Add binary to VC"), self.on_button_add_binary_clicked), - ("VcRemove", "vc-remove-24", _("_Remove"), None, _("Remove from VC"), self.on_button_remove_clicked), - ("VcResolved", "vc-resolve-24", _("_Resolved"), None, _("Mark as resolved for VC"), self.on_button_resolved_clicked), - ("VcRevert", gtk.STOCK_REVERT_TO_SAVED, None, None, _("Revert to original"), self.on_button_revert_clicked), - ("VcDeleteLocally", gtk.STOCK_DELETE, None, None, _("Delete locally"), self.on_button_delete_clicked), - ) - - toggleactions = ( - ("VcFlatten", gtk.STOCK_GOTO_BOTTOM, _("_Flatten"), None, _("Flatten directories"), self.on_button_flatten_toggled, False), - ("VcShowModified","filter-modified-24", _("_Modified"), None, _("Show modified"), self.on_filter_state_toggled, False), - ("VcShowNormal", "filter-normal-24", _("_Normal"), None, _("Show normal"), self.on_filter_state_toggled, False), - ("VcShowNonVC", "filter-nonvc-24", _("Non _VC"), None, _("Show unversioned files"), self.on_filter_state_toggled, False), - ("VcShowIgnored", "filter-ignored-24", _("Ignored"), None, _("Show ignored files"), self.on_filter_state_toggled, False), - ) + def __init__(self): + melddoc.MeldDoc.__init__(self) + gnomeglade.Component.__init__(self, "vcview.ui", "vcview", + ["VcviewActions", 'liststore_vcs']) - self.ui_file = paths.ui_dir("vcview-ui.xml") - self.actiongroup = gtk.ActionGroup('VcviewActions') + self.ui_file = gnomeglade.ui_file("vcview-ui.xml") + self.actiongroup = self.VcviewActions self.actiongroup.set_translation_domain("meld") - self.actiongroup.add_actions(actions) - self.actiongroup.add_toggle_actions(toggleactions) - for action in ("VcCompare", "VcFlatten", "VcShowModified", - "VcShowNormal", "VcShowNonVC", "VcShowIgnored"): - self.actiongroup.get_action(action).props.is_important = True - for action in ("VcCommit", "VcUpdate", "VcAdd", "VcRemove", - "VcShowModified", "VcShowNormal", "VcShowNonVC", - "VcShowIgnored", "VcResolved"): - button = self.actiongroup.get_action(action) - button.props.icon_name = button.props.stock_id - self.tempdirs = [] self.model = VcTreeStore() + self.widget.connect("style-updated", self.model.on_style_updated) + self.model.on_style_updated(self.widget) self.treeview.set_model(self.model) - self.treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE) + selection = self.treeview.get_selection() + selection.set_mode(Gtk.SelectionMode.MULTIPLE) + selection.connect("changed", self.on_treeview_selection_changed) self.treeview.set_headers_visible(1) - self.treeview.set_search_equal_func(self.treeview_search_cb) - self.prev_path, self.next_path = None, None - column = gtk.TreeViewColumn( _("Name") ) - renicon = ui.emblemcellrenderer.EmblemCellRenderer() - rentext = gtk.CellRendererText() - column.pack_start(renicon, expand=0) - column.pack_start(rentext, expand=1) + self.treeview.set_search_equal_func( + self.model.treeview_search_cb, None) + self.current_path, self.prev_path, self.next_path = None, None, None + + self.column_name_map = {} col_index = self.model.column_index + column = Gtk.TreeViewColumn(_("Name")) + column.set_resizable(True) + renicon = emblemcellrenderer.EmblemCellRenderer() + column.pack_start(renicon, False) column.set_attributes(renicon, icon_name=col_index(tree.COL_ICON, 0), icon_tint=col_index(tree.COL_TINT, 0)) - column.set_attributes(rentext, markup=col_index(tree.COL_TEXT, 0)) - self.treeview.append_column(column) - - def addCol(name, num): - column = gtk.TreeViewColumn(name) - rentext = gtk.CellRendererText() - column.pack_start(rentext, expand=0) - column.set_attributes(rentext, markup=self.model.column_index(num, 0)) - self.treeview.append_column(column) + rentext = Gtk.CellRendererText() + column.pack_start(rentext, True) + column.set_attributes(rentext, + text=col_index(tree.COL_TEXT, 0), + foreground=col_index(tree.COL_FG, 0), + style=col_index(tree.COL_STYLE, 0), + weight=col_index(tree.COL_WEIGHT, 0), + strikethrough=col_index(tree.COL_STRIKE, 0)) + column_index = self.treeview.append_column(column) - 1 + self.column_name_map[vc.DATA_NAME] = column_index + + def addCol(name, num, data_name=None): + column = Gtk.TreeViewColumn(name) + column.set_resizable(True) + rentext = Gtk.CellRendererText() + column.pack_start(rentext, True) + column.set_attributes(rentext, + markup=self.model.column_index(num, 0)) + column_index = self.treeview.append_column(column) - 1 + if data_name: + self.column_name_map[data_name] = column_index return column - self.treeview_column_location = addCol( _("Location"), COL_LOCATION) - addCol(_("Status"), COL_STATUS) - addCol(_("Rev"), COL_REVISION) - addCol(_("Tag"), COL_TAG) - addCol(_("Options"), COL_OPTIONS) + self.treeview_column_location = addCol(_("Location"), COL_LOCATION) + addCol(_("Status"), COL_STATUS, vc.DATA_STATE) + addCol(_("Revision"), COL_REVISION, vc.DATA_REVISION) + addCol(_("Options"), COL_OPTIONS, vc.DATA_OPTIONS) - - self.state_filters = [] - for s in self.state_actions: - if s in self.prefs.vc_status_filters: - action_name = self.state_actions[s][0] - self.state_filters.append(s) - self.actiongroup.get_action(action_name).set_active(True) - - class ConsoleStream(object): - def __init__(self, textview): - self.textview = textview - b = textview.get_buffer() - self.mark = b.create_mark("END", b.get_end_iter(), 0) - def write(self, s): - if s: - b = self.textview.get_buffer() - b.insert(b.get_end_iter(), s) - self.textview.scroll_mark_onscreen( self.mark ) self.consolestream = ConsoleStream(self.consoleview) self.location = None self.treeview_column_location.set_visible(self.actiongroup.get_action("VcFlatten").get_active()) - self.fileentry.show() #TODO: remove once bug 97503 is fixed - if not self.prefs.vc_console_visible: - self.on_console_view_toggle(self.console_hide_box) self.vc = None - # VC ComboBox - self.combobox_vcs = gtk.ComboBox() - self.combobox_vcs.lock = True - self.combobox_vcs.set_model(gtk.ListStore(str, object, bool)) - cell = gtk.CellRendererText() + self.valid_vc_actions = tuple() + + cell = Gtk.CellRendererText() self.combobox_vcs.pack_start(cell, False) self.combobox_vcs.add_attribute(cell, 'text', 0) self.combobox_vcs.add_attribute(cell, 'sensitive', 2) self.combobox_vcs.lock = False - self.hbox2.pack_end(self.combobox_vcs, expand=False) - self.combobox_vcs.show() - self.combobox_vcs.connect("changed", self.on_vc_change) + + settings.bind('vc-status-filters', self, 'status-filters', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('vc-left-is-local', self, 'left-is-local', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('vc-console-visible', + self.actiongroup.get_action('VcConsoleVisible'), + 'active', Gio.SettingsBindFlags.DEFAULT) + settings.bind('vc-console-visible', self.console_vbox, 'visible', + Gio.SettingsBindFlags.DEFAULT) + settings.bind('vc-console-pane-position', self.vc_console_vpaned, + 'position', Gio.SettingsBindFlags.DEFAULT) + + self.state_filters = [] + for s in self.state_actions: + if s in self.props.status_filters: + action_name = self.state_actions[s][0] + self.state_filters.append(s) + self.actiongroup.get_action(action_name).set_active(True) def on_container_switch_in_event(self, ui): melddoc.MeldDoc.on_container_switch_in_event(self, ui) self.scheduler.add_task(self.on_treeview_cursor_changed) + def update_visible_columns(self): + for data_id in self.column_name_map: + col = self.treeview.get_column(self.column_name_map[data_id]) + col.set_visible(data_id in self.vc.VC_COLUMNS) + def update_actions_sensitivity(self): - """Disable actions that use not implemented VC plugin methods - """ + """Disable actions that use not implemented VC plugin methods""" + valid_vc_actions = ["VcDeleteLocally"] for action_name, (meth_name, args) in self.action_vc_cmds_map.items(): action = self.actiongroup.get_action(action_name) try: getattr(self.vc, meth_name)(*args) action.props.sensitive = True + valid_vc_actions.append(action_name) except NotImplementedError: action.props.sensitive = False + self.valid_vc_actions = tuple(valid_vc_actions) - def choose_vc(self, vcs): + def choose_vc(self, location): """Display VC plugin(s) that can handle the location""" self.combobox_vcs.lock = True - self.combobox_vcs.get_model().clear() - tooltip_texts = [_("Choose one Version Control"), - _("Only one Version Control in this directory")] + vcs_model = self.combobox_vcs.get_model() + vcs_model.clear() default_active = -1 valid_vcs = [] + location = os.path.abspath(location or ".") + + # VC systems work at the directory level, so make sure we're checking + # for VC support there instead of on a specific file. + if os.path.isfile(location): + location = os.path.dirname(location) + vcs = vc.get_vcs(location) # Try to keep the same VC plugin active on refresh() for idx, avc in enumerate(vcs): # See if the necessary version control command exists. If so, @@ -257,61 +291,96 @@ # check fails don't let the user select the that version control # tool and display a basic error message in the drop-down menu. err_str = "" - if vc._vc.call(["which", avc.CMD]): + + if not avc.is_installed(): # TRANSLATORS: this is an error message when a version control # application isn't installed or can't be found - err_str = _("%s Not Installed" % avc.CMD) - elif not avc.valid_repo(): + err_str = _("%s not installed" % avc.CMD) + elif not avc.valid_repo(location): # TRANSLATORS: this is an error message when a version # controlled repository is invalid or corrupted - err_str = _("Invalid Repository") + err_str = _("Invalid repository") else: valid_vcs.append(idx) if (self.vc is not None and - self.vc.__class__ == avc.__class__): - default_active = idx + self.vc.__class__ == avc.__class__): + default_active = idx if err_str: - self.combobox_vcs.get_model().append( \ - [_("%s (%s)") % (avc.NAME, err_str), avc, False]) + vcs_model.append( + [_("%s (%s)") % (avc.NAME, err_str), avc, False]) + else: + name = avc.NAME or _("None") + vcs_model.append([name, avc(location), True]) + + if not valid_vcs: + # If we didn't get any valid vcs then fallback to null + null_vcs = _null.Vc(location) + vcs.append(null_vcs) + vcs_model.insert( + 0, [_("None"), null_vcs, True]) + default_active = 0 + + if default_active == -1: + if valid_vcs: + default_active = min(valid_vcs) else: - self.combobox_vcs.get_model().append([avc.NAME, avc, True]) + default_active = 0 - if valid_vcs and default_active == -1: - default_active = min(valid_vcs) + # If we only have the null VC, give a better error message. + if (len(vcs) == 1 and not vcs[0].CMD) or (len(valid_vcs) == 0): + tooltip = _("No valid version control system found in this folder") + elif len(vcs) == 1: + tooltip = _("Only one version control system found in this folder") + else: + tooltip = _("Choose which version control system to use") - self.combobox_vcs.set_tooltip_text(tooltip_texts[len(vcs) == 1]) + self.combobox_vcs.set_tooltip_text(tooltip) self.combobox_vcs.set_sensitive(len(vcs) > 1) self.combobox_vcs.lock = False self.combobox_vcs.set_active(default_active) - + def on_vc_change(self, cb): if not cb.lock: self.vc = cb.get_model()[cb.get_active_iter()][1] - self._set_location(self.vc.root) + self._set_location(self.vc.location) self.update_actions_sensitivity() + self.update_visible_columns() def set_location(self, location): - self.choose_vc(vc.get_vcs(os.path.abspath(location or "."))) + self.choose_vc(location) def _set_location(self, location): self.location = location + self.current_path = None self.model.clear() self.fileentry.set_filename(location) - self.fileentry.prepend_history(location) - it = self.model.add_entries( None, [location] ) + it = self.model.add_entries(None, [location]) self.treeview.grab_focus() self.treeview.get_selection().select_iter(it) - self.model.set_state(it, 0, tree.STATE_NORMAL, isdir=1) + self.model.set_path_state(it, 0, tree.STATE_NORMAL, isdir=1) self.recompute_label() self.scheduler.remove_all_tasks() # If the user is just diffing a file (ie not a directory), there's no # need to scan the rest of the repository if os.path.isdir(self.vc.location): - self.scheduler.add_task(self._search_recursively_iter(self.model.get_iter_root()).next) + root = self.model.get_iter_first() + + try: + col = self.model.column_index(COL_OPTIONS, 0) + self.model.set_value(root, col, + self.vc.get_commits_to_push_summary()) + except NotImplementedError: + pass + + self.scheduler.add_task(self._search_recursively_iter(root)) + self.scheduler.add_task(self.on_treeview_selection_changed) self.scheduler.add_task(self.on_treeview_cursor_changed) + def get_comparison(self): + return recent.TYPE_VC, [self.location] + def recompute_label(self): self.label_text = os.path.basename(self.location) # TRANSLATORS: This is the location of the directory the user is diffing @@ -319,66 +388,72 @@ self.label_changed() def _search_recursively_iter(self, iterstart): - yield _("[%s] Scanning %s") % (self.label_text,"") - rootpath = self.model.get_path( iterstart ) - rootname = self.model.value_path( self.model.get_iter(rootpath), 0 ) - prefixlen = 1 + len( self.model.value_path( self.model.get_iter_root(), 0 ) ) - todo = [ (rootpath, rootname) ] + rootname = self.model.value_path(iterstart, 0) + prefixlen = len(self.location) + 1 + symlinks_followed = set() + todo = [(self.model.get_path(iterstart), rootname)] + flattened = self.actiongroup.get_action("VcFlatten").get_active() active_action = lambda a: self.actiongroup.get_action(a).get_active() - filters = [a[1] for a in self.state_actions.values() if \ + filters = [a[1] for a in self.state_actions.values() if active_action(a[0]) and a[1]] - def showable(entry): - for f in filters: - if f(entry): return 1 - recursive = self.actiongroup.get_action("VcFlatten").get_active() + yield _("Scanning %s") % rootname self.vc.cache_inventory(rootname) - while len(todo): - todo.sort() # depth first - path, name = todo.pop(0) - if path: - it = self.model.get_iter( path ) - root = self.model.value_path( it, 0 ) - else: - it = self.model.get_iter_root() - root = name - yield _("[%s] Scanning %s") % (self.label_text, root[prefixlen:]) - #import time; time.sleep(1.0) - - entries = filter(showable, self.vc.listdir(root)) - differences = 0 + while todo: + # This needs to happen sorted and depth-first in order for our row + # references to remain valid while we traverse. + todo.sort() + treepath, path = todo.pop(0) + it = self.model.get_iter(treepath) + yield _("Scanning %s") % path[prefixlen:] + + entries = self.vc.listdir(path) + entries = [e for e in entries if any(f(e) for f in filters)] for e in entries: - differences |= (e.state != tree.STATE_NORMAL) - if e.isdir and recursive: - todo.append( (None, e.path) ) - continue + if e.isdir: + try: + st = os.lstat(e.path) + # Covers certain unreadable symlink cases; see bgo#585895 + except OSError as err: + error_string = "%s: %s" % (e.path, err.strerror) + self.model.add_error(it, error_string, 0) + continue + + if stat.S_ISLNK(st.st_mode): + key = (st.st_dev, st.st_ino) + if key in symlinks_followed: + continue + symlinks_followed.add(key) + + if flattened: + todo.append((Gtk.TreePath.new_first(), e.path)) + continue + child = self.model.add_entries(it, [e.path]) - self._update_item_state( child, e, root[prefixlen:] ) + self._update_item_state(child, e, path[prefixlen:]) if e.isdir: - todo.append( (self.model.get_path(child), None) ) - if not recursive: # expand parents - if len(entries) == 0: + todo.append((self.model.get_path(child), e.path)) + + if flattened: + root = Gtk.TreePath.new_first() + self.treeview.expand_row(Gtk.TreePath(root), False) + else: + if not entries: self.model.add_empty(it, _("(Empty)")) - if differences or len(path)==1: - self.treeview.expand_to_path(path) - else: # just the root - self.treeview.expand_row( (0,), 0) - self.vc.uncache_inventory() + if any(e.state != tree.STATE_NORMAL for e in entries): + self.treeview.expand_to_path(treepath) - def on_fileentry_activate(self, fileentry): - path = fileentry.get_full_path() + # TODO: This doesn't fire when the user selects a shortcut folder + def on_fileentry_file_set(self, fileentry): + directory = fileentry.get_file() + path = directory.get_path() self.set_location(path) - def on_quit_event(self): - self.scheduler.remove_all_tasks() - for f in self.tempdirs: - if os.path.exists(f): - shutil.rmtree(f, ignore_errors=1) - def on_delete_event(self, appquit=0): - self.on_quit_event() - return gtk.RESPONSE_OK + self.scheduler.remove_all_tasks() + self.emit('close', 0) + return Gtk.ResponseType.OK def on_row_activated(self, treeview, path, tvc): it = self.model.get_iter(path) @@ -386,48 +461,68 @@ if self.treeview.row_expanded(path): self.treeview.collapse_row(path) else: - self.treeview.expand_row(path,0) + self.treeview.expand_row(path, False) else: path = self.model.value_path(it, 0) - self.run_diff( [path] ) + self.run_diff(path) - def run_diff_iter(self, path_list): - silent_error = hasattr(self.vc, 'switch_to_external_diff') - retry_diff = True - while retry_diff: - retry_diff = False - - yield _("[%s] Fetching differences") % self.label_text - difffunc = self._command_iter(self.vc.diff_command(), - path_list, 0).next - diff = None - while type(diff) != type(()): - diff = difffunc() - yield 1 - prefix, patch = diff[0], diff[1] - yield _("[%s] Applying patch") % self.label_text - if patch: - applied = self.show_patch(prefix, patch, silent=silent_error) - if not applied and silent_error: - silent_error = False - self.vc.switch_to_external_diff() - retry_diff = True + def run_diff(self, path): + if os.path.isdir(path): + self.emit("create-diff", [path], {}) + return + + left_is_local = self.props.left_is_local + + if self.vc.get_entry(path).state == tree.STATE_CONFLICT and \ + hasattr(self.vc, 'get_path_for_conflict'): + # We create new temp files for other, base and this, and + # then set the output to the current file. + if left_is_local: + conflicts = (tree.CONFLICT_THIS, tree.CONFLICT_MERGED, + tree.CONFLICT_OTHER) else: - for path in path_list: - self.emit("create-diff", [path]) + conflicts = (tree.CONFLICT_OTHER, tree.CONFLICT_MERGED, + tree.CONFLICT_THIS) + diffs = [self.vc.get_path_for_conflict(path, conflict=c) + for c in conflicts] + temps = [p for p, is_temp in diffs if is_temp] + diffs = [p for p, is_temp in diffs] + kwargs = { + 'auto_merge': False, + 'merge_output': path, + } + else: + comp_path = self.vc.get_path_for_repo_file(path) + temps = [comp_path] + diffs = [path, comp_path] if left_is_local else [comp_path, path] + kwargs = {} + + for temp_file in temps: + os.chmod(temp_file, 0o444) + _temp_files.append(temp_file) - def run_diff(self, path_list): - for path in path_list: - self.scheduler.add_task(self.run_diff_iter([path]).next, atfront=1) + self.emit("create-diff", diffs, kwargs) def on_treeview_popup_menu(self, treeview): - time = gtk.get_current_event_time() - self.popup_menu.popup(None, None, None, 0, time) + time = Gtk.get_current_event_time() + self.popup_menu.popup(None, None, None, None, 0, time) return True - def on_button_press_event(self, text, event): + def on_button_press_event(self, treeview, event): if event.button == 3: - self.popup_menu.popup(None, None, None, event.button, event.time) + path = treeview.get_path_at_pos(int(event.x), int(event.y)) + if path is None: + return False + selection = treeview.get_selection() + model, rows = selection.get_selected_rows() + + if path[0] not in rows: + selection.unselect_all() + selection.select_path(path[0]) + treeview.set_cursor(path[0]) + + self.popup_menu.popup(None, None, None, None, event.button, + event.time) return True return False @@ -438,193 +533,215 @@ def on_filter_state_toggled(self, button): active_action = lambda a: self.actiongroup.get_action(a).get_active() - active_filters = [a for a in self.state_actions if \ + active_filters = [a for a in self.state_actions if active_action(self.state_actions[a][0])] if set(active_filters) == set(self.state_filters): return self.state_filters = active_filters - self.prefs.vc_status_filters = active_filters + self.props.status_filters = active_filters self.refresh() + def on_treeview_selection_changed(self, selection=None): + + def set_sensitive(action, sensitive): + self.actiongroup.get_action(action).set_sensitive(sensitive) + + if selection is None: + selection = self.treeview.get_selection() + model, rows = selection.get_selected_rows() + if hasattr(self.vc, 'update_actions_for_paths'): + paths = [self.model.value_path(model.get_iter(r), 0) for r in rows] + states = [self.model.get_state(model.get_iter(r), 0) for r in rows] + action_sensitivity = { + "VcCompare": False, + "VcCommit": False, + "VcUpdate": False, + "VcPush": False, + "VcAdd": False, + "VcResolved": False, + "VcRemove": False, + "VcRevert": False, + "VcDeleteLocally": bool(paths) and self.vc.root not in paths, + } + path_states = dict(zip(paths, states)) + self.vc.update_actions_for_paths(path_states, action_sensitivity) + for action, sensitivity in action_sensitivity.items(): + set_sensitive(action, sensitivity) + else: + have_selection = bool(rows) + for action in self.valid_vc_actions: + set_sensitive(action, have_selection) + def _get_selected_files(self): - sel = [] - def gather(model, path, it): - sel.append( model.value_path(it,0) ) - s = self.treeview.get_selection() - s.selected_foreach(gather) - # remove empty entries and remove trailing slashes + model, rows = self.treeview.get_selection().get_selected_rows() + sel = [self.model.value_path(self.model.get_iter(r), 0) for r in rows] + # Remove empty entries and trailing slashes return [x[-1] != "/" and x or x[:-1] for x in sel if x is not None] - def _command_iter(self, command, files, refresh): + def _command_iter(self, command, files, refresh, working_dir=None): """Run 'command' on 'files'. Return a tuple of the directory the command was executed in and the output of the command. """ - msg = misc.shelljoin(command) - yield "[%s] %s" % (self.label_text, msg.replace("\n", u"\u21b2") ) + + def shelljoin(command): + def quote(s): + return '"%s"' % s if len(s.split()) > 1 else s + return " ".join(quote(tok) for tok in command) + + msg = shelljoin(command) + yield "[%s] %s" % (self.label_text, msg.replace("\n", "\t")) def relpath(pbase, p): kill = 0 if len(pbase) and p.startswith(pbase): kill = len(pbase) + 1 return p[kill:] or "." - if len(files) == 1 and os.path.isdir(files[0]): + if working_dir: + workdir = self.vc.get_working_directory(working_dir) + elif len(files) == 1 and os.path.isdir(files[0]): workdir = self.vc.get_working_directory(files[0]) else: - workdir = self.vc.get_working_directory( _commonprefix(files) ) - files = [ relpath(workdir, f) for f in files ] + workdir = self.vc.get_working_directory(_commonprefix(files)) + files = [relpath(workdir, f) for f in files] r = None - self.consolestream.write( misc.shelljoin(command+files) + " (in %s)\n" % workdir) - readfunc = misc.read_pipe_iter(command + files, self.consolestream, workdir=workdir).next + self.consolestream.command(shelljoin(command + files) + " (in %s)\n" % workdir) + readiter = misc.read_pipe_iter(command + files, self.consolestream, + workdir=workdir) try: while r is None: - r = readfunc() - self.consolestream.write(r) + r = next(readiter) + self.consolestream.output(r) yield 1 - except IOError, e: - misc.run_dialog("Error running command.\n'%s'\n\nThe error was:\n%s" % ( misc.shelljoin(command), e), - parent=self, messagetype=gtk.MESSAGE_ERROR) + except IOError as err: + misc.error_dialog( + "Error running command", + "While running '%s'\nError: %s" % (msg, err)) + self.consolestream.output("\n") + + returncode = next(readiter) + if returncode: + self.console_vbox.show() + if refresh: self.refresh_partial(workdir) yield workdir, r - def _command(self, command, files, refresh=1): + def _command(self, command, files, refresh=1, working_dir=None): """Run 'command' on 'files'. """ - self.scheduler.add_task( self._command_iter(command, files, refresh).next ) - + self.scheduler.add_task(self._command_iter(command, files, refresh, + working_dir)) + def _command_on_selected(self, command, refresh=1): files = self._get_selected_files() if len(files): self._command(command, files, refresh) - else: - misc.run_dialog( _("Select some files first."), parent=self, messagetype=gtk.MESSAGE_INFO) def on_button_update_clicked(self, obj): - self._command_on_selected( self.vc.update_command() ) + try: + self.vc.update(self._command, self._get_selected_files()) + except NotImplementedError: + self._command_on_selected(self.vc.update_command()) + + def on_button_push_clicked(self, obj): + vcdialogs.PushDialog(self).run() + def on_button_commit_clicked(self, obj): - dialog = CommitDialog( self ) - dialog.run() + vcdialogs.CommitDialog(self).run() def on_button_add_clicked(self, obj): - self._command_on_selected(self.vc.add_command() ) - def on_button_add_binary_clicked(self, obj): - self._command_on_selected(self.vc.add_command(binary=1)) + try: + self.vc.add(self._command, self._get_selected_files()) + except NotImplementedError: + self._command_on_selected(self.vc.add_command()) + def on_button_remove_clicked(self, obj): - self._command_on_selected(self.vc.remove_command()) + selected = self._get_selected_files() + if any(os.path.isdir(p) for p in selected): + # TODO: Improve and reuse this dialog for the non-VC delete action + dialog = Gtk.MessageDialog( + parent=self.widget.get_toplevel(), + flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT, + type=Gtk.MessageType.WARNING, + message_format=_("Remove folder and all its files?")) + dialog.format_secondary_text( + _("This will remove all selected files and folders, and all " + "files within any selected folders, from version control.")) + + dialog.add_button(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) + dialog.add_button(_("_Remove"), Gtk.ResponseType.OK) + response = dialog.run() + dialog.destroy() + if response != Gtk.ResponseType.OK: + return + + try: + self.vc.remove(self._command, selected) + except NotImplementedError: + self._command_on_selected(self.vc.remove_command()) + def on_button_resolved_clicked(self, obj): - self._command_on_selected(self.vc.resolved_command()) + try: + self.vc.resolve(self._command, self._get_selected_files()) + except NotImplementedError: + self._command_on_selected(self.vc.resolved_command()) + def on_button_revert_clicked(self, obj): - self._command_on_selected(self.vc.revert_command()) + try: + self.vc.revert(self._command, self._get_selected_files()) + except NotImplementedError: + self._command_on_selected(self.vc.revert_command()) + def on_button_delete_clicked(self, obj): files = self._get_selected_files() for name in files: try: - if os.path.isfile(name): - os.remove(name) - elif os.path.isdir(name): - if misc.run_dialog(_("'%s' is a directory.\nRemove recursively?") % os.path.basename(name), - parent = self, - buttonstype=gtk.BUTTONS_OK_CANCEL) == gtk.RESPONSE_OK: - shutil.rmtree(name) - except OSError, e: - misc.run_dialog(_("Error removing %s\n\n%s.") % (name,e), parent = self) + gfile = Gio.File.new_for_path(name) + gfile.trash(None) + except GLib.GError as e: + misc.error_dialog(_("Error removing %s") % name, str(e)) workdir = _commonprefix(files) self.refresh_partial(workdir) def on_button_diff_clicked(self, obj): files = self._get_selected_files() - if len(files): - self.run_diff(files) + for f in files: + self.run_diff(f) def open_external(self): self._open_files(self._get_selected_files()) - def show_patch(self, prefix, patch, silent=False): - tmpdir = tempfile.mkdtemp("-meld") - self.tempdirs.append(tmpdir) - - diffs = [] - for fname in self.vc.get_patch_files(patch): - destfile = os.path.join(tmpdir,fname) - destdir = os.path.dirname( destfile ) - - if not os.path.exists(destdir): - os.makedirs(destdir) - pathtofile = os.path.join(prefix, fname) - try: - shutil.copyfile( pathtofile, destfile) - except IOError: # it is missing, create empty file - open(destfile,"w").close() - diffs.append( (destfile, pathtofile) ) - - patchcmd = self.vc.patch_command(tmpdir) - try: - result = misc.write_pipe(patchcmd, patch, error=misc.NULL) - except OSError: - result = 1 - - if result == 0: - for d in diffs: - os.chmod(d[0], 0444) - self.emit("create-diff", d) - return True - elif not silent: - import meldapp - msg = _(""" - Invoking 'patch' failed. - - Maybe you don't have 'GNU patch' installed, - or you use an untested version of %s. - - Please send email bug report to: - meld-list@gnome.org - - Containing the following information: - - - meld version: '%s' - - source control software type: '%s' - - source control software version: 'X.Y.Z' - - the output of '%s somefile.txt' - - patch command: '%s' - (no need to actually run it, just provide - the command line) - - Replace 'X.Y.Z' by the actual version for the - source control software you use. - """) % (self.vc.NAME, - meldapp.version, - self.vc.NAME, - " ".join(self.vc.diff_command()), - " ".join(patchcmd)) - msg = '\n'.join([line.strip() for line in msg.split('\n')]) - misc.run_dialog(msg, parent=self) - return False - def refresh(self): - self.set_location( self.model.value_path( self.model.get_iter_root(), 0 ) ) + self.set_location(self.model.value_path(self.model.get_iter_first(), 0)) def refresh_partial(self, where): if not self.actiongroup.get_action("VcFlatten").get_active(): - it = self.find_iter_by_name( where ) + it = self.find_iter_by_name(where) if it: - newiter = self.model.insert_after( None, it) - self.model.set_value(newiter, self.model.column_index( tree.COL_PATH, 0), where) - self.model.set_state(newiter, 0, tree.STATE_NORMAL, isdir=1) + newiter = self.model.insert_after(None, it) + self.model.set_value( + newiter, self.model.column_index(tree.COL_PATH, 0), where) + self.model.set_path_state(newiter, 0, tree.STATE_NORMAL, True) self.model.remove(it) - self.scheduler.add_task( self._search_recursively_iter(newiter).next ) - else: # XXX fixme + self.treeview.grab_focus() + self.treeview.get_selection().select_iter(newiter) + self.scheduler.add_task(self._search_recursively_iter(newiter)) + self.scheduler.add_task(self.on_treeview_selection_changed) + self.scheduler.add_task(self.on_treeview_cursor_changed) + else: + # XXX fixme self.refresh() def _update_item_state(self, it, vcentry, location): e = vcentry - self.model.set_state( it, 0, e.state, e.isdir ) + self.model.set_path_state(it, 0, e.state, e.isdir) + def setcol(col, val): self.model.set_value(it, self.model.column_index(col, 0), val) setcol(COL_LOCATION, location) setcol(COL_STATUS, e.get_status()) setcol(COL_REVISION, e.rev) - setcol(COL_TAG, e.tag) setcol(COL_OPTIONS, e.options) def on_file_changed(self, filename): @@ -635,12 +752,12 @@ files = self.vc.lookup_files([], [(os.path.basename(path), path)])[1] for e in files: if e.path == path: - prefixlen = 1 + len( self.model.value_path( self.model.get_iter_root(), 0 ) ) + prefixlen = 1 + len( self.model.value_path( self.model.get_iter_first(), 0 ) ) self._update_item_state( it, e, e.parent[prefixlen:]) return def find_iter_by_name(self, name): - it = self.model.get_iter_root() + it = self.model.get_iter_first() path = self.model.value_path(it, 0) while it: if name == path: @@ -660,41 +777,56 @@ break return None - def on_console_view_toggle(self, box, event=None): - if box == self.console_hide_box: - self.prefs.vc_console_visible = 0 - self.console_hbox.hide() - self.console_show_box.show() - else: - self.prefs.vc_console_visible = 1 - self.console_hbox.show() - self.console_show_box.hide() - - def on_consoleview_populate_popup(self, text, menu): - item = gtk.ImageMenuItem(gtk.STOCK_CLEAR) - def activate(*args): - buf = text.get_buffer() - buf.delete( buf.get_start_iter(), buf.get_end_iter() ) - item.connect("activate", activate) - item.show() - menu.insert( item, 0 ) - item = gtk.SeparatorMenuItem() - item.show() - menu.insert( item, 1 ) + def on_consoleview_populate_popup(self, textview, menu): + buf = textview.get_buffer() + clear_cb = lambda *args: buf.delete(*buf.get_bounds()) + clear_action = Gtk.ImageMenuItem(Gtk.STOCK_CLEAR) + clear_action.connect("activate", clear_cb) + menu.insert(clear_action, 0) + menu.insert(Gtk.SeparatorMenuItem(), 1) + menu.show_all() def on_treeview_cursor_changed(self, *args): cursor_path, cursor_col = self.treeview.get_cursor() if not cursor_path: self.emit("next-diff-changed", False, False) + self.current_path = cursor_path + return + + # If invoked directly rather than through a callback, we always check + if not args: + skip = False else: - # TODO: Only recalculate when needed; see DirDiff - prev_path, next_path = self.model._find_next_prev_diff(cursor_path) - self.prev_path, self.next_path = prev_path, next_path - have_next_diffs = (prev_path is not None, next_path is not None) + try: + old_cursor = self.model.get_iter(self.current_path) + except (ValueError, TypeError): + # An invalid path gives ValueError; None gives a TypeError + skip = False + else: + # We can skip recalculation if the new cursor is between + # the previous/next bounds, and we weren't on a changed row + state = self.model.get_state(old_cursor, 0) + if state not in (tree.STATE_NORMAL, tree.STATE_EMPTY): + skip = False + else: + if self.prev_path is None and self.next_path is None: + skip = True + elif self.prev_path is None: + skip = cursor_path < self.next_path + elif self.next_path is None: + skip = self.prev_path < cursor_path + else: + skip = self.prev_path < cursor_path < self.next_path + + if not skip: + prev, next = self.model._find_next_prev_diff(cursor_path) + self.prev_path, self.next_path = prev, next + have_next_diffs = (prev is not None, next is not None) self.emit("next-diff-changed", *have_next_diffs) + self.current_path = cursor_path def next_diff(self, direction): - if direction == gtk.gdk.SCROLL_UP: + if direction == Gdk.ScrollDirection.UP: path = self.prev_path else: path = self.next_path @@ -702,28 +834,8 @@ self.treeview.expand_to_path(path) self.treeview.set_cursor(path) - def on_reload_activate(self, *extra): - self.on_fileentry_activate(self.fileentry) + def on_refresh_activate(self, *extra): + self.on_fileentry_file_set(self.fileentry) def on_find_activate(self, *extra): self.treeview.emit("start-interactive-search") - - def treeview_search_cb(self, model, column, key, it): - """Callback function for searching in VcView treeview""" - path = model.get_value(it, tree.COL_PATH) - - # if query text contains slash, search in full path - if key.find('/') >= 0: - lineText = path - else: - lineText = os.path.basename(path) - - # Perform case-insensitive matching if query text is all lower-case - if key.islower(): - lineText = lineText.lower() - - if lineText.find(key) >= 0: - # line matches - return False - else: - return True diff -Nru meld-1.5.3/meld.1 meld-3.11.0/meld.1 --- meld-1.5.3/meld.1 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/meld.1 2014-02-08 21:03:00.000000000 +0000 @@ -73,7 +73,7 @@ .br Initiate a recursive 3-way diff between directory DIR1, DIR2, and DIR3. .TP -\fBmeld\fR --diff FILE1 FILE2 --diff FILE3 FILE4 +\fBmeld\fR \-\-diff FILE1 FILE2 \-\-diff FILE3 FILE4 .br Initiate a diff between FILE1 and FILE2, and a separate diff between FILE3 and FILE4. diff -Nru meld-1.5.3/NEWS meld-3.11.0/NEWS --- meld-1.5.3/NEWS 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/NEWS 2014-02-22 20:20:21.000000000 +0000 @@ -1,3 +1,390 @@ + +2014-2-23 meld 3.11.0 +===================== + + Features: + + * Supporting hiding empty filtered folders in folder comparison (Gianni Trovisi, Kai Willadsen) + * Notify user when files change externally in file comparison (Kai Willadsen) + * Use standard GIO file trash handling when deleting files (Kai Willadsen) + * Newly written Mallard-based help (Kai Willadsen) + + + User interface updates: + + * Support GNOME 3-style application menu (Kai Willadsen) + * Visual improvements to several icons (Kai Willadsen) + * Update Meld's colour scheme (Kai Willadsen) + * Many visual styling updates, layout tweaks and UI polish (Kai Willadsen) + + + Internal changes: + + * Port to GObject introspection, GTK+ 3, GApplication, GSettings and other + new things starting with 'G' (Kai Willadsen) + * Port to distutils, based on python-distutils-extra (Kai Willadsen) + * Move to using CSS for styling and colour definitions (Kai Willadsen) + * Update to use more modern GTK widgets (Peter Tyser, Kai Willadsen) + * Move a lot of extra UI construction into glade/UI files (Kai Willadsen) + * Make several custom icons themeable (Kai Willadsen) + * Make Meld a single-instance application, and add support for multiple + windows (Kai Willadsen) + + + Fixes: + + * Improved rendering speed in file comparisons (Kai Willadsen) + * Translation fixes (Piotr Drąg) + * Copy and paste within a buffer no longer causes occasional incorrect + change highlighting (Kai Willadsen) + * Fixes for version control support (Ben Ross, Louis des Landes, Peter + Tyser, Tom Scytale) + * Windows crash fixes (Bartosz Dziewoński) + * Sundry bug fixes (Daniel Pantea, Peter Tyser, Kai Willadsen) + + New dependencies: + + * GTK+ 3.6 + * GLib 2.34 + * PyGObject 3.8 + * GtkSourceView 3.6; GtkSourceView is also no longer optional + + Translations: + + * Marek Černocký (cs) + * Benjamin Steinwender (de) + * Dimitris Spingos (el) + * Daniel Mustieles (es) + * Jiri Grönroos (fi) + * Fran Diéguez (gl) + * Gabor Kelemen (hu) + * Andika Triwidada (id) + * Milo Casagrande (it) + * Piotr Drąg (pl) + * Enrico Nicoletto(pt_BR) + * Rafael Ferreira (pt_BR) + * Matej Urbančič (sl) + * Мирослав Николић (sr, sr@latin) + * Özgür Sarıer (tr) + * zodiac111 (zh_CN) + + + +2013-9-22 meld 1.8.1 +==================== + + Fixes: + + * Add AppData file (Kai Willadsen) + * Change order of version control selection for CVS and old SVN (Kai + Willadsen) + * Fix escaped markup in folder comparisons (Kai Willadsen) + + Translations: + + * Daniel Mustieles (es) + * Enrico Nicoletto (pt_BR) + * Gabor Kelemen (hu) + * Marek Černocký (cs) + * Milo Casagrande (it) + * Piotr Drąg (pl) + + +2013-9-15 meld 1.8.0 +==================== + + Fixes: + + * Minor fixes (Kai Willadsen) + + Translations: + + * Matej Urbančič (sl) + + +2013-9-1 meld 1.7.5 +=================== + + Features: + + * Open the version control console view when the exit code of a VC + operation indicates that there was an error (Kai Willadsen) + * Improve our handling of bad gconf setups, and add a file-system key + to force a no-gconf fallback for persistent issues (Daniel Richard G) + * Add a preference for whether to highlight the current line of a file + comparison (Kai Willadsen) + * Keyboard shortcut for the commit dialog (Kai Willadsen) + + Fixes: + + * Fix traversing symlink loops in version control comparisons (Kai + Willadsen) + * Minor fixes and cleanups (Boruch Baum, Sandro Bonazzola, Kai Willadsen) + + Translations: + + * Antonio Fernandes C. Neto (pt_BR) + * Daniel Mustieles (es) + * Fran Diéguez (gl) + * Marek Černocký (cs) + * Rafael Ferreira (pt_BR) + * Piotr Drąg (pl) + + +2013-7-28 meld 1.7.4 +==================== + + Features: + + * Commit dialog can now automatically wrap commit messages (Kai Willadsen) + * Add Bazaar support for pushing changes, and improve sensitivity setting + (Louis des Landes) + * Support Subversion 1.8 (Yuri) + * Type-ahead-find search now works in folder comparisons (Kai Willadsen) + * Preference to swap pane order left = local (Kai Willadsen) + + * Arch, Codeville and RCS are no longer supported (Kai Willadsen) + + Fixes: + + * When opening new tabs from the command line, bring new tab to the front + (Richard Simmons) + * Current chunk highlight is now customisable using gtkrc (Louis des + Landes) + * Syncpoints now prevent chunks from being re-merged, syncpoints move with + insertions, and disable automatic updating (Kai Willadsen) + * Various version control updates and fixes (Louis des Landes, Kai + Willadsen) + * Sensitivity fixes (Kai Willadsen) + * Translation string fixes (Marek Černocký) + + Translations: + * Daniel Mustieles (es) + * Dimitris Spingos (el) + * Fran Diéguez (gl) + * Marek Černocký (cs) + * Matej Urbančič (sl) + * Piotr Drąg (pl) + + +2013-6-4 meld 1.7.3 +=================== + + Features: + + * Support launching conflict comparisons from Subversion (Louis des + Landes) + * The external text editor setting now supports opening files at a + particular line number (Konstantin Starojitski) + + * A host of minor improvements to the version control UI, including: + * Add a new Push action for VC modules, currently supported in Git (Kai + Willadsen) + * Show a summary of unpushed commits, currently supported in Git (Kai + Willadsen) + * Reworked commit dialog, including more details about files to be + committed and more useful previous-log selection (Kai Willadsen) + * Console output for VC comparisons is now formatted to better + distinguish commands, output and errors (Kai Willadsen) + * Support better sensitivity handling in VC comparisons, currently + implemented by Git (Kai Willadsen) + + * Sundry minor UI improvements: + * Much HIG-ification and better wording for actions, dialogs and + labels (Kai Willadsen, with diligent bug reporting from Adam Dingle) + * Make columns user-resizable in version control and folder comparisons + (Kai Willadsen) + * There is now a Save All action, to save all modified files in the + current comparison (Kai Willadsen) + * Rather than giving up on long inline-highlighting comparisons, Meld + now prompts to continue the comparison (Kai Willadsen) + * F5 is now a additional shortcut for Refresh (Kai Willadsen) + * Reload has been renamed to Revert and its UI has been improved for + file comparisons (Kai Willadsen) + + Fixes: + + * Version control updates and miscellaneous fixes (Dominique Leuenberger, + Louis des Landes, Timothy Babych, Kai Willadsen) + * When guessing file types for syntax highlighting, we now use file + contents as well as extension (Kai Willadsen) + * Prev/Next Change navigation now centres changes slightly more + aggressively (Kai Willadsen) + + Translations: + * Daniel Mustieles (es) + * Gabor Kelemen (hu) + * Inaki Larranaga Murgoitio (eu) + * Jiro Matsuzawa (ja) + * Marek Černocký (cs) + * Martin Srebotnjak (sl) + * Matej Urbančič (sl) + * Pere Orga (ca) + * Piotr Drąg (pl) + * Rafael Ferreira (pt_BR) + * Мирослав Николић (sr, sr@latin) + + +2013-4-16 meld 1.7.2 +==================== + + Features: + + * In version control view, conflicts now open in a three-way merge mode + for Bazaar and Git, with other VCs to follow (Louis des Landes) + * Manual synchronisation of split points for comparisons (Piotr Piastucki, + Kai Willadsen) + * The "Ignore blank lines" setting is now used in folder comparisons, in + same manner as text filters (Kai Willadsen) + + Fixes: + + * Many minor Windows compatibility fixes (Vincent Legoll, Robert Wahler, + Kai Willadsen) + * Version control compatibility updates and fixes (Manuel Siggen, Kai + Willadsen) + * Better handling of Unicode filenames (Kai Willadsen) + * Better support for cross-platform newline behaviour, particularly on + Windows (Kai Willadsen) + * Sensitivity fixes for file and folder comparisons (Kai Willadsen) + * Build and installation fixes (Kalev Lember, Kai Willadsen) + + Translations: + + * Daniel Mustieles (es) + * Gabor Kelemen (hu) + * Marek Černocký (cs) + * Martin Srebotnjak (sl). + * Matej Urbančič (sl) + * Мирослав Николић (sr, sr@latin) + * Piotr Drąg (pl) + * Rafael Ferreira (pt_BR) + + + +2013-2-28 meld 1.7.1 +==================== + + Features: + + * Folder comparisons can now show extra information, such as file size and + modification times. Column visibility and ordering are properly + configurable. (Philipp Müller, Kai Willadsen) + * Shallow comparison (i.e., based on size and timestamp) are now supported + for folder comparisons, including timestamp resolution preferences for + cross-filesystem comparisons. (Cristian Dinu) + * The UI for launching new comparisons has been reworked to have a clearer + workflow, and is now shown on startup if no other comparisons have been + opened (Kai Willadsen) + * Recently-used comparisons are now supported, allowing you to re-open + previous comparisons directly. (Kai Willadsen) + * Read-only files are now not editable by default, making merge actions + clearer and more consistent. Individual read-only files can easily be set + as editable as desired. (Kai Willadsen) + + Fixes: + + * New version control API, currently used by Git and Subversion (Kai + Willadsen) + * Version control compatibility updates and fixes (Cedric Le Dillau, Louis + des Landes, Kai Willadsen) + * Command line labelling options now apply to folder tabs (Kai Willadsen) + * Regressions from parallel inline highlighting calculations have been + fixed (Kai Willadsen) + * Diff algorithm cleanups (Piotr Piastucki) + * Compatibility fixes for Python 3; this does *not* mean that Meld works on + Python 3 yet, just that 2to3 issues have been addressed (Kai Willadsen) + + Translations: + * Daniel Mustieles (es) + * Dominique Leuenberger (pt) + * Enrico Nicoletto (pt_BR) + * Florencio Neves (pt_BR) + * Fran Diéguez (gl) + * Marek Černocký (cs) + * Matej Urbančič (sl) + * Мирослав Николић (sr, sr@latin) + * Piotr Drąg (pl) + + +2012-11-07 meld 1.7.0 +===================== + + Features: + + * File comparisons are faster! Meld now has a smarter pre-processing step + for inline highlighting of differences (Piotr Piastucki) and does its + highlighting calculations asynchronously (Kai Willadsen), leading to + better overall performance and interactivity. + * Auto-merge mode is now available from the command-line (Piotr Piastucki) + * Comparisons can be opened in new tabs (rather than in a new window) from + the command line (Kacper Wysocki, Antoine, Kai Willadsen) + * Custom colours can now be configured for all Meld drawing (Kai Willadsen) + + Fixes: + + * Improved behaviour when opening many tabs at once (Peter Tyser) + * Notification of searches wrapping around the buffer (Philipp Müller) + * Better compatibility with non-standard keyboard layouts (Stephan Hilb) + * Better error reporting for failed VC comparisons (Kai Willadsen) + * Version control compatibility updates and fixes (Jan Danielsson, Tim + Babych, Kai Willadsen) + * Other miscellaneous bug fixes (Jeff Oliver, Pacho Ramos, Rainer Suhm, Kai + Willadsen) + + Translations: + + * Alexandre Franke (fr) + * Daniel Mustieles (es) + * Fran Diéguez (gl) + * Gabor Kelemen (hu) + * Matej Urbančič (sl) + * Marek Černocký (cs) + * Mario Blättermann (de) + * Martin Srebotnjak (sl) + * Мирослав Николић (sr, sr@latin) + * Piotr Drąg (pl) + + +2012-4-28 meld 1.6.0 +==================== + + Fixes: + + * Fix cursor location handling when our tree models change (Kai Willadsen) + + Translation updates: + + * Bruno Brouard (fr) + * Daniel Mustieles (es) + * Daniel Șerbănescu (ro) + * Fran Diéguez (gl) + * Marek Černocký (cs) + * Matej Urbančič (sl) + * Piotr Drąg (pl) + + +2012-4-3 meld 1.5.4 +==================== + + Fixes: + + * Slightly faster diff calculation (Piotr Piastucki) + * Avoid too-tall commit dialogues (Nguyễn Hồng Quân) + * Minor bug fixes and performance improvments (Kai Willadsen) + + Translation updates: + + * Alexander Shopov (bg) + * Fran Diéguez (gl) + * Kjartan Maraas (nb) + * Kristjan SCHMIDT (eo) + * Nguyễn Thái Ngọc Duy (vi) + * Toshiharu Kudoh (ja) + * Trương Ứng Minh (vi) + * Мирослав Николић (sr) (sr@latin) + + 2012-1-27 meld 1.5.3 ==================== diff -Nru meld-1.5.3/PKG-INFO meld-3.11.0/PKG-INFO --- meld-1.5.3/PKG-INFO 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/PKG-INFO 2014-02-22 21:21:42.000000000 +0000 @@ -0,0 +1,19 @@ +Metadata-Version: 1.1 +Name: meld +Version: 3.11.0 +Summary: Visual diff and merge tool +Home-page: http://meldmerge.org +Author: Kai Willadsen +Author-email: kai.willadsen@gmail.com +License: UNKNOWN +Description: UNKNOWN +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: X11 Applications :: GTK +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+) +Classifier: Programming Language :: Python +Classifier: Topic :: Desktop Environment :: Gnome +Classifier: Topic :: Software Development +Classifier: Topic :: Software Development :: Version Control diff -Nru meld-1.5.3/po/bg.po meld-3.11.0/po/bg.po --- meld-1.5.3/po/bg.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/bg.po 2013-12-07 19:30:09.000000000 +0000 @@ -1,136 +1,501 @@ # Bulgarian translation of meld po-file -# Copyright (C) 2004, 2005, 2008 Free Software Foundation, Inc. +# Copyright (C) 2004, 2005, 2008, 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the meld package. -# Alexander Shopov , 2004, 2005, 2008. +# Alexander Shopov , 2004, 2005, 2008, 2012. # msgid "" msgstr "" -"Project-Id-Version: meld trunk\n" +"Project-Id-Version: meld master\n" "Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2008-08-02 09:01+0300\n" -"PO-Revision-Date: 2008-08-02 08:39+0300\n" -"Last-Translator: Alexander Shopov \n" +"POT-Creation-Date: 2012-02-03 13:29+0200\n" +"PO-Revision-Date: 2012-02-03 13:26+0200\n" +"Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" +"Language: bg\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" -#: ../dirdiff.py:194 ../glade2/meldapp.glade.h:65 ../vcview.py:120 +#: ../bin/meld:97 +msgid "Cannot import: " +msgstr "Следните модули не мога да бъдат внесени: " + +#: ../bin/meld:100 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld изисква %s или по-висока версия." + +#: ../data/meld.desktop.in.h:1 +msgid "Compare and merge your files" +msgstr "Сравняване и сливане на файлове" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Преглед на разлики" + +#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:4 +msgid "Meld Diff Viewer" +msgstr "Програма за сравняване Meld" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Active" +msgstr "Действащ" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Add new filter" +msgstr "Добавяне на нов филтър" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Editable List" +msgstr "Списък с редактираните файлове" + +#: ../data/ui/EditableList.ui.h:4 +msgid "Move _Down" +msgstr "На_горе" + +#: ../data/ui/EditableList.ui.h:5 +msgid "Move _Up" +msgstr "На_долу" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item down" +msgstr "Преместване на елемента нагоре" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move item up" +msgstr "Преместване на елемента надолу" + +#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:166 +msgid "Name" +msgstr "Име" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Pattern" +msgstr "Шаблон" + +#: ../data/ui/EditableList.ui.h:10 +msgid "Remove selected filter" +msgstr "Премахване на избрания филтър" + +#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:130 +msgid "_Add" +msgstr "_Добавяне" + +#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:132 +msgid "_Remove" +msgstr "_Премахване" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save modified files?" +msgstr "Запазване на променените файлове?" + +#: ../data/ui/filediff.ui.h:2 +msgid "" +"Some files have been modified.\n" +"Which ones would you like to save?" +msgstr "" +"Някои файлове са променени.\n" +"Кои от тях искате да се запазят?" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Discard Changes" +msgstr "_Отмяна на промените" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save Selected" +msgstr "_Запазване на избраните" + +#: ../data/ui/findbar.ui.h:1 +msgid "Regular E_xpression" +msgstr "Ре_гулярен израз" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Замяна на _всички" + +#: ../data/ui/findbar.ui.h:3 +msgid "Replace _With" +msgstr "Замяна _с" + +#: ../data/ui/findbar.ui.h:4 +msgid "Who_le word" +msgstr "_Цели думи" + +#: ../data/ui/findbar.ui.h:5 +msgid "_Match Case" +msgstr "Зачитане на главни/_малки" + +#: ../data/ui/findbar.ui.h:6 +msgid "_Next" +msgstr "_Следващо" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Previous" +msgstr "_Предишно" + +#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 +msgid "_Replace" +msgstr "_Замяна" + +#: ../data/ui/findbar.ui.h:9 +msgid "_Search for" +msgstr "_Търсене за:" + +#: ../data/ui/meldapp.ui.h:1 +msgid "Choose Files" +msgstr "Избор на файлове" + +#: ../data/ui/meldapp.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2011 Kai Willadsen" +msgstr "" +"Авторски права © 2002-2009 Stephen Kennedy\n" +"Авторски права © 2009-2011 Kai Willadsen" + +#: ../data/ui/meldapp.ui.h:4 +msgid "Directory" +msgstr "Папка" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:7 +msgid "Mine" +msgstr "Мои" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:9 +msgid "Original" +msgstr "Първоначални" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:11 +msgid "Other" +msgstr "Чужди" + +#: ../data/ui/meldapp.ui.h:12 +msgid "Select VC Directory" +msgstr "Избор на папка с контрол на версиите" + +#: ../data/ui/meldapp.ui.h:13 +msgid "_Directory Comparison" +msgstr "Сравняване на _папки" + +#: ../data/ui/meldapp.ui.h:14 +msgid "_File Comparison" +msgstr "Сравняване на _файлове" + +#: ../data/ui/meldapp.ui.h:15 +msgid "_Three Way Compare" +msgstr "_Тройно сравняване" + +#: ../data/ui/meldapp.ui.h:16 +msgid "_Version Control Browser" +msgstr "Навигация при контрола на _версиите" + +#: ../data/ui/meldapp.ui.h:17 +msgid "translator-credits" +msgstr "" +"Александър Шопов \n" +"\n" +"Проектът за превод на GNOME има нужда от подкрепа.\n" +"Научете повече за нас на http://gnome.cult.bg\n" +"Докладвайте за грешки на http://gnome.cult.bg/bugs" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Copy to Clipboard" +msgstr "Копиране в междинния буфер" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Create Patch" +msgstr "Създаване на кръпка" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Create a patch" +msgstr "Създаване на кръпка" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Left and middle panes" +msgstr "Левият и средният подпрозорци" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "Middle and right panes" +msgstr "Средният и десният подпрозорци" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Use differences between:" +msgstr "Да се ползват разликите между:" + +#: ../data/ui/patch-dialog.ui.h:7 +msgid "_Reverse patch direction" +msgstr "_Обръщане на посоката на кръпката" + +#: ../data/ui/preferences.ui.h:1 +msgid "Display" +msgstr "Визуализация" + +#: ../data/ui/preferences.ui.h:2 +msgid "Do not _split words over two lines" +msgstr "_Думите да не се пренасят" + +#: ../data/ui/preferences.ui.h:3 +msgid "Edito_r command:" +msgstr "_Команда на редактора:" + +#: ../data/ui/preferences.ui.h:4 +msgid "Editor" +msgstr "Редактор" + +#: ../data/ui/preferences.ui.h:5 +msgid "Enable text _wrapping" +msgstr "_Пренасяне на текста" + +#: ../data/ui/preferences.ui.h:6 +msgid "Encoding" +msgstr "Кодиране" + +#: ../data/ui/preferences.ui.h:7 +msgid "External editor" +msgstr "Външен редактор" + +#: ../data/ui/preferences.ui.h:8 +msgid "File Filters" +msgstr "Филтър за файлове" + +#: ../data/ui/preferences.ui.h:9 +msgid "Font" +msgstr "Шрифт" + +#: ../data/ui/preferences.ui.h:10 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Игнориране на промени в броя и положението на празните редове" + +#: ../data/ui/preferences.ui.h:11 +msgid "Ignore symbolic links" +msgstr "Игнориране на символните връзки" + +#: ../data/ui/preferences.ui.h:12 +msgid "Loading" +msgstr "Зареждане" + +#: ../data/ui/preferences.ui.h:13 +msgid "Meld Preferences" +msgstr "Настройки на Meld" + +#: ../data/ui/preferences.ui.h:14 +msgid "Show _line numbers" +msgstr "Показване на _номерата на редовете" + +#: ../data/ui/preferences.ui.h:15 +msgid "Show w_hitespace" +msgstr "Показване на _празните знаци" + +#: ../data/ui/preferences.ui.h:16 +msgid "Text Filters" +msgstr "Филтри за текст" + +#: ../data/ui/preferences.ui.h:17 +msgid "Use _default system editor" +msgstr "Използване на стандартния _редактор на GNOME" + +#: ../data/ui/preferences.ui.h:18 +msgid "Use s_yntax highlighting" +msgstr "Използване на _оцветяване на синтаксиса" + +#: ../data/ui/preferences.ui.h:19 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" +"При зареждане на файл, да се пробват кодиранията в тази последователност " +"(напр.: utf8, iso8859)" + +#: ../data/ui/preferences.ui.h:20 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"При сравняване на папки някои файлове и директории може да се пренебрегват. " +"Всеки ред е списък от шаблони на обвивката, разделени с интервали." + +#: ../data/ui/preferences.ui.h:21 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"При сравняване на файлове някои промени може да се пренебрегват. Всеки " +"шаблон тук е регулярен израз в езика Питон, който заменя всеки напасващ " +"текст с празен низ, преди да се извърши сравняването. Ако изразът съдържа " +"групи, само групите се заменят. Обърнете се към ръководството за повече " +"подробности." + +#: ../data/ui/preferences.ui.h:22 +msgid "_Editor font:" +msgstr "_Шрифт на редактора:" + +#: ../data/ui/preferences.ui.h:23 +msgid "_Insert spaces instead of tabs" +msgstr "_Шпации вместо табулатори" + +#: ../data/ui/preferences.ui.h:24 +msgid "_Tab width:" +msgstr "Ширина на _табулатора:" + +#: ../data/ui/preferences.ui.h:25 +msgid "_Use the system fixed width font" +msgstr "Използване на _системния шрифт с фиксирана ширина" + +#: ../data/ui/vcview.ui.h:1 +msgid "Commit Files" +msgstr "Файлове за подаване" + +#: ../data/ui/vcview.ui.h:2 +msgid "Log Message" +msgstr "Съобщение в дневника" + +#: ../data/ui/vcview.ui.h:3 +msgid "Previous Logs" +msgstr "Предишни съобщения" + +#: ../data/ui/vcview.ui.h:4 +msgid "VC Log" +msgstr "Дневник на хранилището" + +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 msgid "_Compare" msgstr "_Сравняване" -#: ../dirdiff.py:194 ../vcview.py:120 +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 msgid "Compare selected" msgstr "Сравняване на избраното" -#. FIXME: the glade files were inconsistent: GO_BACK vs GOTO_FIRST, "Left" vs "Copy To Left" -#: ../dirdiff.py:196 -msgid "Left" -msgstr "Ляв" +#: ../meld/dirdiff.py:233 +msgid "Copy _Left" +msgstr "Копиране на_ляво" -#: ../dirdiff.py:196 ../filediff.py:142 -msgid "Copy To Left" +#: ../meld/dirdiff.py:233 +msgid "Copy to left" msgstr "Копиране наляво" -#. FIXME: the glade files were inconsistent: GO_FORWARD vs GOTO_LAST, "Right" vs "Copy To Right" -#: ../dirdiff.py:198 -msgid "Right" -msgstr "Десен" +#: ../meld/dirdiff.py:234 +msgid "Copy _Right" +msgstr "Копиране на_дясно" -#: ../dirdiff.py:198 ../filediff.py:143 -msgid "Copy To Right" +#: ../meld/dirdiff.py:234 +msgid "Copy to right" msgstr "Копиране надясно" -#: ../dirdiff.py:199 +#: ../meld/dirdiff.py:235 msgid "Delete selected" msgstr "Изтриване на избраното" -#: ../dirdiff.py:200 -msgid "Hide..." -msgstr "Скриване…" +#: ../meld/dirdiff.py:236 ../meld/filediff.py:1157 +msgid "Hide" +msgstr "Скриване" -#: ../dirdiff.py:200 +#: ../meld/dirdiff.py:236 msgid "Hide selected" msgstr "Скриване на избраното" -#: ../dirdiff.py:202 -msgid "Edit" -msgstr "Редактиране" - -#: ../dirdiff.py:202 -msgid "Edit selected" -msgstr "Редактиране на избраното" - -#: ../dirdiff.py:206 +#: ../meld/dirdiff.py:240 msgid "Case" msgstr "Регистър" -#: ../dirdiff.py:206 +#: ../meld/dirdiff.py:240 msgid "Ignore case of entries" msgstr "Регистърът на избраното да е без значение" -#: ../dirdiff.py:207 +#: ../meld/dirdiff.py:241 msgid "Same" -msgstr "Еднакъв" +msgstr "Еднакви" -#: ../dirdiff.py:207 +#: ../meld/dirdiff.py:241 msgid "Show identical" msgstr "Показване на еднаквите" -#: ../dirdiff.py:208 +#: ../meld/dirdiff.py:242 msgid "New" -msgstr "Нов" +msgstr "Нови" -#: ../dirdiff.py:208 +#: ../meld/dirdiff.py:242 msgid "Show new" msgstr "Показване на новите" -#: ../dirdiff.py:209 +#: ../meld/dirdiff.py:243 msgid "Modified" -msgstr "Променен" +msgstr "Променени" -#: ../dirdiff.py:209 ../vcview.py:133 +#: ../meld/dirdiff.py:243 ../meld/vcview.py:140 msgid "Show modified" msgstr "Показване на променените" -#: ../dirdiff.py:270 ../dirdiff.py:285 -#, python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "Грешка при преобразуването на шаблона „%s“ към регулярен израз" +#: ../meld/dirdiff.py:245 +msgid "Filters" +msgstr "Филтри" + +#: ../meld/dirdiff.py:245 +msgid "Set active filters" +msgstr "Задаване на активни филтри" -#: ../dirdiff.py:293 +#: ../meld/dirdiff.py:362 #, python-format msgid "Hide %s" msgstr "Скриване на %s" -#: ../dirdiff.py:378 ../dirdiff.py:388 ../vcview.py:225 ../vcview.py:253 +#: ../meld/dirdiff.py:465 ../meld/dirdiff.py:478 ../meld/vcview.py:322 +#: ../meld/vcview.py:346 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Проверка на %s" -#: ../dirdiff.py:421 +#: ../meld/dirdiff.py:577 #, python-format -msgid "'%s' hidden by '%s'" -msgstr "„%s“ е скрит от „%s“" +msgid "[%s] Done" +msgstr "[%s] Готово" -#: ../dirdiff.py:427 -#, python-format +#: ../meld/dirdiff.py:581 +msgid "Multiple errors occurred while scanning this folder" +msgstr "При обхождането на тази папка възникнаха множество грешки" + +#: ../meld/dirdiff.py:582 +msgid "Files with invalid encodings found" +msgstr "Открити са файлове с неправилно кодиране" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:584 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "Някои файлове са в друго кодиране. Имената им са:" + +#: ../meld/dirdiff.py:586 +msgid "Files hidden by case insensitive comparison" +msgstr "Сравнението без разлика главни/малки крие файлове" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:588 msgid "" "You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" +"filesystem. The following files in this folder are hidden:" msgstr "" "Извършвате сравняване без отчитане на регистъра на буквите върху файлова " -"система, която отчита регистъра на буквите. Някои файлове не се виждат:\n" +"система, която отчита регистъра на буквите. Следните файлове не се виждат:\n" "%s" -#: ../dirdiff.py:501 +#: ../meld/dirdiff.py:599 #, python-format -msgid "[%s] Done" -msgstr "[%s] Готово" +msgid "'%s' hidden by '%s'" +msgstr "„%s“ е скрит от „%s“" + +#: ../meld/dirdiff.py:624 ../meld/filediff.py:1008 ../meld/filediff.py:1161 +msgid "Hi_de" +msgstr "_Скриване" -#: ../dirdiff.py:547 +#: ../meld/dirdiff.py:674 #, python-format msgid "" "'%s' exists.\n" @@ -139,7 +504,7 @@ "„%s“ съществува.\n" "Да се презапише?" -#: ../dirdiff.py:554 +#: ../meld/dirdiff.py:681 #, python-format msgid "" "Error copying '%s' to '%s'\n" @@ -150,16 +515,16 @@ "\n" "%s." -#: ../dirdiff.py:572 ../vcview.py:417 +#: ../meld/dirdiff.py:699 ../meld/vcview.py:526 #, python-format msgid "" "'%s' is a directory.\n" -"Remove recusively?" +"Remove recursively?" msgstr "" "„%s“ е папка.\n" "Да се изтрие ли рекурсивно?" -#: ../dirdiff.py:579 ../vcview.py:422 +#: ../meld/dirdiff.py:706 ../meld/vcview.py:531 #, python-format msgid "" "Error removing %s\n" @@ -170,177 +535,274 @@ "\n" "%s." -#: ../dirdiff.py:590 +#: ../meld/dirdiff.py:731 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i секунда" msgstr[1] "%i секунди" -#: ../dirdiff.py:591 +#: ../meld/dirdiff.py:732 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i минута" msgstr[1] "%i минути" -#: ../dirdiff.py:592 +#: ../meld/dirdiff.py:733 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i час" msgstr[1] "%i часа" -#: ../dirdiff.py:593 +#: ../meld/dirdiff.py:734 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i ден" msgstr[1] "%i дена" -#: ../dirdiff.py:594 +#: ../meld/dirdiff.py:735 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i седмица" msgstr[1] "%i седмици" -#: ../dirdiff.py:595 +#: ../meld/dirdiff.py:736 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i месец" msgstr[1] "%i месеца" -#: ../dirdiff.py:596 +#: ../meld/dirdiff.py:737 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i година" msgstr[1] "%i години" -#: ../filediff.py:135 ../meldapp.py:533 -msgid "Save the current file" -msgstr "Запазване на текущия файл" - -#: ../filediff.py:136 -msgid "Save the current file with a different name" -msgstr "Запазване на текущия файл с различно име" - -#: ../filediff.py:137 ../meldapp.py:541 -msgid "Cut the selection" -msgstr "Отрязване на избраното" - -#: ../filediff.py:138 ../meldapp.py:542 -msgid "Copy the selection" -msgstr "Копиране на избраното" - -#: ../filediff.py:139 ../meldapp.py:543 -msgid "Paste the clipboard" -msgstr "Поставяне на междинния буфер" - -#: ../filediff.py:140 -msgid "Edit the selected file" -msgstr "Редактиране на избраното" - -#: ../filediff.py:141 ../glade2/filediff.glade.h:4 -msgid "Create Patch" -msgstr "Създаване на кръпка" - -#: ../filediff.py:141 -msgid "Create a patch" -msgstr "Създаване на кръпка" - -#: ../filediff.py:142 -msgid "Copy all changes from right pane to left pane" -msgstr "Копиране на всички промени от левия панел в десния" - -#: ../filediff.py:143 -msgid "Copy all changes from left pane to right pane" -msgstr "Копиране на всички промени от десния панел в левия" - -#. Abbreviation for insert,overwrite so that it will fit in the status bar -#: ../filediff.py:192 -msgid "INS,OVR" -msgstr "Вмъкване,Заместване" +#: ../meld/filediff.py:294 +msgid "Format as patch..." +msgstr "Форматиране на кръпка…" + +#: ../meld/filediff.py:294 +msgid "Create a patch using differences between files" +msgstr "Създаване на кръпка на база разликите между файловете" + +#: ../meld/filediff.py:295 +msgid "Previous conflict" +msgstr "Предишен конфликт" + +#: ../meld/filediff.py:295 +msgid "Go to the previous conflict" +msgstr "Към предишния конфликт" + +#: ../meld/filediff.py:296 +msgid "Next conflict" +msgstr "Следващ конфликт" + +#: ../meld/filediff.py:296 +msgid "Go to the next conflict" +msgstr "Към следващия конфликт" + +#: ../meld/filediff.py:297 +msgid "Push to left" +msgstr "Наляво" + +#: ../meld/filediff.py:297 +msgid "Push current change to the left" +msgstr "Повтаряне на текущата промяна наляво" + +#: ../meld/filediff.py:298 +msgid "Push to right" +msgstr "Надясно" + +#: ../meld/filediff.py:298 +msgid "Push current change to the right" +msgstr "Повтаряне на текущата промяна надясно" + +#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse +#: ../meld/filediff.py:300 +msgid "Pull from left" +msgstr "От ляво" + +#: ../meld/filediff.py:300 +msgid "Pull change from the left" +msgstr "Повтаряне на текущата промяна отляво" + +#: ../meld/filediff.py:301 +msgid "Pull from right" +msgstr "От дясно" + +#: ../meld/filediff.py:301 +msgid "Pull change from the right" +msgstr "Повтаряне на текущата промяна отдясно" + +#: ../meld/filediff.py:302 +msgid "Copy above left" +msgstr "Отгоре отляво" + +#: ../meld/filediff.py:302 +msgid "Copy change above the left chunk" +msgstr "Повтаряне на промяната над лявото парче код" + +#: ../meld/filediff.py:303 +msgid "Copy below left" +msgstr "Отдолу отляво" + +#: ../meld/filediff.py:303 +msgid "Copy change below the left chunk" +msgstr "Повтаряне на промяната под лявото парче код" + +#: ../meld/filediff.py:304 +msgid "Copy above right" +msgstr "Отгоре отдясно" + +#: ../meld/filediff.py:304 +msgid "Copy change above the right chunk" +msgstr "Повтаряне на промяната над дясното парче код" + +#: ../meld/filediff.py:305 +msgid "Copy below right" +msgstr "Отдолу отдясно" + +#: ../meld/filediff.py:305 +msgid "Copy change below the right chunk" +msgstr "Повтаряне на промяната под дясното парче код" + +#: ../meld/filediff.py:306 +msgid "Delete" +msgstr "Заличаване" + +#: ../meld/filediff.py:306 +msgid "Delete change" +msgstr "Заличаване на промяната" + +#: ../meld/filediff.py:307 +msgid "Merge all changes from left" +msgstr "Сливане на всички промени от ляво" + +#: ../meld/filediff.py:307 +msgid "Merge all non-conflicting changes from the left" +msgstr "Сливане на промените от ляво, непредизвикващи конфликт" + +#: ../meld/filediff.py:308 +msgid "Merge all changes from right" +msgstr "Сливане на всички промени от дясно" + +#: ../meld/filediff.py:308 +msgid "Merge all non-conflicting changes from the right" +msgstr "Сливане на промените от дясно, непредизвикващи конфликт" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting" +msgstr "Сливане на всички промени" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "Сливане на всички промени от ляво и от дясно, непредизвикващи конфликт" + +#: ../meld/filediff.py:310 +msgid "Cycle through documents" +msgstr "Преминаване през документите" + +#: ../meld/filediff.py:310 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "" +"Прехвърляне на фокуса на клавиатурата към следващия документ в сравнението" + +#: ../meld/filediff.py:314 +msgid "Lock scrolling" +msgstr "Съвместно придвижване" + +#: ../meld/filediff.py:315 +msgid "Lock scrolling of all panes" +msgstr "Всички панели да се придвижват съвместно" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:396 +msgid "INS" +msgstr "ВМК" + +#: ../meld/filediff.py:396 +msgid "OVR" +msgstr "ЗАМ" #. Abbreviation for line, column so that it will fit in the status bar -#: ../filediff.py:194 +#: ../meld/filediff.py:398 #, python-format msgid "Ln %i, Col %i" msgstr "Ред %i, Кол. %i" -#: ../filediff.py:252 +#: ../meld/filediff.py:722 #, python-format msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." msgstr "" -"Регулярният израз „%s“ промени броя на редовете във файла. Сравняването няма " -"да бъде коректно. Обърнете се към ръководството за повече информация." - -#: ../filediff.py:506 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Грешка в регулярния израз:\n" -"„%s“" - -#: ../filediff.py:518 -#, python-format -msgid "The regular expression '%s' was not found." -msgstr "Регулярният израз „%s“ не бе открит" +"Филтърът „%s“ промени броя на редовете във файла. Сравняването няма да бъде " +"коректно. Обърнете се към ръководството за повече информация." -#: ../filediff.py:520 -#, python-format -msgid "The text '%s' was not found." -msgstr "Текстът „%s“ не бе открит" +#. TRANSLATORS: this is the name of a new file which has not yet been saved +#: ../meld/filediff.py:809 +msgid "" +msgstr "<ненаименован>" -#: ../filediff.py:573 +#: ../meld/filediff.py:996 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Задаване на броя панели" -#: ../filediff.py:580 +#: ../meld/filediff.py:1002 #, python-format msgid "[%s] Opening files" msgstr "[%s] Отваряне на файлове" -#: ../filediff.py:597 ../filediff.py:611 ../filediff.py:627 ../filediff.py:634 -#, python-format -msgid "Could not read from '%s'" -msgstr "Невъзможно четене от „%s“" - -#: ../filediff.py:598 ../filediff.py:635 -msgid "The error was:" -msgstr "Грешката бе:" +#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 +#: ../meld/filediff.py:1053 +msgid "Could not read file" +msgstr "Файлът не може да бъде прочетен" -#: ../filediff.py:603 +#: ../meld/filediff.py:1027 #, python-format msgid "[%s] Reading files" msgstr "[%s] Прочитане на файлове" -#: ../filediff.py:612 -msgid "" -"It contains ascii nulls.\n" -"Perhaps it is a binary file." -msgstr "" -"Съдържа знака ASCII NUL.\n" -"Вероятно е двоичен файл." +#: ../meld/filediff.py:1036 +#, python-format +msgid "%s appears to be a binary file." +msgstr "%s прилича на двоичен файл." -#: ../filediff.py:628 +#: ../meld/filediff.py:1048 #, python-format -msgid "I tried encodings %s." -msgstr "Беше пробвано кодиране %s." +msgid "%s is not in encodings: %s" +msgstr "%s не е в кодирането: %s" -#: ../filediff.py:657 +#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Изчисляване на разликите" -#: ../filediff.py:762 +#: ../meld/filediff.py:1148 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Използват се филтри за текста. Те може да скриват разлики между текстовете. " +"Искате ли да сравните файловете без използване на филтри?" + +#: ../meld/filediff.py:1154 +msgid "Files are identical" +msgstr "Файловете са еднакви" + +#: ../meld/filediff.py:1164 +msgid "Show without filters" +msgstr "Показване без филтри" + +#: ../meld/filediff.py:1354 #, python-format msgid "" "\"%s\" exists!\n" @@ -349,7 +811,7 @@ "„%s“ съществува.\n" "Да се презапише?" -#: ../filediff.py:775 +#: ../meld/filediff.py:1367 #, python-format msgid "" "Error writing to %s\n" @@ -360,12 +822,12 @@ "\n" "%s." -#: ../filediff.py:784 +#: ../meld/filediff.py:1376 #, python-format msgid "Choose a name for buffer %i." msgstr "Избор на име за буфера %i." -#: ../filediff.py:797 +#: ../meld/filediff.py:1391 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -376,7 +838,7 @@ "\n" "Кой вариант искате да се ползва?" -#: ../filediff.py:813 +#: ../meld/filediff.py:1407 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -385,12 +847,7 @@ "„%s“ съдържа знаци, които не могат да се кодират чрез „%s“\n" "Желаете ли да се запише в „UTF-8“?" -#. save as -#: ../filediff.py:864 -msgid "Save patch as..." -msgstr "Запис на кръпка като…" - -#: ../filediff.py:923 +#: ../meld/filediff.py:1466 #, python-format msgid "" "Reloading will discard changes in:\n" @@ -403,772 +860,645 @@ "\n" "Няма да можете да отмените тази операция." -#: ../glade2/filediff.glade.h:1 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Някои файлове са променени.\n" -"Кои от тях искате да се запишат?" - -#: ../glade2/filediff.glade.h:3 -msgid "Copy to Clipboard" -msgstr "Копиране в междинния буфер" - -#: ../glade2/filediff.glade.h:5 -msgid "Find" -msgstr "Търсене" - -#: ../glade2/filediff.glade.h:6 -msgid "Match _entire word only" -msgstr "Съвпадане само по _цели думи" - -#: ../glade2/filediff.glade.h:7 -msgid "Regular e_xpression" -msgstr "Ре_гулярен израз" - -#: ../glade2/filediff.glade.h:8 -msgid "Save modified files?" -msgstr "Запис на променените файлове?" - -#: ../glade2/filediff.glade.h:9 -msgid "Search for:" -msgstr "Търсене за:" - -#: ../glade2/filediff.glade.h:10 -msgid "_Match case" -msgstr "_Регистърът на буквите е от значение" - -#: ../glade2/filediff.glade.h:11 -msgid "_Wrap around" -msgstr "_С достигане до края да се почне отначало" - -#: ../glade2/meldapp.glade.h:1 -msgid "(gnome-default-editor)" -msgstr "(стандартен-редактор-на-GNOME)" - -#: ../glade2/meldapp.glade.h:2 -msgid "Drawing Style" -msgstr "Стил на чертане" - -#: ../glade2/meldapp.glade.h:3 -msgid "Edit Menu" -msgstr "Редактиране на меню" - -#: ../glade2/meldapp.glade.h:4 -msgid "Font" -msgstr "Шрифт" - -#: ../glade2/meldapp.glade.h:5 -msgid "Loading" -msgstr "Зареждане" - -#: ../glade2/meldapp.glade.h:6 -msgid "Misc" -msgstr "Разни" - -#: ../glade2/meldapp.glade.h:7 -msgid "Saving" -msgstr "Запис" +#: ../meld/filemerge.py:82 +#, python-format +msgid "[%s] Merging files" +msgstr "[%s] Сливане на файлове" -#: ../glade2/meldapp.glade.h:8 -msgid "Toolbar Appearance" -msgstr "Вид на лентата с инструменти" +#: ../meld/meldapp.py:152 +msgid "wrong number of arguments supplied to --diff" +msgstr "грешен брой аргументи подадени на опцията „--diff“" -#: ../glade2/meldapp.glade.h:9 -msgid "Whitespace" -msgstr "Празни знаци" +#: ../meld/meldapp.py:156 +msgid "Start with an empty window" +msgstr "Стартиране с празен прозорец" -#: ../glade2/meldapp.glade.h:10 -msgid "Compare" -msgstr "Сравняване" +#: ../meld/meldapp.py:157 ../meld/meldapp.py:158 ../meld/meldapp.py:160 +msgid "file" +msgstr "файл" -#: ../glade2/meldapp.glade.h:11 -msgid "Display" -msgstr "Визуализация" +#: ../meld/meldapp.py:157 ../meld/meldapp.py:159 ../meld/meldapp.py:160 +msgid "dir" +msgstr "папка" -#: ../glade2/meldapp.glade.h:12 -msgid "Editor" -msgstr "Редактор" +#: ../meld/meldapp.py:157 +msgid "Start a version control comparison" +msgstr "Ново сравнение спрямо системата за версии" -#: ../glade2/meldapp.glade.h:13 -msgid "Encoding" -msgstr "Кодиране" +#: ../meld/meldapp.py:158 +msgid "Start a 2- or 3-way file comparison" +msgstr "Ново сравнение на 2 или 3 файла" -#: ../glade2/meldapp.glade.h:14 -msgid "File Filters" -msgstr "Филтри за файлове" +#: ../meld/meldapp.py:159 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Ново сравнение на 2 или 3 папки" -#: ../glade2/meldapp.glade.h:15 -msgid "Text Filters" -msgstr "Филтри за текст" +#: ../meld/meldapp.py:160 +msgid "Start a comparison between file and dir/file" +msgstr "Ново сравнение на файл и папка/файл" -#: ../glade2/meldapp.glade.h:16 -msgid "Automatically supply missing newline at end of file" -msgstr "Автоматично завършване на файл с празен ред." +#: ../meld/meldapp.py:166 +msgid "Meld is a file and directory comparison tool." +msgstr "Meld е инструмент за сравняване на файлове и папки." -#: ../glade2/meldapp.glade.h:17 -msgid "Choose Files" -msgstr "Избор на файлове" +#: ../meld/meldapp.py:169 +msgid "Set label to use instead of file name" +msgstr "Задаване на етикет, който да се ползва вместо име на файл" -#: ../glade2/meldapp.glade.h:18 -msgid "" -"Choose how the central bar of the diff viewer is drawn. You may wish to " -"choose a simpler mode if you find scrolling is slow." +#: ../meld/meldapp.py:171 +msgid "Automatically compare all differing files on startup" msgstr "" -"Избор на изобразяваме на централния панел. Може да предпочетете по-семпъл " -"вариант, ако прелистването е прекалено бавно" - -#: ../glade2/meldapp.glade.h:19 -msgid "Copyright (C) 2002-2006 Stephen Kennedy" -msgstr "Авторски права (C) 2002-2006 Stephen Kennedy" +"При стартиране автоматично да се сравняват всички различаващи се файлове" -#: ../glade2/meldapp.glade.h:20 -msgid "Curved: Filled Curves" -msgstr "Криви: запълнени криви" +#: ../meld/meldapp.py:173 +msgid "Ignored for compatibility" +msgstr "Игнорира се за съвместимост" -#: ../glade2/meldapp.glade.h:21 -msgid "Custom command" -msgstr "Потребителска команда" +#: ../meld/meldapp.py:176 +msgid "Set the target file for saving a merge result" +msgstr "Задаване къде да се запише резултатът от сливането" -#: ../glade2/meldapp.glade.h:22 -msgid "Directory" -msgstr "Папка" +#: ../meld/meldapp.py:179 +msgid "Creates a diff tab for up to 3 supplied files or directories." +msgstr "Създаване на подпрозорец за сравнение на 3 подадени цели." -#: ../glade2/meldapp.glade.h:23 -msgid "Display" -msgstr "Визуализация" +#: ../meld/meldapp.py:182 +#, python-format +msgid "too many arguments (wanted 0-4, got %d)" +msgstr "прекалено много аргументи (позволени са 0÷4, а не %d)" -#: ../glade2/meldapp.glade.h:24 -msgid "Edit files with:" -msgstr "Редактиране на файловете с:" +#: ../meld/meldapp.py:184 ../meld/meldapp.py:188 +msgid "can't compare more than three directories" +msgstr "невъзможно е да се сравняват повече от три папка" -#: ../glade2/meldapp.glade.h:25 -msgid "Editor" -msgstr "Редактор" +#: ../meld/melddoc.py:56 ../meld/melddoc.py:57 +msgid "untitled" +msgstr "безименен" -#: ../glade2/meldapp.glade.h:26 -msgid "Encoding" -msgstr "Кодиране" +#: ../meld/meldwindow.py:125 +msgid "_File" +msgstr "_Файл" -#: ../glade2/meldapp.glade.h:27 -msgid "File Filters" -msgstr "Филтър за файлове" +#: ../meld/meldwindow.py:126 +msgid "_New..." +msgstr "_Ново…" -#: ../glade2/meldapp.glade.h:28 -msgid "Gnome Default" -msgstr "Стандартната настройка на GNOME" +#: ../meld/meldwindow.py:126 +msgid "Start a new comparison" +msgstr "Ново сравнение" -#: ../glade2/meldapp.glade.h:29 -msgid "Gnome default editor" -msgstr "Стандартният редактор на GNOME" +#: ../meld/meldwindow.py:127 +msgid "Save the current file" +msgstr "Запазване на текущия файл" -#: ../glade2/meldapp.glade.h:30 -msgid "Icons Only" -msgstr "Само икони" +#: ../meld/meldwindow.py:129 +msgid "Close the current file" +msgstr "Затваряне на текущия файл" -#: ../glade2/meldapp.glade.h:31 -msgid "Ignore changes in amount of white space" -msgstr "Игнориране на промените в празните знаци" +#: ../meld/meldwindow.py:130 +msgid "Quit the program" +msgstr "Спиране на програмата" -#: ../glade2/meldapp.glade.h:32 -msgid "" -"Ignore changes in case; consider upper and lower-case letters equivalent" -msgstr "" -"Игнориране на регистъра — главните и малките букви се считат за еквивалентни" +#: ../meld/meldwindow.py:132 +msgid "_Edit" +msgstr "_Редактиране" -#: ../glade2/meldapp.glade.h:33 -msgid "Ignore changes that just insert or delete blank lines" -msgstr "Игнориране на промени в броя и положението на празните редове" +#: ../meld/meldwindow.py:133 +msgid "Undo the last action" +msgstr "Отмяна на последното действие" -#: ../glade2/meldapp.glade.h:34 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Игнориране на промени в броя и положението на празните редове" +#: ../meld/meldwindow.py:134 +msgid "Redo the last undone action" +msgstr "Повтаряне на последното отменено действие" -#: ../glade2/meldapp.glade.h:35 -msgid "Ignore symbolic links" -msgstr "Игнориране на символните връзки" +#: ../meld/meldwindow.py:135 +msgid "Cut the selection" +msgstr "Отрязване на избраното" -#: ../glade2/meldapp.glade.h:36 -msgid "Internal editor" -msgstr "Вътрешен редактор" - -#: ../glade2/meldapp.glade.h:37 -msgid "Line Wrapping " -msgstr "Пренасяне на редове" +#: ../meld/meldwindow.py:136 +msgid "Copy the selection" +msgstr "Копиране на избраното" -#: ../glade2/meldapp.glade.h:38 -msgid "Meld" -msgstr "Meld" +#: ../meld/meldwindow.py:137 +msgid "Paste the clipboard" +msgstr "Поставяне на междинния буфер" -#: ../glade2/meldapp.glade.h:39 -msgid "Mine" -msgstr "Мои" +#: ../meld/meldwindow.py:138 +msgid "Search for text" +msgstr "Търсене на текст" -#: ../glade2/meldapp.glade.h:40 -msgid "Original" -msgstr "Първоначални" +#: ../meld/meldwindow.py:139 +msgid "Find Ne_xt" +msgstr "_Следваща поява" -#: ../glade2/meldapp.glade.h:41 -msgid "Other" -msgstr "Чужди" +#: ../meld/meldwindow.py:139 +msgid "Search forwards for the same text" +msgstr "Търсене напред за същия текст" -#: ../glade2/meldapp.glade.h:42 -msgid "Preferences : Meld" -msgstr "Настройки: Meld" - -#: ../glade2/meldapp.glade.h:43 -msgid "Save in UTF-8 encoding" -msgstr "Запис в файловете в кодиране UTF-8" - -#: ../glade2/meldapp.glade.h:44 -msgid "Save in the files original encoding" -msgstr "Запис на файловете в първоначалното кодиране" - -#: ../glade2/meldapp.glade.h:45 -msgid "Show line numbers" -msgstr "Показване на номерата на редовете" - -#: ../glade2/meldapp.glade.h:46 -msgid "Simple: Lines only" -msgstr "Семпли: само линии" - -#: ../glade2/meldapp.glade.h:47 -msgid "Solid: Filled Quadilaterals" -msgstr "Запълнени: запълнени четириъгълници" - -#: ../glade2/meldapp.glade.h:48 -msgid "Tab width" -msgstr "Ширина на табулатора" - -#: ../glade2/meldapp.glade.h:49 -msgid "Text Beside Icons" -msgstr "Текст до иконите" +#: ../meld/meldwindow.py:140 +msgid "Find _Previous" +msgstr "_Предишна поява" + +#: ../meld/meldwindow.py:140 +msgid "Search backwards for the same text" +msgstr "Търсене назад за същия текст" + +#: ../meld/meldwindow.py:141 +msgid "Find and replace text" +msgstr "Търсене и замяна на текст" + +#: ../meld/meldwindow.py:142 +msgid "Prefere_nces" +msgstr "_Настройки" -#: ../glade2/meldapp.glade.h:50 -msgid "Text Filters" -msgstr "Филтри за текст" +#: ../meld/meldwindow.py:142 +msgid "Configure the application" +msgstr "Настройки на програмата" -#: ../glade2/meldapp.glade.h:51 -msgid "Text Only" -msgstr "Само текст" - -#: ../glade2/meldapp.glade.h:52 -msgid "Text Under Icons" -msgstr "Текст под иконите" - -#: ../glade2/meldapp.glade.h:53 -msgid "Three way directory" -msgstr "Сравняване на 3 папки" - -#: ../glade2/meldapp.glade.h:54 -msgid "Three way file" -msgstr "Сравняване на 3 файла" - -#: ../glade2/meldapp.glade.h:55 -msgid "Two way directory" -msgstr "Сравняване на 2 папки" - -#: ../glade2/meldapp.glade.h:56 -msgid "Two way file" -msgstr "Сравняване на 2 файла" - -#: ../glade2/meldapp.glade.h:57 -msgid "Use GNOME monospace font" -msgstr "Ползване на едноразреден шрифт" - -#: ../glade2/meldapp.glade.h:58 -msgid "Use custom font" -msgstr "Използване на потребителски шрифт" - -#: ../glade2/meldapp.glade.h:59 -msgid "Use syntax highlighting" -msgstr "Използване на осветяване на синтаксиса" - -#: ../glade2/meldapp.glade.h:60 -msgid "Version control view" -msgstr "Изглед спрямо контрола на версиите" +#: ../meld/meldwindow.py:144 +msgid "_Changes" +msgstr "_Разлики" + +#: ../meld/meldwindow.py:145 +msgid "Next change" +msgstr "Следваща разлика" -#: ../glade2/meldapp.glade.h:61 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" -"При зареждане на файл, да се пробват кодиранията в тази последователност " -"(напр.: utf8, iso8859)" +#: ../meld/meldwindow.py:145 +msgid "Go to the next change" +msgstr "Към следващата разлика" -#: ../glade2/meldapp.glade.h:62 -msgid "" -"When performing directory comparisons, you may filter out files and " -"directories by name. Each pattern is a list of shell style wildcards " -"separated by spaces." -msgstr "" -"При сравняване на папки някои файлове и директории може да се пренебрегват. " -"Всеки ред е списък от шаблони на обвивката, разделени с интервали." +#: ../meld/meldwindow.py:146 +msgid "Previous change" +msgstr "Предишна разлика" -#: ../glade2/meldapp.glade.h:63 -msgid "" -"When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching " -"text with the empty string before comparison is performed. If the expression " -"contains groups, only the groups are replaced. See the user manual for more " -"details." -msgstr "" -"При сравняване на файлове някои промени може да се пренебрегват. Всеки " -"шаблон тук е регулярен израз в езика Питон, който заменя всеки напасващ " -"текст с празен низ, преди да се извърши сравняването. Ако изразът съдържа " -"групи, само групите се заменят. Обърнете се към ръководството за повече " -"подробности." +#: ../meld/meldwindow.py:146 +msgid "Go to the previous change" +msgstr "Към предишната разлика" -#: ../glade2/meldapp.glade.h:64 -msgid "Whitespace is significant" -msgstr "Празните знаци имат значение" +#: ../meld/meldwindow.py:147 +msgid "Open externally" +msgstr "Отваряне с външна програма" + +#: ../meld/meldwindow.py:147 +msgid "Open selected file or directory in the default external application" +msgstr "Отваряне на избраната папка или файл в стандартната външна програма" + +#: ../meld/meldwindow.py:149 +msgid "_View" +msgstr "_Изглед" + +#: ../meld/meldwindow.py:150 +msgid "File status" +msgstr "Състояние на файла" + +#: ../meld/meldwindow.py:151 +msgid "Version status" +msgstr "Състояние на версията" + +#: ../meld/meldwindow.py:152 +msgid "File filters" +msgstr "Филтри за файлове" -#: ../glade2/meldapp.glade.h:66 -msgid "_Directory Comparison" -msgstr "Сравняване на _папки" +#: ../meld/meldwindow.py:153 +msgid "Stop the current action" +msgstr "Спиране на текущото действие" -#: ../glade2/meldapp.glade.h:67 -msgid "_File Comparison" -msgstr "Сравняване на _файлове" +#: ../meld/meldwindow.py:154 +msgid "Refresh the view" +msgstr "Обновяване на изгледа" -#: ../glade2/meldapp.glade.h:68 -msgid "_Logo" -msgstr "_Лого" +#: ../meld/meldwindow.py:155 +msgid "Reload" +msgstr "Презареждане" -#: ../glade2/meldapp.glade.h:69 -msgid "_Three Way Compare" -msgstr "_Тройно сравняване" +#: ../meld/meldwindow.py:155 +msgid "Reload the comparison" +msgstr "Презареждане на сравнението" -#: ../glade2/meldapp.glade.h:70 -msgid "_Version Control Browser" -msgstr "Навигация при контрола на _версиите" +#: ../meld/meldwindow.py:157 +msgid "_Tabs" +msgstr "_Подпрозорци" + +#: ../meld/meldwindow.py:158 +msgid "_Previous Tab" +msgstr "_Предишeн подпрозорец" + +#: ../meld/meldwindow.py:158 +msgid "Activate previous tab" +msgstr "Фокусиране на предишния подпрозорец" + +#: ../meld/meldwindow.py:159 +msgid "_Next Tab" +msgstr "_Следващ подпрозорец" + +#: ../meld/meldwindow.py:159 +msgid "Activate next tab" +msgstr "Фокусиране на следващия подпрозорец" + +#: ../meld/meldwindow.py:160 +msgid "Move Tab _Left" +msgstr "Преместване на_ляво" + +#: ../meld/meldwindow.py:160 +msgid "Move current tab to left" +msgstr "Преместване на текущия прозорец наляво" + +#: ../meld/meldwindow.py:161 +msgid "Move Tab _Right" +msgstr "Преместване на_дясно" + +#: ../meld/meldwindow.py:161 +msgid "Move current tab to right" +msgstr "Преместване на текущия прозорец надясно" + +#: ../meld/meldwindow.py:163 +msgid "_Help" +msgstr "Помо_щ" -#: ../glade2/vcview.glade.h:1 -msgid "Commit Files" -msgstr "Файлове за подаване" +#: ../meld/meldwindow.py:164 +msgid "_Contents" +msgstr "_Съдържание" -#: ../glade2/vcview.glade.h:2 -msgid "Compare Options" -msgstr "Настройки на сравняването" - -#: ../glade2/vcview.glade.h:3 -msgid "Date" -msgstr "Дата" - -#: ../glade2/vcview.glade.h:4 -msgid "Local copy against other remote revision" -msgstr "Работно копие спрямо различна версия в хранилището" - -#: ../glade2/vcview.glade.h:5 -msgid "Local copy against same remote revision" -msgstr "Работно копие спрямо същата версия в хранилището" +#: ../meld/meldwindow.py:164 +msgid "Open the Meld manual" +msgstr "Отваряне на ръководството на Meld" -#: ../glade2/vcview.glade.h:6 -msgid "Log Message" -msgstr "Съобщение в дневника" +#: ../meld/meldwindow.py:165 +msgid "Report _Bug" +msgstr "_Докладване на грешка" -#: ../glade2/vcview.glade.h:7 -msgid "Previous Logs" -msgstr "Предишни съобщения" +#: ../meld/meldwindow.py:165 +msgid "Report a bug in Meld" +msgstr "Докладване на грешка в Meld" -#: ../glade2/vcview.glade.h:8 ../vcview.py:185 -msgid "Tag" -msgstr "Етикет" +#: ../meld/meldwindow.py:166 +msgid "About this program" +msgstr "Информация за тази програма" -#: ../glade2/vcview.glade.h:9 -msgid "VC Log" -msgstr "Дневник на хранилището" +#: ../meld/meldwindow.py:169 +msgid "Full Screen" +msgstr "На цял екран" + +#: ../meld/meldwindow.py:169 +msgid "View the comparison in full screen" +msgstr "Извеждане на сравнението на цял екран" + +#: ../meld/meldwindow.py:170 +msgid "_Toolbar" +msgstr "Лента с _инструменти" + +#: ../meld/meldwindow.py:170 +msgid "Show or hide the toolbar" +msgstr "Показване или скриване на лентата с инструменти" + +#: ../meld/meldwindow.py:171 +msgid "_Statusbar" +msgstr "_Лента за състояние" + +#: ../meld/meldwindow.py:171 +msgid "Show or hide the statusbar" +msgstr "Показване или скриване на лентата за състояние" + +#: ../meld/meldwindow.py:538 +msgid "Switch to this tab" +msgstr "Фокусиране на този подпрозорец" -#: ../meld:47 -#, c-format -msgid "Meld requires %s or higher." -msgstr "Meld изисква %s или по-висока версия." +#. exit at first non found directory + file +#: ../meld/meldwindow.py:629 +msgid "Cannot compare a mixture of files and directories.\n" +msgstr "Невъзможно е да се сравняват файлове с папки.\n" -#: ../meld.desktop.in.h:1 -msgid "Compare and merge your files." -msgstr "Сравняване и сливане на файлове." +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:174 +msgid "[None]" +msgstr "[Липсва]" -#: ../meld.desktop.in.h:2 -msgid "Meld Diff Viewer" -msgstr "Програма за сравняване Meld" +#: ../meld/patchdialog.py:122 +msgid "Save Patch As..." +msgstr "Запазване на кръпката като…" -#: ../meldapp.py:150 +#: ../meld/preferences.py:37 msgid "label" msgstr "етикет" -#: ../meldapp.py:151 +#: ../meld/preferences.py:37 msgid "pattern" msgstr "шаблон" -#. file filters -#. text filters -#: ../meldapp.py:252 ../meldapp.py:257 ../vcview.py:165 -msgid "Name" -msgstr "Име" - -#: ../meldapp.py:252 ../meldapp.py:257 -msgid "Active" -msgstr "Действащ" - -#: ../meldapp.py:252 -msgid "Pattern" -msgstr "Шаблон" - -#: ../meldapp.py:257 -msgid "Regex" -msgstr "Регулярен израз" - -#: ../meldapp.py:291 -msgid "" -"Line numbers are only available if you have gnome-python-desktop installed." -msgstr "" -"Номерата на редовете се визуализират, само ако имате инсталиран " -"pygtksourceview." - -#: ../meldapp.py:295 -msgid "" -"Syntax highlighting is only available if you have gnome-python-desktop " -"installed." -msgstr "Синтаксисът се осветява, само ако имате инсталиран pygtksourceview." - -#: ../meldapp.py:383 -msgid "Close tab" -msgstr "Затваряне на таба" +#: ../meld/preferences.py:111 +msgid "Only available if you have gnome-python-desktop installed" +msgstr "Включва се, само ако gnome-python-desktop е инсталиран" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:444 +#: ../meld/preferences.py:234 msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" msgstr "Резервни копия\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:446 +#: ../meld/preferences.py:236 msgid "" -"Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" msgstr "" -"Контрол на версиите\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory " -"RCS\n" +"Метаданни на ОС\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db Desktop." +"ini\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:238 +#, python-format +msgid "Version Control\t1\t%s\n" +msgstr "Контрол на версиите\t1\t%s\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:448 +#: ../meld/preferences.py:240 msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" msgstr "Двоични файлове\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:450 +#: ../meld/preferences.py:242 msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" msgstr "Мултимедия\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:452 +#: ../meld/preferences.py:244 msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" msgstr "Ключови думи на CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:454 +#: ../meld/preferences.py:246 msgid "C++ comment\t0\t//.*\n" msgstr "Коментар на C++\t0\t//.*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:456 +#: ../meld/preferences.py:248 msgid "C comment\t0\t/\\*.*?\\*/\n" msgstr "Коментар на C\t0\t/\\*.*?\\*/\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:458 +#: ../meld/preferences.py:250 msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" msgstr "Всички празни знаци\t0\t[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:460 +#: ../meld/preferences.py:252 msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" msgstr "Празни знаци в началото на реда\t0\t^[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:462 +#: ../meld/preferences.py:254 msgid "Script comment\t0\t#.*" msgstr "Коментар в скрипт\t0\t#.*" -#: ../meldapp.py:532 -msgid "_New..." -msgstr "_Ново…" - -#: ../meldapp.py:532 -msgid "Start a new comparison" -msgstr "Ново сравнение" - -#: ../meldapp.py:535 -msgid "Close the current file" -msgstr "Затваряне на текущия файл" - -#: ../meldapp.py:536 -msgid "Quit the program" -msgstr "Спиране на програмата" - -#: ../meldapp.py:539 -msgid "Undo the last action" -msgstr "Отмяна на последното действие" - -#: ../meldapp.py:540 -msgid "Redo the last undone action" -msgstr "Повтаряне на последното отменено действие" - -#: ../meldapp.py:544 -msgid "Search for text" -msgstr "Търсене на текст" - -#: ../meldapp.py:545 -msgid "Find Ne_xt" -msgstr "_Следваща поява" - -#: ../meldapp.py:545 -msgid "Search forwards for the same text" -msgstr "Търсене напред за същия текст" - -#: ../meldapp.py:546 -msgid "Go to the next difference" -msgstr "Към следващата разлика" - -#: ../meldapp.py:547 -msgid "Go to the previous difference" -msgstr "Към предишната разлика" - -#: ../meldapp.py:548 -msgid "Configure the application" -msgstr "Настройки на програмата" - -#: ../meldapp.py:551 -msgid "Stop the current action" -msgstr "Спиране на текущото действие" - -#: ../meldapp.py:552 -msgid "Refresh the view" -msgstr "Обновяване на изгледа" - -#: ../meldapp.py:553 -msgid "Reload" -msgstr "Презареждане" - -#: ../meldapp.py:553 -msgid "Reload the comparison" -msgstr "Презареждане на сравнението" - -#: ../meldapp.py:556 -msgid "_Contents" -msgstr "_Съдържание" - -#: ../meldapp.py:556 -msgid "Open the Meld manual" -msgstr "Отваряне на ръководството на Meld" - -#: ../meldapp.py:557 -msgid "Report _Bug" -msgstr "_Докладване на грешка" - -#: ../meldapp.py:557 -msgid "Report a bug in Meld" -msgstr "Докладване на грешка в Meld" - -#: ../meldapp.py:558 -msgid "Mailing _List" -msgstr "_Пощенски списък" - -#: ../meldapp.py:558 -msgid "Go to the Meld mailing list" -msgstr "Към пощенския списък на Meld" - -#: ../meldapp.py:559 -msgid "About this program" -msgstr "Информация за тази програма" - -#: ../meldapp.py:821 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Невъзможно е да се сравняват файлове с папки.\n" - -#. ############################################################################### -#. -#. usage -#. -#. ############################################################################### -#: ../meldapp.py:869 -#, python-format -msgid "" -"Meld %s\n" -"Written by Stephen Kennedy " -msgstr "" -"Meld %s\n" -"Написан от Stephen Kennedy " - -#: ../meldapp.py:898 -msgid "Set label to use instead of file name" -msgstr "Задаване на етикет, който да се ползва вместо име на файл" - -#: ../meldapp.py:899 ../meldapp.py:900 ../meldapp.py:901 ../meldapp.py:902 -msgid "Ignored for compatibility" -msgstr "Игнорира се за съвместимост" - -#: ../meldapp.py:930 -#, python-format -msgid "Wrong number of arguments (Got %i)" -msgstr "Грешен брой аргументи (получени са %i)" - -#: ../melddoc.py:46 -msgid "untitled" -msgstr "безименен" - -#. no common path. empty names get changed to "[None]" -#: ../misc.py:121 -msgid "[None]" -msgstr "[Липсва]" +#: ../meld/vcview.py:128 +msgid "Co_mmit" +msgstr "По_даване" -#: ../vcview.py:121 -msgid "_Edit" -msgstr "_Редактиране" - -#: ../vcview.py:121 -msgid "Edit files" -msgstr "Редактиране на файловете" - -#: ../vcview.py:122 -msgid "_Commit" -msgstr "_Подаване" - -#: ../vcview.py:122 +#: ../meld/vcview.py:128 msgid "Commit" msgstr "Подаване" -#. FIXME: popup used to use gtk.STOCK_GO_BACK -#: ../vcview.py:123 +#: ../meld/vcview.py:129 msgid "_Update" msgstr "_Обновяване" -#: ../vcview.py:123 +#: ../meld/vcview.py:129 msgid "Update" msgstr "Обновяване" -#. FIXME: popup used to use gtk.STOCK_GO_FORWARD -#: ../vcview.py:124 -msgid "_Add" -msgstr "_Добавяне" - -#: ../vcview.py:124 +#: ../meld/vcview.py:130 msgid "Add to VC" msgstr "Добавяне към контрола" -#. FIXME: popup used to use gtk.STOCK_ADD -#: ../vcview.py:125 +#: ../meld/vcview.py:131 msgid "Add _Binary" msgstr "Добавяне на д_воичен" -#: ../vcview.py:125 +#: ../meld/vcview.py:131 msgid "Add binary to VC" msgstr "Двоично добавяне към контрола" -#. FIXME: stock is inconsistent with other VC actions -#: ../vcview.py:126 -msgid "_Remove" -msgstr "_Премахване" - -#: ../vcview.py:126 +#: ../meld/vcview.py:132 msgid "Remove from VC" msgstr "Премахване от контрол" -#. FIXME: popup used to use gtk.STOCK_REMOVE -#: ../vcview.py:127 +#: ../meld/vcview.py:133 +msgid "_Resolved" +msgstr "_Разрешен" + +#: ../meld/vcview.py:133 +msgid "Mark as resolved for VC" +msgstr "Отбелязване като разрешен спрямо контрола на версиите" + +#: ../meld/vcview.py:134 msgid "Revert to original" msgstr "Връщане към оригинала" -#: ../vcview.py:128 +#: ../meld/vcview.py:135 msgid "Delete locally" msgstr "Локално изтриване" -#: ../vcview.py:132 +#: ../meld/vcview.py:139 msgid "_Flatten" msgstr "_Без йерархия" -#: ../vcview.py:132 +#: ../meld/vcview.py:139 msgid "Flatten directories" msgstr "Представяне на папките като една" -#: ../vcview.py:133 +#: ../meld/vcview.py:140 msgid "_Modified" msgstr "_Променени" -#: ../vcview.py:134 +#: ../meld/vcview.py:141 msgid "_Normal" msgstr "_Нормални" -#: ../vcview.py:134 +#: ../meld/vcview.py:141 msgid "Show normal" msgstr "Показване на нормалните" -#: ../vcview.py:135 +#: ../meld/vcview.py:142 msgid "Non _VC" msgstr "Извън _контрол" -#: ../vcview.py:135 +#: ../meld/vcview.py:142 msgid "Show unversioned files" msgstr "Показване на неконтролираните файлове" -#: ../vcview.py:136 +#: ../meld/vcview.py:143 msgid "Ignored" msgstr "Игнорирани" -#: ../vcview.py:136 +#: ../meld/vcview.py:143 msgid "Show ignored files" msgstr "Показване на игнорираните файлове" -#: ../vcview.py:182 +#: ../meld/vcview.py:186 ../meld/vcview.py:318 msgid "Location" msgstr "Местоположение" -#: ../vcview.py:183 +#: ../meld/vcview.py:187 msgid "Status" msgstr "Състояние" -#: ../vcview.py:184 +#: ../meld/vcview.py:188 msgid "Rev" msgstr "Ревизия" -#: ../vcview.py:186 +#: ../meld/vcview.py:189 +msgid "Tag" +msgstr "Етикет" + +#: ../meld/vcview.py:190 msgid "Options" msgstr "Настройки" -#: ../vcview.py:269 +#: ../meld/vcview.py:249 +msgid "Choose one Version Control" +msgstr "Избор на контрол на версиите" + +#: ../meld/vcview.py:250 +msgid "Only one Version Control in this directory" +msgstr "Само един вид контрол на версиите в тази папка" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:263 +#, python-format +msgid "%s Not Installed" +msgstr "%s не е инсталиран" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:267 +msgid "Invalid Repository" +msgstr "Счупено хранилище" + +#: ../meld/vcview.py:276 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:318 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../meld/vcview.py:362 msgid "(Empty)" msgstr "(Празен)" -#: ../vcview.py:306 +#: ../meld/vcview.py:400 #, python-format msgid "[%s] Fetching differences" msgstr "[%s] Извличане на разликите" -#: ../vcview.py:313 +#: ../meld/vcview.py:408 #, python-format msgid "[%s] Applying patch" msgstr "[%s] Прилагане на кръпка" -#: ../vcview.py:317 -msgid "No differences found." -msgstr "Няма намерени разлики" - -#: ../vcview.py:394 +#: ../meld/vcview.py:501 msgid "Select some files first." msgstr "Първо изберете файлове." -#: ../vcview.py:461 -msgid "Invoking patch failed, you need GNU patch." +#: ../meld/vcview.py:574 +#, python-format +msgid "" +"\n" +" Invoking 'patch' failed.\n" +" \n" +" Maybe you don't have 'GNU patch' installed,\n" +" or you use an untested version of %s.\n" +" \n" +" Please send email bug report to:\n" +" meld-list@gnome.org\n" +" \n" +" Containing the following information:\n" +" \n" +" - meld version: '%s'\n" +" - source control software type: '%s'\n" +" - source control software version: 'X.Y.Z'\n" +" - the output of '%s somefile.txt'\n" +" - patch command: '%s'\n" +" (no need to actually run it, just provide\n" +" the command line) \n" +" \n" +" Replace 'X.Y.Z' by the actual version for the\n" +" source control software you use.\n" +" " msgstr "" -"Неуспешно стартиране на patch. Необходима ви е версията на проекта GNU." +"\n" +" Неуспешно стартиране на програмата „patch“.\n" +" \n" +" Възможно е програмата „GNU patch“ да не е\n" +" инсталирана или версията при вас на %s да\n" +" не е тествана.\n" +" \n" +" Моля, изпратете доклад за грешка до:\n" +" meld-list@gnome.org\n" +" \n" +" Включете следната информация:\n" +" \n" +" - версия на meld: „%s“\n" +" - вид на контрола на версиите: „%s“\n" +" - версия на контрола на версиите: „X.Y.Z“\n" +" - резултатът от „%s файл.txt“\n" +" - команда за кръпки: „%s“\n" +" (няма нужда да изпълнявате горната команда,\n" +" просто включете в доклада самата команда)\n" +" \n" +" Заменете „X.Y.Z“ с версията на софтуера за\n" +" контрол на версиите, който ползвате.\n" +" " + +#: ../meld/ui/findbar.py:127 +#, python-format +msgid "" +"Regular expression error\n" +"'%s'" +msgstr "" +"Грешка в регулярния израз:\n" +"„%s“" + +#: ../meld/ui/historyentry.py:293 +msgid "_Browse..." +msgstr "_Избор…" + +#: ../meld/ui/historyentry.py:301 +msgid "Path" +msgstr "Път" + +#: ../meld/ui/historyentry.py:302 +msgid "Path to file" +msgstr "Път към файла" + +#: ../meld/ui/historyentry.py:303 +msgid "Pop up a file selector to choose a file" +msgstr "Отваряне на прозорец за избор на файл" + +#: ../meld/ui/historyentry.py:441 +msgid "Select directory" +msgstr "Избор на папка" + +#: ../meld/ui/historyentry.py:445 +msgid "Select file" +msgstr "Избор на файл" + +#: ../meld/ui/notebooklabel.py:60 +msgid "Close tab" +msgstr "Затваряне на подпрозореца" #. These are the possible states of files. Be sure to get the colons correct. -#: ../vc/_vc.py:40 +#: ../meld/vc/_vc.py:40 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" -"Missing" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" msgstr "" -"Игнориран:Неконтролиран:::Грешка::Новодобавен:Променен:В конфликт:" -"Изтрит:Липсващ" +"Игнориран:Неконтролиран:::Грешка::Новодобавен:Променен:В конфликт:Изтрит:" +"Липсващ" -#: ../vc/cvs.py:155 +#: ../meld/vc/cvs.py:163 #, python-format msgid "" "Error converting to a regular expression\n" diff -Nru meld-1.5.3/po/ca.po meld-3.11.0/po/ca.po --- meld-1.5.3/po/ca.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/ca.po 2014-02-08 21:03:00.000000000 +0000 @@ -2,140 +2,621 @@ # Copyright (C) 2004 Free Software Foundation # This file is distributed under the same license as the meld package. # Xavier Conde Rueda , 2004. -# Gil Forcada , 2006, 2007, 2008. +# Gil Forcada , 2006, 2007, 2008, 2013. # David Planella , 2008, 2009. +# Pere Orga , 2012. # msgid "" msgstr "" "Project-Id-Version: meld\n" -"Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2009-07-01 00:17+0200\n" -"PO-Revision-Date: 2009-06-25 21:51+0200\n" -"Last-Translator: David Planella \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-04-20 21:12+0000\n" +"PO-Revision-Date: 2013-03-31 18:37+0200\n" +"Last-Translator: Pere Orga \n" "Language-Team: Catalan \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Transfer-Encoding: 8bits\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -#: ../dirdiff.py:173 ../vcview.py:125 +#: ../bin/meld:121 +msgid "Cannot import: " +msgstr "No es pot importar: " + +#: ../bin/meld:124 +#, c-format +msgid "Meld requires %s or higher." +msgstr "El Meld necessita el %s o superior." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Visualitzador de diferències" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Visualitzador de diferències Meld" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Compareu i fusioneu fitxers" + +#: ../data/mime/meld.xml.in.h:1 +#, fuzzy +#| msgid "Folder comparisons" +msgid "Meld comparison description" +msgstr "Comparació de directoris" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Llista editable" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Actiu" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column name" +msgstr "Nom de la columna" + +#: ../data/ui/EditableList.ui.h:4 ../meld/vcview.py:167 +msgid "_Add" +msgstr "_Afegeix" + +#: ../data/ui/EditableList.ui.h:5 ../meld/vcview.py:168 +msgid "_Remove" +msgstr "Sup_rimeix" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Mou l'element cap amunt" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "Mou am_unt" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "Mou l'element cap avall" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Mou _avall" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:342 +#: ../meld/vcview.py:204 +msgid "Name" +msgstr "Nom" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Patró" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Afegeix un filtre nou" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Suprimeix el filtre seleccionat" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Voleu desar els canvis als documents abans de tancar?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Si no els deseu, es perdran els canvis per sempre." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without saving" +msgstr "Tanca _sense desar" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "_Desa" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"No es pot escriure al fitxer. Podeu fer clic aquí per desbloquejar-lo i fer " +"els canvis de totes maneres, però s'hauran de desar els canvis en un fitxer " +"nou." + +#: ../data/ui/findbar.ui.h:1 ../meld/meldwindow.py:100 +msgid "_Replace" +msgstr "_Reemplaça" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Reemplaça-ho _tot" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Anterior" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Següent" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Cerca:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "Reemplaça _per:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match Case" +msgstr "Coincidència de _majúscules i minúscules" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Paraula _sencera" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular E_xpression" +msgstr "E_xpressió regular" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Ajustat" + +#: ../data/ui/meldapp.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2012 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2012 Kai Willadsen" + +#: ../data/ui/meldapp.ui.h:4 +msgid "" +"Meld 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.\n" +"\n" +"Meld 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. \n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"El Meld és programari lliure; podeu redistribuir-lo i/o modificar-lo sota " +"les condicions de la Llicència pública general GNU tal com ha estat " +"publicada per la Free Software Foundation; ja sigui la versió 2 de la " +"Llicència o bé (si ho preferiu) qualsevol altra versió posterior.\n" +"\n" +"El Meld es distribueix amb l'expectativa que serà útil, però SENSE CAP " +"GARANTIA; ni tan sols la garantia implícita de COMERCIABILITAT o ADEQUACIÓ " +"PER UN PROPÒSIT PARTICULAR. Vegeu la Llicència pública general GNU per " +"obtenir-ne més detalls. \n" +"\n" +"Juntament amb aquest programa, hauríeu d'haver rebut una còpia de la " +"Llicència pública general de GNU. En cas contrari, vegeu ." + +#: ../data/ui/meldapp.ui.h:9 +msgid "translator-credits" +msgstr "" +"Xavier Conde Rueda \n" +"Gil Forcada \n" +"David Planella \n" +"Pere Orga " + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Create Patch" +msgstr "Crea un pedaç" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Create a patch" +msgstr "Crea un pedaç" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Use differences between:" +msgstr "Fes servir les diferències entre:" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Left and middle panes" +msgstr "Subfinestra de l'esquerra i del mig" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "Middle and right panes" +msgstr "Subfinestra del mig i de la dreta" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "_Reverse patch direction" +msgstr "_Inverteix el sentit del pedaç" + +#: ../data/ui/patch-dialog.ui.h:7 +msgid "Copy to Clipboard" +msgstr "Copia al porta-retalls" + +#: ../data/ui/preferences.ui.h:1 +msgid "Meld Preferences" +msgstr "Preferències del Meld" + +#: ../data/ui/preferences.ui.h:2 +msgid "Font" +msgstr "Tipus de lletra" + +#: ../data/ui/preferences.ui.h:3 +msgid "_Use the system fixed width font" +msgstr "_Utilitza el tipus de lletra d'amplada fixa del sistema" + +#: ../data/ui/preferences.ui.h:4 +msgid "_Editor font:" +msgstr "Tipus de lletra de l'_editor:" + +#: ../data/ui/preferences.ui.h:5 +msgid "Display" +msgstr "Visualització" + +#: ../data/ui/preferences.ui.h:6 +msgid "_Tab width:" +msgstr "Amplada de la _tabulació:" + +#: ../data/ui/preferences.ui.h:7 +msgid "_Insert spaces instead of tabs" +msgstr "_Insereix espais en comptes de tabulacions" + +#: ../data/ui/preferences.ui.h:8 +msgid "Enable text _wrapping" +msgstr "Activa l'a_justament del text" + +#: ../data/ui/preferences.ui.h:9 +msgid "Do not _split words over two lines" +msgstr "No _parteixis les paraules en dues línies" + +#: ../data/ui/preferences.ui.h:10 +msgid "Show _line numbers" +msgstr "Mostra els números de _línia" + +#: ../data/ui/preferences.ui.h:11 +msgid "Show w_hitespace" +msgstr "Mostra els espais en _blanc" + +#: ../data/ui/preferences.ui.h:12 +msgid "Use s_yntax highlighting" +msgstr "Utilitza el ressaltat de s_intaxi" + +#: ../data/ui/preferences.ui.h:13 +msgid "External editor" +msgstr "Editor extern" + +#: ../data/ui/preferences.ui.h:14 +msgid "Use _default system editor" +msgstr "Utilitza l'editor per _defecte del sistema" + +#: ../data/ui/preferences.ui.h:15 +msgid "Edito_r command:" +msgstr "Ordre de l'edito_r:" + +#: ../data/ui/preferences.ui.h:16 +msgid "Editor" +msgstr "Editor" + +#: ../data/ui/preferences.ui.h:17 +msgid "Shallow comparison" +msgstr "Comparació ràpida" + +#: ../data/ui/preferences.ui.h:18 +msgid "C_ompare files based only on size and timestamp" +msgstr "C_ompara els fitxers basant-se només en la mida i la marca horària" + +#: ../data/ui/preferences.ui.h:19 +msgid "_Timestamp resolution:" +msgstr "Resolució de la _marca horària:" + +#: ../data/ui/preferences.ui.h:20 +msgid "Symbolic links" +msgstr "Enllaços simbòlics" + +#: ../data/ui/preferences.ui.h:21 +msgid "Ignore symbolic links" +msgstr "Ignora els enllaços simbòlics" + +#: ../data/ui/preferences.ui.h:22 +msgid "Visible columns" +msgstr "Columnes visibles" + +#: ../data/ui/preferences.ui.h:23 +msgid "Folder comparisons" +msgstr "Comparació de directoris" + +#: ../data/ui/preferences.ui.h:24 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"En realitzar comparacions entre directoris, podeu filtrar fitxers i " +"directoris pel nom. Cada patró és una llista de comodins a l'estil de " +"l'intèrpret d'ordres, separats per espais." + +#: ../data/ui/preferences.ui.h:25 ../meld/meldwindow.py:122 +msgid "File Filters" +msgstr "Filtres de fitxer" + +#: ../data/ui/preferences.ui.h:26 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"En realitzar comparacions de fitxers, podeu ignorar alguns tipus de canvis. " +"Cada patró d'aquí és una expressió regular del Python que reemplaçarà amb " +"una cadena buida cada text que hi coincideixi abans que es faci la " +"comparació. Si l'expressió conté grups, només es reemplacen els grups. Vegeu " +"el manual d'usuari per a obtenir-ne més detalls." + +#: ../data/ui/preferences.ui.h:27 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Ignora els canvis que insereixin o suprimeixin línies en blanc" + +#: ../data/ui/preferences.ui.h:28 +msgid "Text Filters" +msgstr "Filtres de text" + +#: ../data/ui/preferences.ui.h:29 +msgid "Loading" +msgstr "Càrrega" + +# Suposo que "codecs" volia dir "encodings" +#: ../data/ui/preferences.ui.h:30 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" +"En carregar, prova les codificacions en aquest ordre. (p.ex. utf8, iso8859)" + +#: ../data/ui/preferences.ui.h:31 +msgid "Encoding" +msgstr "Codificació" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:673 +msgid "New comparison" +msgstr "Comparació nova" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Comparació de fitxers" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Comparació de directoris" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Visualització del control de versions" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Comparació a _3 bandes" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Seleccioneu el tercer fitxer" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Seleccioneu el segon fitxer" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Seleccioneu el primer fitxer" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Seleccioneu el primer directori" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Seleccioneu el segon directori" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Seleccioneu el tercer directori" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Seleccioneu un directori amb control de versions" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "Comparació en _blanc" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "C_ompara" + +#: ../data/ui/vcview.ui.h:1 +msgid "VC Log" +msgstr "Registre del control de versions" + +#: ../data/ui/vcview.ui.h:2 +msgid "Commit Files" +msgstr "Confirma els canvis en els fitxers" + +#: ../data/ui/vcview.ui.h:3 +msgid "Previous Logs" +msgstr "Registres anteriors" + +#: ../data/ui/vcview.ui.h:4 +msgid "Log Message" +msgstr "Missatge del registre" + +#: ../meld/dirdiff.py:269 ../meld/vcview.py:164 msgid "_Compare" msgstr "_Compara" -#: ../dirdiff.py:173 ../vcview.py:125 +#: ../meld/dirdiff.py:269 ../meld/vcview.py:164 msgid "Compare selected" msgstr "Compara el text seleccionat" -#: ../dirdiff.py:174 -msgid "Left" -msgstr "Esquerra" +#: ../meld/dirdiff.py:270 +msgid "Copy _Left" +msgstr "Copia a l'_esquerra" -#: ../dirdiff.py:174 ../filediff.py:125 -msgid "Copy To Left" +#: ../meld/dirdiff.py:270 +msgid "Copy to left" msgstr "Copia a l'esquerra" -#: ../dirdiff.py:175 -msgid "Right" -msgstr "Dreta" +#: ../meld/dirdiff.py:271 +msgid "Copy _Right" +msgstr "Copia a la _dreta" -#: ../dirdiff.py:175 ../filediff.py:126 -msgid "Copy To Right" +#: ../meld/dirdiff.py:271 +msgid "Copy to right" msgstr "Copia a la dreta" -#: ../dirdiff.py:176 +#: ../meld/dirdiff.py:272 msgid "Delete selected" msgstr "Suprimeix el text seleccionat" -#: ../dirdiff.py:177 +#: ../meld/dirdiff.py:273 ../meld/filediff.py:1329 ../meld/filediff.py:1364 msgid "Hide" -msgstr "Oculta" +msgstr "Amaga" -#: ../dirdiff.py:177 +#: ../meld/dirdiff.py:273 msgid "Hide selected" -msgstr "Oculta la selecció" - -#: ../dirdiff.py:179 ../filediff.py:123 ../vcview.py:126 -msgid "Open selected" -msgstr "Obre la selecció" +msgstr "Amaga la selecció" -#: ../dirdiff.py:183 -msgid "Case" -msgstr "Distingeix entre majúscules i minúscules" +#: ../meld/dirdiff.py:277 +#, fuzzy +#| msgid "Ignore filename case" +msgid "Ignore Filename Case" +msgstr "Ignora les majúscules/minúscules del nom del fitxer" -#: ../dirdiff.py:183 -msgid "Ignore case of entries" -msgstr "Ignora majúscules/minúscules de les entrades" +#: ../meld/dirdiff.py:277 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Considera les diferències de majúscules/minúscules en els noms dels fitxers " +"que sinó serien idèntics" -#: ../dirdiff.py:184 +#: ../meld/dirdiff.py:278 msgid "Same" msgstr "Igual" -#: ../dirdiff.py:184 +#: ../meld/dirdiff.py:278 msgid "Show identical" msgstr "Mostra el text idèntic" -#: ../dirdiff.py:185 +#: ../meld/dirdiff.py:279 msgid "New" msgstr "Nou" -#: ../dirdiff.py:185 +#: ../meld/dirdiff.py:279 msgid "Show new" msgstr "Mostra el text nou" -#: ../dirdiff.py:186 +#: ../meld/dirdiff.py:280 msgid "Modified" msgstr "Modificat" -#: ../dirdiff.py:186 ../vcview.py:139 +#: ../meld/dirdiff.py:280 ../meld/vcview.py:176 msgid "Show modified" msgstr "Mostra el text modificat" -#: ../dirdiff.py:188 +#: ../meld/dirdiff.py:282 msgid "Filters" msgstr "Filtres" -#: ../dirdiff.py:188 +#: ../meld/dirdiff.py:282 msgid "Set active filters" msgstr "Estableix els filtres actius" -#: ../dirdiff.py:241 ../dirdiff.py:287 -#, python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "S'ha produït un error en convertir el patró «%s» en expressió regular" +#. Create file size CellRenderer +#: ../meld/dirdiff.py:359 +msgid "Size" +msgstr "Mida" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:366 +msgid "Modification time" +msgstr "Data de modificació" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:373 +msgid "Permissions" +msgstr "Permisos" -#: ../dirdiff.py:298 +#: ../meld/dirdiff.py:506 #, python-format msgid "Hide %s" msgstr "Amaga %s" -#: ../dirdiff.py:383 ../dirdiff.py:393 ../vcview.py:272 ../vcview.py:300 +#: ../meld/dirdiff.py:631 ../meld/dirdiff.py:650 ../meld/vcview.py:382 +#: ../meld/vcview.py:406 #, python-format msgid "[%s] Scanning %s" -msgstr "[%s] S'està escanejant %s" +msgstr "[%s] S'està analitzant %s" -#: ../dirdiff.py:422 +#: ../meld/dirdiff.py:750 #, python-format -msgid "'%s' hidden by '%s'" -msgstr "«%s» amagat per «%s»" +msgid "[%s] Done" +msgstr "[%s] Fet" -#: ../dirdiff.py:428 -#, python-format +#: ../meld/dirdiff.py:756 +msgid "Multiple errors occurred while scanning this folder" +msgstr "S'ha produït més d'un error en analitzar aquesta carpeta" + +#: ../meld/dirdiff.py:757 +msgid "Files with invalid encodings found" +msgstr "S'ha trobat fitxers amb codificacions no vàlides" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:759 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" +"Alguns fitxers tenien una codificació incorrecte. Els noms són alguna cosa " +"com:" + +#: ../meld/dirdiff.py:761 +msgid "Files hidden by case insensitive comparison" +msgstr "" +"Fitxers amagats per la comparació que no té en compte les majúscules/" +"minúscules" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:763 msgid "" "You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" +"filesystem. The following files in this folder are hidden:" msgstr "" "Esteu executant una comparació que considera iguals les majúscules i les " -"minúscules en un sistema de fitxers que les diferencia. Alguns fitxers no " -"són visibles:\n" -"%s" +"minúscules en un sistema de fitxers que les diferencia. S'han amagat els " +"fitxers següents d'aquesta carpeta:" -#: ../dirdiff.py:505 +#: ../meld/dirdiff.py:774 #, python-format -msgid "[%s] Done" -msgstr "[%s] Fet" +msgid "'%s' hidden by '%s'" +msgstr "«%s» amagat per «%s»" -#: ../dirdiff.py:551 +#: ../meld/dirdiff.py:799 ../meld/filediff.py:1065 ../meld/filediff.py:1333 +#: ../meld/filediff.py:1366 ../meld/vcview.py:676 ../meld/vcview.py:718 +msgid "Hi_de" +msgstr "A_maga" + +#: ../meld/dirdiff.py:831 #, python-format msgid "" "'%s' exists.\n" @@ -144,7 +625,7 @@ "«%s» ja existeix.\n" "Voleu sobreescriure'l?" -#: ../dirdiff.py:558 +#: ../meld/dirdiff.py:838 #, python-format msgid "" "Error copying '%s' to '%s'\n" @@ -155,7 +636,7 @@ "\n" "%s." -#: ../dirdiff.py:576 ../vcview.py:464 +#: ../meld/dirdiff.py:856 ../meld/vcview.py:650 #, python-format msgid "" "'%s' is a directory.\n" @@ -164,7 +645,7 @@ "«%s» és un directori.\n" "Voleu suprimir-lo recursivament?" -#: ../dirdiff.py:583 ../vcview.py:469 +#: ../meld/dirdiff.py:863 ../meld/vcview.py:655 #, python-format msgid "" "Error removing %s\n" @@ -175,141 +656,338 @@ "\n" "%s." -#: ../dirdiff.py:594 +#: ../meld/dirdiff.py:994 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i segon" msgstr[1] "%i segons" -#: ../dirdiff.py:595 +#: ../meld/dirdiff.py:995 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minut" msgstr[1] "%i minuts" -#: ../dirdiff.py:596 +#: ../meld/dirdiff.py:996 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i hora" msgstr[1] "%i hores" -#: ../dirdiff.py:597 +#: ../meld/dirdiff.py:997 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i dia" msgstr[1] "%i dies" -#: ../dirdiff.py:598 +#: ../meld/dirdiff.py:998 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i setmana" msgstr[1] "%i setmanes" -#: ../dirdiff.py:599 +#: ../meld/dirdiff.py:999 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i mes" msgstr[1] "%i mesos" -#: ../dirdiff.py:600 +#: ../meld/dirdiff.py:1000 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i any" msgstr[1] "%i anys" -#: ../filediff.py:124 ../glade2/filediff.glade.h:4 -msgid "Create Patch" -msgstr "Crea un pedaç" - -#: ../filediff.py:124 -msgid "Create a patch" -msgstr "Crea un pedaç" - -#: ../filediff.py:125 -msgid "Copy all changes from right pane to left pane" -msgstr "" -"Copia tots els canvis de la subfinestra dreta a la subfinestra esquerra" - -#: ../filediff.py:126 -msgid "Copy all changes from left pane to right pane" -msgstr "" -"Copia tots els canvis de la subfinestra esquerra a la subfinestra dreta" - -#. Abbreviation for insert,overwrite so that it will fit in the status bar -#: ../filediff.py:179 -msgid "INS,OVR" -msgstr "INS,SOB" +#: ../meld/filediff.py:221 +#, fuzzy +#| msgid "Format as patch..." +msgid "Format as Patch..." +msgstr "Formata com a un pedaç..." + +#: ../meld/filediff.py:222 +msgid "Create a patch using differences between files" +msgstr "Crea un pedaç fent servir les diferències entre fitxers" + +#: ../meld/filediff.py:224 +msgid "Add Synchronization Point" +msgstr "" + +#: ../meld/filediff.py:225 +msgid "Add a manual point for synchronization of changes between files" +msgstr "" + +#: ../meld/filediff.py:228 +msgid "Clear Synchronization Points" +msgstr "" + +#: ../meld/filediff.py:229 +msgid "Clear manual change sychronization points" +msgstr "" + +#: ../meld/filediff.py:231 +#, fuzzy +#| msgid "Previous conflict" +msgid "Previous Conflict" +msgstr "Conflicte anterior" + +#: ../meld/filediff.py:232 +msgid "Go to the previous conflict" +msgstr "Vés al conflicte anterior" + +#: ../meld/filediff.py:234 +#, fuzzy +#| msgid "Next conflict" +msgid "Next Conflict" +msgstr "Conflicte següent" + +#: ../meld/filediff.py:235 +msgid "Go to the next conflict" +msgstr "Vés al conflicte següent" + +#: ../meld/filediff.py:237 +#, fuzzy +#| msgid "Push to left" +msgid "Push to Left" +msgstr "Envia a l'esquerra" + +#: ../meld/filediff.py:238 +msgid "Push current change to the left" +msgstr "Envia el canvi actual a l'esquerra" + +#: ../meld/filediff.py:241 +#, fuzzy +#| msgid "Push to right" +msgid "Push to Right" +msgstr "Envia a la dreta" + +#: ../meld/filediff.py:242 +msgid "Push current change to the right" +msgstr "Envia el canvi actual a la dreta" + +#: ../meld/filediff.py:246 +#, fuzzy +#| msgid "Pull from left" +msgid "Pull from Left" +msgstr "Estira de l'esquerra" + +#: ../meld/filediff.py:247 +msgid "Pull change from the left" +msgstr "Estira el canvi de l'esquerra" + +#: ../meld/filediff.py:250 +#, fuzzy +#| msgid "Pull from right" +msgid "Pull from Right" +msgstr "Estira de la dreta" + +#: ../meld/filediff.py:251 +msgid "Pull change from the right" +msgstr "Estira el canvi de la dreta" + +#: ../meld/filediff.py:253 +#, fuzzy +#| msgid "Copy above left" +msgid "Copy Above Left" +msgstr "Copia amunt a l'esquerra" + +#: ../meld/filediff.py:254 +msgid "Copy change above the left chunk" +msgstr "Copia el canvi per sobre de la porció de l'esquerra" + +#: ../meld/filediff.py:256 +#, fuzzy +#| msgid "Copy below left" +msgid "Copy Below Left" +msgstr "Copia a baix a l'esquerra" + +#: ../meld/filediff.py:257 +msgid "Copy change below the left chunk" +msgstr "Copia el canvi a partir de la porció de l'esquerra" + +#: ../meld/filediff.py:259 +#, fuzzy +#| msgid "Copy above right" +msgid "Copy Above Right" +msgstr "Copia amunt a la dreta" + +#: ../meld/filediff.py:260 +msgid "Copy change above the right chunk" +msgstr "Copia el canvi per sobre de la porció de la dreta" + +#: ../meld/filediff.py:262 +#, fuzzy +#| msgid "Copy below right" +msgid "Copy Below Right" +msgstr "Copia a baix a la dreta" + +#: ../meld/filediff.py:263 +msgid "Copy change below the right chunk" +msgstr "Copia el canvi a partir de la porció de la dreta" + +#: ../meld/filediff.py:265 +msgid "Delete" +msgstr "Suprimeix" + +#: ../meld/filediff.py:266 +msgid "Delete change" +msgstr "Suprimeix el canvi" + +#: ../meld/filediff.py:268 +#, fuzzy +#| msgid "Merge all changes from left" +msgid "Merge All Changes from Left" +msgstr "Fusiona tots els canvis de l'esquerra" + +#: ../meld/filediff.py:269 +msgid "Merge all non-conflicting changes from the left" +msgstr "Fusiona tots els canvis no conflictius de l'esquerra" + +#: ../meld/filediff.py:271 +#, fuzzy +#| msgid "Merge all changes from right" +msgid "Merge All Changes from Right" +msgstr "Fusiona tots els canvis de la dreta" + +#: ../meld/filediff.py:272 +msgid "Merge all non-conflicting changes from the right" +msgstr "Fusiona tots els canvis no conflictius de la dreta" + +#: ../meld/filediff.py:274 +#, fuzzy +#| msgid "Merge all non-conflicting" +msgid "Merge All Non-conflicting" +msgstr "Fusiona tot el que no sigui conflictiu" + +#: ../meld/filediff.py:275 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "" +"Fusiona tots els canvis no conflictius de les subfinestres esquerra i dreta" + +#: ../meld/filediff.py:279 +#, fuzzy +#| msgid "Cycle through documents" +msgid "Cycle Through Documents" +msgstr "Avança pels documents" + +#: ../meld/filediff.py:280 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "Mou el focus del teclat cap al document següent d'aquesta comparació" + +#: ../meld/filediff.py:286 +#, fuzzy +#| msgid "Lock scrolling" +msgid "Lock Scrolling" +msgstr "Bloqueja el desplaçament" + +#: ../meld/filediff.py:287 +msgid "Lock scrolling of all panes" +msgstr "Bloqueja el desplaçament de totes les subfinestres" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:407 +msgid "INS" +msgstr "INS" + +#: ../meld/filediff.py:407 +msgid "OVR" +msgstr "SOB" #. Abbreviation for line, column so that it will fit in the status bar -#: ../filediff.py:181 +#: ../meld/filediff.py:409 #, python-format msgid "Ln %i, Col %i" msgstr "Ln %i, Col %i" -#: ../filediff.py:238 +#: ../meld/filediff.py:742 #, python-format msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." msgstr "" -"L'expressió regular «%s» ha canviat el nombre de línies del fitxer. La " -"comparació serà incorrecta. Vegeu el manual d'usuari per a més detalls." - -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../filediff.py:335 -msgid "" -msgstr "" +"El filtre «%s» ha canviat el nombre de línies del fitxer. La comparació serà " +"incorrecta. Vegeu el manual d'usuari per a més informació." -#: ../filediff.py:508 +#: ../meld/filediff.py:1053 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Estableix el nombre de subfinestres" -#: ../filediff.py:514 +#: ../meld/filediff.py:1059 #, python-format msgid "[%s] Opening files" msgstr "[%s] S'estan obrint els fitxers" -#: ../filediff.py:532 ../filediff.py:546 ../filediff.py:562 ../filediff.py:569 -#, python-format -msgid "Could not read from '%s'" -msgstr "No s'ha pogut llegir de «%s»" +#: ../meld/filediff.py:1083 ../meld/filediff.py:1093 ../meld/filediff.py:1106 +#: ../meld/filediff.py:1112 +msgid "Could not read file" +msgstr "No s'ha pogut llegir el fitxer" -#: ../filediff.py:533 ../filediff.py:570 -msgid "The error was:" -msgstr "L'error ha estat:" - -#: ../filediff.py:538 +#: ../meld/filediff.py:1084 #, python-format msgid "[%s] Reading files" msgstr "[%s] S'estan llegint els fitxers" -#: ../filediff.py:547 -msgid "" -"It contains ascii nulls.\n" -"Perhaps it is a binary file." -msgstr "" -"Conté el caràcter nul de l'ASCII.\n" -"Potser és un fitxer binari." +#: ../meld/filediff.py:1094 +#, python-format +msgid "%s appears to be a binary file." +msgstr "%s sembla que és un fitxer binari." -#: ../filediff.py:563 +#: ../meld/filediff.py:1107 #, python-format -msgid "I tried encodings %s." -msgstr "S'han provat les codificacions %s." +msgid "%s is not in encodings: %s" +msgstr "%s no és a les codificacions: %s" -#: ../filediff.py:590 +#: ../meld/filediff.py:1141 #, python-format msgid "[%s] Computing differences" msgstr "[%s] S'estan calculant les diferències" -#: ../filediff.py:719 +#: ../meld/filediff.py:1320 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"S'estan fent servir filtres de text i potser s'està emmascarant les " +"diferències entre fitxers. Voleu comparar els fitxers sense filtrar?" + +#: ../meld/filediff.py:1326 +msgid "Files are identical" +msgstr "Els fitxers són idèntics" + +#: ../meld/filediff.py:1336 +msgid "Show without filters" +msgstr "Mostra sense filtres" + +#: ../meld/filediff.py:1358 +msgid "Change highlighting incomplete" +msgstr "" + +#: ../meld/filediff.py:1359 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" + +#: ../meld/filediff.py:1368 +#, fuzzy +#| msgid "Use s_yntax highlighting" +msgid "Keep highlighting" +msgstr "Utilitza el ressaltat de s_intaxi" + +#: ../meld/filediff.py:1370 +#, fuzzy +#| msgid "Use s_yntax highlighting" +msgid "_Keep highlighting" +msgstr "Utilitza el ressaltat de s_intaxi" + +#: ../meld/filediff.py:1496 #, python-format msgid "" "\"%s\" exists!\n" @@ -318,7 +996,7 @@ "«%s» ja existeix.\n" "Voleu sobreescriure'l?" -#: ../filediff.py:732 +#: ../meld/filediff.py:1509 #, python-format msgid "" "Error writing to %s\n" @@ -329,12 +1007,12 @@ "\n" "%s." -#: ../filediff.py:741 +#: ../meld/filediff.py:1518 #, python-format msgid "Choose a name for buffer %i." msgstr "Escolliu un nom per a la memòria intermèdia %i." -#: ../filediff.py:755 +#: ../meld/filediff.py:1538 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -345,7 +1023,7 @@ "\n" "Quin format voleu emprar?" -#: ../filediff.py:771 +#: ../meld/filediff.py:1554 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -354,1281 +1032,705 @@ "«%s» conté caràcters no codificables amb «%s»\n" "Voleu desar-lo com a UTF-8?" -#. save as -#: ../filediff.py:811 -msgid "Save patch as..." -msgstr "Anomena i desa el pedaç..." +#: ../meld/filediff.py:1620 +msgid "Save changes to documents before reloading?" +msgstr "Voleu desar els canvis als documents abans de tornar a carregar?" -#: ../filediff.py:878 +#: ../meld/filemerge.py:51 #, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"En tornar a carregar es descartaran els canvis a:\n" -"%s\n" -"\n" -"No podreu desfer aquesta operació." - -#: ../findbar.py:119 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"S'ha produït un error en l'expressió regular\n" -"«%s»" - -#: ../glade2/filediff.glade.h:1 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"S'han modificat alguns fitxers.\n" -"Quins voleu desar?" - -#: ../glade2/filediff.glade.h:3 -msgid "Copy to Clipboard" -msgstr "Copia al porta-retalls" - -#: ../glade2/filediff.glade.h:5 -msgid "Save modified files?" -msgstr "Voleu desar els fitxers modificats?" - -#: ../glade2/filediff.glade.h:6 -msgid "_Discard Changes" -msgstr "_Descarta els canvis" - -#: ../glade2/filediff.glade.h:7 -msgid "_Save Selected" -msgstr "_Desa la selecció" - -#: ../glade2/findbar.glade.h:1 -msgid "Regular E_xpression" -msgstr "E_xpressió regular" - -#: ../glade2/findbar.glade.h:2 -msgid "Replace _All" -msgstr "Reemplaça-ho _tot" - -#: ../glade2/findbar.glade.h:3 -msgid "Replace _With" -msgstr "Reemplaça _per" - -#: ../glade2/findbar.glade.h:4 -msgid "Who_le word" -msgstr "Paraula _sencera" - -#: ../glade2/findbar.glade.h:5 -msgid "_Match Case" -msgstr "Coincidència de _majúscules i minúscules" - -#: ../glade2/findbar.glade.h:6 -msgid "_Next" -msgstr "_Següent" - -#: ../glade2/findbar.glade.h:7 -msgid "_Previous" -msgstr "_Anterior" - -#: ../glade2/findbar.glade.h:8 ../meldapp.py:525 -msgid "_Replace" -msgstr "_Reemplaça" - -#: ../glade2/findbar.glade.h:9 -msgid "_Search for" -msgstr "_Cerca" - -#: ../glade2/meldapp.glade.h:1 -msgid "Edit Menu" -msgstr "Menú d'edició" - -#: ../glade2/meldapp.glade.h:2 -msgid "Font" -msgstr "Tipus de lletra" - -#: ../glade2/meldapp.glade.h:3 -msgid "Loading" -msgstr "Càrrega" - -#: ../glade2/meldapp.glade.h:4 -msgid "Misc" -msgstr "Miscel·lània" - -#: ../glade2/meldapp.glade.h:5 -msgid "Automatically supply missing newline at end of file" -msgstr "Afegeix automàticament el caràcter de línia nova al final del fitxer" - -#: ../glade2/meldapp.glade.h:6 -msgid "Choose Files" -msgstr "Escolliu els fitxers" - -#: ../glade2/meldapp.glade.h:7 -msgid "Copyright © 2002-2009 Stephen Kennedy" -msgstr "Copyright © 2002-2009 Stephen Kennedy" - -#: ../glade2/meldapp.glade.h:8 -msgid "Custom command" -msgstr "Ordre personalitzada" - -#: ../glade2/meldapp.glade.h:9 -msgid "Directory" -msgstr "Directori" - -#: ../glade2/meldapp.glade.h:10 -msgid "Edit files with:" -msgstr "Edita els fitxers amb:" - -#: ../glade2/meldapp.glade.h:11 -msgid "Editor" -msgstr "Editor" - -#: ../glade2/meldapp.glade.h:12 -msgid "Encoding" -msgstr "Codificació" - -#: ../glade2/meldapp.glade.h:13 -msgid "File Filters" -msgstr "Filtres de fitxer" - -#: ../glade2/meldapp.glade.h:14 -msgid "Gnome default editor" -msgstr "Editor predeterminat del GNOME" - -#: ../glade2/meldapp.glade.h:15 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Ignora els canvis que insereixin o suprimeixin línies en blanc" - -#: ../glade2/meldapp.glade.h:16 -msgid "Ignore symbolic links" -msgstr "Ignora els enllaços simbòlics" - -#: ../glade2/meldapp.glade.h:17 -msgid "Insert spaces instead of tabs" -msgstr "Insereix espais en lloc de tabulacions" - -#: ../glade2/meldapp.glade.h:18 -msgid "Internal editor" -msgstr "Editor intern" - -#: ../glade2/meldapp.glade.h:19 -msgid "Line Wrapping " -msgstr "Ajustament de línia " - -#: ../glade2/meldapp.glade.h:20 -msgid "Meld" -msgstr "Meld" - -#: ../glade2/meldapp.glade.h:21 -msgid "Mine" -msgstr "Meu" - -#: ../glade2/meldapp.glade.h:22 -msgid "Original" -msgstr "Original" - -#: ../glade2/meldapp.glade.h:23 -msgid "Other" -msgstr "Un altre" - -#: ../glade2/meldapp.glade.h:24 -msgid "Preferences : Meld" -msgstr "Preferències : Meld" - -#: ../glade2/meldapp.glade.h:25 -msgid "Show line numbers" -msgstr "Mostra els números de línia" - -#: ../glade2/meldapp.glade.h:26 -msgid "Tab width" -msgstr "Amplada de la pestanya" - -#: ../glade2/meldapp.glade.h:27 -msgid "Text Filters" -msgstr "Filtres de text" - -#: ../glade2/meldapp.glade.h:28 -msgid "Three way directory" -msgstr "Entre tres directoris" - -#: ../glade2/meldapp.glade.h:29 -msgid "Three way file" -msgstr "Entre tres fitxers" - -#: ../glade2/meldapp.glade.h:30 -msgid "Two way directory" -msgstr "Entre dos directoris" - -#: ../glade2/meldapp.glade.h:31 -msgid "Two way file" -msgstr "Entre dos fitxers" - -#: ../glade2/meldapp.glade.h:32 -msgid "Use GNOME monospace font" -msgstr "Utilitza el tipus de lletra d'amplada fixa del GNOME" - -#: ../glade2/meldapp.glade.h:33 -msgid "Use custom font" -msgstr "Utilitza un tipus de lletra personalitzat" - -#: ../glade2/meldapp.glade.h:34 -msgid "Use syntax highlighting" -msgstr "Utilitza acoloriment de sintaxi" - -#: ../glade2/meldapp.glade.h:35 -msgid "Version control view" -msgstr "Visualització del control de versions" - -# Suposo que "codecs" volia dir "encodings" -#: ../glade2/meldapp.glade.h:36 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" -"En carregar, prova les codificacions en aquest ordre. (p.ex. utf8, iso8859)" - -#: ../glade2/meldapp.glade.h:37 -msgid "" -"When performing directory comparisons, you may filter out files and " -"directories by name. Each pattern is a list of shell style wildcards " -"separated by spaces." -msgstr "" -"En realitzar comparacions entre directoris, podeu filtrar fitxers i " -"directoris pel nom. Cada patró és una llista de comodins a l'estil de " -"l'intèrpret d'ordres, separats per espais." - -#: ../glade2/meldapp.glade.h:38 -msgid "" -"When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching " -"text with the empty string before comparison is performed. If the expression " -"contains groups, only the groups are replaced. See the user manual for more " -"details." -msgstr "" -"En realitzar comparacions de fitxers, podeu ignorar alguns tipus de canvis. " -"Cada patró d'aquí és una expressió regular del Python que reemplaçarà amb " -"una cadena buida cada text que hi coincideixi abans que es faci la " -"comparació. Si l'expressió conté grups, només es reemplacen els grups. Vegeu " -"el manual d'usuari per a obtenir-ne més detalls." - -#: ../glade2/meldapp.glade.h:39 -msgid "_Character" -msgstr "_Caràcter" - -#: ../glade2/meldapp.glade.h:40 -msgid "_Directory Comparison" -msgstr "Comparació de _directoris" - -#: ../glade2/meldapp.glade.h:41 -msgid "_File Comparison" -msgstr "Comparació de _fitxers" - -#: ../glade2/meldapp.glade.h:42 -msgid "_None" -msgstr "_Cap" - -#: ../glade2/meldapp.glade.h:43 -msgid "_Three Way Compare" -msgstr "Comparació entre _tres" - -#: ../glade2/meldapp.glade.h:44 -msgid "_Version Control Browser" -msgstr "Navegador del control de _versions" - -#: ../glade2/meldapp.glade.h:45 -msgid "_Word" -msgstr "_Paraula" - -#: ../glade2/vcview.glade.h:1 -msgid "Commit Files" -msgstr "Confirma els canvis en els fitxers" - -#: ../glade2/vcview.glade.h:2 -msgid "Compare Options" -msgstr "Opcions de comparació" - -#: ../glade2/vcview.glade.h:3 -msgid "Date" -msgstr "Data" - -#: ../glade2/vcview.glade.h:4 -msgid "Local copy against other remote revision" -msgstr "Còpia local comparada amb una altra revisió remota" - -#: ../glade2/vcview.glade.h:5 -msgid "Local copy against same remote revision" -msgstr "Còpia local comparada amb la mateixa revisió remota" - -#: ../glade2/vcview.glade.h:6 -msgid "Log Message" -msgstr "Missatge del registre" - -#: ../glade2/vcview.glade.h:7 -msgid "Previous Logs" -msgstr "Registres anteriors" - -#: ../glade2/vcview.glade.h:8 ../vcview.py:183 -msgid "Tag" -msgstr "Etiqueta" - -#: ../glade2/vcview.glade.h:9 -msgid "VC Log" -msgstr "Registre del control de versions" - -#: ../historyentry.py:248 -msgid "_Browse..." -msgstr "_Navega..." - -#: ../historyentry.py:256 -msgid "Path" -msgstr "Camí" - -#: ../historyentry.py:257 -msgid "Path to file" -msgstr "Camí al fitxer" - -#: ../historyentry.py:258 -msgid "Pop up a file selector to choose a file" -msgstr "Mostra un selector de fitxers per a escollir un fitxer" - -#: ../historyentry.py:378 -msgid "Select directory" -msgstr "Seleccioneu el directori" +msgid "[%s] Merging files" +msgstr "[%s] S'estan fusionant els fitxers" -#: ../historyentry.py:382 -msgid "Select file" -msgstr "Seleccioneu el fitxer" +#: ../meld/meldapp.py:95 +msgid "wrong number of arguments supplied to --diff" +msgstr "s'ha especificat un nombre d'arguments incorrecte per a --diff" -#: ../meld:47 -#, c-format -msgid "Meld requires %s or higher." -msgstr "El Meld necessita el %s o superior." +#: ../meld/meldapp.py:99 +msgid "Start with an empty window" +msgstr "Inicia amb una finestra buida" -#: ../meld:64 ../meld:71 -msgid "Cannot import: " -msgstr "No es pot importar: " +#: ../meld/meldapp.py:100 ../meld/meldapp.py:102 ../meld/meldapp.py:106 +msgid "file" +msgstr "fitxer" -#: ../meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Compareu i fusioneu fitxers." +#: ../meld/meldapp.py:100 ../meld/meldapp.py:104 ../meld/meldapp.py:106 +msgid "dir" +msgstr "directori" -#: ../meld.desktop.in.h:2 -msgid "Meld Diff Viewer" -msgstr "Visualitzador de diferències Meld" +#: ../meld/meldapp.py:101 +msgid "Start a version control comparison" +msgstr "Inicia una comparació de control de versions nova" + +#: ../meld/meldapp.py:103 +msgid "Start a 2- or 3-way file comparison" +msgstr "Inicia una comparació de 2 o 3 fitxers" -#: ../meldapp.py:153 -msgid "label" -msgstr "etiqueta" +#: ../meld/meldapp.py:105 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Inicia una comparació de 2 o 3 directoris" -#: ../meldapp.py:153 -msgid "pattern" -msgstr "patró" +#: ../meld/meldapp.py:107 +msgid "Start a comparison between file and dir/file" +msgstr "Inicia una comparació entre un fitxer i un directori/fitxer" -#: ../meldapp.py:221 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Només està disponible si teniu el gnome-python-desktop instal·lat" +#: ../meld/meldapp.py:114 +msgid "Meld is a file and directory comparison tool." +msgstr "El Meld és una eina de comparació de fitxers i directoris." -#. file filters -#. text filters -#: ../meldapp.py:231 ../meldapp.py:236 ../vcview.py:163 -msgid "Name" -msgstr "Nom" +#: ../meld/meldapp.py:117 +msgid "Set label to use instead of file name" +msgstr "Estableix l'etiqueta a emprar en lloc del nom del fitxer" -#: ../meldapp.py:231 ../meldapp.py:236 -msgid "Active" -msgstr "Actiu" +#: ../meld/meldapp.py:119 +msgid "Open a new tab in an already running instance" +msgstr "Obre una pestanya nova en una instància que ja s'està executant" -#: ../meldapp.py:231 -msgid "Pattern" -msgstr "Patró" +#: ../meld/meldapp.py:122 +msgid "Automatically compare all differing files on startup" +msgstr "Compara tots els fitxers diferents en iniciar el programa" -#: ../meldapp.py:236 -msgid "Regex" -msgstr "Expressió regular" +#: ../meld/meldapp.py:124 +msgid "Ignored for compatibility" +msgstr "Ignorat per compatibilitat" -#: ../meldapp.py:340 -msgid "Close tab" -msgstr "Tanca la pestanya" +#: ../meld/meldapp.py:127 +msgid "Set the target file for saving a merge result" +msgstr "Estableix el fitxer objectiu per desar els resultats de la fusió" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:412 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Còpies de seguretat\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#: ../meld/meldapp.py:129 +msgid "Automatically merge files" +msgstr "Fusiona els fitxers automàticament" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:414 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Control de versions\t1\t%s\n" +#: ../meld/meldapp.py:132 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "" +"Carrega una comparació desada a partir d'un fitxer de comparació del Meld" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:416 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binaris\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +#: ../meld/meldapp.py:135 +msgid "Create a diff tab for the supplied files or folders" +msgstr "" +"Crea una pestanya de diferències pels fitxers o directoris especificats" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:418 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Multimèdia\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +#: ../meld/meldapp.py:138 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "" +"s'han especificat masses arguments (se'n volien entre 0 i 3, i se n'ha " +"especificat %d)" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:420 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "Paraules clau del CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#: ../meld/meldapp.py:141 +msgid "can't auto-merge less than 3 files" +msgstr "no es poden fusionar més de tres directoris" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:422 -msgid "C++ comment\t0\t//.*\n" -msgstr "Comentari de C++\t0\t//.*\n" +#: ../meld/meldapp.py:143 +msgid "can't auto-merge directories" +msgstr "no es poden fusionar automàticament els directoris" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:424 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "Comentari de C\t0\t/\\*.*?\\*/\n" +#: ../meld/meldapp.py:149 +msgid "D-Bus error; comparisons will open in a new window." +msgstr "Error del D-Bus: les comparacions s'obriran en una finestra nova." -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:426 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Tot els espais blancs\t0\t[ \\t\\r\\f\\v]*\n" +#: ../meld/meldapp.py:167 +msgid "Error reading saved comparison file" +msgstr "S'ha produït un error en llegir el fitxer de comparació" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:428 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Espais en blanc a l'inici\t0\t^[ \\t\\r\\f\\v]*\n" +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:89 +msgid "" +msgstr "" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:430 -msgid "Script comment\t0\t#.*" -msgstr "Comentari d'script\t0\t#.*" +#: ../meld/melddoc.py:58 ../meld/melddoc.py:59 +msgid "untitled" +msgstr "sense títol" -#: ../meldapp.py:510 +#: ../meld/meldwindow.py:61 msgid "_File" msgstr "_Fitxer" -#: ../meldapp.py:511 -msgid "_New..." -msgstr "_Nova..." +#: ../meld/meldwindow.py:62 +#, fuzzy +#| msgid "_New comparison" +msgid "_New Comparison" +msgstr "Comparació _nova" -#: ../meldapp.py:511 +#: ../meld/meldwindow.py:63 msgid "Start a new comparison" msgstr "Inicia una comparació nova" -#: ../meldapp.py:512 +#: ../meld/meldwindow.py:66 msgid "Save the current file" msgstr "Desa el fitxer actual" -#: ../meldapp.py:514 +#: ../meld/meldwindow.py:69 +#, fuzzy +#| msgid "Save the current file" +msgid "Save the current file with a different name" +msgstr "Desa el fitxer actual" + +#: ../meld/meldwindow.py:72 msgid "Close the current file" msgstr "Tanca el fitxer actual" -#: ../meldapp.py:515 +#: ../meld/meldwindow.py:75 msgid "Quit the program" msgstr "Surt del programa" -#: ../meldapp.py:517 +#: ../meld/meldwindow.py:78 msgid "_Edit" msgstr "_Edita" -#: ../meldapp.py:518 +#: ../meld/meldwindow.py:80 msgid "Undo the last action" msgstr "Desfés la darrera acció" -#: ../meldapp.py:519 +#: ../meld/meldwindow.py:83 msgid "Redo the last undone action" msgstr "Refés la darrera acció desfeta" -#: ../meldapp.py:520 +#: ../meld/meldwindow.py:85 msgid "Cut the selection" msgstr "Retalla la selecció" -#: ../meldapp.py:521 +#: ../meld/meldwindow.py:87 msgid "Copy the selection" msgstr "Copia la selecció" -#: ../meldapp.py:522 +#: ../meld/meldwindow.py:89 msgid "Paste the clipboard" msgstr "Enganxa el porta-retalls" -#: ../meldapp.py:523 +#: ../meld/meldwindow.py:91 msgid "Search for text" msgstr "Cerca text" -#: ../meldapp.py:524 +#: ../meld/meldwindow.py:93 msgid "Find Ne_xt" msgstr "Cerca el _següent" -#: ../meldapp.py:524 +#: ../meld/meldwindow.py:94 msgid "Search forwards for the same text" msgstr "Cerca el mateix text cap endavant" -#: ../meldapp.py:525 +#: ../meld/meldwindow.py:96 +msgid "Find _Previous" +msgstr "Cerca l'_anterior" + +#: ../meld/meldwindow.py:97 +msgid "Search backwards for the same text" +msgstr "Cerca el mateix text cap endarrere" + +#: ../meld/meldwindow.py:101 msgid "Find and replace text" msgstr "Cerca i reemplaça text" -#: ../meldapp.py:526 -msgid "Go to the next difference" -msgstr "Vés a la diferència següent" - -#: ../meldapp.py:527 -msgid "Go to the previous difference" -msgstr "Vés a la diferència anterior" - -#: ../meldapp.py:528 +#: ../meld/meldwindow.py:103 msgid "Prefere_nces" msgstr "Preferè_ncies" -#: ../meldapp.py:528 +#: ../meld/meldwindow.py:104 msgid "Configure the application" msgstr "Configura l'aplicació" -#: ../meldapp.py:530 +#: ../meld/meldwindow.py:107 +msgid "_Changes" +msgstr "_Canvis" + +#: ../meld/meldwindow.py:108 +#, fuzzy +#| msgid "Next change" +msgid "Next Change" +msgstr "Canvi següent" + +#: ../meld/meldwindow.py:109 +msgid "Go to the next change" +msgstr "Vés al canvi següent" + +#: ../meld/meldwindow.py:111 +#, fuzzy +#| msgid "Previous change" +msgid "Previous Change" +msgstr "Canvi anterior" + +#: ../meld/meldwindow.py:112 +msgid "Go to the previous change" +msgstr "Vés al canvi anterior" + +#: ../meld/meldwindow.py:114 +#, fuzzy +#| msgid "Open externally" +msgid "Open Externally" +msgstr "Obre externament" + +#: ../meld/meldwindow.py:115 +msgid "Open selected file or directory in the default external application" +msgstr "" +"Obre el fitxer o la carpeta seleccionada en l'aplicació externa per defecte" + +#: ../meld/meldwindow.py:119 msgid "_View" msgstr "_Visualitza" -#: ../meldapp.py:531 -msgid "File status" +#: ../meld/meldwindow.py:120 +#, fuzzy +#| msgid "File status" +msgid "File Status" msgstr "Estatus del fitxer" -#: ../meldapp.py:532 -msgid "Version status" +#: ../meld/meldwindow.py:121 +#, fuzzy +#| msgid "Version status" +msgid "Version Status" msgstr "Estat de la versió" -#: ../meldapp.py:533 -msgid "File filters" -msgstr "Filtres de fitxer" - -#: ../meldapp.py:534 +#: ../meld/meldwindow.py:124 msgid "Stop the current action" msgstr "Atura l'acció actual" -#: ../meldapp.py:535 +#: ../meld/meldwindow.py:127 msgid "Refresh the view" msgstr "Actualitza la visualització" -#: ../meldapp.py:536 +#: ../meld/meldwindow.py:129 msgid "Reload" msgstr "Torna a carregar" -#: ../meldapp.py:536 +#: ../meld/meldwindow.py:130 msgid "Reload the comparison" msgstr "Torna a carregar la comparació" -#: ../meldapp.py:538 +#: ../meld/meldwindow.py:133 +msgid "_Tabs" +msgstr "_Pestanyes" + +#: ../meld/meldwindow.py:134 +msgid "_Previous Tab" +msgstr "Pestanya _anterior" + +#: ../meld/meldwindow.py:135 +msgid "Activate previous tab" +msgstr "Activa la pestanya anterior" + +#: ../meld/meldwindow.py:137 +msgid "_Next Tab" +msgstr "Pestanya _següent" + +#: ../meld/meldwindow.py:138 +msgid "Activate next tab" +msgstr "Activa la pestanya següent" + +#: ../meld/meldwindow.py:141 +msgid "Move Tab _Left" +msgstr "Mou la pestanya a l'_esquerra" + +#: ../meld/meldwindow.py:142 +msgid "Move current tab to left" +msgstr "Mou la pestanya actual a l'esquerra" + +#: ../meld/meldwindow.py:145 +msgid "Move Tab _Right" +msgstr "Mou la pestanya a la _dreta" + +#: ../meld/meldwindow.py:146 +msgid "Move current tab to right" +msgstr "Mou la pestanya actual a la dreta" + +#: ../meld/meldwindow.py:149 msgid "_Help" msgstr "A_juda" -#: ../meldapp.py:539 +#: ../meld/meldwindow.py:150 msgid "_Contents" msgstr "_Continguts" -#: ../meldapp.py:539 +#: ../meld/meldwindow.py:151 msgid "Open the Meld manual" msgstr "Obre el manual del Meld" -#: ../meldapp.py:540 +#: ../meld/meldwindow.py:152 msgid "Report _Bug" msgstr "In_formeu d'un error" -#: ../meldapp.py:540 +#: ../meld/meldwindow.py:153 msgid "Report a bug in Meld" msgstr "Informeu d'un error en el Meld" -#: ../meldapp.py:541 +#: ../meld/meldwindow.py:156 msgid "About this program" msgstr "Quant a aquest programa" -#: ../meldapp.py:546 +#: ../meld/meldwindow.py:160 msgid "Full Screen" msgstr "Pantalla completa" -#: ../meldapp.py:546 +#: ../meld/meldwindow.py:161 msgid "View the comparison in full screen" msgstr "Visualitza la comparació a pantalla completa" -#: ../meldapp.py:547 +#: ../meld/meldwindow.py:163 msgid "_Toolbar" msgstr "Ba_rra d'eines" -#: ../meldapp.py:547 +#: ../meld/meldwindow.py:164 msgid "Show or hide the toolbar" msgstr "Mostra o oculta la barra d'eines" -#: ../meldapp.py:548 +#: ../meld/meldwindow.py:166 msgid "_Statusbar" msgstr "_Barra d'estat" -#: ../meldapp.py:548 +#: ../meld/meldwindow.py:167 msgid "Show or hide the statusbar" msgstr "Mostra o oculta la barra d'estat" -#: ../meldapp.py:890 +#: ../meld/meldwindow.py:176 +msgid "Open Recent" +msgstr "Obre el fitxer recent" + +#: ../meld/meldwindow.py:177 +msgid "Open recent files" +msgstr "Obre els fitxers recents" + +#: ../meld/meldwindow.py:593 +msgid "Switch to this tab" +msgstr "Canvia a aquesta pestanya" + +#. exit at first non found directory + file +#: ../meld/meldwindow.py:726 msgid "Cannot compare a mixture of files and directories.\n" msgstr "No es pot comparar una mescla de fitxers i directoris.\n" -#: ../meldapp.py:933 ../meldapp.py:941 -msgid "file" -msgstr "fitxer" +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:189 +msgid "[None]" +msgstr "[Cap]" -#: ../meldapp.py:934 ../meldapp.py:940 -msgid "dir" -msgstr "directori" +#: ../meld/patchdialog.py:124 +msgid "Save Patch As..." +msgstr "Anomena i desa el pedaç..." -#: ../meldapp.py:939 -msgid "Start with no window open" -msgstr "Inicia sense obrir cap finestra" +#: ../meld/preferences.py:49 +msgid "label" +msgstr "etiqueta" -#: ../meldapp.py:940 -#, python-format -msgid "Start with Version Control browser in '%s'" -msgstr "Inicia amb el navegador del control de versions a «%s»" +#: ../meld/preferences.py:49 +msgid "pattern" +msgstr "patró" -#: ../meldapp.py:941 -#, python-format -msgid "Start with Version Control diff of '%s'" -msgstr "" -"Inicia amb el navegador del control de versions mostrant les diferències de «%" -"s»" +#: ../meld/preferences.py:165 +msgid "Only available if you have gnome-python-desktop installed" +msgstr "Només està disponible si teniu el gnome-python-desktop instal·lat" -#: ../meldapp.py:942 -msgid "Start with 2 or 3 way file comparison" -msgstr "Inicia amb una comparació de 2 o 3 fitxers" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:311 +msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +msgstr "Còpies de seguretat\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -#: ../meldapp.py:943 -msgid "Start with 2 or 3 way directory comparison" -msgstr "Inicia una comparació de 2 o 3 directoris" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:313 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" +"Metadades específiques del SO\t0\t.DS_Store ._* .Spotlight-V100 .Trashes " +"Thumbs.db Desktop.ini\n" -#: ../meldapp.py:950 -msgid "Meld is a file and directory comparison tool." -msgstr "El Meld és una eina de comparació de fitxers i directoris." +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:315 +#, python-format +msgid "Version Control\t1\t%s\n" +msgstr "Control de versions\t1\t%s\n" -#: ../meldapp.py:953 -msgid "Set label to use instead of file name" -msgstr "Estableix l'etiqueta a emprar en lloc del nom del fitxer" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:317 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +msgstr "Binaris\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" -#: ../meldapp.py:955 -msgid "Automatically compare all differing files on startup" -msgstr "Compara tots els fitxers diferents en iniciar el programa" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:319 +msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +msgstr "Multimèdia\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" -#: ../meldapp.py:956 ../meldapp.py:957 ../meldapp.py:958 ../meldapp.py:959 -msgid "Ignored for compatibility" -msgstr "Ignorat per compatibilitat" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:321 +msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +msgstr "Paraules clau del CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -#: ../meldapp.py:962 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "" -"Crea una pestanya de diferències per a un màxim de 3 fitxers o directoris " -"especificats." +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:323 +msgid "C++ comment\t0\t//.*\n" +msgstr "Comentari de C++\t0\t//.*\n" -#: ../meldapp.py:966 -msgid "Invalid number of arguments supplied for --diff." -msgstr "S'ha especificat un nombre d'arguments incorrecte per a --diff." +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:325 +msgid "C comment\t0\t/\\*.*?\\*/\n" +msgstr "Comentari de C\t0\t/\\*.*?\\*/\n" -#: ../meldapp.py:969 -#, python-format -msgid "Wrong number of arguments (Got %i)" -msgstr "Nombre d'arguments incorrecte (se n'han rebut %i)" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:327 +msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +msgstr "Tot els espais blancs\t0\t[ \\t\\r\\f\\v]*\n" -#: ../melddoc.py:46 -msgid "untitled" -msgstr "sense títol" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:329 +msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +msgstr "Espais en blanc a l'inici\t0\t^[ \\t\\r\\f\\v]*\n" -#. no common path. empty names get changed to "[None]" -#: ../misc.py:190 -msgid "[None]" -msgstr "[Cap]" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:331 +msgid "Script comment\t0\t#.*" +msgstr "Comentari d'script\t0\t#.*" -#: ../vcview.py:127 -msgid "_Commit" -msgstr "_Confirma els canvis" +#: ../meld/vcview.py:165 +msgid "Co_mmit" +msgstr "Confir_ma els canvis" -#: ../vcview.py:127 +#: ../meld/vcview.py:165 msgid "Commit" msgstr "Confirma els canvis" -#. FIXME: popup used to use gtk.STOCK_GO_BACK -#: ../vcview.py:128 +#: ../meld/vcview.py:166 msgid "_Update" msgstr "Act_ualitza" -#: ../vcview.py:128 +#: ../meld/vcview.py:166 msgid "Update" msgstr "Actualitza" -#. FIXME: popup used to use gtk.STOCK_GO_FORWARD -#: ../vcview.py:129 -msgid "_Add" -msgstr "_Afegeix" - -#: ../vcview.py:129 +#: ../meld/vcview.py:167 msgid "Add to VC" msgstr "Afegeix al control de versions" -#. FIXME: popup used to use gtk.STOCK_ADD -#: ../vcview.py:130 -msgid "Add _Binary" -msgstr "Afegeix com a fitxer _binari" - -#: ../vcview.py:130 -msgid "Add binary to VC" -msgstr "Afegeix com a fitxer binari al control de versions" - -#. FIXME: stock is inconsistent with other VC actions -#: ../vcview.py:131 -msgid "_Remove" -msgstr "Sup_rimeix" - -#: ../vcview.py:131 +#: ../meld/vcview.py:168 msgid "Remove from VC" msgstr "Suprimeix del control de versions" -#. FIXME: popup used to use gtk.STOCK_REMOVE -#: ../vcview.py:132 +#: ../meld/vcview.py:169 msgid "_Resolved" msgstr "_Resolt" -#: ../vcview.py:132 +#: ../meld/vcview.py:169 msgid "Mark as resolved for VC" msgstr "Marca-ho com a resolt per al control de versions" -#: ../vcview.py:133 +#: ../meld/vcview.py:170 msgid "Revert to original" msgstr "Reverteix a l'original" -#: ../vcview.py:134 +#: ../meld/vcview.py:171 msgid "Delete locally" msgstr "Suprimeix localment" -#: ../vcview.py:138 +#: ../meld/vcview.py:175 msgid "_Flatten" -msgstr "_Aplanar" +msgstr "_Aplana" -#: ../vcview.py:138 +#: ../meld/vcview.py:175 msgid "Flatten directories" -msgstr "Directoris aplanats" +msgstr "Aplana els directoris" -#: ../vcview.py:139 +#: ../meld/vcview.py:176 msgid "_Modified" msgstr "_Modificat" -#: ../vcview.py:140 +#: ../meld/vcview.py:177 msgid "_Normal" msgstr "_Normal" -#: ../vcview.py:140 +#: ../meld/vcview.py:177 msgid "Show normal" msgstr "Mostra el normal" -#: ../vcview.py:141 +#: ../meld/vcview.py:178 msgid "Non _VC" msgstr "No controlat pel control de _versions" -#: ../vcview.py:141 +#: ../meld/vcview.py:178 msgid "Show unversioned files" msgstr "Mostra els fitxers sense versionat" -#: ../vcview.py:142 +#: ../meld/vcview.py:179 msgid "Ignored" msgstr "Ignorat" -#: ../vcview.py:142 +#: ../meld/vcview.py:179 msgid "Show ignored files" msgstr "Mostra els fitxers ignorats" -#: ../vcview.py:180 +#: ../meld/vcview.py:230 ../meld/vcview.py:378 msgid "Location" msgstr "Ubicació" -#: ../vcview.py:181 +#: ../meld/vcview.py:231 msgid "Status" msgstr "Estat" -#: ../vcview.py:182 +#: ../meld/vcview.py:232 msgid "Rev" msgstr "Revisió" -#: ../vcview.py:184 +#: ../meld/vcview.py:233 +msgid "Tag" +msgstr "Etiqueta" + +#: ../meld/vcview.py:234 msgid "Options" msgstr "Opcions" -#: ../vcview.py:230 +#: ../meld/vcview.py:296 msgid "Choose one Version Control" msgstr "Trieu un control de versions" -#: ../vcview.py:231 +#: ../meld/vcview.py:297 msgid "Only one Version Control in this directory" msgstr "Només hi ha un control de versions en aquest directori" -#: ../vcview.py:316 +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:318 +#, python-format +msgid "%s Not Installed" +msgstr "%s no està instal·lat" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:322 +msgid "Invalid Repository" +msgstr "El dipòsit no és vàlid" + +#: ../meld/vcview.py:331 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:378 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../meld/vcview.py:421 msgid "(Empty)" msgstr "(Buit)" -#: ../vcview.py:349 +#: ../meld/vcview.py:453 #, python-format msgid "[%s] Fetching differences" msgstr "[%s] S'estan obtenint les diferències" -#: ../vcview.py:356 +#: ../meld/vcview.py:466 #, python-format msgid "[%s] Applying patch" msgstr "[%s] S'està aplicant el pedaç" -#: ../vcview.py:360 -msgid "No differences found." -msgstr "No s'ha trobat cap diferència." - -#: ../vcview.py:439 -msgid "Select some files first." -msgstr "Primer seleccioneu alguns fitxers." +#: ../meld/vcview.py:669 +msgid "Patch tool not found" +msgstr "No s'ha trobat l'eina patch" -#: ../vcview.py:505 +#: ../meld/vcview.py:670 #, python-format msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" " +"Meld needs the patch tool to be installed to perform comparisons in " +"%s repositories. Please install patch and try again." msgstr "" -"\n" -" Ha fallat la invocació de l'ordre «patch».\n" -" \n" -" És possible que no tingueu instal·lat el \n" -" programa «GNU patch», o que estigueu \n" -" utilitzant una versió de proves de %s.\n" -" \n" -" Hauríeu d'enviar un correu electrònic \n" -" d'informe d'error a:\n" -" meld-list@gnome.org\n" -" \n" -" I que contingui la informació següent:\n" -" \n" -" - versió del Meld: «%s»\n" -" - tipus de control de versions: «%s»\n" -" - versió del control de versions: «X.Y.Z»\n" -" - el que mostri l'intèrpret d'ordres \n" -" per a «%s fitxer.txt»\n" -" - ordre patch: «%s»\n" -" " +"Per poder fer comparacions en %s repositoris, el Meld necessita que estigui " +"instal·lada l'eina patch. Instal·leu-la i torneu-ho a provar." -#. These are the possible states of files. Be sure to get the colons correct. -#: ../vc/_vc.py:40 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" -"Missing" +#: ../meld/vcview.py:710 +msgid "Error fetching original comparison file" msgstr "" -"Ignorat:No versionat:::Error::Afegit de nou:Modificat:Conflicte:" -"Suprimit:Falta" +"S'ha produït un error en intentar obtenir el fitxer de comparació original" + +#: ../meld/vcview.py:711 +msgid "" +"Meld couldn't obtain the original version of your comparison file. If you " +"are using the most recent version of Meld, please report a bug, including as " +"many details as possible." +msgstr "" +"El Meld no ha pogut obtenir la versió original del fitxer de comparació. Si " +"esteu utilitzant la versió més recent del Meld, informeu de l'error, " +"incloent tantes dades com sigui possible." + +#: ../meld/vcview.py:719 +msgid "Report a bug" +msgstr "Informeu d'un error" -#: ../vc/cvs.py:151 +#: ../meld/ui/findbar.py:150 #, python-format msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" +"Regular expression error\n" +"'%s'" msgstr "" -"S'ha produït un error en convertir en expressió regular\n" -"El patró era «%s»\n" -"L'error foufoufoufoufoufoufoufou «%s»" - -#~ msgid "The regular expression '%s' was not found." -#~ msgstr "No s'ha trobat l'expressió regular «%s»." - -#~ msgid "The text '%s' was not found." -#~ msgstr "No s'ha trobat el text «%s»." - -#~ msgid "Find" -#~ msgstr "Cerca" - -#~ msgid "Match _entire word only" -#~ msgstr "Només coincideixen paraules s_enceres" - -#~ msgid "_Wrap around" -#~ msgstr "_Torna al principi en arribar al final de fitxer" - -#~ msgid "" -#~ "Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" -#~ msgstr "" -#~ "Control de versió\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory " -#~ "RCS\n" - -#~ msgid "VC chooser" -#~ msgstr "Seleccionador de control de versions" - -#~ msgid "Pick one source control plugin" -#~ msgstr "Escolliu un connector de control de versions" - -#~ msgid "Invoking patch failed, you need GNU patch." -#~ msgstr "No s'ha trobat l'ordre «patch», necessiteu el patch del GNU." - -#~ msgid "(gnome-default-editor)" -#~ msgstr "(editor-predeterminat-gnome)" - -#~ msgid "Save the current file with a different name" -#~ msgstr "Desa el fitxer actual amb un nom diferent" - -#~ msgid "" -#~ "Spaces instead of tab is only available if you have gnome-python-desktop " -#~ "installed." -#~ msgstr "" -#~ "La utilització d'espais en lloc de tabulacions només està disponible si " -#~ "teniu instal·lat el gnome-python-desktop." - -#~ msgid "" -#~ "Syntax highlighting is only available if you have gnome-python-desktop " -#~ "installed." -#~ msgstr "" -#~ "L'acoloriment de sintaxi només està disponible si teniu instal·lat el " -#~ "gnome-python-desktop." - -#~ msgid "" -#~ "Meld %s\n" -#~ "Written by Stephen Kennedy " -#~ msgstr "" -#~ "Meld %s\n" -#~ "Escrit per l'Stephen Kennedy " - -#~ msgid "Mailing _List" -#~ msgstr "_Llista de correu" - -#~ msgid "Go to the Meld mailing list" -#~ msgstr "Vés a la llista de correu del Meld" - -#~ msgid "Compare" -#~ msgstr "Compara" - -#~ msgid "Edit" -#~ msgstr "Edita" - -#~ msgid "Copy All To _Left" -#~ msgstr "Copia-ho tot a l'_esquerra" - -#~ msgid "Copy All To _Right" -#~ msgstr "Copia-ho tot a la _dreta" - -#~ msgid "Drawing Style" -#~ msgstr "Estil de dibuix" - -#~ msgid "Saving" -#~ msgstr "Desament" - -#~ msgid "Toolbar Appearance" -#~ msgstr "Aparença de la barra d'eines" - -#~ msgid "Whitespace" -#~ msgstr "Espai en blanc" - -#~ msgid "Compare" -#~ msgstr "Comparació" - -#~ msgid "Display" -#~ msgstr "Visualització" - -#~ msgid "Editor" -#~ msgstr "Editor" - -#~ msgid "Encoding" -#~ msgstr "Codificació" - -#~ msgid "File Filters" -#~ msgstr "Filtres de fitxer" - -#~ msgid "Text Filters" -#~ msgstr "Filtres de text" - -#~ msgid "" -#~ "Choose how the central bar of the diff viewer is drawn. You may wish to " -#~ "choose a simpler mode if you find scrolling is slow." -#~ msgstr "" -#~ "Escolliu com s'ha de dibuixar la barra central del visualitzador de " -#~ "diferències. Podeu escollir un mode més senzill si trobeu que el " -#~ "desplaçament és lent." - -#~ msgid "Curved: Filled Curves" -#~ msgstr "Corbat: corbes plenes" - -#~ msgid "Display" -#~ msgstr "Visualització" - -#~ msgid "Down" -#~ msgstr "Avall" - -#~ msgid "Gnome Default" -#~ msgstr "Predeterminat del GNOME" - -#~ msgid "Icons Only" -#~ msgstr "Només les icones" - -#~ msgid "Ignore changes in amount of white space" -#~ msgstr "Ignora els canvis en el nombre d'espais en blanc" - -#~ msgid "" -#~ "Ignore changes in case; consider upper and lower-case letters equivalent" -#~ msgstr "" -#~ "Ignora els canvis entre majúscules i minúscules; considera els dos tipus " -#~ "de caràcters equivalents" - -#~ msgid "Ignore changes that just insert or delete blank lines" -#~ msgstr "" -#~ "Ignora els canvis que només insereixin o suprimeixin línies en blanc" - -#~ msgid "Redo" -#~ msgstr "Refés" - -#~ msgid "Save" -#~ msgstr "Desa" - -#~ msgid "Save _As" -#~ msgstr "_Anomena i desa" - -#~ msgid "Save in UTF-8 encoding" -#~ msgstr "Desa en codificació UTF-8" - -#~ msgid "Save in the files original encoding" -#~ msgstr "Desa en la codificació original dels fitxers" - -#~ msgid "Simple: Lines only" -#~ msgstr "Senzill: només línies" - -#~ msgid "Solid: Filled Quadilaterals" -#~ msgstr "Sòlid: quadrilàters plens" - -#~ msgid "Stop" -#~ msgstr "Atura" - -#~ msgid "Text Beside Icons" -#~ msgstr "Text al costat de les icones" - -#~ msgid "Text Only" -#~ msgstr "Només text" - -#~ msgid "Text Under Icons" -#~ msgstr "Text sota les icones" - -#~ msgid "Undo" -#~ msgstr "Desfés" - -#~ msgid "Up" -#~ msgstr "Amunt" - -#~ msgid "Whitespace is significant" -#~ msgstr "Tingues en compte els espais en blanc" - -#~ msgid "Yes" -#~ msgstr "Sí" - -#~ msgid "_Down" -#~ msgstr "_Avall" - -#~ msgid "_Logo" -#~ msgstr "_Logotip" - -#~ msgid "_Save" -#~ msgstr "_Desa" - -#~ msgid "_Stop" -#~ msgstr "_Atura" - -#~ msgid "_Up" -#~ msgstr "A_munt" - -#~ msgid "Remove _Locally" -#~ msgstr "Suprimeix _localment" - -#~ msgid "" -#~ "Due to incompatible API changes some functions may not operate as " -#~ "expected." -#~ msgstr "" -#~ "Degut a canvis incompatibles en l'API, algunes funcions potser no " -#~ "funcionaran com s'espera." - -#~ msgid "Global options" -#~ msgstr "Opcions globals" - -#~ msgid "Update Options" -#~ msgstr "Opcions d'actualització" - -#~ msgid "CVS" -#~ msgstr "CVS" - -#~ msgid "CVS" -#~ msgstr "CVS" - -#~ msgid "CVS binary" -#~ msgstr "Fitxer binari del CVS" - -#~ msgid "Create missing directories (-d)" -#~ msgstr "Crea els directoris que faltin (-d)" - -#~ msgid "Ignore .cvsrc (-f)" -#~ msgstr "Ignora el fitxer .cvsrc (-f)" - -#~ msgid "Locate CVS binary : Meld" -#~ msgstr "Localitza el fitxer binari del CVS : Meld" - -#~ msgid "My Directory" -#~ msgstr "El meu directori" - -#~ msgid "Original Directory" -#~ msgstr "Directori original" - -#~ msgid "Original File" -#~ msgstr "Fitxer original" - -#~ msgid "Other Directory" -#~ msgstr "L'altre directori" - -#~ msgid "Other File" -#~ msgstr "L'altre fitxer" - -#~ msgid "Prune empty directories (-P)" -#~ msgstr "Suprimeix els directoris buits (-P)" - -#~ msgid "Quiet mode (-q)" -#~ msgstr "Mode silenciós (-q)" - -#~ msgid "Use Compression (-z)" -#~ msgstr "Comprimeix (-z)" - -#~ msgid "[%s] Scanning" -#~ msgstr "[%s] S'està escanejant" - -#~ msgid "" -#~ "second,seconds:minute,minutes:hour,hours:day,days:week,weeks:month,months:" -#~ "year,years" -#~ msgstr "" -#~ "segon,segons:minut,minuts:hora,hores:dia,dies:setmana,setmanes:mes,mesos:" -#~ "any,anys" - -#~ msgid "" -#~ "Could not open '%s' for reading.\n" -#~ "\n" -#~ "The error was:\n" -#~ "%s" -#~ msgstr "" -#~ "No s'ha pogut obrir «%s» per llegir.\n" -#~ "\n" -#~ "L'error era:\n" -#~ "%s" - -#~ msgid "Meld requires a recent version of pygtk." -#~ msgstr "El meld necessita una versió recent de pygtk." - -#~ msgid "pygtk-%s or higher is recommended." -#~ msgstr "Es recomana el pygtk-%s o superior." - -#~ msgid "Meld works best with pygtk-%s or higher. (found %s)" -#~ msgstr "" -#~ "El Meld funciona millor amb el pygtk-%s o superior (s'ha trobat el %s)" - -#~ msgid "folder" -#~ msgstr "carpeta" - -#~ msgid "nonexistant" -#~ msgstr "inexistent" - -#~ msgid "" -#~ "Meld is a file and directory comparison tool. Usage:\n" -#~ "\n" -#~ " meld Start with no windows open\n" -#~ " meld Start with CVS browser in 'dir'\n" -#~ " meld Start with CVS diff of 'file'\n" -#~ " meld [file] Start with 2 or 3 way file comparison\n" -#~ " meld [dir] Start with 2 or 3 way directory " -#~ "comparison\n" -#~ "\n" -#~ "For more information choose help -> contents.\n" -#~ "Report bugs at http://bugzilla.gnome.org/buglist.cgi?product=meld\n" -#~ "stevek@gnome.org\n" -#~ msgstr "" -#~ "El Meld és una eina de comparació de fitxers i directoris. Forma d'ús:\n" -#~ "\n" -#~ " meld Inici sense finestres obertes\n" -#~ " meld Inici amb el navegador de CVS al " -#~ "«directori»\n" -#~ " meld Inici amb les diferències CVS de «fitxer»\n" -#~ " meld [fitx] Inici amb comparació entre 2 o 3 fitxers\n" -#~ " meld [dir] Inici amb comparació entre 2 o 3 " -#~ "directoris\n" -#~ "\n" -#~ "Per a més informació escolliu ajuda -> continguts.\n" -#~ "Informeu dels errors a http://bugzilla.gnome.org/buglist.cgi?" -#~ "product=meld\n" -#~ "stevek@gnome.org\n" - -#~ msgid "*" -#~ msgstr "*" - -#~ msgid "Diff Options" -#~ msgstr "Opcions del diff" - -#~ msgid "Diff selected" -#~ msgstr "Diff seleccionat" - -#~ msgid "Show non-CVS" -#~ msgstr "Mostra el text no CVS" - -#~ msgid "_Diff" -#~ msgstr "_Diferències" - -#~ msgid "Copy left" -#~ msgstr "Copia a l'esquerra" - -#~ msgid "Copy right" -#~ msgstr "Copia a la dreta" - -#~ msgid "Diff" -#~ msgstr "Diferències" - -#~ msgid " spaces." -#~ msgstr " espais." - -#~ msgid "Diff" -#~ msgstr "Diferència" +"S'ha produït un error en l'expressió regular\n" +"«%s»" -#~ msgid "CVS view" -#~ msgstr "Visualització CVS" +#: ../meld/ui/historyentry.py:296 +msgid "_Browse..." +msgstr "_Navega..." -#~ msgid "Edit menu popup invokes" -#~ msgstr "El menú emergent d'edició invoca" +#: ../meld/ui/historyentry.py:304 +msgid "Path" +msgstr "Camí" -#~ msgid "New..." -#~ msgstr "Nou..." +#: ../meld/ui/historyentry.py:305 +msgid "Path to file" +msgstr "Camí al fitxer" -#~ msgid "SVN Directory" -#~ msgstr "Directori SVN" +#: ../meld/ui/historyentry.py:306 +msgid "Pop up a file selector to choose a file" +msgstr "Mostra un selector de fitxers per a escollir un fitxer" -#~ msgid "SVN view" -#~ msgstr "Visualització SVN" +#: ../meld/ui/historyentry.py:444 +msgid "Select directory" +msgstr "Seleccioneu el directori" -#~ msgid "Tabs equivalent to " -#~ msgstr "Pestanyes equivalents a " +#: ../meld/ui/historyentry.py:448 +msgid "Select file" +msgstr "Seleccioneu el fitxer" -#~ msgid "_SVN Browser" -#~ msgstr "Navegador _SVN" +#: ../meld/ui/notebooklabel.py:63 +msgid "Close tab" +msgstr "Tanca la pestanya" -#~ msgid "http://meld.sourceforge.net" -#~ msgstr "http://meld.sourceforge.net" +#: ../meld/vc/_vc.py:45 +msgid "Merged" +msgstr "Fusionat" + +#: ../meld/vc/_vc.py:45 +msgid "Base" +msgstr "Base" + +#: ../meld/vc/_vc.py:45 +msgid "Local" +msgstr "Local" + +#: ../meld/vc/_vc.py:45 +msgid "Remote" +msgstr "Remot" -#~ msgid "utf8 iso8859" -#~ msgstr "utf8 iso8859" +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:51 +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" +msgstr "" +"Ignorat:No versionat:::Error::Afegit de nou:Modificat:Conflicte:Suprimit:" +"Falta:Absent" -#~ msgid "Save File 1" -#~ msgstr "Desa el fitxer 1" +#: ../meld/vc/cvs.py:181 +#, python-format +msgid "" +"Error converting to a regular expression\n" +"The pattern was '%s'\n" +"The error was '%s'" +msgstr "" +"S'ha produït un error en convertir en expressió regular\n" +"El patró era «%s»\n" +"L'error fou «%s»" -#~ msgid "Save File 2" -#~ msgstr "Desa el fitxer 2" +#: ../meld/vc/git.py:218 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "S'ha canviat el mode de %s a %s" -#~ msgid "Save File 3" -#~ msgstr "Desa el fitxer 3" +#~ msgid "File filters" +#~ msgstr "Filtres de fitxer" diff -Nru meld-1.5.3/po/cs.po meld-3.11.0/po/cs.po --- meld-1.5.3/po/cs.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/cs.po 2014-02-22 03:14:50.000000000 +0000 @@ -1,321 +1,837 @@ # Czech translation of meld. # Copyright (C) 2003, 2004, 2005, 2008, 2009, 2010, 2011 the author(s) of meld. -# Copyright (C) 2003, 2004, 2005 Miloslav Trmac . # This file is distributed under the same license as the meld package. # # Miloslav Trmac , 2003, 2004, 2005. # Petr Kovar , 2008, 2009, 2010, 2011. +# Marek Černocký , 2011, 2012, 2013, 2014. # msgid "" msgstr "" "Project-Id-Version: meld\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-12-09 23:15+0000\n" -"PO-Revision-Date: 2011-12-14 10:03+0100\n" -"Last-Translator: Petr Kovar \n" +"POT-Creation-Date: 2014-02-08 23:02+0000\n" +"PO-Revision-Date: 2014-02-09 09:27+0100\n" +"Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" +"Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: cs\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Virtaal 0.6.1\n" +"X-Generator: Gtranslator 2.91.6\n" -#: ../bin/meld:96 +#: ../bin/meld:119 msgid "Cannot import: " msgstr "Nelze importovat: " -#: ../bin/meld:99 +#: ../bin/meld:122 #, c-format msgid "Meld requires %s or higher." msgstr "Meld vyžaduje %s nebo vyšší." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Porovnává a slučuje soubory" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Prohlížeč rozdílů" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Prohlížeč rozdílů Meld" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Porovnává a slučuje soubory" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Meld je vizuální nástroj pro práci s rozdíly (diff) a slučování (merge). " +"Míří na vývojáře, kterým pomáhá porovnávat soubory, složky a projekty " +"používající správu verzí. Poskytuje dvou a třícestné porovnání jak souborů, " +"tak složek a podporuje řadu systémů pro správu verzí, včetně Git, Mercurial, " +"Bazaar a Subversion." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" +"Pomocí aplikace Meld můžete kontrolovat změny kódu, pochopit jednotlivé " +"záplaty a řešit konflikty při rozsáhlém slučování více bezbolestně." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Definice porovnávání Meld" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Výchozí velikost okna" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +msgid "Show toolbar" +msgstr "Zobrazovat nástrojovou lištu" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Když je zapnuto, je nástrojová lišta v okně viditelná." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +msgid "Show statusbar" +msgstr "Zobrazovat stavovou lištu" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Když je zapnuto, je stavová lišta v okně viditelná." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +msgid "Automatically detected text encodings" +msgstr "Automaticky zjišťovat kódování textu" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Tato kódování textu budou automaticky použita (v daném pořadí) k pokusům " +"dekódovat načítané textové soubory." + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Šířka stupně odsazení" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "Počet mezer použitých pro jeden stupeň odsazení" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "Zda odsazovat pomocí mezer nebo tabulátorů" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" +"Když je zapnuto, budou se pro nová odsazení používat mezery namísto " +"tabulátorů." + +#: ../data/org.gnome.meld.gschema.xml.h:12 +msgid "Show line numbers" +msgstr "Zobrazovat čísla řádků" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" +"Když je zapnuto, budou se po boku porovnávaných souborů zobrazovat čísla " +"řádků." + +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Zvýrazňovat syntaxe" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Zda v porovnání zvýrazňovat syntaxe. Vzhledem k tomu, že Meld má vlastní " +"barevné zvýrazňování, je ve výchozím stavu vypnuto." + +#: ../data/org.gnome.meld.gschema.xml.h:16 +msgid "Displayed whitespace" +msgstr "Viditelné bílé znaky" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Výběr typů jednotlivých bílých znaků, které se mají zobrazovat. Možné " +"hodnoty jsou „space“ (mezera), „tab“ (tabulátor), „newline“ (odřádkování) a " +"„nbsp“ (nezalomitelná mezera)." + +#: ../data/org.gnome.meld.gschema.xml.h:18 +msgid "Wrap mode" +msgstr "Režim zalamování" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Řádky v porovnání souborů budou zalamovány podle tohoto nastavení, a to buď " +"vůbec („none“), za libovolným znakem („char“) nebo na koncích slov („word“)." + +#: ../data/org.gnome.meld.gschema.xml.h:20 +msgid "Highlight current line" +msgstr "Zvýrazňovat aktuální řádek" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "Když je zapnuto, bude řádek s kurzorem v porovnání zvýrazněn." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +msgid "Use the system default monospace font" +msgstr "Používat výchozí systémové písmo s pevnou šířkou" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Když je vypnuto, použije se namísto systémového písma s pevnou šířkou " +"vlastní definice písma." + +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Vlastní písmo" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"Vlastní písmo, které se má používat; uloženo jako řetězec a zpracováno jako " +"popis písma Pango." + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Při porovnávání souborů ignorovat prázdné řádky" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Když je zapnuto, budou prázdné řádky ve zvýrazňování změn mezi soubory " +"vynechány." + +#: ../data/org.gnome.meld.gschema.xml.h:28 +msgid "Use the system default editor" +msgstr "Používat výchozí editor systému" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Když je zapnuto, použije se při externím otevírání souborů určený vlastní " +"editor namísto systémového editoru." + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "Příkaz pro spuštění vlastního editoru" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"Příkaz sloužící ke spuštění vlastního editoru. Podporovány jsou do jisté " +"míry šablony – v tuto chvíli jsou rozpoznávány symboly „{file}“ (soubor) a " +"„{line}“ (řádek)." + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Zobrazované sloupce" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "Seznam názvů sloupců v porovnávání složek a zda by měly být zobrazeny." + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Ignorovat symbolické odkazy" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Když je zapnuto, nenásledují se při porovnávání složek symbolické odkazy " +"během procházení stromu složek." + +#: ../data/org.gnome.meld.gschema.xml.h:36 +msgid "Use shallow comparison" +msgstr "Používat povrchní porovnání" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Když je zapnuto, porovnávání složek porovnává soubory pouze podle velikosti " +"a času mtime. Soubory jsou považovány za identické, když mají stejnou " +"velikost i čas, v opačném případě za rozdílné." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +msgid "File timestamp resolution" +msgstr "Přesnost časového razítka" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" +"Když se provádí porovnání na základě času mtime, je tento údaj brán za " +"nejmenší rozdíl v nanosekundách mezi dvěma soubory, po jehož překročení jsou " +"jejich časy považovány za rozdílné. To je užitečné při porovnávání souborů " +"mezi souborovými systémy, které mají různou přesnost časových razítek." + +#: ../data/org.gnome.meld.gschema.xml.h:40 +msgid "File status filters" +msgstr "Filtry stavu souboru" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" +"Seznam stavů použitých k filtrování viditelných souborů v porovnávání složek." + +#: ../data/org.gnome.meld.gschema.xml.h:42 +msgid "Show the version control console output" +msgstr "Zobrazovat výstup konzole správy verzí" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" +"Když je zapnuto, bude v zobrazení správy verzí zobrazen výstup konzole, na " +"kterém uvidíte příkazy spouštěné pro jednotlivé operace správy verzí." + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Version control pane position" +msgstr "Umístění panelu správy verzí" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"This is the height of the main version control tree when the console pane is " +"shown." +msgstr "" +"Jde o výšku hlavního stromu správy verzí v případě, že je zobrazen panel " +"konzoly." + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Present version comparisons as left-local/right-remote" +msgstr "Zobrazovat porovnání verzí jako vlevo-místní/vpravo-vzdálené" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" +"Když je zapnuto, bude porovnávání správy verzí používat schéma vlevo-místní, " +"vpravo-vzdálené k určení pořadí, v jakém se mají soubory zobrazovat v " +"panelech. V opačném případe je použito schéma vlevo-jejich, vpravo-moje." + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Show margin in commit message editor" +msgstr "Zobrazovat okraj v editoru zpráv k zařazení" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" +"Když je zapnuto, bude zobrazeno vodítko, které ukazuje, na kterém sloupci je " +"okraj editoru zpráv popisujících zařazení ve správě verzí." + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Margin column in commit message editor" +msgstr "Sloupec okraje v editoru zpráv k zařazení" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" +"Sloupec, na kterém je okraj v editoru zpráv popisujících zařazení ve správě " +"verzí." + +#: ../data/org.gnome.meld.gschema.xml.h:52 +msgid "Automatically hard-wrap commit messages" +msgstr "Automaticky natvrdo zalamovat zprávy k zařazení" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" +"Když je zapnuto, bude editor zprávy popisující zařazení ve správě verzí před " +"zařazením zprávu natvrdo zalamovat (tj. vkládat zalomení řádku) na " +"definovaném sloupci." + +#: ../data/org.gnome.meld.gschema.xml.h:54 +msgid "Version control status filters" +msgstr "Filtry stavu správy verzí" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" +"Seznam stavů použitých k filtrování viditelných souborů v porovnávání správy " +"verzí." + +#: ../data/org.gnome.meld.gschema.xml.h:56 +msgid "Filename-based filters" +msgstr "Filtry názvů souborů" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" +"Seznam předdefinovaných filtrů názvů souborů. Když jsou aktivní, vynechají " +"odpovídající soubory z porovnání složek." + +#: ../data/org.gnome.meld.gschema.xml.h:58 +msgid "Text-based filters" +msgstr "Filtry textu" + +#: ../data/org.gnome.meld.gschema.xml.h:59 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" +"Seznam předdefinovaných filtrů textu založených na regulárních výrazech. " +"Když jsou aktivní, vynechají odpovídající texty z porovnání souborů. Text " +"bude sice i nadále zobrazen, ale nezasáhne do samotného porovnávání." + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "O aplikaci Meld" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Copyright © 2002 – 2009 Stephen Kennedy\n" +"Copyright © 2009 – 2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Webové stránky" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "" +"Miloslav Trmač \n" +"Petr Kovář \n" +"Marek Černocký " + +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "_Předvolby" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "Nápo_věda" + +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "O _aplikaci" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "U_končit" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Porovnat" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Porovnat vybrané soubory" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Kopírovat na_levo" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Kopírovat doleva" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Kopí_rovat napravo" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Kopírovat doprava" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Odstranit vybrané" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1409 +msgid "Hide" +msgstr "Skrýt" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Skrýt vybrané" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Ignorovat velikost písmen v názvu souboru" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Považovat názvy souborů, které se odlišují velikostí písmen, ale jinak jsou " +"stejné, za shodné" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Stejné" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Zobrazovat stejné" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Nové" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Zobrazovat nové" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Změněné" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Zobrazovat změněné" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Filtry" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Nastavte aktivní filtry" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Aktivní" +msgid "Editable List" +msgstr "Upravitelný seznam" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Přidat nový filtr" +msgid "Active" +msgstr "Aktivní" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Upravitelný seznam" +msgid "Column Name" +msgstr "Název sloupce" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "Přesunout _dolů" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Přidat" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:672 +msgid "_Remove" +msgstr "_Odstranit" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Přesunout položku nahoru" + +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "Přes_unout nahoru" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" msgstr "Přesunout položku dolů" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Přesunout položku nahoru" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Přesunout _dolů" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:158 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:355 +#: ../meld/vcview.py:185 msgid "Name" msgstr "Název" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Vzorek" -#: ../data/ui/EditableList.ui.h:10 +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Přidat nový filtr" + +#: ../data/ui/EditableList.ui.h:13 msgid "Remove selected filter" msgstr "Odstranit vybraný filtr" -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:122 -msgid "_Add" -msgstr "_Přidat" - -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:124 -msgid "_Remove" -msgstr "_Odstranit" - #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Uložit změněné soubory?" +msgid "Save changes to documents before closing?" +msgstr "Uložit změny, než dokument zavřete?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Některé soubory byly změněny.\n" -"Které z nich chcete uložit?" +msgid "If you don't save, changes will be permanently lost." +msgstr "Pokud se změny neuloží, budou trvale ztraceny." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Zavřít _bez uložení" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Zahodit změny" +msgid "_Cancel" +msgstr "_Zrušit" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "_Uložit vybrané" +msgid "_Save" +msgstr "_Uložit" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Do tohoto souboru nelze zapisovat. Kliknutím zde můžete tento soubor " +"odemknout a změny v něm provést, ale tyto změny budou muset být uloženy v " +"novém souboru." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Vrátit stav před neuložené změny v dokumentu?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Změny provedené v následujících dokumentech budou trvale ztraceny:\n" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "Re_gulární výraz" +msgid "_Replace" +msgstr "Nahradi_t" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "Nahradit _vše" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Nahradit _s" +msgid "_Previous" +msgstr "_Předchozí" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "Ce_lé slovo" +msgid "_Next" +msgstr "_Následující" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "_Rozlišovat velikost písmen" +msgid "Find:" +msgstr "Najít:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Následující" +msgid "Replace _with:" +msgstr "Nahra_dit za:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Předchozí" +msgid "_Match case" +msgstr "_Rozlišovat velikost písmen" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "Nahradi_t" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Ce_lé slovo" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Hledat" +msgid "Regular e_xpression" +msgstr "Re_gulární výraz" -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Zvolte soubory" - -#: ../data/ui/meldapp.ui.h:2 -#| msgid "" -#| "Copyright © 2002-2009 Stephen Kennedy\n" -#| "Copyright © 2009-2010 Kai Willadsen" -msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" -msgstr "" -"Copyright © 2002 – 2009 Stephen Kennedy\n" -"Copyright © 2009 – 2011 Kai Willadsen" - -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Složka" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Moje" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Původní" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Jiné" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Vybrat složku správy verzí" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Porovnávání _složek" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "Porovnávání _souborů" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "_Trojcestné porovnávání" - -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "_Prohlížeč správy verzí" - -#: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "" -"Miloslav Trmač \n" -"Petr Kovář " +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Prošlo přes okraj" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Kopírovat do schránky" +msgid "Format as Patch" +msgstr "Formátovat jako záplatu" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Vytvořit záplatu" +msgid "Use differences between:" +msgstr "Použít rozdíly mezi:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Vytvořit záplatu" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Levý a prostřední panel" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Prostřední a pravý panel" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Použít rozdíly mezi:" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "_Obrátit směr záplaty" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Kopírovat do schránky" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:119 +msgid "Save Patch" +msgstr "Uložení záplaty" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Zobrazení" +msgid "Left is remote, right is local" +msgstr "Levý je vzdálený, pravý je místní" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Nerozdělovat _slova na dva řádky" +msgid "Left is local, right is remote" +msgstr "Levý je místní, pravý je vzdálený" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Příkaz edito_ru:" +msgid "1ns (ext4)" +msgstr "1 ns (ext4)" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Editor" +msgid "100ns (NTFS)" +msgstr "100 ns (NTFS)" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Povolit zalamování _textu" +msgid "1s (ext2/ext3)" +msgstr "1 s (ext2/ext3)" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Kódování" +msgid "2s (VFAT)" +msgstr "2 s (VFAT)" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Externí editor" +msgid "Meld Preferences" +msgstr "Předvolby aplikace Meld" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filtry souborů" - -#: ../data/ui/preferences.ui.h:9 msgid "Font" msgstr "Písmo" +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "Po_užívat systémové písmo s pevnou šířkou" + #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Ignorovat změny, které přidávají nebo odstraňují prázdné řádky" +msgid "_Editor font:" +msgstr "Písmo _editoru:" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Ignorovat symbolické odkazy" +msgid "Display" +msgstr "Zobrazení" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Načítání" +msgid "_Tab width:" +msgstr "Šířka _tabulátoru:" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Předvolby aplikace Meld" +msgid "_Insert spaces instead of tabs" +msgstr "V_kládat mezery namísto tabulátorů" #: ../data/ui/preferences.ui.h:14 +msgid "Enable text _wrapping" +msgstr "Povolit zalamování _textu" + +#: ../data/ui/preferences.ui.h:15 +msgid "Do not _split words over two lines" +msgstr "Nerozdělovat _slova na dva řádky" + +#: ../data/ui/preferences.ui.h:16 +msgid "Highlight _current line" +msgstr "Zvýrazňovat _aktuální řádek" + +#: ../data/ui/preferences.ui.h:17 msgid "Show _line numbers" msgstr "Zobrazovat čís_la řádků" -#: ../data/ui/preferences.ui.h:15 +#: ../data/ui/preferences.ui.h:18 msgid "Show w_hitespace" msgstr "Zobrazovat _mezery" -#: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filtry textu" +#: ../data/ui/preferences.ui.h:19 +msgid "Use s_yntax highlighting" +msgstr "Používat zvýrazňování s_yntaxe" -#: ../data/ui/preferences.ui.h:17 +#: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Externí editor" + +#: ../data/ui/preferences.ui.h:21 msgid "Use _default system editor" msgstr "Používat výchozí e_ditor systému" -#: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Používat zvýrazňování s_yntaxe" +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Příkaz edito_ru:" -#: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Při načítání zkusit postupně tyto kodeky (např. utf8, iso8859)" +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Editor" -#: ../data/ui/preferences.ui.h:20 +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Povrchní porovnání" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "P_orovnávat soubory jen na základě velikosti a časového razítka" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "Přesnos_t časového razítka:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Symbolické odkazy" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Viditelné sloupce" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Porovnávání složek" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Porovnávání verzí" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "Z_da porovnávat revize souboru:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Zprávy o zařazování" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Zobrazit p_ravý okraj na:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Při zařazování automaticky za_lamovat řádky na pravém okraji" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Správa verzí" + +#: ../data/ui/preferences.ui.h:37 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " @@ -325,7 +841,11 @@ "Každý vzorek je seznamem zástupných znaků ve stylu shellu oddělovaný " "mezerami." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:104 +msgid "File Filters" +msgstr "Filtry souborů" + +#: ../data/ui/preferences.ui.h:39 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -334,154 +854,261 @@ "details." msgstr "" "Při porovnávání souborů můžete ignorovat některé typy změn. Každý vzorek je " -"regulární výraz pythonu, který nahrazuje odpovídající text prázdným řetězcem " -"před provedením porovnání. Pokud výraz obsahuje skupiny, jsou nahrazeny jen " -"skupiny. Více podrobností viz příručka uživatele." +"regulární výraz jazyka Python, který nahrazuje odpovídající text prázdným " +"řetězcem před provedením porovnání. Pokud výraz obsahuje skupiny, jsou " +"nahrazeny jen skupiny. Více podrobností viz příručka uživatele." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "Písmo _editoru:" +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Ignorovat změny, které přidávají nebo odstraňují prázdné řádky" -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "V_kládat mezery namísto tabulátorů" +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Filtry textu" -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "Šířka _tabulátoru:" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:582 +msgid "New comparison" +msgstr "Nové porovnání" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Porovnávání souborů" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Porovnávání složek" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Zobrazení správy verzí" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_Trojcestné porovnání" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Výběr třetího souboru" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Výběr druhého souboru" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Výběr prvního souboru" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Výběr první složky" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Výběr druhé složky" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Výběr třetí složky" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Výběr složky se správou verzí" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Prázdné porovnávání" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "P_orovnat" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "Po_užívat systémové písmo s pevnou šířkou" +#: ../data/ui/vcview.ui.h:3 +msgid "Co_mmit..." +msgstr "Zařa_dit…" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Commit souborů" +#: ../data/ui/vcview.ui.h:4 +msgid "Commit changes to version control" +msgstr "Zařadit změny do správy verzí" -#: ../data/ui/vcview.ui.h:2 -msgid "Log Message" -msgstr "Zpráva záznamu" +#: ../data/ui/vcview.ui.h:5 +msgid "_Update" +msgstr "Akt_ualizovat" -#: ../data/ui/vcview.ui.h:3 -msgid "Previous Logs" -msgstr "Předchozí záznamy" +#: ../data/ui/vcview.ui.h:6 +msgid "Update working copy from version control" +msgstr "Aktualizovat pracovní kopii ze správy verzí" + +#: ../data/ui/vcview.ui.h:7 +msgid "_Push" +msgstr "_Odeslat" + +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Odeslat místní změny na server" -#: ../data/ui/vcview.ui.h:4 -msgid "VC Log" -msgstr "Záznam správy verzí" +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Přidat do správy verzí" -#: ../meld/dirdiff.py:226 ../meld/vcview.py:119 -msgid "_Compare" -msgstr "_Porovnat" +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Odebrat ze správy verzí" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Označi_t jako vyřešené" -#: ../meld/dirdiff.py:226 ../meld/vcview.py:119 -msgid "Compare selected" -msgstr "Porovnat vybrané" +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Označit jako vyřešené ve vztahu ke správě verzí" -#: ../meld/dirdiff.py:227 -msgid "Copy _Left" -msgstr "Kopírovat na_levo" +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "_Vrátit zpět" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Vrátit pracovní kopii do původního stavu" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Smazat z pracovní kopie" + +#: ../data/ui/vcview.ui.h:18 +msgid "Console" +msgstr "Konzola" + +#: ../data/ui/vcview.ui.h:19 +msgid "Show or hide the version control console output pane" +msgstr "Zobrazit nebo skrýt panel s výstupem konzoly správy verzí" -#: ../meld/dirdiff.py:227 -msgid "Copy to left" -msgstr "Kopírovat doleva" +#: ../data/ui/vcview.ui.h:20 +msgid "_Flatten" +msgstr "Z_ploštit" -#: ../meld/dirdiff.py:228 -msgid "Copy _Right" -msgstr "Kopí_rovat napravo" +#: ../data/ui/vcview.ui.h:21 +msgid "Flatten directories" +msgstr "Zploštit složky" -#: ../meld/dirdiff.py:228 -msgid "Copy to right" -msgstr "Kopírovat doprava" +#: ../data/ui/vcview.ui.h:22 +msgid "_Modified" +msgstr "_Změněné" -#: ../meld/dirdiff.py:229 -msgid "Delete selected" -msgstr "Odstranit vybrané" +#: ../data/ui/vcview.ui.h:23 +msgid "Show modified files" +msgstr "Zobrazovat změněné soubory" -#: ../meld/dirdiff.py:230 ../meld/filediff.py:1157 -msgid "Hide" -msgstr "Skrýt" +#: ../data/ui/vcview.ui.h:24 +msgid "_Normal" +msgstr "_Normální" -#: ../meld/dirdiff.py:230 -msgid "Hide selected" -msgstr "Skrýt vybrané" +#: ../data/ui/vcview.ui.h:25 +msgid "Show normal files" +msgstr "Zobrazovat normální soubory" + +#: ../data/ui/vcview.ui.h:26 +msgid "Un_versioned" +msgstr "Ne_verzované" -#: ../meld/dirdiff.py:234 -msgid "Case" -msgstr "Velikost písmen" - -#: ../meld/dirdiff.py:234 -msgid "Ignore case of entries" -msgstr "Ignorovat velikost písmen" +#: ../data/ui/vcview.ui.h:27 +msgid "Show unversioned files" +msgstr "Zobrazovat soubory bez verzí" -#: ../meld/dirdiff.py:235 -msgid "Same" -msgstr "Stejné" +#: ../data/ui/vcview.ui.h:28 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Ignorované" -#: ../meld/dirdiff.py:235 -msgid "Show identical" -msgstr "Zobrazovat stejné" +#: ../data/ui/vcview.ui.h:29 +msgid "Show ignored files" +msgstr "Zobrazovat ignorované soubory" -#: ../meld/dirdiff.py:236 -msgid "New" -msgstr "Nové" +#: ../data/ui/vcview.ui.h:30 +msgid "Commit" +msgstr "Commit" -#: ../meld/dirdiff.py:236 -msgid "Show new" -msgstr "Zobrazovat nové" +#: ../data/ui/vcview.ui.h:31 +msgid "Commit Files" +msgstr "Commit souborů" -#: ../meld/dirdiff.py:237 -msgid "Modified" -msgstr "Změněné" +#: ../data/ui/vcview.ui.h:32 +msgid "Log Message" +msgstr "Zpráva záznamu" -#: ../meld/dirdiff.py:237 ../meld/vcview.py:132 -msgid "Show modified" -msgstr "Zobrazovat změněné" +#: ../data/ui/vcview.ui.h:33 +msgid "Previous logs:" +msgstr "Předchozí záznamy:" -#: ../meld/dirdiff.py:239 -msgid "Filters" -msgstr "Filtry" +#: ../data/ui/vcview.ui.h:34 +msgid "Co_mmit" +msgstr "Co_mmit" -#: ../meld/dirdiff.py:239 -msgid "Set active filters" -msgstr "Nastavte aktivní filtry" +#: ../data/ui/vcview.ui.h:35 +msgid "Console output" +msgstr "Výstup konzoly" + +#: ../data/ui/vcview.ui.h:36 +msgid "Push local commits to remote?" +msgstr "Odeslat místně zařazené na server?" + +#: ../data/ui/vcview.ui.h:37 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"Zařazené změny, které se mají odeslat jsou dány vaším systém správy verzí." + +#: ../data/ui/vcview.ui.h:38 +msgid "_Push commits" +msgstr "_Odeslat zařazené" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:373 +msgid "Size" +msgstr "Velikost" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:381 +msgid "Modification time" +msgstr "Čas změny" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:389 +msgid "Permissions" +msgstr "Oprávnění" -#: ../meld/dirdiff.py:354 +#: ../meld/dirdiff.py:548 #, python-format msgid "Hide %s" msgstr "Skrýt %s" -#: ../meld/dirdiff.py:457 ../meld/dirdiff.py:470 ../meld/vcview.py:306 -#: ../meld/vcview.py:334 +#: ../meld/dirdiff.py:677 ../meld/dirdiff.py:699 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Prochází se %s" -#: ../meld/dirdiff.py:569 +#: ../meld/dirdiff.py:828 #, python-format msgid "[%s] Done" msgstr "[%s] Hotovo" -#: ../meld/dirdiff.py:573 +#: ../meld/dirdiff.py:835 msgid "Multiple errors occurred while scanning this folder" msgstr "Při skenování této složky došlo k několika chybám" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:836 msgid "Files with invalid encodings found" msgstr "Nalezeny soubory s neplatným kódováním" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:576 +#: ../meld/dirdiff.py:838 msgid "Some files were in an incorrect encoding. The names are something like:" msgstr "" "Některé soubory měly neplatné kódování. Názvy jsou přibližně následující:" -#: ../meld/dirdiff.py:578 +#: ../meld/dirdiff.py:840 msgid "Files hidden by case insensitive comparison" msgstr "Soubory skryty porovnáním nerozlišujícím velikost písmen" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:580 +#: ../meld/dirdiff.py:842 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -489,16 +1116,17 @@ "Provádí se porovnání nerozlišující velikost písmen na systému souborů " "rozlišujícím velikost písmen. Některé soubory v této složce jsou skryté:" -#: ../meld/dirdiff.py:591 +#: ../meld/dirdiff.py:853 #, python-format msgid "'%s' hidden by '%s'" msgstr "„%s“ skryto v „%s“" -#: ../meld/dirdiff.py:616 ../meld/filediff.py:1008 ../meld/filediff.py:1161 +#: ../meld/dirdiff.py:878 ../meld/filediff.py:1102 ../meld/filediff.py:1240 +#: ../meld/filediff.py:1411 ../meld/filediff.py:1441 ../meld/filediff.py:1443 msgid "Hi_de" msgstr "_Skrýt" -#: ../meld/dirdiff.py:666 +#: ../meld/dirdiff.py:909 #, python-format msgid "" "'%s' exists.\n" @@ -507,246 +1135,208 @@ "„%s“ existuje.\n" "Přepsat?" -#: ../meld/dirdiff.py:673 -#, python-format -msgid "" -"Error copying '%s' to '%s'\n" -"\n" -"%s." -msgstr "" -"Chyba při kopírování „%s“ do „%s“\n" -"\n" -"%s." - -#: ../meld/dirdiff.py:691 ../meld/vcview.py:503 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"„%s“ je složkou.\n" -"Odstranit rekurzivně?" +#: ../meld/dirdiff.py:917 +msgid "Error copying file" +msgstr "Chyba při kopírování souboru" -#: ../meld/dirdiff.py:698 ../meld/vcview.py:508 +#: ../meld/dirdiff.py:918 #, python-format msgid "" -"Error removing %s\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Chyba při odstraňování %s\n" +"Nelze zkopírovat %s\n" +"do %s.\n" "\n" -"%s." +"%s" -#: ../meld/dirdiff.py:723 +#: ../meld/dirdiff.py:941 #, python-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "%i sekunda" -msgstr[1] "%i sekundy" -msgstr[2] "%i sekund" - -#: ../meld/dirdiff.py:724 -#, python-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "%i minuta" -msgstr[1] "%i minuty" -msgstr[2] "%i minut" - -#: ../meld/dirdiff.py:725 -#, python-format -msgid "%i hour" -msgid_plural "%i hours" -msgstr[0] "%i hodina" -msgstr[1] "%i hodiny" -msgstr[2] "%i hodin" - -#: ../meld/dirdiff.py:726 -#, python-format -msgid "%i day" -msgid_plural "%i days" -msgstr[0] "%i den" -msgstr[1] "%i dny" -msgstr[2] "%i dnů" - -#: ../meld/dirdiff.py:727 -#, python-format -msgid "%i week" -msgid_plural "%i weeks" -msgstr[0] "%i týden" -msgstr[1] "%i týdny" -msgstr[2] "%i týdnů" - -#: ../meld/dirdiff.py:728 -#, python-format -msgid "%i month" -msgid_plural "%i months" -msgstr[0] "%i měsíc" -msgstr[1] "%i měsíce" -msgstr[2] "%i měsíců" - -#: ../meld/dirdiff.py:729 -#, python-format -msgid "%i year" -msgid_plural "%i years" -msgstr[0] "%i rok" -msgstr[1] "%i roky" -msgstr[2] "%i let" +msgid "Error deleting %s" +msgstr "Chyba při mazání %s" -#: ../meld/filediff.py:294 -msgid "Format as patch..." +#: ../meld/filediff.py:231 +msgid "Format as Patch..." msgstr "Formátovat jako záplatu…" -#: ../meld/filediff.py:294 +#: ../meld/filediff.py:232 msgid "Create a patch using differences between files" msgstr "Vytvořit záplatu použitím rozdílů mezi soubory" -#: ../meld/filediff.py:295 -msgid "Previous conflict" +#: ../meld/filediff.py:234 +msgid "Save A_ll" +msgstr "Uložit _vše" + +#: ../meld/filediff.py:235 +msgid "Save all files in the current comparison" +msgstr "Uložit všechny soubory v aktuálním porovnávání" + +#: ../meld/filediff.py:238 +msgid "Revert files to their saved versions" +msgstr "Vrátit soubory k jejich uloženým verzím" + +#: ../meld/filediff.py:240 +msgid "Add Synchronization Point" +msgstr "Přidat synchronizační bod" + +#: ../meld/filediff.py:241 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Ručně přidat bod pro synchronizaci změn mezi soubory" + +#: ../meld/filediff.py:244 +msgid "Clear Synchronization Points" +msgstr "Vymazat synchronizační body" + +#: ../meld/filediff.py:245 +msgid "Clear manual change sychronization points" +msgstr "Vymazat ručně přidané synchronizační body" + +#: ../meld/filediff.py:247 +msgid "Previous Conflict" msgstr "Předchozí konflikt" -#: ../meld/filediff.py:295 +#: ../meld/filediff.py:248 msgid "Go to the previous conflict" msgstr "Přejít na předchozí konflikt" -#: ../meld/filediff.py:296 -msgid "Next conflict" +#: ../meld/filediff.py:250 +msgid "Next Conflict" msgstr "Následující konflikt" -#: ../meld/filediff.py:296 +#: ../meld/filediff.py:251 msgid "Go to the next conflict" msgstr "Přejít na následující konflikt" -#: ../meld/filediff.py:297 -msgid "Push to left" +#: ../meld/filediff.py:253 +msgid "Push to Left" msgstr "Zatlačit doleva" -#: ../meld/filediff.py:297 +#: ../meld/filediff.py:254 msgid "Push current change to the left" msgstr "Zatlačit aktuální změnu doleva" -#: ../meld/filediff.py:298 -msgid "Push to right" +#: ../meld/filediff.py:257 +msgid "Push to Right" msgstr "Zatlačit doprava" -#: ../meld/filediff.py:298 +#: ../meld/filediff.py:258 msgid "Push current change to the right" msgstr "Zatlačit aktuální změnu doprava" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:300 -msgid "Pull from left" +#: ../meld/filediff.py:262 +msgid "Pull from Left" msgstr "Vytáhnout zleva" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:263 msgid "Pull change from the left" msgstr "Vytáhnout změnu zleva" -#: ../meld/filediff.py:301 -msgid "Pull from right" +#: ../meld/filediff.py:266 +msgid "Pull from Right" msgstr "Vytáhnout zprava" -#: ../meld/filediff.py:301 +#: ../meld/filediff.py:267 msgid "Pull change from the right" msgstr "Vytáhnout změnu zprava" -#: ../meld/filediff.py:302 -msgid "Copy above left" +#: ../meld/filediff.py:269 +msgid "Copy Above Left" msgstr "Kopírovat z levé vrchní části" -#: ../meld/filediff.py:302 +#: ../meld/filediff.py:270 msgid "Copy change above the left chunk" msgstr "Kopírovat změnu nad levým blokem" -#: ../meld/filediff.py:303 -msgid "Copy below left" +#: ../meld/filediff.py:272 +msgid "Copy Below Left" msgstr "Kopírovat z levé spodní části" -#: ../meld/filediff.py:303 +#: ../meld/filediff.py:273 msgid "Copy change below the left chunk" msgstr "Kopírovat změnu pod levým blokem" -#: ../meld/filediff.py:304 -msgid "Copy above right" +#: ../meld/filediff.py:275 +msgid "Copy Above Right" msgstr "Kopírovat z pravé vrchní části" -#: ../meld/filediff.py:304 +#: ../meld/filediff.py:276 msgid "Copy change above the right chunk" msgstr "Kopírovat změnu nad pravým blokem" -#: ../meld/filediff.py:305 -msgid "Copy below right" +#: ../meld/filediff.py:278 +msgid "Copy Below Right" msgstr "Kopírovat z pravé spodní části" -#: ../meld/filediff.py:305 +#: ../meld/filediff.py:279 msgid "Copy change below the right chunk" msgstr "Kopírovat změnu pod pravým blokem" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:281 msgid "Delete" msgstr "Smazat" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:282 msgid "Delete change" msgstr "Smazat změnu" -#: ../meld/filediff.py:307 -msgid "Merge all changes from left" -msgstr "Sloučit veškeré změny zleva" +#: ../meld/filediff.py:284 +msgid "Merge All from Left" +msgstr "Sloučit vše zleva" -#: ../meld/filediff.py:307 +#: ../meld/filediff.py:285 msgid "Merge all non-conflicting changes from the left" msgstr "Sloučit veškeré změny bez konfliktů zleva" -#: ../meld/filediff.py:308 -msgid "Merge all changes from right" -msgstr "Sloučit veškeré změny zprava" +#: ../meld/filediff.py:287 +msgid "Merge All from Right" +msgstr "Sloučit vše zprava" -#: ../meld/filediff.py:308 +#: ../meld/filediff.py:288 msgid "Merge all non-conflicting changes from the right" msgstr "Sloučit veškeré změny bez konfliktů zprava" -#: ../meld/filediff.py:309 -msgid "Merge all non-conflicting" -msgstr "Sloučit vše bez konfliktů" +#: ../meld/filediff.py:290 +msgid "Merge All" +msgstr "Sloučit vše" -#: ../meld/filediff.py:309 +#: ../meld/filediff.py:291 msgid "Merge all non-conflicting changes from left and right panes" msgstr "Sloučit veškeré změny bez konfliktů z levého a pravého panelu" -#: ../meld/filediff.py:310 -msgid "Cycle through documents" -msgstr "Střídat dokumenty" +#: ../meld/filediff.py:295 +msgid "Cycle Through Documents" +msgstr "Přepnout mezi dokumenty" -#: ../meld/filediff.py:310 +#: ../meld/filediff.py:296 msgid "Move keyboard focus to the next document in this comparison" msgstr "Přepnout se s klávesnicí na další dokument v tomto porovnání" -#: ../meld/filediff.py:314 -msgid "Lock scrolling" +#: ../meld/filediff.py:302 +msgid "Lock Scrolling" msgstr "Uzamknout posouvání" -#: ../meld/filediff.py:315 +#: ../meld/filediff.py:303 msgid "Lock scrolling of all panes" msgstr "Uzamknout posouvání všech panelů" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:490 msgid "INS" msgstr "VKL" -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:490 msgid "OVR" msgstr "PŘE" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:398 +#: ../meld/filediff.py:492 #, python-format msgid "Ln %i, Col %i" msgstr "Řád %i, sl %i" -#: ../meld/filediff.py:722 +#: ../meld/filediff.py:829 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " @@ -755,47 +1345,55 @@ "Filtr „%s“ změnil počet řádků v souboru. Porovnání nebude správné. Další " "podrobnosti viz příručka uživatele." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:809 -msgid "" -msgstr "" - -#: ../meld/filediff.py:996 +#: ../meld/filediff.py:1090 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Nastaven počet panelů" -#: ../meld/filediff.py:1002 +#: ../meld/filediff.py:1096 #, python-format msgid "[%s] Opening files" msgstr "[%s] Otevírají se soubory" -#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 -#: ../meld/filediff.py:1053 +#: ../meld/filediff.py:1119 ../meld/filediff.py:1129 ../meld/filediff.py:1142 +#: ../meld/filediff.py:1148 msgid "Could not read file" msgstr "Nelze přečíst soubor" -#: ../meld/filediff.py:1027 +#: ../meld/filediff.py:1120 #, python-format msgid "[%s] Reading files" msgstr "[%s] Čtou se soubory" -#: ../meld/filediff.py:1036 +#: ../meld/filediff.py:1130 #, python-format msgid "%s appears to be a binary file." msgstr "%s je zřejmě binárním souborem." -#: ../meld/filediff.py:1048 +#: ../meld/filediff.py:1143 #, python-format msgid "%s is not in encodings: %s" msgstr "%s není v kódováních: %s" -#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1178 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Počítají se rozdíly" -#: ../meld/filediff.py:1148 +#: ../meld/filediff.py:1235 +#, python-format +msgid "File %s has changed on disk" +msgstr "Soubor „%s“ byl změněn na disku." + +#: ../meld/filediff.py:1236 +msgid "Do you want to reload the file?" +msgstr "Chcete soubor znovu načíst?" + +#: ../meld/filediff.py:1239 +msgid "_Reload" +msgstr "Zno_vu načíst" + +#: ../meld/filediff.py:1400 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" @@ -803,15 +1401,36 @@ "Jsou používány textové filtry a může dojít k zamaskování rozdílů mezi " "soubory. Chcete porovnat nefiltrované soubory?" -#: ../meld/filediff.py:1154 +#: ../meld/filediff.py:1406 msgid "Files are identical" msgstr "Soubory jsou stejné" -#: ../meld/filediff.py:1164 +#: ../meld/filediff.py:1414 msgid "Show without filters" msgstr "Zobrazit bez filtrů" -#: ../meld/filediff.py:1354 +#: ../meld/filediff.py:1436 +msgid "Change highlighting incomplete" +msgstr "Změnit zvýraznění neúplných" + +#: ../meld/filediff.py:1437 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Některé změny nebyly zvýrazněny, protože jsou příliš rozsáhlé. Můžete Meld " +"přimět k používání větší délky, aby se zvýraznily i rozsáhlé změny, ale může " +"to pak být pomalé." + +#: ../meld/filediff.py:1445 +msgid "Keep highlighting" +msgstr "Zachovat zvýrazňování" + +#: ../meld/filediff.py:1447 +msgid "_Keep highlighting" +msgstr "Z_achovat zvýrazňování" + +#: ../meld/filediff.py:1578 #, python-format msgid "" "\"%s\" exists!\n" @@ -820,7 +1439,7 @@ "„%s“ existuje!\n" "Přepsat?" -#: ../meld/filediff.py:1367 +#: ../meld/filediff.py:1591 #, python-format msgid "" "Error writing to %s\n" @@ -831,12 +1450,36 @@ "\n" "%s." -#: ../meld/filediff.py:1376 +#: ../meld/filediff.py:1602 +msgid "Save Left Pane As" +msgstr "Uložení levého panelu jako" + +#: ../meld/filediff.py:1604 +msgid "Save Middle Pane As" +msgstr "Uložení prostředního panelu jako" + +#: ../meld/filediff.py:1606 +msgid "Save Right Pane As" +msgstr "Uložení pravého panelu jako" + +#: ../meld/filediff.py:1617 #, python-format -msgid "Choose a name for buffer %i." -msgstr "Zvolte název vyrovnávací paměti %i." +msgid "File %s has changed on disk since it was opened" +msgstr "Soubor „%s“ byl od doby, co jste jej otevřeli, změněn." -#: ../meld/filediff.py:1391 +#: ../meld/filediff.py:1619 +msgid "If you save it, any external changes will be lost." +msgstr "Pokud jej uložíte, budou vnější změny ztraceny." + +#: ../meld/filediff.py:1622 +msgid "Save Anyway" +msgstr "Přesto uložit" + +#: ../meld/filediff.py:1623 +msgid "Don't Save" +msgstr "Neukládat" + +#: ../meld/filediff.py:1647 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -847,7 +1490,7 @@ "\n" "Jaký formát chcete používat?" -#: ../meld/filediff.py:1407 +#: ../meld/filediff.py:1663 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -856,662 +1499,504 @@ "„%s“ obsahuje znaky, které nelze kódovat v „%s“\n" "Chcete uložit jako UTF-8?" -#: ../meld/filediff.py:1466 -#, python-format +#: ../meld/filediff.py:2022 +msgid "Live comparison updating disabled" +msgstr "Živá aktualizace porovnání zakázána" + +#: ../meld/filediff.py:2023 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." msgstr "" -"Opětovné načtení zahodí změny v:\n" -"%s\n" -"\n" -"Tuto operaci nelze vzít zpět." +"Když jsou aktivní synchronizační body, je živá aktualizace porovnávání " +"zakázána. Možnost aktualizovat porovnávání ručně vám ale zůstává a živé " +"aktualizace se obnoví ve chvíli, kdy jsou synchronizační body smazány." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:49 #, python-format msgid "[%s] Merging files" msgstr "[%s] Slučují se soubory" -#: ../meld/meldapp.py:149 +#: ../meld/gutterrendererchunk.py:91 +msgid "Copy _up" +msgstr "Kopírovat nahor_u" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _down" +msgstr "Kopírovat _dolů" + +#: ../meld/meldapp.py:132 msgid "wrong number of arguments supplied to --diff" -msgstr "poskytnut nesprávný počet argumentů --diff" +msgstr "poskytnut nesprávný počet argumentů pro --diff" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:137 msgid "Start with an empty window" msgstr "Spustit s prázdným oknem" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:140 msgid "file" msgstr "soubor" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:142 msgid "dir" msgstr "adr" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:139 msgid "Start a version control comparison" msgstr "Spustit nové porovnání správy verzí" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:141 msgid "Start a 2- or 3-way file comparison" msgstr "Spustit dvojcestné nebo trojcestné porovnání souborů" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:143 msgid "Start a 2- or 3-way directory comparison" msgstr "Spustit dvojcestné nebo trojcestné porovnání složek" -#: ../meld/meldapp.py:157 -msgid "Start a comparison between file and dir/file" -msgstr "Spustit porovnání souboru a složky/souboru" - -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:151 msgid "Meld is a file and directory comparison tool." msgstr "Meld je nástroj porovnávající soubory a složky." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:154 msgid "Set label to use instead of file name" msgstr "Nastavit k použití popisek namísto názvu souboru" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:156 +msgid "Open a new tab in an already running instance" +msgstr "Otevřít novou kartu v již běžící instanci" + +#: ../meld/meldapp.py:159 msgid "Automatically compare all differing files on startup" msgstr "Automaticky při spuštění porovnat všechny lišící se soubory" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:161 msgid "Ignored for compatibility" msgstr "Ignorováno z důvodu kompatibility" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:164 msgid "Set the target file for saving a merge result" -msgstr "" -"Nastavte cílový soubor, do kterého chcete uložit výsledek slučování slo" +msgstr "Nastavit cílový soubor, do kterého se má uložit výsledek slučování" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "Vytvoří kartu s rozdílem až pro tři zadané soubory nebo složky." +#: ../meld/meldapp.py:166 +msgid "Automatically merge files" +msgstr "Automaticky sloučit soubory" + +#: ../meld/meldapp.py:169 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Načíst uložené porovnání ze srovnávacího souboru Meld" -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:172 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Vytvořit kartu s rozdílem pro zadané soubory nebo složky" + +#: ../meld/meldapp.py:175 #, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "příliš mnoho argumentů (požadováno 0 – 4, obdrženo %d)" +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "příliš mnoho argumentů (požadováno 0 – 3, obdrženo %d)" + +#: ../meld/meldapp.py:178 +msgid "can't auto-merge less than 3 files" +msgstr "nelze automaticky sloučit méně než 3 soubory" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "nelze porovnávat více jak tři složky" +#: ../meld/meldapp.py:180 +msgid "can't auto-merge directories" +msgstr "nelze automaticky sloučit složky" + +#: ../meld/meldapp.py:190 +msgid "Error reading saved comparison file" +msgstr "Chyba při čtení uloženého srovnávacího souboru" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:125 +msgid "" +msgstr "" -#: ../meld/melddoc.py:56 ../meld/melddoc.py:57 +#: ../meld/melddoc.py:75 ../meld/melddoc.py:76 msgid "untitled" msgstr "nepojmenovaný" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:49 msgid "_File" msgstr "_Soubor" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Nový…" +#: ../meld/meldwindow.py:50 +msgid "_New Comparison..." +msgstr "_Nové porovnávání…" -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:51 msgid "Start a new comparison" msgstr "Spustit nové porovnání" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:54 msgid "Save the current file" msgstr "Uložit aktuální soubor" -#: ../meld/meldwindow.py:129 +#: ../meld/meldwindow.py:56 +msgid "Save As..." +msgstr "Uložit jako…" + +#: ../meld/meldwindow.py:57 +msgid "Save the current file with a different name" +msgstr "Uložit aktuální soubor pod jiným názvem" + +#: ../meld/meldwindow.py:60 msgid "Close the current file" msgstr "Zavřít aktuální soubor" -#: ../meld/meldwindow.py:130 -msgid "Quit the program" -msgstr "Ukončit program" - -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:63 msgid "_Edit" msgstr "_Upravit" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:65 msgid "Undo the last action" msgstr "Vrátit zpět poslední činnost" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:68 msgid "Redo the last undone action" msgstr "Zopakovat poslední činnost vrácenou zpět" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:70 msgid "Cut the selection" msgstr "Vyjmout výběr" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:72 msgid "Copy the selection" msgstr "Kopírovat výběr" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:74 msgid "Paste the clipboard" msgstr "Vložit obsah schránky" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:76 +msgid "Find..." +msgstr "Najít…" + +#: ../meld/meldwindow.py:76 msgid "Search for text" msgstr "Hledat text" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:78 msgid "Find Ne_xt" msgstr "_Najít následující" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:79 msgid "Search forwards for the same text" msgstr "Hledat tentýž text vpřed" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:81 msgid "Find _Previous" msgstr "Nalézt _předchozí" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:82 msgid "Search backwards for the same text" msgstr "Hledat nazpět tentýž text" -#: ../meld/meldwindow.py:141 +#: ../meld/meldwindow.py:85 +msgid "_Replace..." +msgstr "Nah_radit…" + +#: ../meld/meldwindow.py:86 msgid "Find and replace text" msgstr "Najít a nahradit text" -#: ../meld/meldwindow.py:142 -msgid "Prefere_nces" -msgstr "_Předvolby" - -#: ../meld/meldwindow.py:142 -msgid "Configure the application" -msgstr "Nastavit aplikaci" - -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:89 msgid "_Changes" msgstr "_Změny" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:90 +msgid "Next Change" msgstr "Následující změna" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:91 msgid "Go to the next change" msgstr "Přejít na následující změnu" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:93 +msgid "Previous Change" msgstr "Předchozí změna" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:94 msgid "Go to the previous change" msgstr "Přejít na předchozí změnu" -#: ../meld/meldwindow.py:147 -msgid "Open externally" +#: ../meld/meldwindow.py:96 +msgid "Open Externally" msgstr "Otevřít externě" -#: ../meld/meldwindow.py:147 +#: ../meld/meldwindow.py:97 msgid "Open selected file or directory in the default external application" msgstr "Otevřít vybraný soubor nebo složku ve výchozí externí aplikaci" -#: ../meld/meldwindow.py:149 +#: ../meld/meldwindow.py:101 msgid "_View" msgstr "_Zobrazit" -#: ../meld/meldwindow.py:150 -msgid "File status" +#: ../meld/meldwindow.py:102 +msgid "File Status" msgstr "Stav souboru" -#: ../meld/meldwindow.py:151 -msgid "Version status" +#: ../meld/meldwindow.py:103 +msgid "Version Status" msgstr "Stav verze" -#: ../meld/meldwindow.py:152 -msgid "File filters" -msgstr "Filtry souborů" - -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:106 msgid "Stop the current action" msgstr "Zastavit aktuální činnost" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:109 msgid "Refresh the view" msgstr "Obnovit zobrazení" -#: ../meld/meldwindow.py:155 -msgid "Reload" -msgstr "Znovu načíst" - -#: ../meld/meldwindow.py:155 -msgid "Reload the comparison" -msgstr "Znovu načíst porovnání" - -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:112 msgid "_Tabs" msgstr "Kar_ty" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:113 msgid "_Previous Tab" msgstr "_Předchozí karta" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:114 msgid "Activate previous tab" msgstr "Přejít na předchozí kartu" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:116 msgid "_Next Tab" msgstr "_Následující karta" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:117 msgid "Activate next tab" msgstr "Aktivovat následující kartu" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:120 msgid "Move Tab _Left" msgstr "Přesunout kartu do_leva" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:121 msgid "Move current tab to left" msgstr "Přesunout aktuální kartu doleva" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:124 msgid "Move Tab _Right" msgstr "Přesunout kartu dop_rava" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:125 msgid "Move current tab to right" msgstr "Přesunout aktuální kartu doprava" -#: ../meld/meldwindow.py:163 -msgid "_Help" -msgstr "_Nápověda" - -#: ../meld/meldwindow.py:164 -msgid "_Contents" -msgstr "_Obsah" - -#: ../meld/meldwindow.py:164 -msgid "Open the Meld manual" -msgstr "Otevřít příručku aplikace Meld" - -#: ../meld/meldwindow.py:165 -msgid "Report _Bug" -msgstr "Ohlásit _chybu" - -#: ../meld/meldwindow.py:165 -msgid "Report a bug in Meld" -msgstr "Nahlásit chybu v aplikaci Meld" - -#: ../meld/meldwindow.py:166 -msgid "About this program" -msgstr "O této aplikaci" - -#: ../meld/meldwindow.py:169 -msgid "Full Screen" +#: ../meld/meldwindow.py:129 +msgid "Fullscreen" msgstr "Celá obrazovka" -#: ../meld/meldwindow.py:169 -msgid "View the comparison in full screen" -msgstr "Zobrazit porovnání přes celou obrazovku" +#: ../meld/meldwindow.py:130 +msgid "View the comparison in fullscreen" +msgstr "Zobrazit porovnání na celou obrazovku" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:132 msgid "_Toolbar" msgstr "Nástrojová _lišta" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:133 msgid "Show or hide the toolbar" msgstr "Zobrazit nebo skrýt nástrojovou lištu" -#: ../meld/meldwindow.py:171 -msgid "_Statusbar" -msgstr "_Stavová lišta" - -#: ../meld/meldwindow.py:171 -msgid "Show or hide the statusbar" -msgstr "Zobrazit nebo skrýt stavovou lištu" +#: ../meld/meldwindow.py:142 +msgid "Open Recent" +msgstr "Otevřít nedávné" + +#: ../meld/meldwindow.py:143 +msgid "Open recent files" +msgstr "Otevřít nedávné soubory" -#: ../meld/meldwindow.py:538 +#: ../meld/meldwindow.py:505 msgid "Switch to this tab" msgstr "Přepnout na tuto kartu" -#. exit at first non found directory + file -#: ../meld/meldwindow.py:629 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Nelze porovnávat kombinaci souborů a složek.\n" +#: ../meld/meldwindow.py:626 +msgid "Cannot compare a mixture of files and directories" +msgstr "Nelze porovnávat směs souborů a složek" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:178 msgid "[None]" msgstr "[Žádný]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Uložit záplatu jako…" - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "label" msgstr "popisek" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "pattern" msgstr "vzorek" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "K dispozici jen pokud je nainstalován gnome-python-desktop" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Zálohy\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 -msgid "" -"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " -"Desktop.ini\n" -msgstr "" -"Metadata závislá na OS\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " -"Desktop.ini\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Správa verzí\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binární soubory\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Multimédia\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "Klíčová slova CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 -msgid "C++ comment\t0\t//.*\n" -msgstr "Komentář C++\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "Komentář C\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Všechny mezery\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Počáteční mezery\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:253 -msgid "Script comment\t0\t#.*" -msgstr "Komentář skriptu\t0\t#.*" +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Správa verzí:" + +#: ../meld/ui/findbar.py:141 +msgid "Regular expression error" +msgstr "Chyba v regulárním výrazu" -#: ../meld/vcview.py:120 -msgid "Co_mmit" -msgstr "Co_mmit" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Zavřít kartu" -#: ../meld/vcview.py:120 -msgid "Commit" -msgstr "Commit" +#: ../meld/ui/vcdialogs.py:61 +msgid "No files will be committed" +msgstr "Žádné soubory nebudou zařazeny" -#: ../meld/vcview.py:121 -msgid "_Update" -msgstr "_Update" +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s v %s" -#: ../meld/vcview.py:121 -msgid "Update" -msgstr "Update" +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d zařazená neodeslaná" +msgstr[1] "%d zařazené neodeslané" +msgstr[2] "%d zařazených neodeslaných" -#: ../meld/vcview.py:122 -msgid "Add to VC" -msgstr "Přidat do správy verzí" +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d větvi" +msgstr[1] "%d větvích" +msgstr[2] "%d větvích" -#: ../meld/vcview.py:123 -msgid "Add _Binary" -msgstr "Přidat _binární" - -#: ../meld/vcview.py:123 -msgid "Add binary to VC" -msgstr "Přidat binární soubor do správy verzí" - -#: ../meld/vcview.py:124 -msgid "Remove from VC" -msgstr "Odstranit ze správy verzí" - -#: ../meld/vcview.py:125 -msgid "_Resolved" -msgstr "_Vyřešeno" +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Režim změněn z %s na %s" -#: ../meld/vcview.py:125 -msgid "Mark as resolved for VC" -msgstr "Označit jako vyřešené ve vztahu ke správě verzí" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "sloučené" -#: ../meld/vcview.py:126 -msgid "Revert to original" -msgstr "Vrátit zpět na původní" - -#: ../meld/vcview.py:127 -msgid "Delete locally" -msgstr "Odstranit místně" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "základní" -#: ../meld/vcview.py:131 -msgid "_Flatten" -msgstr "Z_ploštit" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "místní" -#: ../meld/vcview.py:131 -msgid "Flatten directories" -msgstr "Zploštit složky" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "vzdálené" -#: ../meld/vcview.py:132 -msgid "_Modified" -msgstr "_Změněné" +#: ../meld/vc/_vc.py:65 +msgid "Unversioned" +msgstr "Neverzováno" -#: ../meld/vcview.py:133 -msgid "_Normal" -msgstr "_Normální" +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Chyba" -#: ../meld/vcview.py:133 -msgid "Show normal" -msgstr "Zobrazovat běžné" - -#: ../meld/vcview.py:134 -msgid "Non _VC" -msgstr "Ni_koliv ve správě verzí" +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Nově přidáno" -#: ../meld/vcview.py:134 -msgid "Show unversioned files" -msgstr "Zobrazovat soubory bez verzí" +#: ../meld/vc/_vc.py:72 +msgid "Conflict" +msgstr "Konflikt" -#: ../meld/vcview.py:135 -msgid "Ignored" -msgstr "Ignorované" +#: ../meld/vc/_vc.py:73 +msgid "Removed" +msgstr "Odstraněno" -#: ../meld/vcview.py:135 -msgid "Show ignored files" -msgstr "Zobrazovat ignorované soubory" +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Schází" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Není přítomno" -#: ../meld/vcview.py:178 ../meld/vcview.py:302 +#: ../meld/vcview.py:215 ../meld/vcview.py:387 msgid "Location" msgstr "Umístění" -#: ../meld/vcview.py:179 +#: ../meld/vcview.py:216 msgid "Status" msgstr "Stav" -#: ../meld/vcview.py:180 -msgid "Rev" -msgstr "Rev" - -#: ../meld/vcview.py:181 -msgid "Tag" -msgstr "Tag" +#: ../meld/vcview.py:217 +msgid "Revision" +msgstr "Revize" -#: ../meld/vcview.py:182 +#: ../meld/vcview.py:218 msgid "Options" msgstr "Možnosti" -#: ../meld/vcview.py:233 -msgid "Choose one Version Control" -msgstr "Vyberte jednu správu verzí" - -#: ../meld/vcview.py:234 -msgid "Only one Version Control in this directory" -msgstr "V této složce pouze jedna správa verzí" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:247 +#: ../meld/vcview.py:298 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "%s není nainstalováno" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:251 -msgid "Invalid Repository" +#: ../meld/vcview.py:302 +msgid "Invalid repository" msgstr "Neplatné úložiště" -#: ../meld/vcview.py:260 +#: ../meld/vcview.py:311 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:313 ../meld/vcview.py:321 +msgid "None" +msgstr "Žádný" + +#: ../meld/vcview.py:332 +msgid "No valid version control system found in this folder" +msgstr "V této složce nebyl nalezen žádný platný systém správy verzí" + +#: ../meld/vcview.py:334 +msgid "Only one version control system found in this folder" +msgstr "V této složce byl nalezen jen jeden systém správy verzí" + +#: ../meld/vcview.py:336 +msgid "Choose which version control system to use" +msgstr "Vyberte, který systém správy verzí se má použít" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:302 +#: ../meld/vcview.py:387 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:350 -msgid "(Empty)" -msgstr "(Prázdný)" - -#: ../meld/vcview.py:388 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Stahují se rozdíly" - -#: ../meld/vcview.py:396 +#: ../meld/vcview.py:401 ../meld/vcview.py:409 #, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Použití záplaty" +msgid "Scanning %s" +msgstr "Prochází se %s" -#: ../meld/vcview.py:478 -msgid "Select some files first." -msgstr "Nejdříve je nutné vybrat soubory." - -#: ../meld/vcview.py:551 -#, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" Spuštění „patch“ se nezdařilo.\n" -" \n" -" Možná nemáte nainstalován „GNU patch“,\n" -" nebo používáte netestovanou verzi %s.\n" -" \n" -" Zašlete prosím e-mail s hlášením o chybě na:\n" -" meld-list@gnome.org\n" -" \n" -" A sice s uvedením následujících informací:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (spouštět ho není třeba, stačí uvést\n" -" daný příkazový řádek) \n" -" \n" -" 'X.Y.Z' nahraďte skutečnou verzí použitého\n" -" softwaru ke správě zdrojových kódů.\n" -" " - -#: ../meld/ui/findbar.py:127 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Chyba v regulárním výrazu\n" -"„%s“" - -#: ../meld/ui/historyentry.py:293 -msgid "_Browse..." -msgstr "_Procházet…" - -#: ../meld/ui/historyentry.py:301 -msgid "Path" -msgstr "Cesta" - -#: ../meld/ui/historyentry.py:302 -msgid "Path to file" -msgstr "Cesta k souboru" - -#: ../meld/ui/historyentry.py:303 -msgid "Pop up a file selector to choose a file" -msgstr "Zobrazit dialog výběru souboru umožňující zvolit soubor" - -#: ../meld/ui/historyentry.py:441 -msgid "Select directory" -msgstr "Vybrat složku" - -#: ../meld/ui/historyentry.py:445 -msgid "Select file" -msgstr "Vybrat soubor" +#: ../meld/vcview.py:443 +msgid "(Empty)" +msgstr "(Prázdný)" -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Zavřít kartu" +#: ../meld/vcview.py:666 +msgid "Remove folder and all its files?" +msgstr "Odstranit složku a všechny soubory v ní?" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 +#: ../meld/vcview.py:668 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"Ignorováno:Bez verze:::Chyba::Nově přidáno:Změněno:Konflikt:Odstraněno:Chybí" +"Tímto se ze správy verzí odstraní všechny vybrané soubory a složky (a " +"všechny soubory v těchto složkách)." -#: ../meld/vc/cvs.py:163 +#: ../meld/vcview.py:702 #, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Chyba při převodu na regulární výraz\n" -"Vzorkem byl „%s“\n" -"Chyba byla následující: „%s“" +msgid "Error removing %s" +msgstr "Chyba při odstraňování %s" diff -Nru meld-1.5.3/po/de.po meld-3.11.0/po/de.po --- meld-1.5.3/po/de.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/de.po 2014-02-16 20:23:22.000000000 +0000 @@ -4,322 +4,815 @@ # Hendrik Brandt , 2004. # Frank Arnold , 2005. # Hendrik Richter , 2006. -# Mario Blättermann , 2009-2011. +# Mario Blättermann , 2009-2012. # Holger Wansing , 2010. +# Benjamin Steinwender , 2014. # msgid "" msgstr "" "Project-Id-Version: meld master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-12-02 20:56+0000\n" -"PO-Revision-Date: 2011-12-09 02:04+0100\n" -"Last-Translator: Mario Blättermann \n" +"POT-Creation-Date: 2014-01-20 07:03+0000\n" +"PO-Revision-Date: 2014-01-26 18:15+0100\n" +"Last-Translator: Benjamin Steinwender \n" "Language-Team: German \n" +"Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: de\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.6.3\n" -#: ../bin/meld:96 +#: ../bin/meld:119 msgid "Cannot import: " msgstr "Import nicht möglich: " -#: ../bin/meld:99 +#: ../bin/meld:122 #, c-format msgid "Meld requires %s or higher." msgstr "Meld benötigt %s oder aktueller." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Vergleichen und Zusammenführen von Dateien" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Diff-Betrachter" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Meld Diff-Betrachter" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Vergleichen und Zusammenführen von Dateien" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Meld ist ein visuelles Vergleichs- und Zusammenführungsprogramm, das an " +"Entwickler gerichtet ist. Meld hilft Ihnen beim Vergleichen von Dateien, " +"Ordern und versionierten Projekten. Es stellt zwei- und drei-Wege Vergleiche " +"für Dateien und Ordner zur Verfügung. Die Versionskontrollsysteme Git, " +"Mercurial, Bazaar und Subversion werden unterstützt." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" +"Meld hilft Ihnen Quelltext-Änderungen durchzusehen, Patches zu verstehen und " +"bereitet Ihnen bei großen Zusammenführungskonflikten etwas wenige " +"Kopfschmerzen." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Meld Vergleichsbeschreibung" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Voreingestellte Fenstergröße" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +msgid "Show toolbar" +msgstr "Werkzeugleiste anzeigen" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Falls wahr, so ist die Fenster-Werkzeugleiste sichtbar." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +msgid "Show statusbar" +msgstr "Statusleiste anzeigen" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Falls wahr, so ist die Fenster-Statusleiste sichtbar." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +msgid "Automatically detected text encodings" +msgstr "Textkodierung automatisch erkennen" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Diese Textkodierungen werden automatisch (in dieser Reihenfolge) verwendet, " +"um die geladenen Textdateien anzuzeigen." + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Breite eines Einrückungsschritts" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "" +"Die Anzahl an zu verwendender Leerzeichen für einen einfachen " +"Einrückungsschritt" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "" +"Legt fest, ob mit Leerzeichen oder Tabulatorzeichen eingerückt werden soll" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" +"Falls wahr, werden für neue Einrückungen Leerzeichen anstellen von " +"Tabulatoren verwenden." + +#: ../data/org.gnome.meld.gschema.xml.h:12 +msgid "Show line numbers" +msgstr "Zeilennummern anzeigen" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" +"Falls wahr, werden Zeilennummern im Seitenbereich der Dateivergleiche " +"angezeigt." + +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Quelltext hervorheben" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Legt fest, ob Quelltexthervorhebung in Vergleichen aktiviert werden soll. " +"Weil Meld bereits eigene Farbhervorhebungen verwendet, ist diese Funktion " +"standardmäßig deaktiviert." + +#: ../data/org.gnome.meld.gschema.xml.h:16 +msgid "Displayed whitespace" +msgstr "Angezeigtes Leerzeichen" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Auswahl für die anzuzeigenden Leerraum-Zeichen. Mögliche Werte sind " +"»space« (Leerzeichen), »tab« (Tabulator), »newline« (Zeilenumbruch) und " +"»nbsp« (geschütztes Leerzeichen)." + +#: ../data/org.gnome.meld.gschema.xml.h:18 +msgid "Wrap mode" +msgstr "Wortumbruch-Modus" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Zeilen in Vergleichen werden anhand dieser Einstellung umgebrochen. Mögliche " +"Werte sind »none« (kein Umbruch), »char« (Umbruch bei beliebigen Zeichen) " +"oder »word« (Umbruch nach Wortende)" + +#: ../data/org.gnome.meld.gschema.xml.h:20 +msgid "Highlight current line" +msgstr "Aktuelle Zeile hervorheben" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" +"Falls wahr, wird in Dateivergleichen die Zeile hervorgehoben, in der sich " +"die Textmarke befindet." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +msgid "Use the system default monospace font" +msgstr "Die dicktengleiche Systemschrift verwenden" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Falls falsch, wird die angegebene eigene Schriftart anstelle der " +"systemweiten dicktengleichen Schriftart verwendet." + +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Eigene Schriftart" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"Die zu verwendende benutzerdefinierte Schriftart wird als Zeichenkette " +"gespeichert und von Pango eingelesen" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Leere Zeilen beim Vergleichen ignorieren" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Falls wahr, werden leere Zeilen beim Anzeigen der Änderungen zwischen " +"Dateien ausgenommen." + +#: ../data/org.gnome.meld.gschema.xml.h:28 +msgid "Use the system default editor" +msgstr "Den vom System vorgegebenen Editor verwenden" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Falls falsch, wird beim Öffnen von Dateien das benutzerdefinierte " +"Bearbeitungsprogramm anstelle des voreingestellten Bearbeitungsprogramms " +"verwendet." + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "Benutzerdefinierter Startbefehl für das Bearbeitungsprogramm" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"Der Befehl zum Starten des benutzerdefinierten Bearbeitungsprogrammes. Als " +"zusätzliche Parameter können »{file}« (Datei) und »{line}« (Zeile) verwendet " +"werden." + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Anzuzeigende Spalten" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Symbolische Verknüpfungen ignorieren" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Falls wahr, werden Ordnervergleiche symbolische Verknüpfungen nicht folgen." + +#: ../data/org.gnome.meld.gschema.xml.h:36 +msgid "Use shallow comparison" +msgstr "Oberflächlicher Vergleich" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Falls wahr, betrachtet der Ordnervergleich lediglich die Größe und das " +"Änderungsdatum der Dateien. Es wird daher angenommen, dass Dateien identisch " +"sind, wenn deren Größe und Änderungsdatum identisch ist, ohne den Inhalt zu " +"prüfen." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +msgid "File timestamp resolution" +msgstr "Auflösung des Zeitstempels" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:40 +#, fuzzy +msgid "File status filters" +msgstr "Dateifilter" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:42 +msgid "Show the version control console output" +msgstr "Die Ausgabe der Versionskontrolle anzeigen" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "Den Rand im Einbringungsnachrichten-Editor anzeigen" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:52 +#, fuzzy +msgid "Version control status filters" +msgstr "Versionskontrollansicht" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:54 +msgid "Filename-based filters" +msgstr "Auf Dateinamen basierende Filter" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:56 +msgid "Text-based filters" +msgstr "Auf Text basierende Filter" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "Info zu Meld" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Webseite" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "" +"Hendrik Brandt \n" +"Frank Arnold \n" +"Hendrik Richter \n" +"Mario Blättermann \n" +"Holger Wansing \n" +"Benjamin Steinwender \n" +"Christian Kirbach " + +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "_Einstellungen" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "_Hilfe" + +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "_Info" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Beenden" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Vergleichen" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Markierte Dateien vergleichen" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Nach _links kopieren" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Nach links kopieren" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Nach _rechts kopieren" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Nach rechts kopieren" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Markierte löschen" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1412 +msgid "Hide" +msgstr "Verbergen" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Markierte verbergen" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Groß-/Kleinschreibung in Dateinamen ignorieren" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Dateinamen, die sich nur in Groß- oder Kleinschreibung unterscheiden, als " +"identisch annehmen" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Identisch" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Identische anzeigen" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Neu" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Neue anzeigen" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Geändert" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Geänderte anzeigen" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Filter" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Aktive Filter festlegen" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Aktiv" +msgid "Editable List" +msgstr "Editierbare Liste" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Neuen Filter hinzufügen" +msgid "Active" +msgstr "Aktiv" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Editierbare Liste" +msgid "Column Name" +msgstr "Spaltenname" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "Hin_unter schieben" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Hinzufügen" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:676 +msgid "_Remove" +msgstr "_Löschen" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Objekt nach oben verschieben" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "Hin_auf schieben" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" msgstr "Objekt nach unten verschieben" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Objekt nach oben verschieben" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Hin_unter schieben" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:156 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:364 +#: ../meld/vcview.py:186 msgid "Name" msgstr "Name" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Muster" -#: ../data/ui/EditableList.ui.h:10 +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Neuen Filter hinzufügen" + +#: ../data/ui/EditableList.ui.h:13 msgid "Remove selected filter" msgstr "Ausgewählten Filter entfernen" -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:121 -msgid "_Add" -msgstr "_Hinzufügen" - -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:123 -msgid "_Remove" -msgstr "_Löschen" - #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Geänderte Dateien speichern?" +msgid "Save changes to documents before closing?" +msgstr "Die Änderungen an den Dokumenten vor dem Beenden speichern?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Einige Dateien wurden geändert.\n" -"Welche möchten Sie speichern?" +msgid "If you don't save, changes will be permanently lost." +msgstr "Wenn Sie nicht speichern, gehen die Änderungen verloren." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Schließen _ohne zu Speichern" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "Än_derungen verwerfen" +msgid "_Cancel" +msgstr "A_bbrechen" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "Auswahl _speichern" +msgid "_Save" +msgstr "_Speichern" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Diese Datei kann nicht geschrieben werden. Sie können hier klicken, um die " +"Datei zu entsperren und Ihre Änderungen vorzunehmen, aber Sie müssen diese " +"Änderungen in eine neue Datei speichern." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Nicht gespeicherte Dokumentenänderungen zurücknehmen?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Änderungen der folgenden Dokumente werden verloren gehen:\n" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "Regulärer A_usdruck" +msgid "_Replace" +msgstr "E_rsetzen" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "_Alle ersetzen" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Ersetzen _mit" +msgid "_Previous" +msgstr "_Vorherige" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "_Ganzes Wort" +msgid "_Next" +msgstr "_Nächste" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "Groß-/_Kleinschreibung beachten" +msgid "Find:" +msgstr "Suchen:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Nächste" +msgid "Replace _with:" +msgstr "Ersetzen _mit:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Vorherige" +msgid "_Match case" +msgstr "Groß-/_Kleinschreibung beachten" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "E_rsetzen" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "_Ganzes Wort" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Suchen nach" +msgid "Regular e_xpression" +msgstr "_Regulärer Ausdruck" -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Dateien wählen" - -#: ../data/ui/meldapp.ui.h:2 -msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" -msgstr "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" - -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Ordner" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Eigenes" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Original" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Andere" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Ordner unter Versionskontrolle wählen" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "_Ordnervergleich" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "_Dateivergleich" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "_Dreiwegevergleich" - -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "_Versionskontrolle" - -#: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "" -"Hendrik Brandt \n" -"Frank Arnold \n" -"Hendrik Richter \n" -"Mario Blättermann \n" -"Holger Wansing " +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Umgebrochen" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "In die Zwischenablage kopieren" +msgid "Format as Patch" +msgstr "Als Patch formatieren" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Patch erstellen" +msgid "Use differences between:" +msgstr "Unterschiede verwenden zwischen" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Patch erstellen" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Linke und mittlere Ansicht" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Mittlere und rechte Ansicht" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Unterschiede verwenden zwischen" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "Patch-_Richtung umkehren" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "In die Zwischenablage kopieren" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:119 +msgid "Save Patch" +msgstr "Patch speichern" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Darstellung" +msgid "Left is remote, right is local" +msgstr "Links ist die entfernte Datei, rechts die lokale" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Nur am _Wortende umbrechen" +msgid "Left is local, right is remote" +msgstr "Links is die lokale Datei, rechts die entfernte" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Edito_r-Befehl:" +msgid "1ns (ext4)" +msgstr "1ns (ext4)" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Editor" +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Zeilen_umbruch aktivieren" +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Kodierung" +msgid "2s (VFAT)" +msgstr "2s (VFAT)" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Externer Editor" +msgid "Meld Preferences" +msgstr "Meld - Einstellungen" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Dateifilter" - -#: ../data/ui/preferences.ui.h:9 msgid "Font" msgstr "Schrift" +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "Die dicktengleiche S_ystemschrift verwenden" + #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "" -"Ignorieren von Änderungen, durch die Leerzeichen hinzugefügt oder entfernt " -"werden" +msgid "_Editor font:" +msgstr "Editor-_Schrift:" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Symbolische Verknüpfungen ignorieren" +msgid "Display" +msgstr "Darstellung" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Laden" +msgid "_Tab width:" +msgstr "_Tabulatorbreite:" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Meld - Einstellungen" +msgid "_Insert spaces instead of tabs" +msgstr "Leerze_ichen anstelle von Tabulatoren verwenden" #: ../data/ui/preferences.ui.h:14 +msgid "Enable text _wrapping" +msgstr "Zeilen_umbruch aktivieren" + +#: ../data/ui/preferences.ui.h:15 +msgid "Do not _split words over two lines" +msgstr "Nur am _Wortende umbrechen" + +#: ../data/ui/preferences.ui.h:16 +msgid "Highlight _current line" +msgstr "Aktuelle Zeile _hervorheben" + +#: ../data/ui/preferences.ui.h:17 msgid "Show _line numbers" msgstr "Zei_lennummern anzeigen" -#: ../data/ui/preferences.ui.h:15 +#: ../data/ui/preferences.ui.h:18 msgid "Show w_hitespace" msgstr "Leerzeic_hen anzeigen" -#: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Textfilter" +#: ../data/ui/preferences.ui.h:19 +msgid "Use s_yntax highlighting" +msgstr "S_yntaxhervorhebung verwenden" -#: ../data/ui/preferences.ui.h:17 +#: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Externes Bearbeitungsprogramm" + +#: ../data/ui/preferences.ui.h:21 msgid "Use _default system editor" msgstr "_Den vom System vorgegebenen Editor verwenden" -#: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "S_yntaxhervorhebung verwenden" +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Edito_r-Befehl:" -#: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" -"Beim Laden die folgenden Kodierungen nacheinander versuchen (z.B. utf8, " -"iso8859)." +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Editor" -#: ../data/ui/preferences.ui.h:20 +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Oberflächlicher Vergleich" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "Dateien nur anhand _Größe und Änderungszeit vergleichen" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "Genauigkeit des Zeitstempels:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Symbolische Verknüpfungen" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Sichtbare Spalten" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Ordnervergleiche" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Versionsvergleiche" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "Beim Vergleichen von Datei_versionen:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Änderungsmitteilungen" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "_Rechten Rand anzeigen bei:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Beim Einspielen die Zeilen am rechten Rand automatisch um_brechen" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Versionskontrolle" + +#: ../data/ui/preferences.ui.h:37 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " @@ -329,204 +822,287 @@ "Dateien und Ordner nach Namen herauszufiltern. Jedes Muster ist dabei eine " "durch Leerzeichen getrennte Liste von Befehlszeilenplatzhaltern." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:105 +msgid "File Filters" +msgstr "Dateifilter" + +#: ../data/ui/preferences.ui.h:39 msgid "" "When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching text " -"with the empty string before comparison is performed. If the expression " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " "contains groups, only the groups are replaced. See the user manual for more " "details." msgstr "" "Wenn ein Dateivergleich durchgeführt wird, haben Sie die Möglichkeit " "festzulegen, dass bestimmte Änderungen ignoriert werden. Jedes Muster ist " "dabei ein regulärer Ausdruck der Sprache Python, welcher zutreffenden Text " -"durch eine leere Zeichenkette ersetzt, bevor ein Vergleich durchgeführt wird. " -"Falls der Ausdruck Gruppen enthält, werden nur die Gruppen ersetzt. Weitere " -"Informationen sind im Benutzerhandbuch zu finden." - -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "Editor-_Schrift:" - -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "Leerze_ichen anstelle von Tabulatoren verwenden" +"durch eine leere Zeichenkette ersetzt, bevor ein Vergleich durchgeführt " +"wird. Falls der Ausdruck Gruppen enthält, werden nur die Gruppen ersetzt. " +"Weitere Informationen sind im Benutzerhandbuch zu finden." -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "_Tabulatorbreite:" +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "" +"Ignorieren von Änderungen, durch die Leerzeichen hinzugefügt oder entfernt " +"werden" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "Die dicktengleiche S_ystemschrift verwenden" +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Textfilter" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Commit der Dateien" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:617 +msgid "New comparison" +msgstr "Neuer Vergleich" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Dateivergleich" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Ordnervergleich" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Versionskontrollansicht" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_3-Wege-Vergleich" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Die dritte Datei wählen" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Die zweite Datei wählen" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Die erste Datei wählen" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Den ersten Ordner wählen" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Den zweiten Ordner wählen" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Den dritten Ordner wählen" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Wählen Sie einen Ordner mit Versionskontrolle" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Leerer Vergleich" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Optionen vergleichen" +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Vergleichen" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Datum" +msgid "Co_mmit..." +msgstr "_Einspielen …" #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Lokale Kopie gegen andere entfernt liegende Revision" +msgid "Commit changes to version control" +msgstr "Änderungen in die Versionskontrolle einspielen" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Lokale Kopie gegen gleiche entfernt liegende Revision" +msgid "_Update" +msgstr "_Aktualisieren" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Änderungsmitteilung" +msgid "Update working copy from version control" +msgstr "Arbeitsverzeichnis aus der Versionskontrolle aktualisieren" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Vorherige Änderungsmitteilungen" - -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:179 -msgid "Tag" -msgstr "Kennzeichnung" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "VC-Protokoll" - -#: ../meld/dirdiff.py:226 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "_Vergleichen" +msgid "_Push" +msgstr "_Schieben" -#: ../meld/dirdiff.py:226 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Markiertes vergleichen" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Lokale Änderungen nach entfernt schieben" -#: ../meld/dirdiff.py:227 -msgid "Copy _Left" -msgstr "Nach _links kopieren" +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Zur Versionskontrolle hinzufügen" -#: ../meld/dirdiff.py:227 -msgid "Copy to left" -msgstr "Nach links kopieren" +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Von der Versionskontrolle entfernen" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Als _gelöst markieren" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Für die Versionskontrolle als gelöst markieren" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Zu_rücksetzen" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Die Arbeitskopie auf Original zurücksetzen" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Aus der Arbeitskopie löschen" -#: ../meld/dirdiff.py:228 -msgid "Copy _Right" -msgstr "Nach _rechts kopieren" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Einklappen" -#: ../meld/dirdiff.py:228 -msgid "Copy to right" -msgstr "Nach rechts kopieren" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Ordner reduzieren" -#: ../meld/dirdiff.py:229 -msgid "Delete selected" -msgstr "Markiertes löschen" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "_Geändert" -#: ../meld/dirdiff.py:230 ../meld/filediff.py:1157 -msgid "Hide" -msgstr "Verbergen" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Geänderte Dateien anzeigen" -#: ../meld/dirdiff.py:230 -msgid "Hide selected" -msgstr "Markiertes verstecken" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Normal" -#: ../meld/dirdiff.py:234 -msgid "Case" -msgstr "Schreibweise" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Normale Dateien anzeigen" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "Nicht _versioniert" -#: ../meld/dirdiff.py:234 -msgid "Ignore case of entries" -msgstr "Groß-/Kleinschreibung der Einträge ignorieren" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Nicht versionierte Dateien anzeigen" -#: ../meld/dirdiff.py:235 -msgid "Same" -msgstr "Identisch" +#: ../data/ui/vcview.ui.h:26 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Ignoriert" -#: ../meld/dirdiff.py:235 -msgid "Show identical" -msgstr "Identische anzeigen" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Ignorierte Dateien anzeigen" -#: ../meld/dirdiff.py:236 -msgid "New" -msgstr "Neu" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Commit" -#: ../meld/dirdiff.py:236 -msgid "Show new" -msgstr "Neue anzeigen" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Commit der Dateien" -#: ../meld/dirdiff.py:237 -msgid "Modified" -msgstr "Geändert" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Änderungsmitteilung" -#: ../meld/dirdiff.py:237 ../meld/vcview.py:131 -msgid "Show modified" -msgstr "Geänderte anzeigen" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Vorherige Mitteilungen:" -#: ../meld/dirdiff.py:239 -msgid "Filters" -msgstr "Filter" +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "Co_mmit" -#: ../meld/dirdiff.py:239 -msgid "Set active filters" -msgstr "Aktive Filter festlegen" +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Lokale Einbringungen in einen entfernten Ort einspielen?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"Die einzuspielenden Einbringungen werden durch Ihr Versionskontrollsystem " +"bestimmt." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "Einbringungen _einspielen" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:382 +msgid "Size" +msgstr "Größe" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:390 +msgid "Modification time" +msgstr "Änderungszeit" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:398 +msgid "Permissions" +msgstr "Berechtigungen" -#: ../meld/dirdiff.py:355 +#: ../meld/dirdiff.py:557 #, python-format msgid "Hide %s" -msgstr "Verbergen von %s" +msgstr "%s verbergen" -#: ../meld/dirdiff.py:458 ../meld/dirdiff.py:471 ../meld/vcview.py:304 -#: ../meld/vcview.py:332 +#: ../meld/dirdiff.py:686 ../meld/dirdiff.py:708 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] %s wird durchsucht" -#: ../meld/dirdiff.py:570 +#: ../meld/dirdiff.py:837 #, python-format msgid "[%s] Done" msgstr "[%s] Fertig" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:844 msgid "Multiple errors occurred while scanning this folder" msgstr "Beim Einlesen dieses Ordners traten mehrere Fehler auf" -#: ../meld/dirdiff.py:575 +#: ../meld/dirdiff.py:845 msgid "Files with invalid encodings found" msgstr "Dateien mit ungültigen Kodierungen gefunden" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:577 +#: ../meld/dirdiff.py:847 msgid "Some files were in an incorrect encoding. The names are something like:" msgstr "" "Einige Dateien lagen in einer inkorrekten Kodierung vor. Folgende Namen sind " "davon betroffen:" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:849 msgid "Files hidden by case insensitive comparison" msgstr "Dateien durch von Schreibweise unabhängigen Vergleich verborgen" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:851 msgid "" -"You are running a case insensitive comparison on a case sensitive filesystem. " -"The following files in this folder are hidden:" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" msgstr "" -"Sie führen einen Vergleich unter Nichtbeachtung der Groß-/Kleinschreibung auf " -"einem Dateisystem durch, welches zwischen Groß- und Kleinschreibung " +"Sie führen einen Vergleich unter Nichtbeachtung der Groß-/Kleinschreibung " +"auf einem Dateisystem durch, welches zwischen Groß- und Kleinschreibung " "unterscheidet. Die folgenden Dateien in diesem Ordner sind nicht sichtbar:" -#: ../meld/dirdiff.py:592 +#: ../meld/dirdiff.py:862 #, python-format msgid "'%s' hidden by '%s'" msgstr "»%s« verborgen durch »%s«" -#: ../meld/dirdiff.py:617 ../meld/filediff.py:1008 ../meld/filediff.py:1161 +#: ../meld/dirdiff.py:887 ../meld/filediff.py:1105 ../meld/filediff.py:1243 +#: ../meld/filediff.py:1414 ../meld/filediff.py:1444 ../meld/filediff.py:1446 msgid "Hi_de" msgstr "Ver_bergen" -#: ../meld/dirdiff.py:667 +#: ../meld/dirdiff.py:918 #, python-format msgid "" "'%s' exists.\n" @@ -535,239 +1111,259 @@ "»%s« existiert bereits.\n" "Überschreiben?" -#: ../meld/dirdiff.py:674 +#: ../meld/dirdiff.py:926 +msgid "Error copying file" +msgstr "Fehler beim Kopieren der Datei" + +#: ../meld/dirdiff.py:927 #, python-format msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Fehler beim Kopieren von »%s« nach »%s«\n" +"Fehler beim Kopieren von »%s«\n" +"nach »%s«\n" "\n" -"%s." - -#: ../meld/dirdiff.py:692 ../meld/vcview.py:504 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"»%s« ist ein Ordner.\n" -"Diesen rekursiv löschen?" +"%s" -#: ../meld/dirdiff.py:699 ../meld/vcview.py:509 +#: ../meld/dirdiff.py:950 #, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Fehler beim Löschen von %s\n" -"\n" -"%s." +msgid "Error deleting %s" +msgstr "Fehler beim Löschen von »%s«" -#: ../meld/dirdiff.py:711 +#: ../meld/dirdiff.py:1081 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i Sekunde" msgstr[1] "%i Sekunden" -#: ../meld/dirdiff.py:712 +#: ../meld/dirdiff.py:1082 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i Minute" msgstr[1] "%i Minuten" -#: ../meld/dirdiff.py:713 +#: ../meld/dirdiff.py:1083 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i Stunde" msgstr[1] "%i Stunden" -#: ../meld/dirdiff.py:714 +#: ../meld/dirdiff.py:1084 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i Tag" msgstr[1] "%i Tage" -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:1085 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i Woche" msgstr[1] "%i Wochen" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:1086 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i Monat" msgstr[1] "%i Monate" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:1087 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i Jahr" msgstr[1] "%i Jahre" -#: ../meld/filediff.py:294 -msgid "Format as patch..." +#: ../meld/filediff.py:227 +msgid "Format as Patch..." msgstr "Als Patch formatieren …" -#: ../meld/filediff.py:294 +#: ../meld/filediff.py:228 msgid "Create a patch using differences between files" msgstr "Aus der Differenz zwischen Dateien einen Patch erstellen" -#: ../meld/filediff.py:295 -msgid "Previous conflict" +#: ../meld/filediff.py:230 +msgid "Save A_ll" +msgstr "A_lles speichern" + +#: ../meld/filediff.py:231 +msgid "Save all files in the current comparison" +msgstr "Alle Dateien im aktuellen Vergleich speichern" + +#: ../meld/filediff.py:234 +msgid "Revert files to their saved versions" +msgstr "Dateien auf ihre gespeicherte Version zurücksetzen" + +#: ../meld/filediff.py:236 +msgid "Add Synchronization Point" +msgstr "Synchronisationspunkt hinzufügen" + +#: ../meld/filediff.py:237 +msgid "Add a manual point for synchronization of changes between files" +msgstr "" +"Manuell einen Punkt für die Synchronisierung von Änderungen der Dateien " +"hinzufügen" + +#: ../meld/filediff.py:240 +msgid "Clear Synchronization Points" +msgstr "Synchronisationspunkte entfernen" + +#: ../meld/filediff.py:241 +msgid "Clear manual change sychronization points" +msgstr "Die manuellen Änderungssynchronisationspunkte entfernen" + +#: ../meld/filediff.py:243 +msgid "Previous Conflict" msgstr "Vorheriger Konflikt" -#: ../meld/filediff.py:295 +#: ../meld/filediff.py:244 msgid "Go to the previous conflict" msgstr "Zum vorherigen Konflikt gehen" -#: ../meld/filediff.py:296 -msgid "Next conflict" +#: ../meld/filediff.py:246 +msgid "Next Conflict" msgstr "Nächster Konflikt" -#: ../meld/filediff.py:296 +#: ../meld/filediff.py:247 msgid "Go to the next conflict" msgstr "Zum nächsten Konflikt gehen" -#: ../meld/filediff.py:297 -msgid "Push to left" +#: ../meld/filediff.py:249 +msgid "Push to Left" msgstr "Nach links schieben" -#: ../meld/filediff.py:297 +#: ../meld/filediff.py:250 msgid "Push current change to the left" msgstr "Aktuelle Änderung nach links schieben" -#: ../meld/filediff.py:298 -msgid "Push to right" +#: ../meld/filediff.py:253 +msgid "Push to Right" msgstr "Nach rechts schieben" -#: ../meld/filediff.py:298 +#: ../meld/filediff.py:254 msgid "Push current change to the right" msgstr "Aktuelle Änderung nach rechts schieben" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:300 -msgid "Pull from left" +#: ../meld/filediff.py:258 +msgid "Pull from Left" msgstr "Von links ziehen" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:259 msgid "Pull change from the left" msgstr "Änderung von links ziehen" -#: ../meld/filediff.py:301 -msgid "Pull from right" +#: ../meld/filediff.py:262 +msgid "Pull from Right" msgstr "Von rechts ziehen" -#: ../meld/filediff.py:301 +#: ../meld/filediff.py:263 msgid "Pull change from the right" msgstr "Änderung von rechts ziehen" -#: ../meld/filediff.py:302 -msgid "Copy above left" +#: ../meld/filediff.py:265 +msgid "Copy Above Left" msgstr "Oben links kopieren" -#: ../meld/filediff.py:302 +#: ../meld/filediff.py:266 msgid "Copy change above the left chunk" msgstr "Änderung über den linken Teil kopieren" -#: ../meld/filediff.py:303 -msgid "Copy below left" +#: ../meld/filediff.py:268 +msgid "Copy Below Left" msgstr "Unten links kopieren" -#: ../meld/filediff.py:303 +#: ../meld/filediff.py:269 msgid "Copy change below the left chunk" msgstr "Änderung unter den linken Teil kopieren" -#: ../meld/filediff.py:304 -msgid "Copy above right" +#: ../meld/filediff.py:271 +msgid "Copy Above Right" msgstr "Oben rechts kopieren" -#: ../meld/filediff.py:304 +#: ../meld/filediff.py:272 msgid "Copy change above the right chunk" msgstr "Änderung über den rechten Teil kopieren" -#: ../meld/filediff.py:305 -msgid "Copy below right" +#: ../meld/filediff.py:274 +msgid "Copy Below Right" msgstr "Unten rechts kopieren" -#: ../meld/filediff.py:305 +#: ../meld/filediff.py:275 msgid "Copy change below the right chunk" msgstr "Änderung unter den rechten Teil kopieren" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:277 msgid "Delete" msgstr "Löschen" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:278 msgid "Delete change" msgstr "Änderung löschen" -#: ../meld/filediff.py:307 -msgid "Merge all changes from left" +#: ../meld/filediff.py:280 +msgid "Merge All from Left" msgstr "Alle Änderungen von links zusammenführen" -#: ../meld/filediff.py:307 +#: ../meld/filediff.py:281 msgid "Merge all non-conflicting changes from the left" msgstr "Alle konfliktlosen Änderungen von links zusammenführen" -#: ../meld/filediff.py:308 -msgid "Merge all changes from right" +#: ../meld/filediff.py:283 +msgid "Merge All from Right" msgstr "Alle Änderungen von rechts zusammenführen" -#: ../meld/filediff.py:308 +#: ../meld/filediff.py:284 msgid "Merge all non-conflicting changes from the right" msgstr "Alle konfliktlosen Änderungen von rechts zusammenführen" -#: ../meld/filediff.py:309 -msgid "Merge all non-conflicting" -msgstr "Alle konfliktlosen Änderungen zusammenführen" +#: ../meld/filediff.py:286 +msgid "Merge All" +msgstr "Alles zusammenfügen" -#: ../meld/filediff.py:309 +#: ../meld/filediff.py:287 msgid "Merge all non-conflicting changes from left and right panes" msgstr "Alle konfliktlosen Änderungen von links nach rechts zusammenführen" -#: ../meld/filediff.py:310 -msgid "Cycle through documents" +#: ../meld/filediff.py:291 +msgid "Cycle Through Documents" msgstr "Durch Dokumente blättern" -#: ../meld/filediff.py:310 +#: ../meld/filediff.py:292 msgid "Move keyboard focus to the next document in this comparison" msgstr "Tastaturfokus an nächstes Dokument in diesem Vergleich übergeben" -#: ../meld/filediff.py:314 -msgid "Lock scrolling" +#: ../meld/filediff.py:298 +msgid "Lock Scrolling" msgstr "Rollen sperren" -#: ../meld/filediff.py:315 +#: ../meld/filediff.py:299 msgid "Lock scrolling of all panes" msgstr "Rollen aller Ansichten sperren" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:484 msgid "INS" msgstr "EINF" -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:484 msgid "OVR" msgstr "ÜBR" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:398 +#: ../meld/filediff.py:486 #, python-format msgid "Ln %i, Col %i" msgstr "Zeile %i, Spalte %i" -#: ../meld/filediff.py:722 +#: ../meld/filediff.py:823 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " @@ -777,47 +1373,55 @@ "keine korrekten Ergebnisse liefern. Weitere Informationen sind im " "Benutzerhandbuch zu finden." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:809 -msgid "" -msgstr "" - -#: ../meld/filediff.py:996 +#: ../meld/filediff.py:1093 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Setzen der Spaltenanzahl" -#: ../meld/filediff.py:1002 +#: ../meld/filediff.py:1099 #, python-format msgid "[%s] Opening files" msgstr "[%s] Dateien werden geöffnet" -#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 -#: ../meld/filediff.py:1053 +#: ../meld/filediff.py:1122 ../meld/filediff.py:1132 ../meld/filediff.py:1145 +#: ../meld/filediff.py:1151 msgid "Could not read file" msgstr "Datei konnte nicht gelesen werden" -#: ../meld/filediff.py:1027 +#: ../meld/filediff.py:1123 #, python-format msgid "[%s] Reading files" msgstr "[%s] Dateien werden gelesen" -#: ../meld/filediff.py:1036 +#: ../meld/filediff.py:1133 #, python-format msgid "%s appears to be a binary file." msgstr "%s scheint eine Binärdatei zu sein." -#: ../meld/filediff.py:1048 +#: ../meld/filediff.py:1146 #, python-format msgid "%s is not in encodings: %s" msgstr "%s ist nicht in Kodierungen enthalten: %s" -#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1181 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Unterschiede werden berechnet" -#: ../meld/filediff.py:1148 +#: ../meld/filediff.py:1238 +#, python-format +msgid "File %s has changed on disk" +msgstr "Die Datei %s wurde auf dem Datenträger geändert" + +#: ../meld/filediff.py:1239 +msgid "Do you want to reload the file?" +msgstr "Möchten Sie die Datei neu laden?" + +#: ../meld/filediff.py:1242 +msgid "_Reload" +msgstr "_Neu laden" + +#: ../meld/filediff.py:1403 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" @@ -825,15 +1429,36 @@ "Textfilter werden verwendet, welche Unterschiede zwischen Dateien maskieren " "könnten. Wollen Sie die ungefilterten Dateien vergleichen?" -#: ../meld/filediff.py:1154 +#: ../meld/filediff.py:1409 msgid "Files are identical" msgstr "Dateien sind identisch" -#: ../meld/filediff.py:1164 +#: ../meld/filediff.py:1417 msgid "Show without filters" msgstr "Ungefiltert anzeigen" -#: ../meld/filediff.py:1354 +#: ../meld/filediff.py:1439 +msgid "Change highlighting incomplete" +msgstr "Änderungsmarkierung unvollständig" + +#: ../meld/filediff.py:1440 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Einige Änderungen wurden nicht hervorgehoben, da sie zu umfangreich sind. " +"Sie können Meld auch konfigurieren, längere Änderungen hervorzuheben, was " +"jedoch langsam sein könnte." + +#: ../meld/filediff.py:1448 +msgid "Keep highlighting" +msgstr "Syntaxhervorhebung verwenden" + +#: ../meld/filediff.py:1450 +msgid "_Keep highlighting" +msgstr "Syntax_hervorhebung verwenden" + +#: ../meld/filediff.py:1581 #, python-format msgid "" "\"%s\" exists!\n" @@ -842,7 +1467,7 @@ "»%s« ist vorhanden!\n" "Ersetzen?" -#: ../meld/filediff.py:1367 +#: ../meld/filediff.py:1594 #, python-format msgid "" "Error writing to %s\n" @@ -853,12 +1478,37 @@ "\n" "%s." -#: ../meld/filediff.py:1376 +#: ../meld/filediff.py:1605 +msgid "Save Left Pane As" +msgstr "Linke Ansicht speichern unter" + +#: ../meld/filediff.py:1607 +msgid "Save Middle Pane As" +msgstr "Mittlere Ansicht speichern unter" + +#: ../meld/filediff.py:1609 +msgid "Save Right Pane As" +msgstr "Rechte Ansicht speichern unter" + +#: ../meld/filediff.py:1620 #, python-format -msgid "Choose a name for buffer %i." -msgstr "Wählen Sie einen Namen für den Zwischenspeicher %i." +msgid "File %s has changed on disk since it was opened" +msgstr "" +"Die Datei %s wurde auf dem Datenträger geändert, seit sie geöffnet wurde" + +#: ../meld/filediff.py:1622 +msgid "If you save it, any external changes will be lost." +msgstr "Wenn Sie speichern, gehen externe Änderungen verloren." + +#: ../meld/filediff.py:1625 +msgid "Save Anyway" +msgstr "Dennoch speichern" + +#: ../meld/filediff.py:1626 +msgid "Don't Save" +msgstr "Nicht Speichern" -#: ../meld/filediff.py:1391 +#: ../meld/filediff.py:1650 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -869,7 +1519,7 @@ "\n" "Welches Format möchten Sie verwenden?" -#: ../meld/filediff.py:1407 +#: ../meld/filediff.py:1666 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -878,664 +1528,650 @@ "»%s« enthält Zeichen, die mit »%s« nicht kodierbar sind.\n" "Möchten Sie im UTF-8-Format speichern?" -#: ../meld/filediff.py:1466 -#, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"Neu laden wird alle Änderungen in \n" -"%s \n" -"verwerfen!\n" -"\n" -"Sie können diesen Vorgang nicht rückgängig machen." +#: ../meld/filediff.py:2030 +msgid "Live comparison updating disabled" +msgstr "Direkte Vergleichsaktualisierung deaktiviert" + +#: ../meld/filediff.py:2031 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" +"Die direkte Aktualisierung des Vergleiches ist deaktiviert, wenn " +"Synchronisationspunkte aktiv sind. Sie können den Vergleich manuell " +"aktualisieren. Die direkten Aktualisierungen werden beim Löschen der " +"Synchronisierungspunkte wieder fortgeführt." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:49 #, python-format msgid "[%s] Merging files" msgstr "[%s] Dateien werden zusammengeführt" -#: ../meld/meldapp.py:149 +#: ../meld/gutterrendererchunk.py:91 +msgid "Copy _up" +msgstr "Nach _oben kopieren" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _down" +msgstr "Nach _unten kopieren" + +#: ../meld/meldapp.py:132 msgid "wrong number of arguments supplied to --diff" msgstr "Falsche Anzahl an Argumenten für --diff." -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:137 msgid "Start with an empty window" msgstr "Beim Start kein Fenster öffnen" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:140 msgid "file" msgstr "Datei" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:142 msgid "dir" msgstr "Ordner" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:139 msgid "Start a version control comparison" msgstr "Versionskontrollvergleich starten" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:141 msgid "Start a 2- or 3-way file comparison" msgstr "Im Zwei- oder Dreiwegevergleich starten" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:143 msgid "Start a 2- or 3-way directory comparison" msgstr "Im Zwei- oder Dreiwege-Ordnervergleich starten" -#: ../meld/meldapp.py:157 -msgid "Start a comparison between file and dir/file" -msgstr "Einen Vergleich zwischen Datei und Ordner/Datei starten" - -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:151 msgid "Meld is a file and directory comparison tool." msgstr "Meld ist ein Werkzeug zum Vergleichen von Dateien und Ordnern." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:154 msgid "Set label to use instead of file name" msgstr "Zu verwendende Bezeichnung anstelle Dateinamen angeben" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:156 +msgid "Open a new tab in an already running instance" +msgstr "Einen neuen Reiter in einer bereits laufenden Instanz öffnen" + +#: ../meld/meldapp.py:159 msgid "Automatically compare all differing files on startup" msgstr "Automatisch alle sich unterscheidenden Dateien beim Start vergleichen" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:161 msgid "Ignored for compatibility" msgstr "Aus Kompatibilitätsgründen ignoriert" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:164 msgid "Set the target file for saving a merge result" msgstr "Zieldatei zum Speichern einer Zusammenführung festlegen" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "Erzeugt einen Diff-Reiter für bis zu drei Dateien oder Ordner." +#: ../meld/meldapp.py:166 +msgid "Automatically merge files" +msgstr "Dateien automatisch zusammenführen" + +#: ../meld/meldapp.py:169 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Einen abgespeicherten Vergleich aus einer Meld-Vergleichsdatei laden" + +#: ../meld/meldapp.py:172 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Erzeugt einen Differenz-Reiter für die angegebenen Dateien oder Ordner" -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:175 #, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "Zu viele Argumente (0-4 erforderlich, %d erhalten)" +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "zu viele Argumente (0-3 erforderlich, %d erhalten)" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "Es können nicht mehr als drei Ordner verglichen werden" +#: ../meld/meldapp.py:178 +msgid "can't auto-merge less than 3 files" +msgstr "" +"kann nicht mit weniger als 3 Dateien eine automatische Zusammenführung " +"durchführen" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge directories" +msgstr "kann Ordner nicht automatisch zusammenführen" + +#: ../meld/meldapp.py:190 +msgid "Error reading saved comparison file" +msgstr "Fehler beim Lesen der gespeicherten Vergleichsdatei" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:105 +msgid "" +msgstr "" -#: ../meld/melddoc.py:49 ../meld/melddoc.py:50 +#: ../meld/melddoc.py:75 ../meld/melddoc.py:76 msgid "untitled" msgstr "unbenannt" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:50 msgid "_File" msgstr "_Datei" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Neu …" +#: ../meld/meldwindow.py:51 +msgid "_New Comparison..." +msgstr "Neuer _Vergleich …" -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:52 msgid "Start a new comparison" msgstr "Neuen Vergleich starten" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:55 msgid "Save the current file" msgstr "Aktuelle Datei speichern" -#: ../meld/meldwindow.py:129 +#: ../meld/meldwindow.py:57 +msgid "Save As..." +msgstr "Speichern unter …" + +#: ../meld/meldwindow.py:58 +msgid "Save the current file with a different name" +msgstr "Aktuelle Datei unter einem anderen Namen speichern" + +#: ../meld/meldwindow.py:61 msgid "Close the current file" msgstr "Aktuelle Datei schließen" -#: ../meld/meldwindow.py:130 -msgid "Quit the program" -msgstr "Anwendung beenden" - -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:64 msgid "_Edit" msgstr "_Bearbeiten" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:66 msgid "Undo the last action" msgstr "Letzte Aktion rückgängig machen" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:69 msgid "Redo the last undone action" msgstr "Letzte Aktion wiederholen" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:71 msgid "Cut the selection" msgstr "Auswahl ausschneiden" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:73 msgid "Copy the selection" msgstr "Auswahl kopieren" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:75 msgid "Paste the clipboard" msgstr "Aus der Zwischenablage einfügen" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:77 +msgid "Find..." +msgstr "Suchen …" + +#: ../meld/meldwindow.py:77 msgid "Search for text" msgstr "Nach Text suchen" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:79 msgid "Find Ne_xt" msgstr "Nä_chste" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:80 msgid "Search forwards for the same text" msgstr "Vorwärts nach dem gleichen Text suchen" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:82 msgid "Find _Previous" msgstr "_Rückwärts suchen" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:83 msgid "Search backwards for the same text" msgstr "Rückwärts nach dem gleichen Text suchen" -#: ../meld/meldwindow.py:141 +#: ../meld/meldwindow.py:86 +msgid "_Replace..." +msgstr "Erset_zen …" + +#: ../meld/meldwindow.py:87 msgid "Find and replace text" msgstr "Text suchen und ersetzen" -#: ../meld/meldwindow.py:142 -msgid "Prefere_nces" -msgstr "_Einstellungen" - -#: ../meld/meldwindow.py:142 -msgid "Configure the application" -msgstr "Anwendung konfigurieren" - -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:90 msgid "_Changes" msgstr "Än_derungen" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:91 +msgid "Next Change" msgstr "Nächste Änderung" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:92 msgid "Go to the next change" msgstr "Zur nächsten Änderung gehen" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:94 +msgid "Previous Change" msgstr "Vorherige Änderung" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:95 msgid "Go to the previous change" msgstr "Zur vorherigen Änderung gehen" -#: ../meld/meldwindow.py:147 -msgid "Open externally" +#: ../meld/meldwindow.py:97 +msgid "Open Externally" msgstr "Extern öffnen" -#: ../meld/meldwindow.py:147 +#: ../meld/meldwindow.py:98 msgid "Open selected file or directory in the default external application" msgstr "" "Gewählte Datei oder Ordner in der vorgegebenen externen Anwendung öffnen" -#: ../meld/meldwindow.py:149 +#: ../meld/meldwindow.py:102 msgid "_View" msgstr "_Ansicht" -#: ../meld/meldwindow.py:150 -msgid "File status" +#: ../meld/meldwindow.py:103 +msgid "File Status" msgstr "Dateistatus" -#: ../meld/meldwindow.py:151 -msgid "Version status" +#: ../meld/meldwindow.py:104 +msgid "Version Status" msgstr "Versionsstatus" -#: ../meld/meldwindow.py:152 -msgid "File filters" -msgstr "Dateifilter" - -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:107 msgid "Stop the current action" msgstr "Aktuelle Aktion abbrechen" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:110 msgid "Refresh the view" msgstr "Ansicht aktualisieren" -#: ../meld/meldwindow.py:155 -msgid "Reload" -msgstr "Neu laden" - -#: ../meld/meldwindow.py:155 -msgid "Reload the comparison" -msgstr "Dateien neu laden" - -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:113 msgid "_Tabs" msgstr "Rei_ter" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:114 msgid "_Previous Tab" msgstr "_Vorheriger Reiter" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:115 msgid "Activate previous tab" msgstr "Vorherigen Reiter aktivieren" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:117 msgid "_Next Tab" msgstr "_Nächster Reiter" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:118 msgid "Activate next tab" msgstr "Nächsten Reiter aktivieren" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:121 msgid "Move Tab _Left" msgstr "Reiter nach _links verschieben" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:122 msgid "Move current tab to left" msgstr "Aktuellen Reiter nach links verschieben" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:125 msgid "Move Tab _Right" msgstr "Reiter nach _rechts verschieben" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:126 msgid "Move current tab to right" msgstr "Aktuellen Reiter nach rechts verschieben" -#: ../meld/meldwindow.py:163 -msgid "_Help" -msgstr "_Hilfe" - -#: ../meld/meldwindow.py:164 -msgid "_Contents" -msgstr "I_nhalt" - -#: ../meld/meldwindow.py:164 -msgid "Open the Meld manual" -msgstr "Handbuch öffnen" - -#: ../meld/meldwindow.py:165 -msgid "Report _Bug" -msgstr "_Fehlerbericht erstellen" - -#: ../meld/meldwindow.py:165 -msgid "Report a bug in Meld" -msgstr "Einen Fehler melden" - -#: ../meld/meldwindow.py:166 -msgid "About this program" -msgstr "Über diese Anwendung" - -#: ../meld/meldwindow.py:169 -msgid "Full Screen" +#: ../meld/meldwindow.py:130 +msgid "Fullscreen" msgstr "Vollbild" -#: ../meld/meldwindow.py:169 -msgid "View the comparison in full screen" -msgstr "Vergleich im Vollbildmodus anzeigen" +#: ../meld/meldwindow.py:131 +msgid "View the comparison in fullscreen" +msgstr "Den Vergleich im Vollbildmodus anzeigen" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:133 msgid "_Toolbar" msgstr "_Werkzeugleiste" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:134 msgid "Show or hide the toolbar" msgstr "Werkzeugleiste anzeigen oder verbergen" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:136 msgid "_Statusbar" msgstr "_Statusleiste" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:137 msgid "Show or hide the statusbar" msgstr "Statusleiste anzeigen oder verbergen" +#: ../meld/meldwindow.py:146 +msgid "Open Recent" +msgstr "Zuletzt verwendete Dateien öffnen" + +#: ../meld/meldwindow.py:147 +msgid "Open recent files" +msgstr "Zuletzt verwendete Dateien öffnen" + #: ../meld/meldwindow.py:538 msgid "Switch to this tab" msgstr "Zu diesem Reiter wechseln" -#. exit at first non found directory + file -#: ../meld/meldwindow.py:629 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Es kann kein Mix aus Dateien und Ordnern verglichen werden.\n" +#: ../meld/meldwindow.py:661 +msgid "Cannot compare a mixture of files and directories" +msgstr "Es kann keine Mischung aus Dateien und Ordnern verglichen werden" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:178 msgid "[None]" msgstr "[Nichts]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Patch speichern unter …" - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "label" msgstr "Bezeichnung" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "pattern" msgstr "Muster" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Ist nur verfügbar, wenn Sie gnome-python-desktop installiert haben." - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 -msgid "" -"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " -"Desktop.ini\n" -msgstr "" -"Betriebssystemspezifische Metadaten\t0\t.DS_Store ._* .Spotlight-V100 ." -"Trashes Thumbs.db Desktop.ini\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Versionskontrolle\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Medien\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "CVS-Schlüsselwörter\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 -msgid "C++ comment\t0\t//.*\n" -msgstr "C++ Kommentar\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "C-Kommentar\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Alle Leerzeichen\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Führende Leerzeichen\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:253 -msgid "Script comment\t0\t#.*" -msgstr "Skript-Kommentar\t0\t#.*" +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Versionskontrolle:" + +#: ../meld/ui/findbar.py:141 +msgid "Regular expression error" +msgstr "Fehler im regulären Ausdruck" -#: ../meld/vcview.py:119 -msgid "Co_mmit" -msgstr "Co_mmit" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Reiter schließen" -#: ../meld/vcview.py:119 -msgid "Commit" -msgstr "Commit" +#: ../meld/ui/vcdialogs.py:61 +msgid "No files will be committed" +msgstr "Keine Dateien zum Einspielen" -#: ../meld/vcview.py:120 -msgid "_Update" -msgstr "_Aktualisieren" +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s in %s" -#: ../meld/vcview.py:120 -msgid "Update" -msgstr "Aktualisieren" +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d nicht geschobene Einbringung" +msgstr[1] "%d nicht geschobene Einbringungen" -#: ../meld/vcview.py:121 -msgid "Add to VC" -msgstr "Zur Versionskontrolle hinzufügen" +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d Zweig" +msgstr[1] "%d Zweige" -#: ../meld/vcview.py:122 -msgid "Add _Binary" -msgstr "_Binärdatei hinzufügen" - -#: ../meld/vcview.py:122 -msgid "Add binary to VC" -msgstr "Binärdatei zur Versionskontrolle hinzufügen" - -#: ../meld/vcview.py:123 -msgid "Remove from VC" -msgstr "Aus der Versionskontrolle löschen" - -#: ../meld/vcview.py:124 -msgid "_Resolved" -msgstr "_Gelöst" - -#: ../meld/vcview.py:124 -msgid "Mark as resolved for VC" -msgstr "Für VC als gelöst markieren" - -#: ../meld/vcview.py:125 -msgid "Revert to original" -msgstr "Auf Original zurücksetzen" - -#: ../meld/vcview.py:126 -msgid "Delete locally" -msgstr "Lokal löschen" +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Modus wechselte von %s zu %s" -#: ../meld/vcview.py:130 -msgid "_Flatten" -msgstr "_Einklappen" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Zusammengefügt" -#: ../meld/vcview.py:130 -msgid "Flatten directories" -msgstr "Ordner reduzieren" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Basis" -#: ../meld/vcview.py:131 -msgid "_Modified" -msgstr "_Geändert" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Lokal" -#: ../meld/vcview.py:132 -msgid "_Normal" -msgstr "_Normal" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Entfernt" -#: ../meld/vcview.py:132 -msgid "Show normal" -msgstr "Normale Anzeige" - -#: ../meld/vcview.py:133 -msgid "Non _VC" -msgstr "Kein _VC" +#: ../meld/vc/_vc.py:65 +msgid "Unversioned" +msgstr "Nicht versioniert" -#: ../meld/vcview.py:133 -msgid "Show unversioned files" -msgstr "Nicht versionierte Dateien anzeigen" +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Fehler" -#: ../meld/vcview.py:134 -msgid "Ignored" -msgstr "Ignoriert" +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Kürzlich hinzugefügt" -#: ../meld/vcview.py:134 -msgid "Show ignored files" -msgstr "Ignorierte Dateien anzeigen" +#: ../meld/vc/_vc.py:72 +msgid "Conflict" +msgstr "Konflikt" + +#: ../meld/vc/_vc.py:73 +msgid "Removed" +msgstr "Entfernt" -#: ../meld/vcview.py:176 ../meld/vcview.py:300 +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Fehlend" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Nicht vorhanden" + +#: ../meld/vcview.py:216 ../meld/vcview.py:391 msgid "Location" msgstr "Ort" -#: ../meld/vcview.py:177 +#: ../meld/vcview.py:217 msgid "Status" msgstr "Status" -#: ../meld/vcview.py:178 -msgid "Rev" +#: ../meld/vcview.py:218 +msgid "Revision" msgstr "Revision" -#: ../meld/vcview.py:180 +#: ../meld/vcview.py:219 msgid "Options" msgstr "Optionen" -#: ../meld/vcview.py:232 -msgid "Choose one Version Control" -msgstr "Versionskontrollsystem auswählen" - -#: ../meld/vcview.py:233 -msgid "Only one Version Control in this directory" -msgstr "Nur eine Versionskontrolle in diesem Ordner" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:246 +#: ../meld/vcview.py:302 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "%s ist nicht installiert" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:250 -msgid "Invalid Repository" +#: ../meld/vcview.py:306 +msgid "Invalid repository" msgstr "Ungültiger Softwarebestand" -#: ../meld/vcview.py:259 +#: ../meld/vcview.py:315 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:317 ../meld/vcview.py:325 +msgid "None" +msgstr "Nichts" + +#: ../meld/vcview.py:336 +msgid "No valid version control system found in this folder" +msgstr "Kein gültiges Versionskontrollsystem in diesem Verzeichnis gefunden" + +#: ../meld/vcview.py:338 +msgid "Only one version control system found in this folder" +msgstr "Nur eine Versionskontrolle in diesem Ordner gefunden" + +#: ../meld/vcview.py:340 +msgid "Choose which version control system to use" +msgstr "Wählen Sie die zu verwendende Versionskontrolle" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:300 +#: ../meld/vcview.py:391 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:348 -msgid "(Empty)" -msgstr "(Leer)" - -#: ../meld/vcview.py:386 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Unterschiede werden abgerufen" - -#: ../meld/vcview.py:394 +#: ../meld/vcview.py:405 ../meld/vcview.py:413 #, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Patch wird angewendet" - -#: ../meld/vcview.py:479 -msgid "Select some files first." -msgstr "Wählen Sie zunächst einige Dateien aus." +msgid "Scanning %s" +msgstr "%s wird durchsucht" -#: ../meld/vcview.py:552 -#, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" Starten von »patch« gescheitert.\n" -" \n" -" Vielleicht ist »GNU patch« nicht installiert,\n" -" oder Sie benutzen eine ungetestete Version von %s.\n" -" \n" -" Fehlermeldung bitte per E-Mail an:\n" -" meld-list@gnome.org\n" -" \n" -" Folgende Informationen beifügen:\n" -" \n" -" - meld-Version: »%s«:\n" -" - Software-Typ des Versionsverwaltungssystems: »%s«\n" -" - Software-Version des Versionsverwaltungssystems: »X.Y." -"Z«\n" -" - die Ausgabe von »%s eine-datei.txt«\n" -" - Patch-Befehl: »%s«\n" -" (direkte Ausführung ist nicht notwendig,\n" -" fügen Sie einfach die Befehlszeile hinzu) \n" -" \n" -" Ersetzen Sie »X.Y.Z« durch die verwendete\n" -" Version des Versionsverwaltungssystems.\n" -" " - -#: ../meld/ui/findbar.py:127 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Fehler im regulären Ausdruck\n" -"»%s«" - -#: ../meld/ui/historyentry.py:293 -msgid "_Browse..." -msgstr "_Durchsuchen …" - -#: ../meld/ui/historyentry.py:301 -msgid "Path" -msgstr "Pfad" - -#: ../meld/ui/historyentry.py:302 -msgid "Path to file" -msgstr "Pfad zur Datei" - -#: ../meld/ui/historyentry.py:303 -msgid "Pop up a file selector to choose a file" -msgstr "Dateiauswahldialog öffnen" - -#: ../meld/ui/historyentry.py:441 -msgid "Select directory" -msgstr "Ordner wählen" - -#: ../meld/ui/historyentry.py:445 -msgid "Select file" -msgstr "Datei wählen" +#: ../meld/vcview.py:447 +msgid "(Empty)" +msgstr "(Leer)" -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Reiter schließen" +#: ../meld/vcview.py:670 +msgid "Remove folder and all its files?" +msgstr "Den Ordner und alle Dateien entfernen?" + +#: ../meld/vcview.py:672 +msgid "" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." +msgstr "" +"Dadurch werden alle gewählten Dateien, Ordner und deren Inhalte aus der " +"Versionskontrolle entfernt." + +#: ../meld/vcview.py:706 +#, python-format +msgid "Error removing %s" +msgstr "Fehler beim Entfernen von %s" + +#~ msgid "" +#~ "Meld 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.\n" +#~ "\n" +#~ "Meld 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. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see ." +#~ msgstr "" +#~ "Meld ist freie Software. Sie können es weitergeben und/oder verändern, " +#~ "solange Sie sich an die Regeln der »GNU General Public License« halten, " +#~ "so wie sie von der Free Software Foundation festgelegt wurden; entweder " +#~ "in Version 2 der Lizenz oder (nach Ihrem Ermessen) in jeder neueren " +#~ "Lizenz.\n" +#~ "\n" +#~ "Meld wurde mit dem Ziel veröffentlicht, dass Sie es nützlich finden, " +#~ "jedoch OHNE JEGLICHE GARANTIE, sogar ohne eine implizite Garantie der " +#~ "VERKAUFBARKEIT oder der VERWENDBARKEIT FÜR EINEN SPEZIELLEN ZWECK. " +#~ "Schauen Sie für weitere Informationen bitte in der »GNU General Public " +#~ "License« (GNU GPL) nach.\n" +#~ "\n" +#~ "Zusammen mit diesem Programm sollten Sie außerdem eine Kopie der »GNU " +#~ "General Public License« erhalten haben. Wenn dem nicht so ist, können Sie " +#~ "sie im Internet unter einsehen." + +#~ msgid "Loading" +#~ msgstr "Laden" + +#~ msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +#~ msgstr "" +#~ "Beim Laden die folgenden Kodierungen nacheinander versuchen (z.B. utf8, " +#~ "iso8859)." + +#~ msgid "Encoding" +#~ msgstr "Kodierung" + +#~ msgid "Compare selected" +#~ msgstr "Markierte vergleichen" + +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "»%s« ist ein Ordner.\n" +#~ "Diesen rekursiv löschen?" + +#~ msgid "Start a comparison between file and dir/file" +#~ msgstr "Einen Vergleich zwischen Datei und Ordner/Datei starten" + +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "D-Bus-Fehler; Vergleiche werden in einem neuen Fenster geöffnet." + +#~ msgid "Quit the program" +#~ msgstr "Anwendung beenden" + +#~ msgid "Configure the application" +#~ msgstr "Anwendung konfigurieren" + +#~ msgid "_Contents" +#~ msgstr "I_nhalt" + +#~ msgid "Open the Meld manual" +#~ msgstr "Handbuch öffnen" + +#~ msgid "Report _Bug" +#~ msgstr "_Fehlerbericht erstellen" + +#~ msgid "Report a bug in Meld" +#~ msgstr "Einen Fehler melden" + +#~ msgid "About this program" +#~ msgstr "Über diese Anwendung" + +#~ msgid "Only available if you have PyGtkSourceView 2 installed" +#~ msgstr "Ist nur verfügbar, wenn Sie »PyGtkSourceView 2« installiert haben" + +#~ msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgstr "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" + +#~ msgid "" +#~ "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +#~ "Desktop.ini\n" +#~ msgstr "" +#~ "Betriebssystemspezifische Metadaten\t0\t.DS_Store ._* .Spotlight-V100 ." +#~ "Trashes Thumbs.db Desktop.ini\n" + +#~ msgid "Version Control\t1\t%s\n" +#~ msgstr "Versionskontrolle\t1\t%s\n" + +#~ msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +#~ msgstr "Binärdateien\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" + +#~ msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +#~ msgstr "Medien\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" + +#~ msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgstr "CVS-Schlüsselwörter\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" + +#~ msgid "C++ comment\t0\t//.*\n" +#~ msgstr "C++ Kommentar\t0\t//.*\n" + +#~ msgid "C comment\t0\t/\\*.*?\\*/\n" +#~ msgstr "C-Kommentar\t0\t/\\*.*?\\*/\n" + +#~ msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgstr "Alle Leerzeichen\t0\t[ \\t\\r\\f\\v]*\n" + +#~ msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgstr "Führende Leerzeichen\t0\t^[ \\t\\r\\f\\v]*\n" + +#~ msgid "Script comment\t0\t#.*" +#~ msgstr "Skript-Kommentar\t0\t#.*" + +#~ msgid "_Browse..." +#~ msgstr "_Durchsuchen …" + +#~ msgid "Path" +#~ msgstr "Pfad" + +#~ msgid "Path to file" +#~ msgstr "Pfad zur Datei" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" -msgstr "" -"Ignoriert:Nicht versioniert:::Fehler::Neu hinzugefügt:Geändert:Konflikt:" -"Entfernt:Fehlend" +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "Dateiauswahldialog öffnen" -#: ../meld/vc/cvs.py:163 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Fehler beim Umwandeln in einen regulären Ausdruck\n" -"Das Muster war »%s«\n" -"Der Fehler lautet »%s«" +#~ msgid "Select directory" +#~ msgstr "Ordner wählen" -#~ msgid "Open selected" -#~ msgstr "Markierte öffnen" +#~ msgid "Select file" +#~ msgstr "Datei wählen" diff -Nru meld-1.5.3/po/el.po meld-3.11.0/po/el.po --- meld-1.5.3/po/el.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/el.po 2014-02-16 20:23:22.000000000 +0000 @@ -1,1165 +1,2601 @@ # translation of meld.HEAD.po to # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# +# keratea , 2013. +# Dimitris Spingos (Δημήτρης Σπίγγος) , 2013, 2014. msgid "" msgstr "" "Project-Id-Version: el\n" -"Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2008-02-22 03:44+0000\n" -"PO-Revision-Date: 2008-04-08 01:35+0200\n" -"Last-Translator: nikosCharonitakis \n" -"Language-Team: Greek \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-01-17 22:50+0000\n" +"PO-Revision-Date: 2014-01-19 19:14+0300\n" +"Last-Translator: Dimitris Spingos (Δημήτρης Σπίγγος) \n" +"Language-Team: team@lists.gnome.gr\n" +"Language: el\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" -"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.0\n" +"X-Project-Style: gnome\n" + +#: ../bin/meld:119 +msgid "Cannot import: " +msgstr "Αδύνατη η εισαγωγή: " -#: ../dirdiff.py:252 -#: ../dirdiff.py:267 -#, python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "Σφάλμα μετατροπής μοτίβου '%s' σε κανονική έκφραση" +#: ../bin/meld:122 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Το Meld απαιτεί %s ή μεγαλύτερο." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Προβολή διαφορών" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Προβολή διαφορών Meld" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Σύγκριση και συγχώνευση των αρχείων σας" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Το Meld είναι ένα οπτικό εργαλείο διαφορών και συγχώνευσης προοριζόμενο για " +"προγραμματιστές. Το Meld σας βοηθά να συγκρίνετε αρχεία, καταλόγους και " +"ελεγχόμενες εκδόσεις έργων. Παρέχει σύγκριση δύο ή τριών τρόπων και για " +"αρχεία και για καταλόγους και υποστηρίζει πολλά συστήματα ελέγχου έκδοσης " +"συμπεριλαμβανομένων των Git, Mercurial, Bazaar και Subversion." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" +"Το Meld σας βοηθά να επισκοπήσετε αλλαγές κώδικα, διορθώσεις κατανόησης και " +"κάνει τεράστιες συγκρούσεις συγχώνευσης ελαφρά λιγότερο δύσκολες." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Περιγραφή σύγκρισης Meld" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Προεπιλεγμένο μέγεθος παραθύρου" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +msgid "Show toolbar" +msgstr "Εμφάνιση εργαλειοθήκης" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Αν είναι αληθές, η εργαλειοθήκη παραθύρου είναι ορατή." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +msgid "Show statusbar" +msgstr "Εμφάνιση γραμμής κατάστασης" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Αν είναι αληθές, η γραμμή κατάστασης παραθύρου είναι ορατή." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +msgid "Automatically detected text encodings" +msgstr "Αυτόματη ανίχνευση κωδικοποιήσεων κειμένου" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Αυτές οι κωδικοποιήσεις κειμένου θα χρησιμοποιηθούν αυτόματα (στη σειρά) για " +"να δοκιμάσουν να αποκωδικοποιήσουν τα φορτωμένα αρχεία κειμένου." + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Πλάτος ενός βήματος εσοχής" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "" +"Ο αριθμός των διαστημάτων που θα χρησιμοποιηθεί για ένα μοναδικό βήμα εσοχής" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "Αν θα μπει εσοχή χρησιμοποιώντας διαστήματα ή στηλοθέτες." + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" +"Αν είναι αληθές, οποιαδήποτε νέα εσοχή θα χρησιμοποιήσει διαστήματα αντί για " +"στηλοθέτες." + +#: ../data/org.gnome.meld.gschema.xml.h:12 +msgid "Show line numbers" +msgstr "Εμφάνιση αριθμών γραμμών" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" +"Αν είναι αληθές, οι αριθμοί γραμμής θα εμφανιστούν στο διάκενο των " +"συγκρίσεων αρχείου." + +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Επισήμανση συντακτικού" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Αν θα επισημαίνεται η σύνταξη στις συγκρίσεις. Λόγω της δικιάς του " +"επισήμανσης χρώματος του Meld, αυτό είναι ανενεργό από προεπιλογή." + +#: ../data/org.gnome.meld.gschema.xml.h:16 +msgid "Displayed whitespace" +msgstr "Εμφανιζόμενο κενό διάστημα" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Η επιλογή για μεμονωμένους τύπους χαρακτήρα κενού διαστήματος που θα " +"εμφανιστούν. Πιθανές τιμές είναι 'κενό', 'στηλοθέτης', 'νέα γραμμή' και " +"'nbsp'." + +#: ../data/org.gnome.meld.gschema.xml.h:18 +msgid "Wrap mode" +msgstr "Κατάσταση αναδίπλωσης" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Οι γραμμές στις συγκρίσεις αρχείων θα αναδιπλώνονται σύμφωνα με αυτή τη " +"ρύθμιση, είτε καθόλου ('καμία'), σε οποιονδήποτε χαρακτήρα ('χαρακτήρας') ή " +"μόνο στο τέλος των λέξεων ('λέξη')." + +#: ../data/org.gnome.meld.gschema.xml.h:20 +msgid "Highlight current line" +msgstr "Επισήμανση τρέχουσας γραμμής" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" +"Αν είναι αληθές, η γραμμή που περιέχει τον δρομέα θα επισημανθεί στις " +"συγκρίσεις αρχείων." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +msgid "Use the system default monospace font" +msgstr "" +"Χρήση της προεπιλεγμένης γραμματοσειράς σταθερού πλάτους του συστήματος" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Αν είναι ψευδής, η καθορισμένη προσαρμοσμένη γραμματοσειρά θα χρησιμοποιηθεί " +"αντί για την γραμματοσειρά σταθερού πλάτους του συστήματος." + +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Προσαρμοσμένη γραμματοσειρά" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"Η προσαρμοσμένη γραμματοσειρά που θα χρησιμοποιηθεί, αποθηκευμένη ως " +"συμβολοσειρά και αναλυμένη ως περιγραφή γραμματοσειράς Pango" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Παράβλεψη κενών γραμμών κατά τη σύγκριση αρχείων" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Αν είναι αληθές, οι κενές γραμμές θα περικοπούν κατά την επισήμανση αλλαγών " +"μεταξύ αρχείων." + +#: ../data/org.gnome.meld.gschema.xml.h:28 +msgid "Use the system default editor" +msgstr "Χρήση του προεπιλεγμένου επεξεργαστή του συστήματος" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Αν είναι ψευδές, ο ορισμένος προσαρμοσμένος επεξεργαστής θα χρησιμοποιηθεί " +"αντί για τον επεξεργαστή του συστήματος κατά το άνοιγμα των αρχείων " +"εξωτερικά." + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "Η εντολή εκκίνησης προσαρμοσμένου επεξεργαστή" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"Η χρησιμοποιούμενη εντολή για εκκίνηση ενός προσαρμοσμένου επεξεργαστή. " +"Κάποια περιορισμένη προτυποποίηση υποστηρίζεται εδώ· προς το παρόν τα " +"'{file}' και '{line}' είναι αναγνωρισμένα διακριτικά." + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Στήλες για προβολή" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" +"Κατάλογος των ονομάτων στήλης σε σύγκριση φακέλου και αν πρέπει να " +"εμφανιστεί." + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Παράβλεψη συμβολικών δεσμών" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Αν είναι αληθές, οι συγκρίσεις φακέλων δεν ακολουθούν συμβολικούς δεσμούς " +"όταν διασχίζουν το δένδρο φακέλου." + +#: ../data/org.gnome.meld.gschema.xml.h:36 +msgid "Use shallow comparison" +msgstr "Χρήση επιφανειακής σύγκρισης" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Αν είναι αληθές, οι συγκρίσεις φακέλων συγκρίνουν αρχεία με βάση " +"αποκλειστικά το μέγεθος και τον χρόνο τροποποίησης, θεωρώντας τα αρχεία να " +"είναι ταυτόσημα αν ταιριάζουν τα μεγέθη και ο χρόνος τροποποίησης και " +"διαφορετικά αλλιώς." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +msgid "File timestamp resolution" +msgstr "Ανάλυση χρονικής σήμανσης αρχείου" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" +"Κατά τη σύγκριση με βάση τον χρόνο τροποποίησης, αυτή είναι η ελάχιστη " +"διαφορά σε δισεκατομμυριοστά του δευτερολέπτου μεταξύ δύο αρχείων πριν να " +"θεωρηθεί ότι έχουν διαφορετικούς χρόνους τροποποίησης. Αυτό είναι χρήσιμο " +"κατά τη σύγκριση αρχείων μεταξύ συστημάτων αρχείων με διαφορετική ανάλυση " +"χρονικής σήμανσης." + +#: ../data/org.gnome.meld.gschema.xml.h:40 +msgid "File status filters" +msgstr "Φίλτρα κατάστασης αρχείων" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" +"Κατάλογος των χρησιμοποιούμενων καταστάσεων για φιλτράρισμα ορατών αρχείων " +"σε σύγκριση φακέλων." + +#: ../data/org.gnome.meld.gschema.xml.h:42 +msgid "Show the version control console output" +msgstr "Εμφάνιση της εξόδου κονσόλας ελέγχου εκδόσεων" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" +"Αν είναι αληθές, θα εμφανιστεί μια ενότητα εξόδου κονσόλας στις προβολές " +"ελέγχου εκδόσεων, εμφανίζοντας τις εκτελούμενες εντολές για τις λειτουργίες " +"ελέγχου εκδόσεων." + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "" +"Παρουσίαση των συγκρίσεων εκδόσεων ως αριστερά-τοπική/δεξιά-απομακρυσμένη" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" +"Αν είναι αληθές, οι συγκρίσεις ελέγχου εκδόσεων θα χρησιμοποιήσει ένα σχήμα " +"αριστερά-είναι-τοπικές, δεξιά-είναι-απομακρυσμένες για να προσδιοριστεί η " +"σειρά παρουσίασης αρχείων σε στήλες. Αλλιώς, χρησιμοποιείται το σχήμα " +"αριστερά-είναι-δικό-τους, δεξιά-είναι-δικό-μου." + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "Εμφάνιση περιθωρίου στον επεξεργαστή μηνύματος υποβολής" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" +"Αν είναι αληθές, θα εμφανιστεί ένας οδηγός για να εμφανίσει σε ποια στήλη " +"είναι το περιθώριο στον επεξεργαστή μηνύματος υποβολής ελέγχου εκδόσεων." + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "Στήλη περιθωρίου στον επεξεργαστή μηνύματος υποβολής" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" +"Η στήλη του περιθωρίου είναι στον επεξεργαστή μηνύματος υποβολής ελέγχου " +"εκδόσεων." + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "Αυτόματη υποβολή μηνυμάτων αναγκαστικής αναδίπλωσης" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" +"Αν είναι αληθές, ο επεξεργαστής μηνύματος υποβολής ελέγχου εκδόσεων θα " +"αναδιπλωθεί αναγκαστικά (δηλ., θα εισάγει αλλαγές γραμμών) στο καθορισμένο " +"περιθώριο υποβολής πριν την υποβολή." + +#: ../data/org.gnome.meld.gschema.xml.h:52 +msgid "Version control status filters" +msgstr "Φίλτρα κατάστασης ελέγχου εκδόσεων" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" +"Κατάλογος των χρησιμοποιούμενων καταστάσεων για φιλτράρισμα ορατών αρχείων " +"σε σύγκριση ελέγχου εκδόσεων." + +#: ../data/org.gnome.meld.gschema.xml.h:54 +msgid "Filename-based filters" +msgstr "Φίλτρα με βάση το όνομα αρχείου" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" +"Κατάλογος των προκαθορισμένων φίλτρων με βάση το όνομα αρχείου που, ανε " +"είναι ενεργά, θα αφαιρέσουν τα σύμφωνα αρχεία από μια σύγκριση φακέλων." + +#: ../data/org.gnome.meld.gschema.xml.h:56 +msgid "Text-based filters" +msgstr "Φίλτρα με βάση κείμενα" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" +"Κατάλογος των προκαθορισμένων φίλτρων κανονικής έκφρασης με βάση κείμενο " +"που, αν είναι ενεργά, θα αφαιρέσουν κείμενο από τη χρήση του σε σύγκριση " +"αρχείου. Το κείμενο θα εμφανίζεται ακόμα, αλλά δεν θα συνεισφέρει στην ίδια " +"τη σύγκριση." + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "Περί του Meld" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Πνευματικά δικαιώματα © 2002-2009 Stephen Kennedy\n" +"Πνευματικά δικαιώματα © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Ιστότοπος" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "" +"Ελληνική μεταφραστική ομάδα GNOME\n" +" Δημήτρης Σπίγγος \n" +"Για περισσότερα δείτε: http://gnome.gr" + +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "Προτι_μήσεις" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "_Βοήθεια" + +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "_Περί" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "Έ_ξοδος" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Σύγκριση" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Σύγκριση επιλεγμένων αρχείων" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Αντιγραφή _αριστερά" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Αντιγραφή προς τα αριστερά" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Αντιγραφή _δεξιά" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Αντιγραφή προς τα δεξιά" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Διαγραφή επιλεγμένου" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1412 +msgid "Hide" +msgstr "Απόκρυψη" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Απόκρυψη επιλεγμένου" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Παράβλεψη πεζών-κεφαλαίων ονόματος αρχείου" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Να εξετάσετε αν ονόματα αρχείων με διαφορετικά πεζά-κεφαλαία που είναι κατά " +"τα άλλα ταυτόσημα αν είναι τα ίδια" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Ίδιο" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Εμφάνιση ταυτόσημου" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Νέο" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Εμφάνιση νέου" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Τροποποιήθηκε" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Εμφάνιση τροποποιημένου" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Φίλτρα" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Ορισμός ενεργών φίλτρων" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Επεξεργάσιμη λίστα" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Ενεργό" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column Name" +msgstr "Όνομα στήλης" + +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Προσθήκη" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:676 +msgid "_Remove" +msgstr "_Απομάκρυνση" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Μετακίνηση στοιχείου προς τα πάνω" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "Μετακίνηση προς τα _πάνω" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "Μετακίνηση στοιχείου προς τα κάτω" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Μετακίνηση προς τα _κάτω" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:364 +#: ../meld/vcview.py:186 +msgid "Name" +msgstr "Όνομα" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Μοτίβο" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Προσθήκη νέου φίλτρου" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Αφαίρεση επιλεγμένου φίλτρου" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Αποθήκευση αλλαγών στα έγγραφα πριν το κλείσιμο;" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Αν δεν αποθηκεύσετε, οι αλλαγές θα χαθούν μόνιμα." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Κλείσιμο _χωρίς αποθήκευση" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "_Aκύρωση" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "Α_ποθήκευση" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Αυτό το αρχείο δεν μπορεί να γραφτεί. Μπορείτε να πατήσετε εδώ για να " +"ξεκλειδώσετε αυτό το αρχείο και να κάνετε τις αλλαγές οπωσδήποτε, αλλά αυτές " +"οι αλλαγές πρέπει να αποθηκευτούν σε ένα νέο αρχείο." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Επαναφορά μη αποθηκευμένων αλλαγών στα έγγραφα;" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Οι αλλαγές που έγιναν στα παρακάτω έγγραφα θα χαθούν μόνιμα:\n" + +#: ../data/ui/findbar.ui.h:1 +msgid "_Replace" +msgstr "_Αντικατάσταση" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Αντικατάσταση ό_λων" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Προηγούμενο" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Επόμενο" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Εύρεση:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "Αντικατάσταση _με:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match case" +msgstr "_Ταίριασμα πεζών/κεφαλαίων" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Π_λήρης λέξη" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular e_xpression" +msgstr "Κανονική έκ_φραση" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Αναδιπλωμένο" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Format as Patch" +msgstr "Μορφή ως διόρθωσης" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Use differences between:" +msgstr "Χρήση διαφορών μεταξύ:" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Left and middle panes" +msgstr "Αριστερό και μεσαίο παράθυρο" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Middle and right panes" +msgstr "Μεσαίο και δεξιό παράθυρο" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "_Αντιστροφή κατεύθυνσης μπαλώματος" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Αντιγραφή στο πρόχειρο" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:119 +msgid "Save Patch" +msgstr "Αποθήκευση μπαλώματος" + +#: ../data/ui/preferences.ui.h:1 +msgid "Left is remote, right is local" +msgstr "Αριστερά είναι απομακρυσμένο, δεξιά είναι τοπικό" + +#: ../data/ui/preferences.ui.h:2 +msgid "Left is local, right is remote" +msgstr "Αριστερά είναι τοπικό, δεξιά είναι απομακρυσμένο" + +#: ../data/ui/preferences.ui.h:3 +msgid "1ns (ext4)" +msgstr "1ns (ext4)" + +#: ../data/ui/preferences.ui.h:4 +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" + +#: ../data/ui/preferences.ui.h:5 +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" + +#: ../data/ui/preferences.ui.h:6 +msgid "2s (VFAT)" +msgstr "2s (VFAT)" + +#: ../data/ui/preferences.ui.h:7 +msgid "Meld Preferences" +msgstr "Προτιμήσεις Meld" + +#: ../data/ui/preferences.ui.h:8 +msgid "Font" +msgstr "Γραμματοσειρά" + +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "_Χρήση της γραμματοσειράς σταθερού πλάτους του συστήματος" + +#: ../data/ui/preferences.ui.h:10 +msgid "_Editor font:" +msgstr "Γραμματοσειρά _επεξεργαστή:" + +#: ../data/ui/preferences.ui.h:11 +msgid "Display" +msgstr "Εμφάνιση" + +#: ../data/ui/preferences.ui.h:12 +msgid "_Tab width:" +msgstr "Πλάτος _στηλοθέτη:" + +#: ../data/ui/preferences.ui.h:13 +msgid "_Insert spaces instead of tabs" +msgstr "Ε_ισαγωγή κενών αντί για στηλοθέτες" + +#: ../data/ui/preferences.ui.h:14 +msgid "Enable text _wrapping" +msgstr "Ενεργοποίηση ανα_δίπλωσης κειμένου" + +#: ../data/ui/preferences.ui.h:15 +msgid "Do not _split words over two lines" +msgstr "Να μην _χωρίζονται οι λέξεις σε πάνω από δύο γραμμές" + +#: ../data/ui/preferences.ui.h:16 +msgid "Highlight _current line" +msgstr "Επισήμανση _τρέχουσας γραμμής" + +#: ../data/ui/preferences.ui.h:17 +msgid "Show _line numbers" +msgstr "Εμφάνιση αριθμών _γραμμής" + +#: ../data/ui/preferences.ui.h:18 +msgid "Show w_hitespace" +msgstr "Να εμφανίζεται ο κ_ενός χαρακτήρας" + +#: ../data/ui/preferences.ui.h:19 +msgid "Use s_yntax highlighting" +msgstr "Χρήση επισήμανσης σύ_νταξης" + +#: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Εξωτερικός επεξεργαστής" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "Χρήση _προεπιλεγμένου επεξεργαστή συστήματος" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Εντολή ε_πεξεργαστή:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Επεξεργαστής" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Ρηχή σύγκριση" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "_Σύγκριση αρχείων με βάση μόνο το μέγεθος και τη σφραγίδα χρόνου" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "Ανάλυση σφραγίδας _χρόνου:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Συμβολικοί σύνδεσμοι" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Ορατές Στήλες" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Συγκρίσεις φακέλων" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Συγκρίσεις εκδόσεων" -#: ../dirdiff.py:283 +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "_Κατά τη σύγκριση αναθεωρήσεων αρχείου:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Μηνύματα υποβολής" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Να εμφανίζεται _δεξιό περιθώριο στο:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Αυτόματη α_λλαγής γραμμών στο δεξιό περιθώριο στην υποβολή" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Έλεγχος εκδόσεων" + +#: ../data/ui/preferences.ui.h:37 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Όταν κάνετε συγκρίσεις καταλόγων, μπορείτε να φιλτράρετε τα αρχεία και τους " +"καταλόγους κατά όνομα. Κάθε μοτίβο είναι μία λίστα από σύμβολα υποκατάστασης " +"τεχνοτροπίας κελύφους που χωρίζονται με διαστήματα." + +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:105 +msgid "File Filters" +msgstr "Φίλτρα αρχείων" + +#: ../data/ui/preferences.ui.h:39 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Όταν κάνετε συγκρίσεις αρχείων, μπορείτε να αγνοήσετε συγκεκριμένους τύπους " +"αλλαγών. Κάθε μοτίβο εδώ είναι μία κανονική έκφραση python που αντικαθιστά " +"κείμενο που ταιριάζει με τη κενή συμβολοσειρά πριν γίνει η σύγκριση. Αν η " +"έκφραση περιλαμβάνει ομάδες, αντικαθίστανται μόνο οι ομάδες. Για " +"περισσότερες λεπτομέρειες δείτε το εγχειρίδιο χρήστη." + +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Παράβλεψη αλλαγών που εισάγουν ή διαγράφουν κενές γραμμές" + +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Φίλτρα κειμένων" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:617 +msgid "New comparison" +msgstr "Νέα σύγκριση" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Σύγκριση αρχείων" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Σύγκριση κατάλόγων" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Προβολή ελέγχου εκδόσεων" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_3πλή σύγκριση" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Επιλογή τρίτου αρχείου" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Επιλογή δεύτερου αρχείου" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Επιλογή πρώτου αρχείου" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Επιλογή πρώτου φακέλου" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Επιλογή δεύτερου φακέλου" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Επιλογή τρίτου φακέλου" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Επιλογή φακέλου με ελεγχόμενη έκδοση" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "Σύγκριση _κενών" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Σύγκριση" + +#: ../data/ui/vcview.ui.h:3 +msgid "Co_mmit..." +msgstr "_Υποβολή..." + +#: ../data/ui/vcview.ui.h:4 +msgid "Commit changes to version control" +msgstr "Υποβολή αλλαγών στον έλεγχο εκδόσεων" + +#: ../data/ui/vcview.ui.h:5 +msgid "_Update" +msgstr "Ενη_μέρωση" + +#: ../data/ui/vcview.ui.h:6 +msgid "Update working copy from version control" +msgstr "Ενημέρωση του αντιγράφου εργασίας από τον έλεγχο εκδόσεων" + +#: ../data/ui/vcview.ui.h:7 +msgid "_Push" +msgstr "_Προώθηση" + +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Προώθηση των τοπικών αλλαγών στο απομακρυσμένο" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Προσθήκη στον έλεγχο εκδόσεων" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Αφαίρεση από τον έλεγχο εκδόσεων" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "_Σήμανση ως λυμένο" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Σήμανση ως λυμένο στον έλεγχο εκδόσεων" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Επανα_φορά" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Επαναφορά αντιγράφου εργασίας στην αρχική κατάσταση" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Διαγραφή από το αντίγραφο εργασίας" + +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Ισοπέδωση" + +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Ισοπέδωση καταλόγων" + +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "_Τροποποιήθηκε" + +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Εμφάνιση τροποποιημένων αρχείων" + +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "Κα_νονικό" + +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Εμφάνιση κανονικών αρχείων" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "_Χωρίς έκδοση" + +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Εμφάνιση αρχείων χωρίς έκδοση" + +#: ../data/ui/vcview.ui.h:26 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Αγνοημένο" + +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Εμφάνιση αγνοημένων αρχείων" + +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Καταχώρηση" + +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Καταχώρηση αρχείων" + +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Μήνυμα καταγραφής" + +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Προηγούμενες καταγραφές:" + +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "_Καταχώριση" + +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Προώθηση τοπικών υποβολών σε απομακρυσμένο;" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"Οι υποβολές που πρόκειται να προωθηθούν προσδιορίζονται από το σύστημα " +"ελέγχου εκδόσεων." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Προώθηση υποβολών" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:382 +msgid "Size" +msgstr "Μέγεθος" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:390 +msgid "Modification time" +msgstr "Χρόνος τροποποίησης" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:398 +msgid "Permissions" +msgstr "Δικαιώματα" + +#: ../meld/dirdiff.py:557 #, python-format msgid "Hide %s" msgstr "Απόκρυψη %s" -#: ../dirdiff.py:364 -#: ../dirdiff.py:373 -#: ../vcview.py:213 -#: ../vcview.py:241 +#: ../meld/dirdiff.py:686 ../meld/dirdiff.py:708 #, python-format msgid "[%s] Scanning %s" -msgstr "%s Αναζήτηση %s" +msgstr "[%s] Αναζήτηση %s" -#: ../dirdiff.py:406 +#: ../meld/dirdiff.py:837 +#, python-format +msgid "[%s] Done" +msgstr "[%s] Έγινε" + +#: ../meld/dirdiff.py:844 +msgid "Multiple errors occurred while scanning this folder" +msgstr "Πολλαπλά σφάλματα προέκυψαν κατά τη σάρωση αυτού του φακέλου" + +#: ../meld/dirdiff.py:845 +msgid "Files with invalid encodings found" +msgstr "Βρέθηκαν αρχεία με άκυρη κωδικοποίηση" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:847 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" +"Μερικά αρχεία ήταν με εσφαλμένη κωδικοποίηση. Τα ονόματα είναι κάτι όπως:" + +#: ../meld/dirdiff.py:849 +msgid "Files hidden by case insensitive comparison" +msgstr "Κρυφά αρχεία με σύγκριση ανεξάρτητη των πεζών/κεφαλαίων" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:851 +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" +msgstr "" +"Εκτελείτε μία σύγκριση ανεξάρτητα από πεζά-κεφαλαία σε ένα σύστημα αρχείων " +"που κάνει διάκριση πεζών-κεφαλαίων. Τα παρακάτω αρχεία σε αυτόν τον φάκελο " +"είναι κρυφά:" + +#: ../meld/dirdiff.py:862 #, python-format msgid "'%s' hidden by '%s'" -msgstr "'%s' κρυφό από '%s'" +msgstr "Το '%s' κρύβεται από το '%s'" + +#: ../meld/dirdiff.py:887 ../meld/filediff.py:1105 ../meld/filediff.py:1243 +#: ../meld/filediff.py:1414 ../meld/filediff.py:1444 ../meld/filediff.py:1446 +msgid "Hi_de" +msgstr "Από_κρυψη" -#: ../dirdiff.py:412 +#: ../meld/dirdiff.py:918 #, python-format msgid "" -"You are running a case insensitive comparison on a case sensitive filesystem. Some files are not visible:\n" +"'%s' exists.\n" +"Overwrite?" +msgstr "" +"Το '%s' υπάρχει.\n" +"Να αντικατασταθεί;" + +#: ../meld/dirdiff.py:926 +msgid "Error copying file" +msgstr "Σφάλμα κατά την αντιγραφή αρχείου" + +#: ../meld/dirdiff.py:927 +#, python-format +msgid "" +"Couldn't copy %s\n" +"to %s.\n" +"\n" "%s" msgstr "" -"Τρέχετε μία σύγκριση με διάκριση πεζών-κεφαλαίων σε ένα σύστημα αρχείων που κάνει διάκριση πεζών-κεφαλαίων. Κάποια αρχεία δεν είναι ορατά:\n" +"Αδύνατη η αντιγραφή του %s\n" +"στο %s.\n" +"\n" "%s" -#: ../dirdiff.py:482 -#, python-format -msgid "[%s] Done" -msgstr "[%s] Έγινε" +#: ../meld/dirdiff.py:950 +#, python-format +msgid "Error deleting %s" +msgstr "Σφάλμα κατά τη διαγραφή του %s" + +#: ../meld/dirdiff.py:1081 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i δευτερόλεπτο" +msgstr[1] "%i δευτερόλεπτα" + +#: ../meld/dirdiff.py:1082 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i λεπτό" +msgstr[1] "%i λεπτά" + +#: ../meld/dirdiff.py:1083 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i ώρα" +msgstr[1] "%i ώρες" + +#: ../meld/dirdiff.py:1084 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i ημέρα" +msgstr[1] "%i ημέρες" + +#: ../meld/dirdiff.py:1085 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i εβδομάδα" +msgstr[1] "%i εβδομάδες" + +#: ../meld/dirdiff.py:1086 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i μήνας" +msgstr[1] "%i μήνες" + +#: ../meld/dirdiff.py:1087 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i έτος" +msgstr[1] "%i έτη" + +#: ../meld/filediff.py:227 +msgid "Format as Patch..." +msgstr "Μορφοποίηση ως μπάλωμα..." + +#: ../meld/filediff.py:228 +msgid "Create a patch using differences between files" +msgstr "Δημιουργία μπαλώματος χρησιμοποιώντας διαφορές μεταξύ αρχείων" + +#: ../meld/filediff.py:230 +msgid "Save A_ll" +msgstr "Αποθήκευση ό_λων" + +#: ../meld/filediff.py:231 +msgid "Save all files in the current comparison" +msgstr "Αποθήκευση όλων των αρχείων στην τρέχουσα σύγκριση" + +#: ../meld/filediff.py:234 +msgid "Revert files to their saved versions" +msgstr "Επαναφορά αρχείων στις αποθηκευμένες εκδόσεις τους" + +#: ../meld/filediff.py:236 +msgid "Add Synchronization Point" +msgstr "Προσθήκη σημείου συγχρονισμού" + +#: ../meld/filediff.py:237 +msgid "Add a manual point for synchronization of changes between files" +msgstr "" +"Προσθέστε χειροκίνητο σημείο για συγχρονισμό των αλλαγών μεταξύ αρχείων" + +#: ../meld/filediff.py:240 +msgid "Clear Synchronization Points" +msgstr "Καθαρισμός σημείων συγχρονισμού" + +#: ../meld/filediff.py:241 +msgid "Clear manual change sychronization points" +msgstr "Καθαρίστε τις χειροκίνητες αλλαγές των σημείων συγχρονισμού" + +#: ../meld/filediff.py:243 +msgid "Previous Conflict" +msgstr "Προηγούμενη διένεξη" + +#: ../meld/filediff.py:244 +msgid "Go to the previous conflict" +msgstr "Μετάβαση στην προηγούμενη διένεξη" + +#: ../meld/filediff.py:246 +msgid "Next Conflict" +msgstr "Επόμενη διένεξη" + +#: ../meld/filediff.py:247 +msgid "Go to the next conflict" +msgstr "Μετάβαση στην επόμενη διένεξη" + +#: ../meld/filediff.py:249 +msgid "Push to Left" +msgstr "Προώθηση στα αριστερά" + +#: ../meld/filediff.py:250 +msgid "Push current change to the left" +msgstr "Προώθηση τρέχουσας αλλαγής στα αριστερά" + +#: ../meld/filediff.py:253 +msgid "Push to Right" +msgstr "Προώθηση προς τα δεξιά" + +#: ../meld/filediff.py:254 +msgid "Push current change to the right" +msgstr "Προώθηση τρέχουσας αλλαγής στα δεξιά" + +#: ../meld/filediff.py:258 +msgid "Pull from Left" +msgstr "Ανάκτηση από τα αριστερά" + +#: ../meld/filediff.py:259 +msgid "Pull change from the left" +msgstr "Ανάκτηση αλλαγής από τα αριστερά" + +#: ../meld/filediff.py:262 +msgid "Pull from Right" +msgstr "Ανάκτηση από τα δεξιά" + +#: ../meld/filediff.py:263 +msgid "Pull change from the right" +msgstr "Ανάκτηση αλλαγής από τα δεξιά" + +#: ../meld/filediff.py:265 +msgid "Copy Above Left" +msgstr "Αντιγραφή πάνω από τα αριστερά" + +#: ../meld/filediff.py:266 +msgid "Copy change above the left chunk" +msgstr "Αντιγραφή αλλαγής πάνω από το αριστερό τμήμα" + +#: ../meld/filediff.py:268 +msgid "Copy Below Left" +msgstr "Αντιγραφή κάτω από τα αριστερά" + +#: ../meld/filediff.py:269 +msgid "Copy change below the left chunk" +msgstr "Αντιγραφή αλλαγής κάτω από το αριστερό τμήμα" + +#: ../meld/filediff.py:271 +msgid "Copy Above Right" +msgstr "Αντιγραφή πάνω από τα δεξιά" + +#: ../meld/filediff.py:272 +msgid "Copy change above the right chunk" +msgstr "Αντιγραφή αλλαγής πάνω από το δεξιό τμήμα" + +#: ../meld/filediff.py:274 +msgid "Copy Below Right" +msgstr "Αντιγραφή κάτω από τα δεξιά" + +#: ../meld/filediff.py:275 +msgid "Copy change below the right chunk" +msgstr "Αντιγραφή αλλαγής κάτω από το δεξιό τμήμα" + +#: ../meld/filediff.py:277 +msgid "Delete" +msgstr "Διαγραφή" + +#: ../meld/filediff.py:278 +msgid "Delete change" +msgstr "Διαγραφή αλλαγής" + +#: ../meld/filediff.py:280 +msgid "Merge All from Left" +msgstr "Συγχώνευση όλων από τα αριστερά" + +#: ../meld/filediff.py:281 +msgid "Merge all non-conflicting changes from the left" +msgstr "Συγχωνεύστε όλες τις μη συγκρουόμενες αλλαγές από τα αριστερά" + +#: ../meld/filediff.py:283 +msgid "Merge All from Right" +msgstr "Συγχώνευση όλων από τα δεξιά" + +#: ../meld/filediff.py:284 +msgid "Merge all non-conflicting changes from the right" +msgstr "Συγχωνεύστε όλες τις μη συγκρουόμενες αλλαγές από τα δεξιά" + +#: ../meld/filediff.py:286 +msgid "Merge All" +msgstr "Συγχώνευση όλων" + +#: ../meld/filediff.py:287 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "" +"Συγχωνεύστε όλες τις μη συγκρουόμενες αλλαγές από το αριστερό και δεξιό " +"παράθυρο" + +#: ../meld/filediff.py:291 +msgid "Cycle Through Documents" +msgstr "Περιήγηση μέσα από τα έγγραφα" + +#: ../meld/filediff.py:292 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "" +"Μετακίνηση της εστίασης πληκτρολογίου στο επόμενο έγγραφο σε αυτήν τη " +"σύγκριση" + +#: ../meld/filediff.py:298 +msgid "Lock Scrolling" +msgstr "Κλείδωμα κύλισης" + +#: ../meld/filediff.py:299 +msgid "Lock scrolling of all panes" +msgstr "Κλείδωμα κύλισης όλων των παραθύρων" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:484 +msgid "INS" +msgstr "INS" + +#: ../meld/filediff.py:484 +msgid "OVR" +msgstr "OVR" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:486 +#, python-format +msgid "Ln %i, Col %i" +msgstr "Γραμμή %i, Στήλη %i" + +#: ../meld/filediff.py:823 +#, python-format +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" +"Το φίλτρο '%s' άλλαξε τον αριθμό γραμμών στο αρχείο. Η σύγκριση θα είναι " +"εσφαλμένη. Δείτε το εγχειρίδιο χρήσης για περισσότερες λεπτομέρειες." + +#: ../meld/filediff.py:1093 +#, python-format +msgid "[%s] Set num panes" +msgstr "[%s] Ορισμός παραθύρων αριθμών" + +#: ../meld/filediff.py:1099 +#, python-format +msgid "[%s] Opening files" +msgstr "[%s] Άνοιγμα αρχείων" + +#: ../meld/filediff.py:1122 ../meld/filediff.py:1132 ../meld/filediff.py:1145 +#: ../meld/filediff.py:1151 +msgid "Could not read file" +msgstr "Αδύνατη η ανάγνωση αρχείου" + +#: ../meld/filediff.py:1123 +#, python-format +msgid "[%s] Reading files" +msgstr "[%s] Ανάγνωση αρχείων" + +#: ../meld/filediff.py:1133 +#, python-format +msgid "%s appears to be a binary file." +msgstr "το %s φαίνεται να είναι δυαδικό αρχείο." + +#: ../meld/filediff.py:1146 +#, python-format +msgid "%s is not in encodings: %s" +msgstr "το %s δεν είναι στις κωδικοποιήσεις: %s" + +#: ../meld/filediff.py:1181 +#, python-format +msgid "[%s] Computing differences" +msgstr "[%s] Υπολογισμός διαφορών" + +#: ../meld/filediff.py:1238 +#, python-format +msgid "File %s has changed on disk" +msgstr "Το αρχείο %s έχει αλλάξει στον δίσκο" + +#: ../meld/filediff.py:1239 +msgid "Do you want to reload the file?" +msgstr "Θέλετε να επαναφορτώσετε το αρχείο;" + +#: ../meld/filediff.py:1242 +msgid "_Reload" +msgstr "Επανα_φόρτωση" + +#: ../meld/filediff.py:1403 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Χρησιμοποιούνται φίλτρα κειμένου και μπορεί να καλύπτουν διαφορές μεταξύ " +"αρχείων. Θα θέλατε να συγκρίνετε τα αφιλτράριστα αρχεία;" + +#: ../meld/filediff.py:1409 +msgid "Files are identical" +msgstr "Τα αρχεία είναι ταυτόσημα" + +#: ../meld/filediff.py:1417 +msgid "Show without filters" +msgstr "Εμφάνιση χωρίς φίλτρα" + +#: ../meld/filediff.py:1439 +msgid "Change highlighting incomplete" +msgstr "Ατελής αλλαγή επισήμανσης" + +#: ../meld/filediff.py:1440 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Μερικές αλλαγές δεν επισημάνθηκαν επειδή ήταν υπερβολικά μεγάλες. Μπορείτε " +"να εξαναγκάσετε το Meld να δώσει περισσότερο χρόνο για να επισημάνει " +"μεγαλύτερες αλλαγές, αν και αυτό μπορεί να είναι αργό." + +#: ../meld/filediff.py:1448 +msgid "Keep highlighting" +msgstr "Διατήρηση επισήμανσης" + +#: ../meld/filediff.py:1450 +msgid "_Keep highlighting" +msgstr "_Διατήρηση επισήμανσης" + +#: ../meld/filediff.py:1581 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" +msgstr "" +"Το \"%s\" υπάρχει!\n" +"Να αντικατασταθεί;" + +#: ../meld/filediff.py:1594 +#, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "" +"Σφάλμα κατά την εγγραφή στο %s\n" +"\n" +"%s." + +#: ../meld/filediff.py:1605 +msgid "Save Left Pane As" +msgstr "Αποθήκευση του αριστερού παραθύρου ως" + +#: ../meld/filediff.py:1607 +msgid "Save Middle Pane As" +msgstr "Αποθήκευση του μεσαίου παραθύρου ως" + +#: ../meld/filediff.py:1609 +msgid "Save Right Pane As" +msgstr "Αποθήκευση του δεξιού παραθύρου ως" + +#: ../meld/filediff.py:1620 +#, python-format +msgid "File %s has changed on disk since it was opened" +msgstr "Το αρχείο %s έχει αλλάξει στον δίσκο από το άνοιγμά του" + +#: ../meld/filediff.py:1622 +msgid "If you save it, any external changes will be lost." +msgstr "Αν το αποθηκεύσετε, όλες οι εξωτερικές αλλαγές θα χαθούν." + +#: ../meld/filediff.py:1625 +msgid "Save Anyway" +msgstr "Αποθήκευση οπωσδήποτε" + +#: ../meld/filediff.py:1626 +msgid "Don't Save" +msgstr "Να μην αποθηκευθεί" + +#: ../meld/filediff.py:1650 +#, python-format +msgid "" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" +msgstr "" +"Το αρχείο '%s' περιέχει ένα μείγμα από πέρατα γραμμών.\n" +"\n" +"Ποια μορφή θα θέλατε να χρησιμοποιηθεί;" + +#: ../meld/filediff.py:1666 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" +msgstr "" +"Το '%s' περιέχει χαρακτήρες που δεν κωδικοποιούνται με '%s'\n" +"Να αποθηκευθεί ως UTF-8;" + +#: ../meld/filediff.py:2030 +msgid "Live comparison updating disabled" +msgstr "Ανενεργή η ζωντανή ενημέρωση σύγκρισης" + +#: ../meld/filediff.py:2031 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" +"Η ζωντανή ενημέρωση των συγκρίσεων είναι ανενεργή όταν τα σημεία " +"συγχρονισμού είναι ενεργά. Μπορείτε ακόμα χειροκίνητα να ανανεώσετε τη " +"σύγκριση και οι ζωντανές ενημερώσεις θα συνεχίσουν όταν καθαριστούν τα " +"σημεία συγχρονισμού." + +#: ../meld/filemerge.py:49 +#, python-format +msgid "[%s] Merging files" +msgstr "[%s] Συγχώνευση αρχείων" + +#: ../meld/gutterrendererchunk.py:91 +msgid "Copy _up" +msgstr "Αντιγραφή ε_πάνω" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _down" +msgstr "Αντιγραφή _κάτω" + +#: ../meld/meldapp.py:132 +msgid "wrong number of arguments supplied to --diff" +msgstr "λανθασμένος αριθμός από ορίσματα δόθηκαν στο --diff" + +#: ../meld/meldapp.py:137 +msgid "Start with an empty window" +msgstr "Έναρξη με κενό παράθυρο" + +#: ../meld/meldapp.py:138 ../meld/meldapp.py:140 +msgid "file" +msgstr "αρχείο" + +#: ../meld/meldapp.py:138 ../meld/meldapp.py:142 +msgid "dir" +msgstr "κατάλογος" + +#: ../meld/meldapp.py:139 +msgid "Start a version control comparison" +msgstr "Έναρξη σύγκρισης ελέγχου εκδόσεων" + +#: ../meld/meldapp.py:141 +msgid "Start a 2- or 3-way file comparison" +msgstr "Έναρξη μιας 2- ή 3-πλής σύγκρισης αρχείων" + +#: ../meld/meldapp.py:143 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Έναρξη μιας 2- ή 3-πλής σύγκρισης καταλόγων" + +#: ../meld/meldapp.py:151 +msgid "Meld is a file and directory comparison tool." +msgstr "Το Meld είναι ένα εργαλείο σύγκρισης αρχείων και καταλόγων." + +#: ../meld/meldapp.py:154 +msgid "Set label to use instead of file name" +msgstr "Ορισμός ετικέτας για να χρησιμοποιηθεί αντί για όνομα αρχείου" + +#: ../meld/meldapp.py:156 +msgid "Open a new tab in an already running instance" +msgstr "Ανοίξτε μια νέα καρτέλα σε ένα ήδη εκτελούμενο στιγμιότυπο" + +#: ../meld/meldapp.py:159 +msgid "Automatically compare all differing files on startup" +msgstr "Αυτόματη σύγκριση όλων των αρχείων διαφοροποίησης στην εκκίνηση" + +#: ../meld/meldapp.py:161 +msgid "Ignored for compatibility" +msgstr "Αγνοημένο για συμβατότητα" + +#: ../meld/meldapp.py:164 +msgid "Set the target file for saving a merge result" +msgstr "" +"Ορισμός του αρχείου στόχου για αποθήκευση ενός αποτελέσματος συγχώνευσης" + +#: ../meld/meldapp.py:166 +msgid "Automatically merge files" +msgstr "Αυτόματη συγχώνευση αρχείων" + +#: ../meld/meldapp.py:169 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Φόρτωση μιας αποθηκευμένης σύγκρισης από ένα αρχείο σύγκρισης Meld" + +#: ../meld/meldapp.py:172 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Δημιουργία μιας καρτέλας διαφορών για τα παρεχόμενα αρχεία ή φακέλους" + +#: ../meld/meldapp.py:175 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "υπερβολικά πολλά ορίσματα (επιθυμητά 0-3, ελήφθησαν %d)" + +#: ../meld/meldapp.py:178 +msgid "can't auto-merge less than 3 files" +msgstr "αδύνατη η αυτόματη συγχώνευση λιγότερων από 3 αρχείων" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge directories" +msgstr "αδύνατη η αυτόματη συγχώνευση καταλόγων" + +#: ../meld/meldapp.py:190 +msgid "Error reading saved comparison file" +msgstr "Σφάλμα ανάγνωσης αποθηκευμένου αρχείου σύγκρισης" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:105 +msgid "" +msgstr "<ανώνυμο>" + +#: ../meld/melddoc.py:75 ../meld/melddoc.py:76 +msgid "untitled" +msgstr "Χωρίς τίτλο" + +#: ../meld/meldwindow.py:50 +msgid "_File" +msgstr "_Αρχείο" + +#: ../meld/meldwindow.py:51 +msgid "_New Comparison..." +msgstr "_Νέα σύγκριση..." + +#: ../meld/meldwindow.py:52 +msgid "Start a new comparison" +msgstr "Έναρξη μιας νέας σύγκρισης" + +#: ../meld/meldwindow.py:55 +msgid "Save the current file" +msgstr "Αποθήκευση του τρέχοντος αρχείου" + +#: ../meld/meldwindow.py:57 +msgid "Save As..." +msgstr "Αποθήκευση ως..." + +#: ../meld/meldwindow.py:58 +msgid "Save the current file with a different name" +msgstr "Αποθήκευση του τρέχοντος αρχείου με διαφορετικό όνομα" + +#: ../meld/meldwindow.py:61 +msgid "Close the current file" +msgstr "Κλείσιμο του τρέχοντος αρχείου" + +#: ../meld/meldwindow.py:64 +msgid "_Edit" +msgstr "Ε_πεξεργασία" + +#: ../meld/meldwindow.py:66 +msgid "Undo the last action" +msgstr "Αναίρεση της τελευταίας ενέργειας" + +#: ../meld/meldwindow.py:69 +msgid "Redo the last undone action" +msgstr "Επανάληψη της τελευταίας ακυρωμένης ενέργειας" + +#: ../meld/meldwindow.py:71 +msgid "Cut the selection" +msgstr "Αποκοπή της επιλογής" + +#: ../meld/meldwindow.py:73 +msgid "Copy the selection" +msgstr "Αντιγραφή της επιλογής" + +#: ../meld/meldwindow.py:75 +msgid "Paste the clipboard" +msgstr "Επικόλληση του προχείρου" + +#: ../meld/meldwindow.py:77 +msgid "Find..." +msgstr "Εύρεση..." + +#: ../meld/meldwindow.py:77 +msgid "Search for text" +msgstr "Αναζήτηση για κείμενο" + +#: ../meld/meldwindow.py:79 +msgid "Find Ne_xt" +msgstr "Εύρεση ε_πομένου" + +#: ../meld/meldwindow.py:80 +msgid "Search forwards for the same text" +msgstr "Αναζήτηση προς τα μπροστά για το ίδιο κείμενο" + +#: ../meld/meldwindow.py:82 +msgid "Find _Previous" +msgstr "Εύρεση _προηγούμενου" + +#: ../meld/meldwindow.py:83 +msgid "Search backwards for the same text" +msgstr "Αναζήτηση προς τα πίσω για το ίδιο κείμενο" + +#: ../meld/meldwindow.py:86 +msgid "_Replace..." +msgstr "_Αντικατάσταση..." + +#: ../meld/meldwindow.py:87 +msgid "Find and replace text" +msgstr "Εύρεση και αντικατάσταση κειμένου" + +#: ../meld/meldwindow.py:90 +msgid "_Changes" +msgstr "_Αλλαγές" + +#: ../meld/meldwindow.py:91 +msgid "Next Change" +msgstr "Επόμενη αλλαγή" + +#: ../meld/meldwindow.py:92 +msgid "Go to the next change" +msgstr "Μετάβαση στην επόμενη αλλαγή" + +#: ../meld/meldwindow.py:94 +msgid "Previous Change" +msgstr "Προηγούμενη αλλαγή" + +#: ../meld/meldwindow.py:95 +msgid "Go to the previous change" +msgstr "Μετάβαση στην προηγούμενη αλλαγή" + +#: ../meld/meldwindow.py:97 +msgid "Open Externally" +msgstr "Άνοιγμα εξωτερικά" + +#: ../meld/meldwindow.py:98 +msgid "Open selected file or directory in the default external application" +msgstr "" +"Ανοίξτε το επιλεγμένο αρχείο ή κατάλογο στην προεπιλεγμένη εξωτερική εφαρμογή" + +#: ../meld/meldwindow.py:102 +msgid "_View" +msgstr "_Προβολή" + +#: ../meld/meldwindow.py:103 +msgid "File Status" +msgstr "Κατάσταση αρχείου" + +#: ../meld/meldwindow.py:104 +msgid "Version Status" +msgstr "Κατάσταση έκδοσης" + +#: ../meld/meldwindow.py:107 +msgid "Stop the current action" +msgstr "Διακοπή τρέχουσας ενέργειας" + +#: ../meld/meldwindow.py:110 +msgid "Refresh the view" +msgstr "Ανανέωση της προβολής" + +#: ../meld/meldwindow.py:113 +msgid "_Tabs" +msgstr "_Καρτέλες" + +#: ../meld/meldwindow.py:114 +msgid "_Previous Tab" +msgstr "_Προηγούμενη καρτέλα" + +#: ../meld/meldwindow.py:115 +msgid "Activate previous tab" +msgstr "Ενεργοποίηση προηγούμενης καρτέλας" + +#: ../meld/meldwindow.py:117 +msgid "_Next Tab" +msgstr "_Επόμενη καρτέλα" + +#: ../meld/meldwindow.py:118 +msgid "Activate next tab" +msgstr "Ενεργοποίηση επόμενης καρτέλας" + +#: ../meld/meldwindow.py:121 +msgid "Move Tab _Left" +msgstr "Μετακίνηση καρτέλας _αριστερά" + +#: ../meld/meldwindow.py:122 +msgid "Move current tab to left" +msgstr "Μετακίνηση της τρέχουσας καρτέλας στα αριστερά" + +#: ../meld/meldwindow.py:125 +msgid "Move Tab _Right" +msgstr "Μετακίνηση καρτέλας _δεξιά" + +#: ../meld/meldwindow.py:126 +msgid "Move current tab to right" +msgstr "Μετακίνηση της τρέχουσας καρτέλας στα δεξιά" + +#: ../meld/meldwindow.py:130 +msgid "Fullscreen" +msgstr "Πλήρης οθόνη" + +#: ../meld/meldwindow.py:131 +msgid "View the comparison in fullscreen" +msgstr "Προβολή της σύγκρισης σε πλήρη οθόνη" + +#: ../meld/meldwindow.py:133 +msgid "_Toolbar" +msgstr "_Εργαλειοθήκη" + +#: ../meld/meldwindow.py:134 +msgid "Show or hide the toolbar" +msgstr "Εμφάνιση ή απόκρυψη της εργαλειοθήκης" + +#: ../meld/meldwindow.py:136 +msgid "_Statusbar" +msgstr "_Γραμμή κατάστασης" + +#: ../meld/meldwindow.py:137 +msgid "Show or hide the statusbar" +msgstr "Εμφάνιση ή απόκρυψη της γραμμής κατάστασης" + +#: ../meld/meldwindow.py:146 +msgid "Open Recent" +msgstr "Άνοιγμα πρόσφατων" + +#: ../meld/meldwindow.py:147 +msgid "Open recent files" +msgstr "Άνοιγμα πρόσφατων αρχείων" + +#: ../meld/meldwindow.py:538 +msgid "Switch to this tab" +msgstr "Μετάβαση σε αυτήν την καρτέλα" + +#: ../meld/meldwindow.py:661 +msgid "Cannot compare a mixture of files and directories" +msgstr "Αδύνατη η σύγκριση ενός μίγματος από αρχεία και καταλόγους" + +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:178 +msgid "[None]" +msgstr "[Κανένα]" + +#: ../meld/preferences.py:34 +msgid "label" +msgstr "ετικέτα" + +#: ../meld/preferences.py:34 +msgid "pattern" +msgstr "υπόδειγμα" + +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Έλεγχος εκδόσεων:" + +#: ../meld/ui/findbar.py:141 +msgid "Regular expression error" +msgstr "Σφάλμα κανονικής έκφρασης" + +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Κλείσιμο καρτέλας" + +#: ../meld/ui/vcdialogs.py:61 +msgid "No files will be committed" +msgstr "Δεν θα υποβληθεί κανένα αρχείο" -#: ../dirdiff.py:528 +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 #, python-format -msgid "" -"'%s' exists.\n" -"Overwrite?" -msgstr "" -"'%s' υπάρχει.\n" -"Να επικαλυφθεί;" +msgid "%s in %s" +msgstr "%s από %s" -#: ../dirdiff.py:535 +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 #, python-format -msgid "" -"Error copying '%s' to '%s'\n" -"\n" -"%s." -msgstr "" -"Σφάλμα αντιγραφής '%s' στο '%s'\n" -"\n" -"%s." +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d μη προωθημένη υποβολή" +msgstr[1] "%d μη προωθημένες υποβολές" -#: ../dirdiff.py:553 -#: ../vcview.py:405 +#: ../meld/vc/git.py:129 #, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recusively?" -msgstr "" -"Το %s είναι κατάλογος.\n" -"Να σβηστεί αναδρομικά;" +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d κλάδος" +msgstr[1] "%d κλάδοι" -#: ../dirdiff.py:560 -#: ../vcview.py:410 +#: ../meld/vc/git.py:341 #, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Σφάλμα απομάκρυνσης %s\n" -"\n" -"%s." +msgid "Mode changed from %s to %s" +msgstr "Η κατάσταση άλλαξε από %s σε %s" -#: ../dirdiff.py:571 -#, python-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "%i δευτερόλεπτο" -msgstr[1] "%i δευτερόλεπτα" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Συγχωνευμένο" -#: ../dirdiff.py:572 -#, python-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "%i λεπτό" -msgstr[1] " %i λεπτά" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Βάση" -#: ../dirdiff.py:573 -#, python-format -msgid "%i hour" -msgid_plural "%i hours" -msgstr[0] "%i ώρα" -msgstr[1] "%i ώρες" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Τοπικό" -#: ../dirdiff.py:574 -#, python-format -msgid "%i day" -msgid_plural "%i days" -msgstr[0] "%i ημέρα" -msgstr[1] "%i ημέρες" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Απομακρυσμένο" -#: ../dirdiff.py:575 -#, python-format -msgid "%i week" -msgid_plural "%i weeks" -msgstr[0] "%i εβδομάδα" -msgstr[1] "%i εβδομάδες" +#: ../meld/vc/_vc.py:65 +msgid "Unversioned" +msgstr "Χωρίς έκδοση" -#: ../dirdiff.py:576 -#, python-format -msgid "%i month" -msgid_plural "%i months" -msgstr[0] "%i μήνας" -msgstr[1] "%i μήνες" +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Σφάλμα" -#: ../dirdiff.py:577 -#, python-format -msgid "%i year" -msgid_plural "%i years" -msgstr[0] "%i έτος" -msgstr[1] "%i έτη" +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Πρόσφατη προσθήκη" -#. Abbreviation for insert,overwrite so that it will fit in the status bar -#: ../filediff.py:200 -msgid "INS,OVR" -msgstr "INS,OVR" +#: ../meld/vc/_vc.py:72 +msgid "Conflict" +msgstr "Διένεξη" -#. Abbreviation for line, column so that it will fit in the status bar -#: ../filediff.py:202 -#, python-format -msgid "Ln %i, Col %i" -msgstr "Γραμμή %i, Στήλη %i" +#: ../meld/vc/_vc.py:73 +msgid "Removed" +msgstr "Αφαιρέθηκε" -#: ../filediff.py:260 -#, python-format -msgid "Regular expression '%s' changed the number of lines in the file. Comparison will be incorrect. See the user manual for more details." -msgstr "Κανονική έκφραση '%s' άλλαξε τον αριθμό γραμμών στο αρχείο. Η σύγκριση θα είναι λάθος. Βλέπετε το εγχειρίδιο χρήσης για περισσότερες λεπτομέρειες." +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Λείπει" -#: ../filediff.py:508 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Λάθος κανονικής έκφρασης\n" -"'%s'" +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Δεν είναι παρόν" -#: ../filediff.py:520 -#, python-format -msgid "The regular expression '%s' was not found." -msgstr "Η κανονική έκφραση '%s' δεν βρέθηκε." +#: ../meld/vcview.py:216 ../meld/vcview.py:391 +msgid "Location" +msgstr "Τοποθεσία" -#: ../filediff.py:522 -#, python-format -msgid "The text '%s' was not found." -msgstr "Το κείμενο '%s' δεν βρέθηκε." +#: ../meld/vcview.py:217 +msgid "Status" +msgstr "Κατάσταση" -#: ../filediff.py:574 -#, python-format -msgid "[%s] Set num panes" -msgstr "" +#: ../meld/vcview.py:218 +msgid "Revision" +msgstr "Αναθεώρηση" + +#: ../meld/vcview.py:219 +msgid "Options" +msgstr "Επιλογές" -#: ../filediff.py:581 +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:302 #, python-format -msgid "[%s] Opening files" -msgstr "[%s] άνοιγμα αρχείων" +msgid "%s not installed" +msgstr "το %s δεν είναι εγκατεστημένο" -#: ../filediff.py:598 -#: ../filediff.py:612 -#: ../filediff.py:628 -#: ../filediff.py:635 -#, python-format -msgid "Could not read from '%s'" -msgstr "Δεν μπορεί να γίνει ανάγνωση από '%s'" - -#: ../filediff.py:599 -#: ../filediff.py:636 -msgid "The error was:" -msgstr "Το λάθος ήταν:" +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:306 +msgid "Invalid repository" +msgstr "Άκυρο αποθετήριο" -#: ../filediff.py:604 +#: ../meld/vcview.py:315 #, python-format -msgid "[%s] Reading files" -msgstr "[%s] διάβασμα αρχείων" +msgid "%s (%s)" +msgstr "%s (%s)" -#: ../filediff.py:613 -msgid "" -"It contains ascii nulls.\n" -"Perhaps it is a binary file." -msgstr "" -"Περιέχει μηδενικά ascii.\n" -"Ίσως είναι δυαδικό αρχείο." +#: ../meld/vcview.py:317 ../meld/vcview.py:325 +msgid "None" +msgstr "Κανένα" -#: ../filediff.py:629 -#, python-format -msgid "I tried encodings %s." -msgstr "Έγινε προσπάθεια για κωδικοποιήσεις %s." +#: ../meld/vcview.py:336 +msgid "No valid version control system found in this folder" +msgstr "Δεν βρέθηκε σύστημα ελέγχου έγκυρων εκδόσεων σε αυτόν τον φάκελο" -#: ../filediff.py:658 -#, python-format -msgid "[%s] Computing differences" -msgstr "[%s] υπολογισμός διαφορών" +#: ../meld/vcview.py:338 +msgid "Only one version control system found in this folder" +msgstr "Βρέθηκε μόνο ένα σύστημα ελέγχου εκδόσεων σε αυτόν τον φάκελο" -#: ../filediff.py:763 -#, python-format -msgid "" -"\"%s\" exists!\n" -"Overwrite?" -msgstr "" -"Το \"%s\" υπάρχει!\n" -"Να αντικατασταθεί;" +#: ../meld/vcview.py:340 +msgid "Choose which version control system to use" +msgstr "Επιλέξτε ποιο σύστημα έλεγχου εκδόσεων θα χρησιμοποιηθεί" -#: ../filediff.py:776 +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:391 #, python-format -msgid "" -"Error writing to %s\n" -"\n" -"%s." -msgstr "" -"Σφάλμα γραφής στο %s\n" -"\n" -"%s." +msgid "%s: %s" +msgstr "%s: %s" -#: ../filediff.py:785 +#: ../meld/vcview.py:405 ../meld/vcview.py:413 #, python-format -msgid "Choose a name for buffer %i." -msgstr "Επιλογή ονόματος για ενδιάμεση μνήμη %i" +msgid "Scanning %s" +msgstr "Σάρωση του %s" -#: ../filediff.py:798 -#, python-format +#: ../meld/vcview.py:447 +msgid "(Empty)" +msgstr "(Κενό)" + +#: ../meld/vcview.py:670 +msgid "Remove folder and all its files?" +msgstr "Να αφαιρεθεί ο φάκελος και όλα τα αρχεία του;" + +#: ../meld/vcview.py:672 msgid "" -"This file '%s' contains a mixture of line endings.\n" -"\n" -"Which format would you like to use?" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"Το αρχείο '%s' περιέχει ένα μείγμα από τέλη γραμμών.\n" -"\n" -"Ποιά μορφή να χρησιμοποιηθεί;" +"Αυτό θα αφαιρέσει όλα τα επιλεγμένα αρχεία και φακέλους και όλα τα αρχεία " +"μέσα σε οποιονδήποτε επιλεγμένο φάκελο, από τον έλεγχο εκδόσεων." -#: ../filediff.py:814 +#: ../meld/vcview.py:706 #, python-format -msgid "" -"'%s' contains characters not encodable with '%s'\n" -"Would you like to save as UTF-8?" -msgstr "" -"'%s' περιέχει χαρακτήρες που δεν κωδικοποιούνται με '%s'\n" -"Να αποθηκευθεί ως UTF-8;" +msgid "Error removing %s" +msgstr "Σφάλμα κατά την αφαίρεση του %s" -#. save as -#: ../filediff.py:865 -msgid "Save patch as..." -msgstr "Αποθήκευση επιδιoρθωτικού πακέτου ως...." +#~ msgid "" +#~ "Meld 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.\n" +#~ "\n" +#~ "Meld 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. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see ." +#~ msgstr "" +#~ "Το Meld είναι ελεύθερο λογισμικό: μπορείτε να το αναδιανείμετε και/ή να " +#~ "το τροποποιήσετε κάτω από τους όρους της γενικής δημόσιας άδειας GNU όπως " +#~ "δημοσιεύτηκε από το Ίδρυμα ελεύθερου λογισμικού, είτε έκδοσης 2 της " +#~ "άδειας, ή (κατ' επιλογή) από οποιαδήποτε μεταγενέστερη έκδοση.\n" +#~ "\n" +#~ "Το Meld διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά ΧΩΡΙΣ ΚΑΜΙΑ " +#~ "ΕΓΓΥΗΣΗ· χωρίς ακόμα και την υπονοούμενη εγγύηση ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ Η " +#~ "ΠΡΟΣΑΡΜΟΓΗΣ ΓΙΑ ΕΝΑΝ ΕΙΔΙΚΟ ΣΚΟΠΟ. Δείτε την γενική δημόσια άδεια GNU για " +#~ "περισσότερες λεπτομέρειες.\n" +#~ "\n" +#~ "Θα πρέπει να έχετε λάβει ένα αντίγραφο της γενικής δημόσιας άδειας GNU " +#~ "μαζί με αυτό το πρόγραμμα. Αν όχι, δείτε ." -#: ../filediff.py:919 -#, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"Επαναφόρτωση θα προκαλέσει απόρριψη αλλαγών στο:\n" -"%s\n" -"\n" -".Η διαδικασία αυτή δεν μπορεί να αναιρεθεί." +#~| msgid "Loading" +#~ msgid "Loading" +#~ msgstr "Γίνεται φόρτωση" -#: ../glade2/dirdiff.glade.h:1 -msgid "Case" -msgstr "Πεζά/κεφαλαία" - -#: ../glade2/dirdiff.glade.h:2 -msgid "Compare" -msgstr "Σύγκριση" - -#: ../glade2/dirdiff.glade.h:3 -#: ../glade2/vcview.glade.h:6 -msgid "Compare selected" -msgstr "Σύγκριση επιλεγμένου" - -#: ../glade2/dirdiff.glade.h:4 -msgid "Copy To Left" -msgstr "Αντιγραφή προς αριστερά" - -#: ../glade2/dirdiff.glade.h:5 -msgid "Copy To Right" -msgstr "Αντιγραφή προς δεξιά" +#~ msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +#~ msgstr "" +#~ "Κατά την φόρτωση, δοκιμάστε αυτούς τους κωδικοποιητές-αποκωδικοποιητές σε " +#~ "σειρά. (π.χ. utf8, iso8859)" -#: ../glade2/dirdiff.glade.h:6 -msgid "Delete selected" -msgstr "Διαγραφή επιλεγμένου" +#~ msgid "Encoding" +#~ msgstr "Κωδικοποίηση" -#: ../glade2/dirdiff.glade.h:7 -#: ../glade2/filediff.glade.h:7 -msgid "Edit" -msgstr "Επεξεργασία" +#~ msgid "Compare selected" +#~ msgstr "Σύγκριση επιλεγμένου" -#: ../glade2/dirdiff.glade.h:8 -msgid "Hide selected" -msgstr "Απόκρυψη επιλεγμένου" +#~| msgid "" +#~| "'%s' is a directory.\n" +#~| "Remove recusively?" +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "Το %s είναι κατάλογος.\n" +#~ "Να σβηστεί αναδρομικά;" -#: ../glade2/dirdiff.glade.h:9 -msgid "Hide..." -msgstr "Απόκρυψη..." - -#: ../glade2/dirdiff.glade.h:10 -msgid "Ignore case of entries" -msgstr "Αγνόηση πεζά-κεφαλαία των καταχωρήσεων" - -#: ../glade2/dirdiff.glade.h:11 -msgid "Left" -msgstr "Αριστερά" +#~ msgid "Start a comparison between file and dir/file" +#~ msgstr "Έναρξη μιας σύγκρισης μεταξύ αρχείου και καταλόγου/αρχείου" -#: ../glade2/dirdiff.glade.h:12 -msgid "Modified" -msgstr "Τροποποιήθηκε" +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "Σφάλμα δίαυλου D· οι συγκρίσεις θα ανοίξουν σε ένα νέο παράθυρο." -#: ../glade2/dirdiff.glade.h:13 -msgid "New" -msgstr "Νέο" +#~ msgid "Quit the program" +#~ msgstr "Έξοδος από το πρόγραμμα" -#: ../glade2/dirdiff.glade.h:14 -msgid "Right" -msgstr "Δεξιά" +#~ msgid "Configure the application" +#~ msgstr "Ρύθμιση της εφαρμογής" -#: ../glade2/dirdiff.glade.h:15 -msgid "Same" -msgstr "Ίδιο" +#~ msgid "_Contents" +#~ msgstr "_Περιεχόμενα" -#: ../glade2/dirdiff.glade.h:16 -msgid "Show identical" -msgstr "Εμφάνιση πανομοιότυπου" +#~ msgid "Open the Meld manual" +#~ msgstr "Άνοιγμα του εγχειριδίου του Meld" -#: ../glade2/dirdiff.glade.h:17 -#: ../glade2/vcview.glade.h:20 -msgid "Show modified" -msgstr "Εμφάνιση τροποποιημένου" +#~ msgid "Report _Bug" +#~ msgstr "Αναφορά _σφάλματος" -#: ../glade2/dirdiff.glade.h:18 -msgid "Show new" -msgstr "Εμφάνιση νέου" +#~ msgid "Report a bug in Meld" +#~ msgstr "Αναφορά ενός σφάλματος στο Meld" -#: ../glade2/dirdiff.glade.h:19 -#: ../glade2/meldapp.glade.h:89 -#: ../glade2/vcview.glade.h:28 -msgid "_Compare" -msgstr "_Σύγκριση" +#~ msgid "About this program" +#~ msgstr "Περί αυτού του προγράμματος" -#: ../glade2/dirdiff.glade.h:20 -msgid "_Delete Selected" -msgstr "_Διαγραφή επιλεγμένου" +#~| msgid "" +#~| "Line numbers are only available if you have gnome-python-desktop " +#~| "installed." +#~ msgid "Only available if you have gnome-python-desktop installed" +#~ msgstr "Διαθέσιμο μόνο αν έχετε εγκατεστημένο το gnome-python-desktop" -#: ../glade2/filediff.glade.h:1 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -" Κάποια αρχεία έχουν τροποποιηθεί.\n" -"Ποιά να αποθηκευθούν;" +#~ msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgstr "Αντίγραφα ασφαλείας\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -#: ../glade2/filediff.glade.h:3 -msgid "Copy All To _Left" -msgstr "Αντιγραφή όλα προς αρι_στερά" +#~ msgid "" +#~ "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +#~ "Desktop.ini\n" +#~ msgstr "" +#~ "OS-ειδικά μεταδεδομένα\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs." +#~ "db Desktop.ini\n" -#: ../glade2/filediff.glade.h:4 -msgid "Copy All To _Right" -msgstr "Αντιγραφή όλα προς _δεξιά" +#~| msgid "_Version Control Browser" +#~ msgid "Version Control\t1\t%s\n" +#~ msgstr "Έλεγχος εκδόσεων\t1\t%s\n" -#: ../glade2/filediff.glade.h:5 -msgid "Copy to Clipboard" -msgstr "Αντιγραφή στο πρόχειρο" +#~| msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +#~ msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +#~ msgstr "Δυαδικά \t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" -#: ../glade2/filediff.glade.h:6 -msgid "Create Patch" -msgstr "Δημιουργία επιδιορθωτικού πακέτου" - -#: ../glade2/filediff.glade.h:8 -msgid "Find" -msgstr "Εύρεση" - -#: ../glade2/filediff.glade.h:9 -msgid "Match _entire word only" -msgstr "Ταίριασμα μόνο ολό_κληρης λέξης" +#~| msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +#~ msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +#~ msgstr "Μέσα\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" -#: ../glade2/filediff.glade.h:10 -msgid "Regular e_xpression" -msgstr "Κανονική έκ_φραση" +#~ msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgstr "Λέξεις κλειδιά CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -#: ../glade2/filediff.glade.h:11 -msgid "Save modified files?" -msgstr "Αποθήκευση τροποποιημένων αρχείων;" - -#: ../glade2/filediff.glade.h:12 -msgid "Search for:" -msgstr "Αναζήτηση για:" +#~ msgid "C++ comment\t0\t//.*\n" +#~ msgstr "Εντολές C++\t0\t//.*\n" -#: ../glade2/filediff.glade.h:13 -msgid "_Match case" -msgstr "_Ταίριασμα πεζών/κεφαλαίων" +#~ msgid "C comment\t0\t/\\*.*?\\*/\n" +#~ msgstr "Σχόλιο C\t0\t/\\*.*?\\*/\n" -#: ../glade2/filediff.glade.h:14 -msgid "_Wrap around" -msgstr "_Αναδίπλωση γύρω" - -#: ../glade2/meldapp.glade.h:1 -msgid "(gnome-default-editor)" -msgstr "(προεπιλεγμένος συντάκτης κειμένου για το gnome)" - -#: ../glade2/meldapp.glade.h:2 -msgid "Drawing Style" -msgstr " Σχεδιαστικό Στυλ" - -#: ../glade2/meldapp.glade.h:3 -msgid "Edit Menu" -msgstr " Επεξεργασία μενού" - -#: ../glade2/meldapp.glade.h:4 -msgid "Font" -msgstr "Γραμματοσειρά" - -#: ../glade2/meldapp.glade.h:5 -msgid "Global options" -msgstr " Καθολικές επιλογές" - -#: ../glade2/meldapp.glade.h:6 -msgid "Loading" -msgstr "Φόρτωση" - -#: ../glade2/meldapp.glade.h:7 -msgid "Misc" -msgstr "Διάφορα" - -#: ../glade2/meldapp.glade.h:8 -msgid "Saving" -msgstr "Αποθήκευση" - -#: ../glade2/meldapp.glade.h:9 -msgid "Toolbar Appearance" -msgstr "Εμφάνιση γραμμής εργαλείων" - -#: ../glade2/meldapp.glade.h:10 -msgid "Update Options" -msgstr " Ενημέρωση επιλογών" - -#: ../glade2/meldapp.glade.h:11 -msgid "Whitespace" -msgstr "Λευκό διάστημα" - -#: ../glade2/meldapp.glade.h:12 -msgid "CVS" -msgstr " CVS" - -#: ../glade2/meldapp.glade.h:13 -msgid "Compare" -msgstr "Σύγκριση" - -#: ../glade2/meldapp.glade.h:14 -msgid "Display" -msgstr " Εμφάνιση" - -#: ../glade2/meldapp.glade.h:15 -msgid "Editor" -msgstr " Συντάκτης" - -#: ../glade2/meldapp.glade.h:16 -msgid "Encoding" -msgstr " Κωδικοποίηση" - -#: ../glade2/meldapp.glade.h:17 -msgid "File Filters" -msgstr " Φίλτρα αρχείων" - -#: ../glade2/meldapp.glade.h:18 -msgid "Text Filters" -msgstr " Φίλτρα κειμένων" - -#: ../glade2/meldapp.glade.h:19 -msgid "Automatically supply missing newline at end of file" -msgstr "Αυτόματα παρέχεται μία νέα γραμμή στο τέλος του αρχείου αν δεν υπάρχει" - -#: ../glade2/meldapp.glade.h:20 -msgid "CVS" -msgstr "CVS" - -#: ../glade2/meldapp.glade.h:21 -msgid "CVS Directory" -msgstr "Κατάλογος CVS" - -#: ../glade2/meldapp.glade.h:22 -msgid "CVS binary" -msgstr "Δυαδικό CVS" - -#: ../glade2/meldapp.glade.h:23 -msgid "Choose Files" -msgstr "Επιλογή αρχείων" - -#: ../glade2/meldapp.glade.h:24 -msgid "Choose how the central bar of the diff viewer is drawn. You may wish to choose a simpler mode if you find scrolling is slow." -msgstr "Επιλογή του πως σχεδιάζεται η κεντρική μπάρα της προβολής διαφορών. Ίσως να θέλετε να επιλεγεί ένας απλούστερος τρόπος αν δείτε ότι η κύλιση είναι αργή." - -#: ../glade2/meldapp.glade.h:25 -msgid "Copyright (C) 2002-2006 Stephen Kennedy" -msgstr "Πνευματικά δικαιώματα (C) 2002-2006 Stephen Kennedy" - -#: ../glade2/meldapp.glade.h:26 -msgid "Create missing directories (-d)" -msgstr "Δημιουργία καταλόγων που λείπουν (-d)" - -#: ../glade2/meldapp.glade.h:27 -msgid "Curved: Filled Curves" -msgstr "Καμπύλες: Γέμισμα καμπυλών" - -#: ../glade2/meldapp.glade.h:28 -msgid "Custom command" -msgstr "Προσαρμοσμένη εντολή" - -#: ../glade2/meldapp.glade.h:29 -msgid "Directory" -msgstr "Κατάλογος" +#~ msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgstr "Όλα τα κενά διαστήματα\t0\t[ \\t\\r\\f\\v]*\n" -#: ../glade2/meldapp.glade.h:30 -msgid "Display" -msgstr "Εμφάνιση" +#~ msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgstr "Αρχικό κενό διάστημα\t0\t^[ \\t\\r\\f\\v]*\n" -#: ../glade2/meldapp.glade.h:31 -msgid "Edit files with:" -msgstr "Επεξεργασία αρχείων με:" +#~ msgid "Script comment\t0\t#.*" +#~ msgstr "Σχόλιο σεναρίου\t0\t#.*" -#: ../glade2/meldapp.glade.h:32 -msgid "Editor" -msgstr "Συντάκτης" +#~ msgid "[%s] Fetching differences" +#~ msgstr "[%s] Προσκόμιση διαφορών" -#: ../glade2/meldapp.glade.h:33 -msgid "Encoding" -msgstr "Κωδικοποίηση" +#~ msgid "[%s] Applying patch" +#~ msgstr "[%s] Εφαρμογή μπαλώματος" -#: ../glade2/meldapp.glade.h:34 -msgid "File Filters" -msgstr "Φίλτρα αρχείων" +#~ msgid "Patch tool not found" +#~ msgstr "Δεν βρέθηκε το εργαλείο μπαλώματος" -#: ../glade2/meldapp.glade.h:35 -msgid "Gnome Default" -msgstr "Προεπιλογή Gnome" - -#: ../glade2/meldapp.glade.h:36 -msgid "Gnome default editor" -msgstr "Προεπιλεγμένος συντάκτης Gnome" - -#: ../glade2/meldapp.glade.h:37 -msgid "Icons Only" -msgstr "Μόνο εικονίδια" - -#: ../glade2/meldapp.glade.h:38 -msgid "Ignore .cvsrc (-f)" -msgstr "Αγνόηση .cvsrc (-f)" - -#: ../glade2/meldapp.glade.h:39 -msgid "Ignore changes in amount of white space" -msgstr "Αγνόηση αλλαγών σε ποσότητα λευκού διαστήματος" - -#: ../glade2/meldapp.glade.h:40 -msgid "Ignore changes in case; consider upper and lower-case letters equivalent" -msgstr "Αγνόηση αλλαγών σε πεζά/κεφαλαία. Θεώρηση κεφαλαίων και πεζών γραμμάτων ως ισοδύναμα" - -#: ../glade2/meldapp.glade.h:41 -msgid "Ignore changes that just insert or delete blank lines" -msgstr "Αγνόηση αλλαγών που απλώς εισάγουν ή διαγράφουν κενές γραμμές" +#~ msgid "" +#~ "Meld needs the patch tool to be installed to perform comparisons " +#~ "in %s repositories. Please install patch and try again." +#~ msgstr "" +#~ "Το Meld χρειάζεται το εργαλείο μπαλώματος να εγκατασταθεί για να " +#~ "εκτελέσει συγκρίσεις σε %s αποθετήρια. Παρακαλούμε εγκαταστήστε το " +#~ "μπάλωμα και δοκιμάστε ξανά." -#: ../glade2/meldapp.glade.h:42 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Αγνόηση αλλαγών που εισάγουν ή διαγράφουν κενές γραμμές" +#~ msgid "Error fetching original comparison file" +#~ msgstr "Σφάλμα προσκόμισης του αρχικού αρχείου σύγκρισης" -#: ../glade2/meldapp.glade.h:43 -msgid "Ignore symbolic links" -msgstr "Αγνόηση συμβολικών δεσμών" +#~ msgid "" +#~ "Meld couldn't obtain the original version of your comparison file. If you " +#~ "are using the most recent version of Meld, please report a bug, including " +#~ "as many details as possible." +#~ msgstr "" +#~ "Το Meld δεν μπόρεσε να λάβει την αρχική έκδοση του αρχείου σύγκρισης. Αν " +#~ "χρησιμοποιείτε την πιο πρόσφατη έκδοση του Meld, παρακαλούμε αναφέρτε ένα " +#~ "σφάλμα, συμπεριλαμβάνοντας όσες περισσότερες λεπτομέρειες είναι δυνατό." -#: ../glade2/meldapp.glade.h:44 -msgid "Internal editor" -msgstr "Εσωτερικός συντάκτης" +#~| msgid "Report _Bug" +#~ msgid "Report a bug" +#~ msgstr "Αναφορά σφάλματος" -#: ../glade2/meldapp.glade.h:45 -msgid "Line Wrapping " -msgstr "Αναδίπλωση γραμμών " +#~ msgid "_Browse..." +#~ msgstr "_Περιήγηση..." -#: ../glade2/meldapp.glade.h:46 -msgid "Locate CVS binary : Meld" -msgstr "Εντοπισμός CVS binary: Meld" +#~ msgid "Path" +#~ msgstr "Διαδρομή" -#: ../glade2/meldapp.glade.h:47 -msgid "Mailing _List" -msgstr "Λί_στα ταχυδρομείου" +#~ msgid "Path to file" +#~ msgstr "Διαδρομή στο αρχείο" -#: ../glade2/meldapp.glade.h:48 -msgid "Meld" -msgstr "Meld" +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "Ανάδυση ενός επιλογέα αρχείου για την επιλογή αρχείου" -#: ../glade2/meldapp.glade.h:49 -msgid "Mine" -msgstr "Δικό μου" - -#: ../glade2/meldapp.glade.h:50 -msgid "My Directory" -msgstr "Ο προσωπικός μου κατάλογος" - -#: ../glade2/meldapp.glade.h:51 -msgid "My File" -msgstr "Τα αρχεία μου" - -#: ../glade2/meldapp.glade.h:52 -msgid "Original" -msgstr "Αρχικό" - -#: ../glade2/meldapp.glade.h:53 -msgid "Original Directory" -msgstr "Αρχικός Κατάλογος" - -#: ../glade2/meldapp.glade.h:54 -msgid "Original File" -msgstr "Αρχικό αρχείο" - -#: ../glade2/meldapp.glade.h:55 -msgid "Other" -msgstr "Άλλο" - -#: ../glade2/meldapp.glade.h:56 -msgid "Other Directory" -msgstr "Άλλος κατάλογος" - -#: ../glade2/meldapp.glade.h:57 -msgid "Other File" -msgstr "Άλλο αρχείο" - -#: ../glade2/meldapp.glade.h:58 -msgid "Preferences : Meld" -msgstr "Προτιμήσεις : Meld" - -#: ../glade2/meldapp.glade.h:59 -msgid "Prune empty directories (-P)" -msgstr "Καθαρισμός κενών καταλόγων (-P)" - -#: ../glade2/meldapp.glade.h:60 -msgid "Quiet mode (-q)" -msgstr "Σιωπηλή λειτουργία (-q)" - -#: ../glade2/meldapp.glade.h:61 -msgid "Refresh" -msgstr "Ανανέωση" - -#: ../glade2/meldapp.glade.h:62 -msgid "Reload" -msgstr "Επαναφόρτωση" - -#: ../glade2/meldapp.glade.h:63 -msgid "Report _Bug" -msgstr "Αναφορά _σφάλματος" - -#: ../glade2/meldapp.glade.h:64 -msgid "Save _As" -msgstr "Α_ποθήκευση ως" - -#: ../glade2/meldapp.glade.h:65 -msgid "Save in UTF-8 encoding" -msgstr "Αποθήκευση σε κωδικοποίηση UTF-8" - -#: ../glade2/meldapp.glade.h:66 -msgid "Save in the files original encoding" -msgstr "Αποθήκευση σε αυτόματη κωδικοποίηση αρχείων" +#~| msgid "CVS Directory" +#~ msgid "Select directory" +#~ msgstr "Επιλογή καταλόγου" -#: ../glade2/meldapp.glade.h:67 -msgid "Show line numbers" -msgstr "Εμφάνιση αριθμών γραμμής" +#~| msgid "Select some files first." +#~ msgid "Select file" +#~ msgstr "Επιλογή αρχείου" -#: ../glade2/meldapp.glade.h:68 -msgid "Simple: Lines only" -msgstr "Απλό: Μόνο γραμμές" +#~| msgid "" +#~| "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:" +#~| "Removed:Missing" +#~ msgid "" +#~ "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" +#~ "Missing:Not present" +#~ msgstr "" +#~ "Αγνοημένο:Χωρίς έκδοση:::Σφάλμα::Πρόσφατα προστέθηκε:Τροποποιήθηκε:" +#~ "Διένεξη:Αφαιρέθηκε:Απουσιάζει:Απόν" -#: ../glade2/meldapp.glade.h:69 -msgid "Solid: Filled Quadilaterals" -msgstr "" +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "Σφάλμα μετατροπής σε κανονική έκφραση\n" +#~ "Το μοτίβο ήταν '%s'\n" +#~ "Το σφάλμα ήταν '%s'" -#: ../glade2/meldapp.glade.h:70 -msgid "Tab width" -msgstr "Πλάτος tab" +#~ msgid "%d unpushed commits in %d branches" +#~ msgstr "%d μη προωθημένες υποβολές σε %d κλάδους" -#: ../glade2/meldapp.glade.h:71 -msgid "Text Beside Icons" -msgstr "Κείμενο δίπλα στα εικονίδια" +#~ msgid "Error converting pattern '%s' to regular expression" +#~ msgstr "Σφάλμα μετατροπής μοτίβου '%s' σε κανονική έκφραση" -#: ../glade2/meldapp.glade.h:72 -msgid "Text Filters" -msgstr "Φίλτρα κειμένων" +#~ msgid "The regular expression '%s' was not found." +#~ msgstr "Η κανονική έκφραση '%s' δεν βρέθηκε." -#: ../glade2/meldapp.glade.h:73 -msgid "Text Only" -msgstr "Μόνο κείμενο" - -#: ../glade2/meldapp.glade.h:74 -msgid "Text Under Icons" -msgstr "Κείμενο κάτω από τα εικονίδια" - -#: ../glade2/meldapp.glade.h:75 -msgid "Three way directory" -msgstr "Κατάλογος τριών δρόμων" - -#: ../glade2/meldapp.glade.h:76 -msgid "Three way file" -msgstr "Αρχείο τριών δρόμων" - -#: ../glade2/meldapp.glade.h:77 -msgid "Two way directory" -msgstr "Κατάλογος δύο δρόμων" - -#: ../glade2/meldapp.glade.h:78 -msgid "Two way file" -msgstr "Αρχείο δύο δρόμων" - -#: ../glade2/meldapp.glade.h:79 -msgid "Use Compression (-z)" -msgstr "Χρήση συμπίεσης (-z)" - -#: ../glade2/meldapp.glade.h:80 -msgid "Use GNOME monospace font" -msgstr "Χρήση γραμματοσειράς monospace GNOME" - -#: ../glade2/meldapp.glade.h:81 -msgid "Use custom font" -msgstr "Χρήση προσαρμοσμένης γραμματοσειράς" - -#: ../glade2/meldapp.glade.h:82 -msgid "Use syntax highlighting" -msgstr "Χρήση επισήμανσης σύνταξης" +#~ msgid "The text '%s' was not found." +#~ msgstr "Το κείμενο '%s' δεν βρέθηκε." -#: ../glade2/meldapp.glade.h:83 -msgid "Version control view" -msgstr "Προβολή εκδόσεως ελέγχου" +#~ msgid "The error was:" +#~ msgstr "Το λάθος ήταν:" -#: ../glade2/meldapp.glade.h:84 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Κατά την φόρτωση, γίνεται δοκιμή των κωδικοποιητών αυτών σε σειρά (π.χ. utf8, iso8859)" +#~ msgid "" +#~ "It contains ascii nulls.\n" +#~ "Perhaps it is a binary file." +#~ msgstr "" +#~ "Περιέχει μηδενικά ascii.\n" +#~ "Ίσως είναι δυαδικό αρχείο." -#: ../glade2/meldapp.glade.h:85 -msgid "When performing directory comparisons, you may filter out files and directories by name. Each pattern is a list of shell style wildcards separated by spaces." -msgstr "Όταν κάνετε συγκρίσεις καταλόγων, μπορείτε να φιλτράρετε τα αρχεία και τους καταλόγους κατά όνομα. Κάθε μοτίβο είναι μία λίστα από shell wildcards χωριζόμενων από διαστήματα." +#~ msgid "Choose a name for buffer %i." +#~ msgstr "Επιλογή ονόματος για ενδιάμεση μνήμη %i" -#: ../glade2/meldapp.glade.h:86 -msgid "When performing file comparisons, you may ignore certain types of changes. Each pattern here is a python regular expression which replaces matching text with the empty string before comparison is performed. If the expression contains groups, only the groups are replaced. See the user manual for more details." -msgstr "Όταν κάνετε συγκρίσεις αρχείων, μπορείτε να αγνοήσετε συγκεκριμένους τύπους αλλαγών. Κάθε μοτίβο εδώ είναι μία κανονική έκφραση python που αντικαθιστά κείμενο με τη κενή συμβολοσειρά πριν γίνει η σύγκριση. Αν η έκφραση συμπεριλαμβάνει ομάδες, αντικαθίστανται μόνο οι ομάδες. Για περισσότερες λεπτομέρειες δείτε το εγχειρίδιο χρήστη." +#~ msgid "Save patch as..." +#~ msgstr "Αποθήκευση επιδιoρθωτικού πακέτου ως...." -#: ../glade2/meldapp.glade.h:87 -msgid "Whitespace is significant" -msgstr "Το λευκό διάστημα είναι σημαντικό" +#~ msgid "" +#~ "Reloading will discard changes in:\n" +#~ "%s\n" +#~ "\n" +#~ "You cannot undo this operation." +#~ msgstr "" +#~ "Επαναφόρτωση θα προκαλέσει απόρριψη αλλαγών στο:\n" +#~ "%s\n" +#~ "\n" +#~ ".Η διαδικασία αυτή δεν μπορεί να αναιρεθεί." -#: ../glade2/meldapp.glade.h:88 -msgid "_Character" -msgstr "_Χαρακτήρας" +#~ msgid "Case" +#~ msgstr "Πεζά/κεφαλαία" -#: ../glade2/meldapp.glade.h:90 -msgid "_Contents" -msgstr "_Περιεχόμενα" +#~ msgid "Edit" +#~ msgstr "Επεξεργασία" -#: ../glade2/meldapp.glade.h:91 -msgid "_Directory Comparison" -msgstr "Σύγκριση _κατάλόγων" +#~ msgid "Hide..." +#~ msgstr "Απόκρυψη..." -#: ../glade2/meldapp.glade.h:92 -msgid "_Down" -msgstr "_Κάτω" +#~ msgid "Ignore case of entries" +#~ msgstr "Αγνόηση πεζά-κεφαλαία των καταχωρήσεων" -#: ../glade2/meldapp.glade.h:93 -msgid "_File Comparison" -msgstr "Σύγκριση _αρχείων" +#~ msgid "Left" +#~ msgstr "Αριστερά" -#: ../glade2/meldapp.glade.h:94 -msgid "_Logo" -msgstr "_Λογότυπο" +#~ msgid "Right" +#~ msgstr "Δεξιά" -#: ../glade2/meldapp.glade.h:95 -msgid "_New..." -msgstr "_Νέο..." +#~ msgid "_Delete Selected" +#~ msgstr "_Διαγραφή επιλεγμένου" -#: ../glade2/meldapp.glade.h:96 -msgid "_None" -msgstr "_Κανένα" +#~ msgid "" +#~ "Some files have been modified.\n" +#~ "Which ones would you like to save?" +#~ msgstr "" +#~ " Κάποια αρχεία έχουν τροποποιηθεί.\n" +#~ "Ποιά να αποθηκευθούν;" -#: ../glade2/meldapp.glade.h:97 -msgid "_Save" -msgstr "Α_ποθήκευση" +#~ msgid "Match _entire word only" +#~ msgstr "Ταίριασμα μόνο ολό_κληρης λέξης" -#: ../glade2/meldapp.glade.h:98 -msgid "_Three Way Compare" -msgstr "Σύγκριση _τριών δρόμων" - -#: ../glade2/meldapp.glade.h:99 -msgid "_Up" -msgstr "_Πάνω" - -#: ../glade2/meldapp.glade.h:100 -msgid "_Version Control Browser" -msgstr "Περιηγητής ελέγχου έ_κδοσης" - -#: ../glade2/meldapp.glade.h:101 -msgid "_Word" -msgstr "_Λέξη" - -#: ../glade2/vcview.glade.h:1 -msgid "Add _Binary" -msgstr "Προσθήκη _δυαδικού" - -#: ../glade2/vcview.glade.h:2 -msgid "Add to VC" -msgstr "Προσθήκη στο VC" +#~ msgid "(gnome-default-editor)" +#~ msgstr "(προεπιλεγμένος συντάκτης κειμένου για το gnome)" -#: ../glade2/vcview.glade.h:3 -msgid "Commit" -msgstr "Καταχώρηση" +#~ msgid "Drawing Style" +#~ msgstr " Σχεδιαστικό Στυλ" -#: ../glade2/vcview.glade.h:4 -msgid "Commit Files" -msgstr "Καταχώρηση αρχείων" +#~ msgid "Edit Menu" +#~ msgstr " Επεξεργασία μενού" -#: ../glade2/vcview.glade.h:5 -msgid "Compare Options" -msgstr "Καταχώρηση επιλογών" - -#: ../glade2/vcview.glade.h:7 -msgid "Date" -msgstr "Ημερομηνία" - -#: ../glade2/vcview.glade.h:8 -msgid "Delete locally" -msgstr "Τοπική διαγραφή" +#~ msgid "Font" +#~ msgstr "Γραμματοσειρά" -#: ../glade2/vcview.glade.h:9 -msgid "Flatten directories" -msgstr "Εξομάλυνση καταλόγων" +#~ msgid "Global options" +#~ msgstr " Καθολικές επιλογές" -#: ../glade2/vcview.glade.h:10 -msgid "Ignored" -msgstr "Αγνοημένο" +#~ msgid "Misc" +#~ msgstr "Διάφορα" -#: ../glade2/vcview.glade.h:11 -msgid "Local copy against other remote revision" -msgstr "Τοπική αντιγραφή ενάντια σε κάθε απομακρυσμένη αναθεώρηση" - -#: ../glade2/vcview.glade.h:12 -msgid "Local copy against same remote revision" -msgstr "Τοπική αντιγραφή ενάντια σε ίδια απομακρυσμένη αναθεώρηση" +#~ msgid "Saving" +#~ msgstr "Αποθήκευση" -#: ../glade2/vcview.glade.h:13 -msgid "Log Message" -msgstr "Μήνυμα καταγραφής" +#~ msgid "Toolbar Appearance" +#~ msgstr "Εμφάνιση γραμμής εργαλείων" -#: ../glade2/vcview.glade.h:14 -msgid "Non _VC" -msgstr "Όχι _VC" - -#: ../glade2/vcview.glade.h:15 -msgid "Previous Logs" -msgstr "Προηγούμενες καταγραφές" - -#: ../glade2/vcview.glade.h:16 -msgid "Remove _Locally" -msgstr "_Τοπική αφαίρεση" - -#: ../glade2/vcview.glade.h:17 -msgid "Remove from VC" -msgstr "Αφαίρεση από το VC" - -#: ../glade2/vcview.glade.h:18 -msgid "Revert to original" -msgstr "Επαναφορά αρχικού" +#~ msgid "Update Options" +#~ msgstr " Ενημέρωση επιλογών" -#: ../glade2/vcview.glade.h:19 -msgid "Show ignored files" -msgstr "Εμφάνιση αγνοημένων αρχείων" +#~ msgid "Whitespace" +#~ msgstr "Λευκό διάστημα" -#: ../glade2/vcview.glade.h:21 -msgid "Show normal" -msgstr "Εμφάνιση κανονικού" +#~ msgid "CVS" +#~ msgstr " CVS" -#: ../glade2/vcview.glade.h:22 -msgid "Show unversioned files" -msgstr "Εμφάνιση αρχείων που δεν έχουν αναθεωρηθεί" +#~ msgid "Compare" +#~ msgstr "Σύγκριση" -#: ../glade2/vcview.glade.h:23 -#: ../vcview.py:173 -msgid "Tag" -msgstr "Ετικέτα" - -#: ../glade2/vcview.glade.h:24 -msgid "Update" -msgstr "Ενημέρωση" - -#: ../glade2/vcview.glade.h:25 -msgid "VC Log" -msgstr "Καταγραφή VC" +#~ msgid "Display" +#~ msgstr " Εμφάνιση" -#: ../glade2/vcview.glade.h:26 -msgid "_Add" -msgstr "_Προσθήκη" +#~ msgid "Editor" +#~ msgstr " Συντάκτης" -#: ../glade2/vcview.glade.h:27 -msgid "_Commit" -msgstr "_Ενσωμάτωση" +#~ msgid "Encoding" +#~ msgstr " Κωδικοποίηση" -#: ../glade2/vcview.glade.h:29 -msgid "_Edit" -msgstr "Ε_πεξεργασία" +#~ msgid "File Filters" +#~ msgstr " Φίλτρα αρχείων" -#: ../glade2/vcview.glade.h:30 -msgid "_Flatten" -msgstr "Ε_ξομάλυνση" +#~ msgid "Text Filters" +#~ msgstr " Φίλτρα κειμένων" -#: ../glade2/vcview.glade.h:31 -msgid "_Modified" -msgstr "_Τροποποιήθηκε" +#~ msgid "Automatically supply missing newline at end of file" +#~ msgstr "" +#~ "Αυτόματα παρέχεται μία νέα γραμμή στο τέλος του αρχείου αν δεν υπάρχει" -#: ../glade2/vcview.glade.h:32 -msgid "_Normal" -msgstr "Κα_νονικό" +#~ msgid "CVS" +#~ msgstr "CVS" -#: ../glade2/vcview.glade.h:33 -msgid "_Remove" -msgstr "_Απομάκρυνση" +#~ msgid "CVS binary" +#~ msgstr "Δυαδικό CVS" -#: ../glade2/vcview.glade.h:34 -msgid "_Update" -msgstr "Ενη_μέρωση" +#~ msgid "Choose Files" +#~ msgstr "Επιλογή αρχείων" -#: ../meld:60 -#: ../meld:70 -#: ../meld:80 -#, c-format -msgid "Meld requires %s or higher." -msgstr "Το Meld απαιτεί %s ή υψηλότερο" +#~ msgid "" +#~ "Choose how the central bar of the diff viewer is drawn. You may wish to " +#~ "choose a simpler mode if you find scrolling is slow." +#~ msgstr "" +#~ "Επιλογή του πως σχεδιάζεται η κεντρική μπάρα της προβολής διαφορών. Ίσως " +#~ "να θέλετε να επιλεγεί ένας απλούστερος τρόπος αν δείτε ότι η κύλιση είναι " +#~ "αργή." -#: ../meld:81 -msgid "Due to incompatible API changes some functions may not operate as expected." -msgstr "Εξαιτίας ασύμβατων αλλαγών API κάποιες πράξεις μπορεί να μην λειτουργήσουν όπως αναμενόταν." +#~ msgid "Copyright (C) 2002-2006 Stephen Kennedy" +#~ msgstr "Πνευματικά δικαιώματα (C) 2002-2006 Stephen Kennedy" -#: ../meld.desktop.in.h:1 -msgid "Compare and merge your files." -msgstr "Σύγκριση και συγχώνευση των αρχείων σας." +#~ msgid "Create missing directories (-d)" +#~ msgstr "Δημιουργία καταλόγων που λείπουν (-d)" -#: ../meld.desktop.in.h:2 -msgid "Meld Diff Viewer" -msgstr "Προβολή διαφορών Meld" +#~ msgid "Curved: Filled Curves" +#~ msgstr "Καμπύλες: Γέμισμα καμπυλών" -#: ../meldapp.py:147 -msgid "label" -msgstr "ετικέτα" +#~ msgid "Directory" +#~ msgstr "Κατάλογος" -#: ../meldapp.py:148 -msgid "pattern" -msgstr "Μοτίβο" +#~ msgid "Gnome Default" +#~ msgstr "Προεπιλογή Gnome" -#. file filters -#. text filters -#: ../meldapp.py:249 -#: ../meldapp.py:254 -#: ../vcview.py:153 -msgid "Name" -msgstr "Όνομα" +#~ msgid "Icons Only" +#~ msgstr "Μόνο εικονίδια" -#: ../meldapp.py:249 -#: ../meldapp.py:254 -msgid "Active" -msgstr "Ενεργό" +#~ msgid "Ignore .cvsrc (-f)" +#~ msgstr "Αγνόηση .cvsrc (-f)" -#: ../meldapp.py:249 -msgid "Pattern" -msgstr "Μοτίβο" +#~ msgid "Ignore changes in amount of white space" +#~ msgstr "Αγνόηση αλλαγών σε ποσότητα λευκού διαστήματος" -#: ../meldapp.py:254 -msgid "Regex" -msgstr "Κανονική έκφραση" - -#: ../meldapp.py:296 -msgid "Line numbers are only available if you have gnome-python-desktop installed." -msgstr "Αριθμοί γραμμών διατίθενται μόνο αν υπάρχει εγκατεστημένο το gnome-python-desktop." - -#: ../meldapp.py:300 -msgid "Syntax highlighting is only available if you have gnome-python-desktop installed." -msgstr "Επισήμανση σύνταξης διατίθεται μόνο αν υπάρχει εγκατεστημένο το gnome-python-desktop." - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:444 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Αντίγραφα ασφαλείας\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:446 -msgid "Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" -msgstr "Έλεγχος εκδόσεως\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:448 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Δυαδικά\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:450 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Πολυμέσα\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:452 -msgid "" -"CVS keywords\t0\t\\$\\w+(:[^\\n" -"$]+)?\\$\n" -msgstr "" -"Λέξεις κλειδιά CVS\t0\t\\$\\w+(:[^\\n" -"$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:454 -msgid "C++ comment\t0\t//.*\n" -msgstr "Εντολές C++\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:456 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "Σχόλιο C\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:458 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Όλα τα λευκά διαστήματα\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:460 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Κυρίαρχο λευκό διάστημα\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:462 -msgid "Script comment\t0\t#.*" -msgstr "Σχόλιο δέσμης ενεργειών\t0\t#.*" - -#: ../meldapp.py:779 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Δεν μπορεί να γίνει σύγκριση ενός μίγματος από αρχεία και καταλόγους.\n" - -#. ############################################################################### -#. -#. usage -#. -#. ############################################################################### -#: ../meldapp.py:827 -#, python-format -msgid "" -"Meld %s\n" -"Written by Stephen Kennedy " -msgstr "" -"Meld %s\n" -"Γραμμένο από Stephen Kennedy " +#~ msgid "" +#~ "Ignore changes in case; consider upper and lower-case letters equivalent" +#~ msgstr "" +#~ "Αγνόηση αλλαγών σε πεζά/κεφαλαία. Θεώρηση κεφαλαίων και πεζών γραμμάτων " +#~ "ως ισοδύναμα" -#: ../meldapp.py:856 -msgid "Set label to use instead of file name" -msgstr "Ορισμός ετικέτας για να χρησιμοποιηθεί αντί για όνομα αρχείου" +#~ msgid "Ignore changes that just insert or delete blank lines" +#~ msgstr "Αγνόηση αλλαγών που απλώς εισάγουν ή διαγράφουν κενές γραμμές" -#: ../meldapp.py:857 -#: ../meldapp.py:858 -#: ../meldapp.py:859 -#: ../meldapp.py:860 -msgid "Ignored for compatibility" -msgstr "Αγνοημένο για συμβατότητα" +#~ msgid "Line Wrapping " +#~ msgstr "Αναδίπλωση γραμμών " -#: ../meldapp.py:886 -#, python-format -msgid "Wrong number of arguments (Got %i)" -msgstr "Λανθασμένος αριθμός από ορίσματα (Λήφθηκαν %i)" +#~ msgid "Locate CVS binary : Meld" +#~ msgstr "Εντοπισμός CVS binary: Meld" -#: ../melddoc.py:45 -msgid "untitled" -msgstr "Χωρίς τίτλο" +#~ msgid "Mailing _List" +#~ msgstr "Λί_στα ταχυδρομείου" -#. no common path. empty names get changed to "[None]" -#: ../misc.py:118 -msgid "[None]" -msgstr "[Κανένα]" +#~ msgid "Mine" +#~ msgstr "Δικό μου" -#: ../vcview.py:170 -msgid "Location" -msgstr "Τοποθεσία" +#~ msgid "My Directory" +#~ msgstr "Ο προσωπικός μου κατάλογος" -#: ../vcview.py:171 -msgid "Status" -msgstr "Κατάσταση" +#~ msgid "Original" +#~ msgstr "Αρχικό" -#: ../vcview.py:172 -msgid "Rev" -msgstr "Αναθεώρηση" +#~ msgid "Original Directory" +#~ msgstr "Αρχικός Κατάλογος" -#: ../vcview.py:174 -msgid "Options" -msgstr "Επιλογές" +#~ msgid "Original File" +#~ msgstr "Αρχικό αρχείο" -#: ../vcview.py:257 -msgid "(Empty)" -msgstr "(Άδειο)" +#~ msgid "Other" +#~ msgstr "Άλλο" -#: ../vcview.py:294 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] ανάκτηση διαφορών" +#~ msgid "Other Directory" +#~ msgstr "Άλλος κατάλογος" -#: ../vcview.py:301 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] εφαρμογή διορθωτικού πακέτου" +#~ msgid "Other File" +#~ msgstr "Άλλο αρχείο" -#: ../vcview.py:305 -msgid "No differences found." -msgstr "Δεν βρέθηκαν διαφορές." +#~ msgid "Prune empty directories (-P)" +#~ msgstr "Καθαρισμός κενών καταλόγων (-P)" -#: ../vcview.py:382 -msgid "Select some files first." -msgstr "Επιλογή πρώτα κάποιων αρχείων." +#~ msgid "Quiet mode (-q)" +#~ msgstr "Σιωπηλή λειτουργία (-q)" -#: ../vcview.py:446 -msgid "Invoking patch failed, you need GNU patch." -msgstr "Σφάλμα κατά την κλήση του διορθωτικού πακέτου, χρειάζεται το GNU Patch." +#~ msgid "Save in UTF-8 encoding" +#~ msgstr "Αποθήκευση σε κωδικοποίηση UTF-8" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../vc/_vc.py:39 -msgid "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" -msgstr "Αγνοημένο:Δεν αναθεωρήθηκε:::Σφάλμα::Προστέθηκε πρόσφατα:Τροποποιήθηκε:Σύγκρουση:Αφαιρέθηκε:Απουσιάζει" +#~ msgid "Save in the files original encoding" +#~ msgstr "Αποθήκευση σε αυτόματη κωδικοποίηση αρχείων" -#: ../vc/cvs.py:160 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Σφάλμα μετατροπής σε κανονική έκφραση\n" -"Το μοτίβο ήταν '%s'\n" -"Το σφάλμα ήταν '%s'" +#~ msgid "Simple: Lines only" +#~ msgstr "Απλό: Μόνο γραμμές" + +#~ msgid "Text Beside Icons" +#~ msgstr "Κείμενο δίπλα στα εικονίδια" + +#~ msgid "Text Only" +#~ msgstr "Μόνο κείμενο" + +#~ msgid "Text Under Icons" +#~ msgstr "Κείμενο κάτω από τα εικονίδια" + +#~ msgid "Three way directory" +#~ msgstr "Κατάλογος τριών δρόμων" + +#~ msgid "Three way file" +#~ msgstr "Αρχείο τριών δρόμων" + +#~ msgid "Two way directory" +#~ msgstr "Κατάλογος δύο δρόμων" + +#~ msgid "Two way file" +#~ msgstr "Αρχείο δύο δρόμων" + +#~ msgid "Use Compression (-z)" +#~ msgstr "Χρήση συμπίεσης (-z)" + +#~ msgid "Use GNOME monospace font" +#~ msgstr "Χρήση γραμματοσειράς monospace GNOME" + +#~ msgid "Whitespace is significant" +#~ msgstr "Το λευκό διάστημα είναι σημαντικό" + +#~ msgid "_Character" +#~ msgstr "_Χαρακτήρας" + +#~ msgid "_Logo" +#~ msgstr "_Λογότυπο" + +#~ msgid "_New..." +#~ msgstr "_Νέο..." + +#~ msgid "_Three Way Compare" +#~ msgstr "Σύγκριση _τριών δρόμων" + +#~ msgid "_Up" +#~ msgstr "_Πάνω" + +#~ msgid "_Word" +#~ msgstr "_Λέξη" + +#~ msgid "Add _Binary" +#~ msgstr "Προσθήκη _δυαδικού" + +#~ msgid "Add to VC" +#~ msgstr "Προσθήκη στο VC" + +#~ msgid "Compare Options" +#~ msgstr "Καταχώρηση επιλογών" + +#~ msgid "Date" +#~ msgstr "Ημερομηνία" + +#~ msgid "Local copy against other remote revision" +#~ msgstr "Τοπική αντιγραφή ενάντια σε κάθε απομακρυσμένη αναθεώρηση" + +#~ msgid "Local copy against same remote revision" +#~ msgstr "Τοπική αντιγραφή ενάντια σε ίδια απομακρυσμένη αναθεώρηση" + +#~ msgid "Non _VC" +#~ msgstr "Όχι _VC" + +#~ msgid "Remove _Locally" +#~ msgstr "_Τοπική αφαίρεση" + +#~ msgid "Remove from VC" +#~ msgstr "Αφαίρεση από το VC" + +#~ msgid "Show normal" +#~ msgstr "Εμφάνιση κανονικού" + +#~ msgid "Tag" +#~ msgstr "Ετικέτα" + +#~ msgid "Update" +#~ msgstr "Ενημέρωση" + +#~ msgid "VC Log" +#~ msgstr "Καταγραφή VC" + +#~ msgid "" +#~ "Due to incompatible API changes some functions may not operate as " +#~ "expected." +#~ msgstr "" +#~ "Εξαιτίας ασύμβατων αλλαγών API κάποιες πράξεις μπορεί να μην " +#~ "λειτουργήσουν όπως αναμενόταν." + +#~ msgid "Regex" +#~ msgstr "Κανονική έκφραση" + +#~ msgid "" +#~ "Syntax highlighting is only available if you have gnome-python-desktop " +#~ "installed." +#~ msgstr "" +#~ "Επισήμανση σύνταξης διατίθεται μόνο αν υπάρχει εγκατεστημένο το gnome-" +#~ "python-desktop." + +#~ msgid "" +#~ "Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" +#~ msgstr "" +#~ "Έλεγχος εκδόσεως\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory " +#~ "RCS\n" + +#~ msgid "" +#~ "Meld %s\n" +#~ "Written by Stephen Kennedy " +#~ msgstr "" +#~ "Meld %s\n" +#~ "Γραμμένο από Stephen Kennedy " + +#~ msgid "Rev" +#~ msgstr "Αναθεώρηση" +#~ msgid "Invoking patch failed, you need GNU patch." +#~ msgstr "" +#~ "Σφάλμα κατά την κλήση του διορθωτικού πακέτου, χρειάζεται το GNU Patch." diff -Nru meld-1.5.3/po/eo.po meld-3.11.0/po/eo.po --- meld-1.5.3/po/eo.po 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/po/eo.po 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,1431 @@ +# Esperanto translation for meld. +# Copyright (C) 2012 Free Software Foundation, Inc. +# This file is distributed under the same license as the meld package. +# Kristjan SCHMIDT , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: meld master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2012-02-22 19:28+0000\n" +"PO-Revision-Date: 2012-02-25 10:34+0100\n" +"Last-Translator: Kristjan SCHMIDT \n" +"Language-Team: Esperanto \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" + +#: ../bin/meld:97 +msgid "Cannot import: " +msgstr "Ne povas enporti:" + +#: ../bin/meld:100 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meldo bezonas %s aŭ pli alta." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meldo" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Montrilo de diferencoj" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Meldo - Montrilo de diferencoj" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Kompari kaj kunfandi dosierojn" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Redaktebla listo" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Aktive" + +#: ../data/ui/EditableList.ui.h:3 ../meld/vcview.py:166 +msgid "Name" +msgstr "Nomo" + +#: ../data/ui/EditableList.ui.h:4 +msgid "Pattern" +msgstr "Modelo" + +#: ../data/ui/EditableList.ui.h:5 +msgid "Add new filter" +msgstr "Aldoni novan filtrilon" + +#: ../data/ui/EditableList.ui.h:6 ../meld/vcview.py:130 +msgid "_Add" +msgstr "_Aldoni" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Remove selected filter" +msgstr "Forigi elektitan filtrilon" + +#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:132 +msgid "_Remove" +msgstr "Fo_rigi" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move item up" +msgstr "Movi elementon supren" + +#: ../data/ui/EditableList.ui.h:10 +msgid "Move _Up" +msgstr "Movi s_upren" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Move item down" +msgstr "Movi elementon malsupren" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Move _Down" +msgstr "Movi _malsupren" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save modified files?" +msgstr "Ĉu konservi modifitajn dosierojn?" + +#: ../data/ui/filediff.ui.h:2 +msgid "" +"Some files have been modified.\n" +"Which ones would you like to save?" +msgstr "" +"Kelkaj dosieroj estas ŝanĝitaj.\n" +"Kiun vi volas konservi?" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Discard Changes" +msgstr "_Ignori ŝanĝojn" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save Selected" +msgstr "Kon_servi elektitan" + +#: ../data/ui/findbar.ui.h:1 ../meld/meldwindow.py:141 +msgid "_Replace" +msgstr "A_nstataŭigi" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Anstataŭigi ĉ_iujn" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Antaŭen" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "Sekve_n" + +#: ../data/ui/findbar.ui.h:5 +msgid "_Search for" +msgstr "_Serĉi" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _With" +msgstr "Anstataŭigi _per" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match Case" +msgstr "_Uskleca kongruo" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "_Tuta vorto" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular E_xpression" +msgstr "" + +#: ../data/ui/meldapp.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2011 Kai Willadsen" +msgstr "" +"Kopirajto © 2002-2009 Stephen KENNEDY\n" +"Kopirajto © 2009-2011 Kai WILLADSEN" + +#: ../data/ui/meldapp.ui.h:4 +msgid "translator-credits" +msgstr "Kristjan SCHMIDT " + +#: ../data/ui/meldapp.ui.h:5 +msgid "Choose Files" +msgstr "Elekti dosierojn" + +#: ../data/ui/meldapp.ui.h:6 +msgid "_Three Way Compare" +msgstr "_Triopa komparo" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:8 +msgid "Mine" +msgstr "" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:10 +msgid "Original" +msgstr "Originalo" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:12 +msgid "Other" +msgstr "Alia" + +#: ../data/ui/meldapp.ui.h:13 +msgid "_File Comparison" +msgstr "" + +#: ../data/ui/meldapp.ui.h:14 +msgid "_Directory Comparison" +msgstr "" + +#: ../data/ui/meldapp.ui.h:15 +msgid "Select VC Directory" +msgstr "" + +#: ../data/ui/meldapp.ui.h:16 +msgid "Directory" +msgstr "Dosierujo" + +#: ../data/ui/meldapp.ui.h:17 +msgid "_Version Control Browser" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Create Patch" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Create a patch" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Use differences between:" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Left and middle panes" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "Middle and right panes" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "_Reverse patch direction" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:7 +msgid "Copy to Clipboard" +msgstr "" + +#: ../data/ui/preferences.ui.h:1 +msgid "Meld Preferences" +msgstr "" + +#: ../data/ui/preferences.ui.h:2 +msgid "Font" +msgstr "Tiparo" + +#: ../data/ui/preferences.ui.h:3 +msgid "_Use the system fixed width font" +msgstr "" + +#: ../data/ui/preferences.ui.h:4 +msgid "_Editor font:" +msgstr "" + +#: ../data/ui/preferences.ui.h:5 +msgid "Display" +msgstr "" + +#: ../data/ui/preferences.ui.h:6 +msgid "_Tab width:" +msgstr "" + +#: ../data/ui/preferences.ui.h:7 +msgid "_Insert spaces instead of tabs" +msgstr "" + +#: ../data/ui/preferences.ui.h:8 +msgid "Enable text _wrapping" +msgstr "" + +#: ../data/ui/preferences.ui.h:9 +msgid "Do not _split words over two lines" +msgstr "" + +#: ../data/ui/preferences.ui.h:10 +msgid "Show _line numbers" +msgstr "" + +#: ../data/ui/preferences.ui.h:11 +msgid "Show w_hitespace" +msgstr "" + +#: ../data/ui/preferences.ui.h:12 +msgid "Use s_yntax highlighting" +msgstr "" + +#: ../data/ui/preferences.ui.h:13 +msgid "External editor" +msgstr "" + +#: ../data/ui/preferences.ui.h:14 +msgid "Use _default system editor" +msgstr "" + +#: ../data/ui/preferences.ui.h:15 +msgid "Edito_r command:" +msgstr "" + +#: ../data/ui/preferences.ui.h:16 +msgid "Editor" +msgstr "" + +#: ../data/ui/preferences.ui.h:17 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" + +#: ../data/ui/preferences.ui.h:18 +msgid "Ignore symbolic links" +msgstr "" + +#: ../data/ui/preferences.ui.h:19 +msgid "File Filters" +msgstr "" + +#: ../data/ui/preferences.ui.h:20 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" + +#: ../data/ui/preferences.ui.h:21 +msgid "Ignore changes which insert or delete blank lines" +msgstr "" + +#: ../data/ui/preferences.ui.h:22 +msgid "Text Filters" +msgstr "" + +#: ../data/ui/preferences.ui.h:23 +msgid "Loading" +msgstr "Ŝargante" + +#: ../data/ui/preferences.ui.h:24 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" + +#: ../data/ui/preferences.ui.h:25 +msgid "Encoding" +msgstr "" + +#: ../data/ui/vcview.ui.h:1 +msgid "VC Log" +msgstr "" + +#: ../data/ui/vcview.ui.h:2 +msgid "Commit Files" +msgstr "" + +#: ../data/ui/vcview.ui.h:3 +msgid "Previous Logs" +msgstr "" + +#: ../data/ui/vcview.ui.h:4 +msgid "Log Message" +msgstr "" + +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 +msgid "_Compare" +msgstr "_Kompari" + +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 +msgid "Compare selected" +msgstr "" + +#: ../meld/dirdiff.py:233 +msgid "Copy _Left" +msgstr "" + +#: ../meld/dirdiff.py:233 +msgid "Copy to left" +msgstr "" + +#: ../meld/dirdiff.py:234 +msgid "Copy _Right" +msgstr "" + +#: ../meld/dirdiff.py:234 +msgid "Copy to right" +msgstr "" + +#: ../meld/dirdiff.py:235 +msgid "Delete selected" +msgstr "" + +#: ../meld/dirdiff.py:236 ../meld/filediff.py:1165 +msgid "Hide" +msgstr "" + +#: ../meld/dirdiff.py:236 +msgid "Hide selected" +msgstr "" + +#: ../meld/dirdiff.py:240 +msgid "Case" +msgstr "" + +#: ../meld/dirdiff.py:240 +msgid "Ignore case of entries" +msgstr "" + +#: ../meld/dirdiff.py:241 +msgid "Same" +msgstr "Sama" + +#: ../meld/dirdiff.py:241 +msgid "Show identical" +msgstr "" + +#: ../meld/dirdiff.py:242 +msgid "New" +msgstr "Nova" + +#: ../meld/dirdiff.py:242 +msgid "Show new" +msgstr "" + +#: ../meld/dirdiff.py:243 +msgid "Modified" +msgstr "Modifite" + +#: ../meld/dirdiff.py:243 ../meld/vcview.py:140 +msgid "Show modified" +msgstr "" + +#: ../meld/dirdiff.py:245 +msgid "Filters" +msgstr "Filtriloj" + +#: ../meld/dirdiff.py:245 +msgid "Set active filters" +msgstr "" + +#: ../meld/dirdiff.py:362 +#, python-format +msgid "Hide %s" +msgstr "" + +#: ../meld/dirdiff.py:465 ../meld/dirdiff.py:478 ../meld/vcview.py:322 +#: ../meld/vcview.py:346 +#, python-format +msgid "[%s] Scanning %s" +msgstr "" + +#: ../meld/dirdiff.py:577 +#, python-format +msgid "[%s] Done" +msgstr "" + +#: ../meld/dirdiff.py:581 +msgid "Multiple errors occurred while scanning this folder" +msgstr "" + +#: ../meld/dirdiff.py:582 +msgid "Files with invalid encodings found" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:584 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" + +#: ../meld/dirdiff.py:586 +msgid "Files hidden by case insensitive comparison" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:588 +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" +msgstr "" + +#: ../meld/dirdiff.py:599 +#, python-format +msgid "'%s' hidden by '%s'" +msgstr "" + +#: ../meld/dirdiff.py:624 ../meld/filediff.py:1008 ../meld/filediff.py:1169 +msgid "Hi_de" +msgstr "" + +#: ../meld/dirdiff.py:674 +#, python-format +msgid "" +"'%s' exists.\n" +"Overwrite?" +msgstr "" + +#: ../meld/dirdiff.py:681 +#, python-format +msgid "" +"Error copying '%s' to '%s'\n" +"\n" +"%s." +msgstr "" + +#: ../meld/dirdiff.py:699 ../meld/vcview.py:535 +#, python-format +msgid "" +"'%s' is a directory.\n" +"Remove recursively?" +msgstr "" + +#: ../meld/dirdiff.py:706 ../meld/vcview.py:540 +#, python-format +msgid "" +"Error removing %s\n" +"\n" +"%s." +msgstr "" + +#: ../meld/dirdiff.py:740 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i sekundo" +msgstr[1] "%i sekundoj" + +#: ../meld/dirdiff.py:741 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minuto" +msgstr[1] "%i minutoj" + +#: ../meld/dirdiff.py:742 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i horo" +msgstr[1] "%i horoj" + +#: ../meld/dirdiff.py:743 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i tago" +msgstr[1] "%i tagoj" + +#: ../meld/dirdiff.py:744 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i semajno" +msgstr[1] "%i semajnoj" + +#: ../meld/dirdiff.py:745 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i monato" +msgstr[1] "%i monatoj" + +#: ../meld/dirdiff.py:746 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i jaro" +msgstr[1] "%i jaroj" + +#: ../meld/filediff.py:294 +msgid "Format as patch..." +msgstr "" + +#: ../meld/filediff.py:294 +msgid "Create a patch using differences between files" +msgstr "" + +#: ../meld/filediff.py:295 +msgid "Previous conflict" +msgstr "" + +#: ../meld/filediff.py:295 +msgid "Go to the previous conflict" +msgstr "" + +#: ../meld/filediff.py:296 +msgid "Next conflict" +msgstr "" + +#: ../meld/filediff.py:296 +msgid "Go to the next conflict" +msgstr "" + +#: ../meld/filediff.py:297 +msgid "Push to left" +msgstr "" + +#: ../meld/filediff.py:297 +msgid "Push current change to the left" +msgstr "" + +#: ../meld/filediff.py:298 +msgid "Push to right" +msgstr "" + +#: ../meld/filediff.py:298 +msgid "Push current change to the right" +msgstr "" + +#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse +#: ../meld/filediff.py:300 +msgid "Pull from left" +msgstr "" + +#: ../meld/filediff.py:300 +msgid "Pull change from the left" +msgstr "" + +#: ../meld/filediff.py:301 +msgid "Pull from right" +msgstr "" + +#: ../meld/filediff.py:301 +msgid "Pull change from the right" +msgstr "" + +#: ../meld/filediff.py:302 +msgid "Copy above left" +msgstr "" + +#: ../meld/filediff.py:302 +msgid "Copy change above the left chunk" +msgstr "" + +#: ../meld/filediff.py:303 +msgid "Copy below left" +msgstr "" + +#: ../meld/filediff.py:303 +msgid "Copy change below the left chunk" +msgstr "" + +#: ../meld/filediff.py:304 +msgid "Copy above right" +msgstr "" + +#: ../meld/filediff.py:304 +msgid "Copy change above the right chunk" +msgstr "" + +#: ../meld/filediff.py:305 +msgid "Copy below right" +msgstr "" + +#: ../meld/filediff.py:305 +msgid "Copy change below the right chunk" +msgstr "" + +#: ../meld/filediff.py:306 +msgid "Delete" +msgstr "Forigi" + +#: ../meld/filediff.py:306 +msgid "Delete change" +msgstr "" + +#: ../meld/filediff.py:307 +msgid "Merge all changes from left" +msgstr "" + +#: ../meld/filediff.py:307 +msgid "Merge all non-conflicting changes from the left" +msgstr "" + +#: ../meld/filediff.py:308 +msgid "Merge all changes from right" +msgstr "" + +#: ../meld/filediff.py:308 +msgid "Merge all non-conflicting changes from the right" +msgstr "" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting" +msgstr "" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "" + +#: ../meld/filediff.py:310 +msgid "Cycle through documents" +msgstr "" + +#: ../meld/filediff.py:310 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "" + +#: ../meld/filediff.py:314 +msgid "Lock scrolling" +msgstr "" + +#: ../meld/filediff.py:315 +msgid "Lock scrolling of all panes" +msgstr "" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:396 +msgid "INS" +msgstr "" + +#: ../meld/filediff.py:396 +msgid "OVR" +msgstr "" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:398 +#, python-format +msgid "Ln %i, Col %i" +msgstr "" + +#: ../meld/filediff.py:722 +#, python-format +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" + +#. TRANSLATORS: this is the name of a new file which has not yet been saved +#: ../meld/filediff.py:809 +msgid "" +msgstr "" + +#: ../meld/filediff.py:996 +#, python-format +msgid "[%s] Set num panes" +msgstr "" + +#: ../meld/filediff.py:1002 +#, python-format +msgid "[%s] Opening files" +msgstr "" + +#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 +#: ../meld/filediff.py:1053 +msgid "Could not read file" +msgstr "" + +#: ../meld/filediff.py:1027 +#, python-format +msgid "[%s] Reading files" +msgstr "" + +#: ../meld/filediff.py:1036 +#, python-format +msgid "%s appears to be a binary file." +msgstr "" + +#: ../meld/filediff.py:1048 +#, python-format +msgid "%s is not in encodings: %s" +msgstr "" + +#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#, python-format +msgid "[%s] Computing differences" +msgstr "" + +#: ../meld/filediff.py:1156 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" + +#: ../meld/filediff.py:1162 +msgid "Files are identical" +msgstr "" + +#: ../meld/filediff.py:1172 +msgid "Show without filters" +msgstr "" + +#: ../meld/filediff.py:1361 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" +msgstr "" + +#: ../meld/filediff.py:1374 +#, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "" + +#: ../meld/filediff.py:1383 +#, python-format +msgid "Choose a name for buffer %i." +msgstr "" + +#: ../meld/filediff.py:1398 +#, python-format +msgid "" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" +msgstr "" + +#: ../meld/filediff.py:1414 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" +msgstr "" + +#: ../meld/filediff.py:1473 +#, python-format +msgid "" +"Reloading will discard changes in:\n" +"%s\n" +"\n" +"You cannot undo this operation." +msgstr "" + +#: ../meld/filemerge.py:82 +#, python-format +msgid "[%s] Merging files" +msgstr "" + +#: ../meld/meldapp.py:152 +msgid "wrong number of arguments supplied to --diff" +msgstr "" + +#: ../meld/meldapp.py:156 +msgid "Start with an empty window" +msgstr "" + +#: ../meld/meldapp.py:157 ../meld/meldapp.py:158 ../meld/meldapp.py:160 +msgid "file" +msgstr "dosiero" + +#: ../meld/meldapp.py:157 ../meld/meldapp.py:159 ../meld/meldapp.py:160 +msgid "dir" +msgstr "dosierujo" + +#: ../meld/meldapp.py:157 +msgid "Start a version control comparison" +msgstr "" + +#: ../meld/meldapp.py:158 +msgid "Start a 2- or 3-way file comparison" +msgstr "" + +#: ../meld/meldapp.py:159 +msgid "Start a 2- or 3-way directory comparison" +msgstr "" + +#: ../meld/meldapp.py:160 +msgid "Start a comparison between file and dir/file" +msgstr "" + +#: ../meld/meldapp.py:166 +msgid "Meld is a file and directory comparison tool." +msgstr "" + +#: ../meld/meldapp.py:169 +msgid "Set label to use instead of file name" +msgstr "" + +#: ../meld/meldapp.py:171 +msgid "Automatically compare all differing files on startup" +msgstr "" + +#: ../meld/meldapp.py:173 +msgid "Ignored for compatibility" +msgstr "" + +#: ../meld/meldapp.py:176 +msgid "Set the target file for saving a merge result" +msgstr "" + +#: ../meld/meldapp.py:179 +msgid "Creates a diff tab for up to 3 supplied files or directories." +msgstr "" + +#: ../meld/meldapp.py:182 +#, python-format +msgid "too many arguments (wanted 0-4, got %d)" +msgstr "" + +#: ../meld/meldapp.py:184 ../meld/meldapp.py:188 +msgid "can't compare more than three directories" +msgstr "" + +#: ../meld/melddoc.py:56 ../meld/melddoc.py:57 +msgid "untitled" +msgstr "sentitole" + +#: ../meld/meldwindow.py:125 +msgid "_File" +msgstr "_Doserio" + +#: ../meld/meldwindow.py:126 +msgid "_New..." +msgstr "_Nova..." + +#: ../meld/meldwindow.py:126 +msgid "Start a new comparison" +msgstr "Komenci novan komparon" + +#: ../meld/meldwindow.py:127 +msgid "Save the current file" +msgstr "Konservi la aktualan dosieron" + +#: ../meld/meldwindow.py:129 +msgid "Close the current file" +msgstr "Fermi la aktualan dosieron" + +#: ../meld/meldwindow.py:130 +msgid "Quit the program" +msgstr "Ĉesi la programon" + +#: ../meld/meldwindow.py:132 +msgid "_Edit" +msgstr "R_edakti" + +#: ../meld/meldwindow.py:133 +msgid "Undo the last action" +msgstr "Malfari la lastan agon" + +#: ../meld/meldwindow.py:134 +msgid "Redo the last undone action" +msgstr "Refari la lastan malfaritan agon" + +#: ../meld/meldwindow.py:135 +msgid "Cut the selection" +msgstr "Eltondi la elektaĵon" + +#: ../meld/meldwindow.py:136 +msgid "Copy the selection" +msgstr "Kopii la elektaĵon" + +#: ../meld/meldwindow.py:137 +msgid "Paste the clipboard" +msgstr "Enmeti la tondujon" + +#: ../meld/meldwindow.py:138 +msgid "Search for text" +msgstr "Serĉi tekston" + +#: ../meld/meldwindow.py:139 +msgid "Find Ne_xt" +msgstr "Serĉi la se_kvan" + +#: ../meld/meldwindow.py:139 +msgid "Search forwards for the same text" +msgstr "Serĉi antaŭen la saman tekston" + +#: ../meld/meldwindow.py:140 +msgid "Find _Previous" +msgstr "Serĉi la _antaŭan" + +#: ../meld/meldwindow.py:140 +msgid "Search backwards for the same text" +msgstr "" + +#: ../meld/meldwindow.py:141 +msgid "Find and replace text" +msgstr "" + +#: ../meld/meldwindow.py:142 +msgid "Prefere_nces" +msgstr "" + +#: ../meld/meldwindow.py:142 +msgid "Configure the application" +msgstr "" + +#: ../meld/meldwindow.py:144 +msgid "_Changes" +msgstr "Ŝa_nĝoj" + +#: ../meld/meldwindow.py:145 +msgid "Next change" +msgstr "Sekva ŝanĝo" + +#: ../meld/meldwindow.py:145 +msgid "Go to the next change" +msgstr "" + +#: ../meld/meldwindow.py:146 +msgid "Previous change" +msgstr "" + +#: ../meld/meldwindow.py:146 +msgid "Go to the previous change" +msgstr "" + +#: ../meld/meldwindow.py:147 +msgid "Open externally" +msgstr "" + +#: ../meld/meldwindow.py:147 +msgid "Open selected file or directory in the default external application" +msgstr "" + +#: ../meld/meldwindow.py:149 +msgid "_View" +msgstr "_Vido" + +#: ../meld/meldwindow.py:150 +msgid "File status" +msgstr "" + +#: ../meld/meldwindow.py:151 +msgid "Version status" +msgstr "" + +#: ../meld/meldwindow.py:152 +msgid "File filters" +msgstr "" + +#: ../meld/meldwindow.py:153 +msgid "Stop the current action" +msgstr "" + +#: ../meld/meldwindow.py:154 +msgid "Refresh the view" +msgstr "" + +#: ../meld/meldwindow.py:155 +msgid "Reload" +msgstr "Reŝargi" + +#: ../meld/meldwindow.py:155 +msgid "Reload the comparison" +msgstr "" + +#: ../meld/meldwindow.py:157 +msgid "_Tabs" +msgstr "_Langetoj" + +#: ../meld/meldwindow.py:158 +msgid "_Previous Tab" +msgstr "_Antaŭa langeto" + +#: ../meld/meldwindow.py:158 +msgid "Activate previous tab" +msgstr "" + +#: ../meld/meldwindow.py:159 +msgid "_Next Tab" +msgstr "_Sekva langeto" + +#: ../meld/meldwindow.py:159 +msgid "Activate next tab" +msgstr "" + +#: ../meld/meldwindow.py:160 +msgid "Move Tab _Left" +msgstr "" + +#: ../meld/meldwindow.py:160 +msgid "Move current tab to left" +msgstr "" + +#: ../meld/meldwindow.py:161 +msgid "Move Tab _Right" +msgstr "" + +#: ../meld/meldwindow.py:161 +msgid "Move current tab to right" +msgstr "" + +#: ../meld/meldwindow.py:163 +msgid "_Help" +msgstr "_Helpo" + +#: ../meld/meldwindow.py:164 +msgid "_Contents" +msgstr "_Enhavo" + +#: ../meld/meldwindow.py:164 +msgid "Open the Meld manual" +msgstr "" + +#: ../meld/meldwindow.py:165 +msgid "Report _Bug" +msgstr "" + +#: ../meld/meldwindow.py:165 +msgid "Report a bug in Meld" +msgstr "" + +#: ../meld/meldwindow.py:166 +msgid "About this program" +msgstr "" + +#: ../meld/meldwindow.py:169 +msgid "Full Screen" +msgstr "Tutekrane" + +#: ../meld/meldwindow.py:169 +msgid "View the comparison in full screen" +msgstr "" + +#: ../meld/meldwindow.py:170 +msgid "_Toolbar" +msgstr "Ilobre_to" + +#: ../meld/meldwindow.py:170 +msgid "Show or hide the toolbar" +msgstr "" + +#: ../meld/meldwindow.py:171 +msgid "_Statusbar" +msgstr "_Statobreto" + +#: ../meld/meldwindow.py:171 +msgid "Show or hide the statusbar" +msgstr "" + +#: ../meld/meldwindow.py:538 +msgid "Switch to this tab" +msgstr "" + +#. exit at first non found directory + file +#: ../meld/meldwindow.py:629 +msgid "Cannot compare a mixture of files and directories.\n" +msgstr "" + +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:174 +msgid "[None]" +msgstr "" + +#: ../meld/patchdialog.py:122 +msgid "Save Patch As..." +msgstr "" + +#: ../meld/preferences.py:37 +msgid "label" +msgstr "" + +#: ../meld/preferences.py:37 +msgid "pattern" +msgstr "" + +#: ../meld/preferences.py:111 +msgid "Only available if you have gnome-python-desktop installed" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:234 +msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:236 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:238 +#, python-format +msgid "Version Control\t1\t%s\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:240 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:242 +msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:244 +msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:246 +msgid "C++ comment\t0\t//.*\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:248 +msgid "C comment\t0\t/\\*.*?\\*/\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:250 +msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:252 +msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:254 +msgid "Script comment\t0\t#.*" +msgstr "" + +#: ../meld/vcview.py:128 +msgid "Co_mmit" +msgstr "En_meti" + +#: ../meld/vcview.py:128 +msgid "Commit" +msgstr "Enmeti" + +#: ../meld/vcview.py:129 +msgid "_Update" +msgstr "Ĝ_isdatigi" + +#: ../meld/vcview.py:129 +msgid "Update" +msgstr "Ĝisdatigi" + +#: ../meld/vcview.py:130 +msgid "Add to VC" +msgstr "" + +#: ../meld/vcview.py:131 +msgid "Add _Binary" +msgstr "" + +#: ../meld/vcview.py:131 +msgid "Add binary to VC" +msgstr "" + +#: ../meld/vcview.py:132 +msgid "Remove from VC" +msgstr "" + +#: ../meld/vcview.py:133 +msgid "_Resolved" +msgstr "" + +#: ../meld/vcview.py:133 +msgid "Mark as resolved for VC" +msgstr "" + +#: ../meld/vcview.py:134 +msgid "Revert to original" +msgstr "" + +#: ../meld/vcview.py:135 +msgid "Delete locally" +msgstr "" + +#: ../meld/vcview.py:139 +msgid "_Flatten" +msgstr "" + +#: ../meld/vcview.py:139 +msgid "Flatten directories" +msgstr "" + +#: ../meld/vcview.py:140 +msgid "_Modified" +msgstr "_Modifite" + +#: ../meld/vcview.py:141 +msgid "_Normal" +msgstr "_Normale" + +#: ../meld/vcview.py:141 +msgid "Show normal" +msgstr "" + +#: ../meld/vcview.py:142 +msgid "Non _VC" +msgstr "" + +#: ../meld/vcview.py:142 +msgid "Show unversioned files" +msgstr "" + +#: ../meld/vcview.py:143 +msgid "Ignored" +msgstr "Ignorite" + +#: ../meld/vcview.py:143 +msgid "Show ignored files" +msgstr "" + +#: ../meld/vcview.py:186 ../meld/vcview.py:318 +msgid "Location" +msgstr "Loko" + +#: ../meld/vcview.py:187 +msgid "Status" +msgstr "Stato" + +#: ../meld/vcview.py:188 +msgid "Rev" +msgstr "" + +#: ../meld/vcview.py:189 +msgid "Tag" +msgstr "" + +#: ../meld/vcview.py:190 +msgid "Options" +msgstr "Opcioj" + +#: ../meld/vcview.py:249 +msgid "Choose one Version Control" +msgstr "" + +#: ../meld/vcview.py:250 +msgid "Only one Version Control in this directory" +msgstr "" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:263 +#, python-format +msgid "%s Not Installed" +msgstr "" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:267 +msgid "Invalid Repository" +msgstr "" + +#: ../meld/vcview.py:276 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:318 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../meld/vcview.py:362 +msgid "(Empty)" +msgstr "(Malplene)" + +#: ../meld/vcview.py:400 +#, python-format +msgid "[%s] Fetching differences" +msgstr "" + +#: ../meld/vcview.py:408 +#, python-format +msgid "[%s] Applying patch" +msgstr "" + +#: ../meld/vcview.py:510 +msgid "Select some files first." +msgstr "" + +#: ../meld/vcview.py:583 +#, python-format +msgid "" +"\n" +" Invoking 'patch' failed.\n" +" \n" +" Maybe you don't have 'GNU patch' installed,\n" +" or you use an untested version of %s.\n" +" \n" +" Please send email bug report to:\n" +" meld-list@gnome.org\n" +" \n" +" Containing the following information:\n" +" \n" +" - meld version: '%s'\n" +" - source control software type: '%s'\n" +" - source control software version: 'X.Y.Z'\n" +" - the output of '%s somefile.txt'\n" +" - patch command: '%s'\n" +" (no need to actually run it, just provide\n" +" the command line) \n" +" \n" +" Replace 'X.Y.Z' by the actual version for the\n" +" source control software you use.\n" +" " +msgstr "" + +#: ../meld/ui/findbar.py:127 +#, python-format +msgid "" +"Regular expression error\n" +"'%s'" +msgstr "" + +#: ../meld/ui/historyentry.py:293 +msgid "_Browse..." +msgstr "_Foliumi..." + +#: ../meld/ui/historyentry.py:301 +msgid "Path" +msgstr "Vojo" + +#: ../meld/ui/historyentry.py:302 +msgid "Path to file" +msgstr "Vojo al dosiero" + +#: ../meld/ui/historyentry.py:303 +msgid "Pop up a file selector to choose a file" +msgstr "Ekaperi dosierelektilon por elekti dosieron" + +#: ../meld/ui/historyentry.py:441 +msgid "Select directory" +msgstr "Elekti dosierujon" + +#: ../meld/ui/historyentry.py:445 +msgid "Select file" +msgstr "Elekti dosieron" + +#: ../meld/ui/notebooklabel.py:60 +msgid "Close tab" +msgstr "Fermi la langeton" + +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:40 +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +msgstr "" + +#: ../meld/vc/cvs.py:163 +#, python-format +msgid "" +"Error converting to a regular expression\n" +"The pattern was '%s'\n" +"The error was '%s'" +msgstr "" diff -Nru meld-1.5.3/po/es.po meld-3.11.0/po/es.po --- meld-1.5.3/po/es.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/es.po 2014-02-22 03:14:50.000000000 +0000 @@ -5,328 +5,859 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. # # Francisco Javier F. Serrador , 2004, 2006. -# Daniel Mustieles , 2011. # Jorge González , 2004, 2005, 2007, 2008, 2009, 2010, 2011. +# Daniel Mustieles , 2011, 2012, 2013, 2014. # msgid "" msgstr "" "Project-Id-Version: meld.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-12-02 20:56+0000\n" -"PO-Revision-Date: 2011-12-03 12:18+0100\n" -"Last-Translator: Jorge González \n" -"Language-Team: Español; Castellano \n" +"POT-Creation-Date: 2014-02-09 15:10+0000\n" +"PO-Revision-Date: 2014-02-10 11:29+0100\n" +"Last-Translator: Daniel Mustieles \n" +"Language-Team: Español \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Gtranslator 2.91.5\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: ../bin/meld:96 +#: ../bin/meld:119 msgid "Cannot import: " msgstr "No se pudo importar: " -#: ../bin/meld:99 +#: ../bin/meld:122 #, c-format msgid "Meld requires %s or higher." msgstr "Meld requiere %s o superior." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Compare y combine sus archivos" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" -msgstr "Visor de Diff" +msgstr "Visor de diferencias" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Visor de diferencias Meld" #: ../data/meld.desktop.in.h:4 -msgid "Meld Diff Viewer" -msgstr "Visor de Diff Meld" +msgid "Compare and merge your files" +msgstr "Compare y combine sus archivos" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Meld es una herramienta para ver diferencias y mezclar archivos orientada a " +"desarrolladores. Meld le ayuda a comparar archivos, carpetas y proyectos con " +"control de versiones. Proporciona una comparación de 2 y 3 vías para " +"archivos y carpetas y soporta muchos sistemas de control de versiones, " +"incluyendo Git, Mercurial, Bazaar y Subversion." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" +"Meld le ayuda a revisar cambios en el código, entender parches y resolver " +"problemas de mezcla de archivos de manera sencilla." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Descripción de la comparación de Meld" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Tamaño de predeterminado de la ventana" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +msgid "Show toolbar" +msgstr "Mostrar la barra de herramientas" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Si es cierto, la barra de herramientas es visible." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +msgid "Show statusbar" +msgstr "Mostrar la barra de estado" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Si es cierto, la barra de estado es visible." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +msgid "Automatically detected text encodings" +msgstr "Detectar automáticamente la codificación del texto" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Estas codificaciones te texto se usarán automáticamente (en orden) para " +"intentar decodificar los archivos de texto cargados." + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Anchura de un único sangrado" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "El número de espacios que usar para un solo sangrado" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "Indica si se debe sangrar usando espacios o tabuladores" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" +"Si es cierto, cualquier sangrado nuevo usará espacios en lugar de " +"tabuladores." + +#: ../data/org.gnome.meld.gschema.xml.h:12 +msgid "Show line numbers" +msgstr "Mostrar los números de línea" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "Si es cierto, los números de línea de mostrarán al comparar archivos." + +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Resaltar la sintaxis" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Indica si se debe resaltar la sintaxis en las comparaciones. Debido al " +"propio color de resaltado de Meld, esto está desactivado de manera " +"predeterminada." + +#: ../data/org.gnome.meld.gschema.xml.h:16 +msgid "Displayed whitespace" +msgstr "Espacio en blanco mostrado" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Selector para tipos de caracteres de espacios en blanco individuales que " +"mostrar. Los valores posibles son «space», «tab», «newline» y «nbsp»." + +#: ../data/org.gnome.meld.gschema.xml.h:18 +msgid "Wrap mode" +msgstr "Volver al principio" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Las líneas en las comparaciones de archivos se ajustarán de acuerdo a esta " +"configuración: ninguna («none»), en cualquier carácter («char») o sólo al " +"final de las palabras («word»)." + +#: ../data/org.gnome.meld.gschema.xml.h:20 +msgid "Highlight current line" +msgstr "Resaltar la línea actual" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" +"Si es cierto, la línea que contenga el cursos se resaltará en las " +"comparaciones de archivos." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +msgid "Use the system default monospace font" +msgstr "Usar la tipografía monoespaciada predeterminada del sistema" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Si es falso, se usará la tipografía personalizada definida en lugar de usar " +"la tipografía monoespaciada del sistema." + +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Tipografía personalizada" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"La tipografía personalizada que usar, guardad como una cadena y analizada " +"como una descripción de tipografía de Pango" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Ignorar líneas en blanco al comparar archivos" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Si es cierto, las líneas en blanco se eliminarán al resaltar los cambios " +"entre archivos." + +#: ../data/org.gnome.meld.gschema.xml.h:28 +msgid "Use the system default editor" +msgstr "Usar el editor predeterminado del sistema" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Si es falso, se usará el editor personalizado definido en lugar del editor " +"del sistema al abrir archivos externos." + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "El comando para ejecutar el editor personalizado" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"El comando usado para ejecutar un editor personalizado. Se soportan algunas " +"plantillas limitadas; por el momento, se reconocen las palabras reservadas " +"«{file}» y «{line}»." + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Columnas que mostrar" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" +"Lista de nombres de columnas en comparación de carpetas y si deberían " +"mostrarse." + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Ignorar enlaces simbólicos" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Si es cierto, la comparación de carpetas no seguirá los enlaces simbólicos " +"al recorrer el árbol de carpetas." + +#: ../data/org.gnome.meld.gschema.xml.h:36 +msgid "Use shallow comparison" +msgstr "Usar una comparación superficial" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Si es cierto, la comparación de carpetas se hará sólo basándose en el tamaño " +"y la hora de modificación, considerando que los archivos son idénticos si el " +"tamaño y la hora de modificación coinciden, y diferentes si no es así." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +msgid "File timestamp resolution" +msgstr "Resolución de marca de tiempo del archivo" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" +"Al comparar basándose en la hora de modificación, esta es la diferencia " +"mínima en nanosegundos entre dos archivos antes de considerar que tienen " +"diferentes horas de modificación. Esto es útil para comparar archivos entre " +"sistemas de archivos con diferente resolución de marca de tiempo." + +#: ../data/org.gnome.meld.gschema.xml.h:40 +msgid "File status filters" +msgstr "Filtros del estado del archivo" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" +"Lista de estados usados para filtrar los archivos visibles en la comparación " +"de carpetas." + +#: ../data/org.gnome.meld.gschema.xml.h:42 +msgid "Show the version control console output" +msgstr "Mostrar la salida de la consola del control de versiones" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" +"Si es cierto, se mostrará una sección de salida de consola en la vista del " +"control de versiones, que mostrará el comando ejecutado en las operaciones " +"del control de versiones." + +#: ../data/org.gnome.meld.gschema.xml.h:44 +#| msgid "Version control view" +msgid "Version control pane position" +msgstr "Posición del panel de control de versiones" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"This is the height of the main version control tree when the console pane is " +"shown." +msgstr "" +"Esto es la altura del árbol de control de versiones principal cuando se " +"muestra el panel de la consola." + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Present version comparisons as left-local/right-remote" +msgstr "" +"Presentar la comparación de versiones como izquierda-local/derecha-remoto" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" +"Si es cierto, las comparaciones del control de versiones usarán un esquema " +"«izquierda es local», «derecha es remoto» para determinar el orden en que " +"presentar los archivos en los paneles. De otro modo, se usará el esquema " +"«izquierda es el otro», «derecha es el mío»." + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Show margin in commit message editor" +msgstr "Mostrar el margen en el editor de mensajes de «commit»" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" +"Si es cierto, se mostrará una guía para indicar en qué columna está el " +"margen en el editor de mensajes de «commit» del control de versiones." + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Margin column in commit message editor" +msgstr "Columna de margen en el editor de mensajes de «commit»" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" +"La columna del margen está en el editor de mensajes de «commit» del control " +"de versiones." + +#: ../data/org.gnome.meld.gschema.xml.h:52 +msgid "Automatically hard-wrap commit messages" +msgstr "Recortar automáticamente los mensajes de «commit»" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" +"Si es cierto, el editor de mensajes de «commit» del control de versiones " +"recortará los mensajes (ej. insertará saltos de línea) en el margen definido " +"antes de aplicar." + +#: ../data/org.gnome.meld.gschema.xml.h:54 +msgid "Version control status filters" +msgstr "Filtros del estado del control de versiones" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" +"Lista de estados usados para filtrar los archivos visibles en la comparación " +"del control de versiones." + +#: ../data/org.gnome.meld.gschema.xml.h:56 +msgid "Filename-based filters" +msgstr "Filtros basados en el nombre del archivo" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" +"Lista de filtros de expresiones basadas en nombres de archivos que, si está " +"activa, eliminará los archivos coincidentes en una comparación de carpetas." + +#: ../data/org.gnome.meld.gschema.xml.h:58 +msgid "Text-based filters" +msgstr "Filtros basados en texto" + +#: ../data/org.gnome.meld.gschema.xml.h:59 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" +"Lista de filtros de expresiones basadas en texto que, si está activa, " +"eliminará texto al usarlo en una comparación de archivos. El texto se " +"seguirá mostrando, pero no contribuirá a la comparación en si." + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "Acerca de Meld" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Página web" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "" +"Daniel Mustieles , 2011 - 2013\n" +"Jorge González , 2004-2011\n" +"Francisco Javier F. Serrador , 2004-2006" + +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "_Preferencias" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "Ay_uda" + +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "_Acerca de" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Salir" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Comparar" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Comparar los archivos seleccionados" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Copiar a _la izquierda" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Copiar a la izquierda" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Copiar a la de_recha" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Copiar a la derecha" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Eliminar seleccionados" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1409 +msgid "Hide" +msgstr "Ocultar" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Ocultar lo seleccionado" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Ignorar capitalización en nombres de archivos" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Considerar casos diferentes los nombres de archivo que de otro modo serían " +"idénticos" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Iguales" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Mostrar idénticos" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Nuevo" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Mostrar nuevos" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Modificado" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Mostrar modificados" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Filtros" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Establecer filtros activos" #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Activar" +msgid "Editable List" +msgstr "Lista editable" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Añadir filtro nuevo" +msgid "Active" +msgstr "Activar" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Lista editable" +msgid "Column Name" +msgstr "Nombre de la columna" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "_Bajar" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Añadir" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:672 +msgid "_Remove" +msgstr "_Eliminar" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Subir elemento" + +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "_Subir" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" msgstr "Bajar elemento" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Subir elemento" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "_Bajar" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:156 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:355 +#: ../meld/vcview.py:185 msgid "Name" msgstr "Nombre" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Patrón" -#: ../data/ui/EditableList.ui.h:10 +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Añadir filtro nuevo" + +#: ../data/ui/EditableList.ui.h:13 msgid "Remove selected filter" msgstr "Quitar el filtro seleccionado" -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:121 -msgid "_Add" -msgstr "_Añadir" - -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:123 -msgid "_Remove" -msgstr "_Eliminar" - #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "¿Quiere guardar los archivos modificados?" +msgid "Save changes to documents before closing?" +msgstr "¿Guardar los cambios de los documentos antes de cerrar?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Se han modificado algunos archivos.\n" -"¿Cuáles quiere guardar?" +msgid "If you don't save, changes will be permanently lost." +msgstr "Los cambios se perderán permanentemente si no los guarda." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Cerrar _sin guardar" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Descartar cambios" +msgid "_Cancel" +msgstr "_Cancelar" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "_Guardar seleccionados" +msgid "_Save" +msgstr "_Guardar" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"No se puede escribir el archivo. Debe pulsar aquí para desbloquear este " +"archivo y realizar los cambios, pero estos cambios se deben guardar en un " +"archivo nuevo." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "¿Quiere revertir los cambios no guardados a los documentos?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "" +"Los cambios realizados a los siguientes documentos se perderán para " +"siempre:\n" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "E_xpresión regular" +msgid "_Replace" +msgstr "_Reemplazar" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "Reemplazar _todo" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Reemplazar _con" +msgid "_Previous" +msgstr "_Anterior" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "Pa_labra completa" +msgid "_Next" +msgstr "_Siguiente" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "_Coincidir con capitalización" +msgid "Find:" +msgstr "Buscar:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Siguiente" +msgid "Replace _with:" +msgstr "Reemplazar _con:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Anterior" +msgid "_Match case" +msgstr "Coi_ncidir con capitalización" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "_Reemplazar" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Pa_labra completa" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Buscar" - -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Seleccionar archivos" - -#: ../data/ui/meldapp.ui.h:2 -#| msgid "" -#| "Copyright © 2002-2009 Stephen Kennedy\n" -#| "Copyright © 2009-2010 Kai Willadsen" -msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" -msgstr "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" - -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Directorio" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Mío" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Original" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Otro" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Seleccionar directorio VC" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Comparación de _directorios" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "Comparación de _archivos" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "_Comparación de tres vías" - -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "Examinador de control de _versión" +msgid "Regular e_xpression" +msgstr "E_xpresión regular" -#: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "" -"Francisco Javier F. Serrador , 2004-2006\n" -"Jorge González , 2004-2011" +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Ajustada" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Copiar al portapapeles" +msgid "Format as Patch" +msgstr "Formatear como parche" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Crear parche" +msgid "Use differences between:" +msgstr "Usar las diferencias entre:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Crear un parche" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Paneles izquierdo y del medio" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Paneles derecho y del medio" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Usar las diferencias entre:" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "Dirección in_versa del parche" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Copiar al portapapeles" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:119 +msgid "Save Patch" +msgstr "Guardar parche" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Visor" +msgid "Left is remote, right is local" +msgstr "Remoto a la izquierda, local a la derecha" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "No _dividir palabras en dos líneas" +msgid "Left is local, right is remote" +msgstr "Local a la izquierda, remoto a la derecha" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Comando del edito_r:" +msgid "1ns (ext4)" +msgstr "1ns (ext4)" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Editor" +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Activar a_juste de texto" +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Codificación" +msgid "2s (VFAT)" +msgstr "2s (VFAT)" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Editor externo" +msgid "Meld Preferences" +msgstr "Preferencias de Meld" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filtros de archivos" - -#: ../data/ui/preferences.ui.h:9 msgid "Font" msgstr "Tipografía" +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "Usar la tipografía de anchura fija del sistema" + #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Ignorar los cambios que introducen o borran líneas en blanco" +msgid "_Editor font:" +msgstr "Tipogra_fía del editor: " #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Ignorar enlaces simbólicos" +msgid "Display" +msgstr "Visor" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Cargando" +msgid "_Tab width:" +msgstr "Anchura del _tabulador:" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Preferencias de Meld" +msgid "_Insert spaces instead of tabs" +msgstr "Insertar e_spacios en lugar de tabuladores" #: ../data/ui/preferences.ui.h:14 -msgid "Show _line numbers" -msgstr "Mostrar los números de _línea" +msgid "Enable text _wrapping" +msgstr "Activar a_juste de texto" #: ../data/ui/preferences.ui.h:15 -msgid "Show w_hitespace" -msgstr "Mostrar espacios en _blanco" +msgid "Do not _split words over two lines" +msgstr "No _dividir palabras en dos líneas" #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filtros de texto" +msgid "Highlight _current line" +msgstr "Resaltar la línea a_ctual" #: ../data/ui/preferences.ui.h:17 -msgid "Use _default system editor" -msgstr "Usar el editor pre_determinado del sistema" +msgid "Show _line numbers" +msgstr "Mostrar los números de _línea" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Usar resaltado de _sintaxis" +msgid "Show w_hitespace" +msgstr "Mostrar espacios en _blanco" #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Al cargar, probar en orden estas codificaciones (e.j. utf8, iso8859)" +msgid "Use s_yntax highlighting" +msgstr "Usar resaltado de _sintaxis" #: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Editor externo" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "Usar el editor pre_determinado del sistema" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Comando del edito_r:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Editor" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Comparación superficial" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "C_omparar archivos basándose sólo en el tamaño y en la marca de tiempo" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "_Resolución de marca de _tiempo:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Enlaces simbólicos" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Columnas visibles" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Comparación de carpetas" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Comparación de versiones" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "Al comprar re_visiones de archivos:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Mensaje de registro" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Mostrar margen de_recho en:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "_Dividir las líneas automáticamente en el margen derecho al efectuar" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Control de versión" + +#: ../data/ui/preferences.ui.h:37 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " "separated by spaces." msgstr "" -"Al efectuar comparaciones de directorios, quizá quiera filtrar los archivos " -"y directorios por nombre. Cada patrón es una lista de comodines al estilo " -"shell separados por espacios." +"Al efectuar comparaciones de carpetas, quizá quiera filtrar los archivos y " +"carpetas por nombre. Cada patrón es una lista de comodines al estilo shell " +"separados por espacios." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:104 +msgid "File Filters" +msgstr "Filtros de archivos" + +#: ../data/ui/preferences.ui.h:39 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -340,171 +871,260 @@ "expresión contiene grupos, sólo los grupos se reemplazan. Vea el manual de " "usuario para más detalles." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "Tipogra_fía del editor: " - -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "Insertar e_spacios en lugar de tabuladores" - -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "Ancho del _tabulador:" +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Ignorar los cambios que introducen o eliminan líneas en blanco" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "Usar la tipografía de anchura fija del sistema" +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Filtros de texto" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Efectuar a los archivos" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:582 +msgid "New comparison" +msgstr "Nueva comparación" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Comparación de archivos" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Comparación de carpetas" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Vista de control de versión" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Comparación de _3 vías" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Seleccionar el tercer archivo" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Seleccionar el segundo archivo" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Seleccionar el primer archivo" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Seleccionar la primera carpeta" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Seleccionar la segunda carpeta" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Seleccionar la tercera carpeta" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Seleccionar una carpeta bajo control de versiones" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Limpiar comparación" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Opciones de comparación" +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Comparar" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Fecha" +msgid "Co_mmit..." +msgstr "E_fectuar…" #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Copia local contra una revisión remota" +msgid "Commit changes to version control" +msgstr "Efectuar cambios en el control de versiones" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Copia local contra la misma revisión remota" +msgid "_Update" +msgstr "_Actualizar" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Mensaje de registro" +msgid "Update working copy from version control" +msgstr "Actualizar la copia de trabajo desde el control de versiones" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Registros anteriores" +msgid "_Push" +msgstr "_Empujar" -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:179 -msgid "Tag" -msgstr "Etiqueta" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "Informe CV" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Empujar los cambios locales al equipo remoto" -#: ../meld/dirdiff.py:226 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "_Comparar" +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Añadir al control de versiones" -#: ../meld/dirdiff.py:226 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Comparar lo seleccionado" +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Quitar del control de versiones" -#: ../meld/dirdiff.py:227 -msgid "Copy _Left" -msgstr "Copiar a _la izquierda" +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Mar_car como resuelto" -#: ../meld/dirdiff.py:227 -msgid "Copy to left" -msgstr "Copiar a la izquierda" +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Marcar como resuelto en el control de versiones" -#: ../meld/dirdiff.py:228 -msgid "Copy _Right" -msgstr "Copiar a la de_recha" +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Re_vertir" -#: ../meld/dirdiff.py:228 -msgid "Copy to right" -msgstr "Copiar a la derecha" +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Revertir la copia de trabajo al estado original" -#: ../meld/dirdiff.py:229 -msgid "Delete selected" -msgstr "Borrar seleccionados" +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Eliminar de la copia de trabajo" -#: ../meld/dirdiff.py:230 ../meld/filediff.py:1157 -msgid "Hide" -msgstr "Ocultar" +#: ../data/ui/vcview.ui.h:18 +msgid "Console" +msgstr "Consola" -#: ../meld/dirdiff.py:230 -msgid "Hide selected" -msgstr "Ocultar lo seleccionado" +#: ../data/ui/vcview.ui.h:19 +#| msgid "Show the version control console output" +msgid "Show or hide the version control console output pane" +msgstr "" +"Mostrar u ocultar el panel de salida de la consola del control de versiones" -#: ../meld/dirdiff.py:234 -msgid "Case" -msgstr "Capitalización" - -#: ../meld/dirdiff.py:234 -msgid "Ignore case of entries" -msgstr "Ignorar capitalización de las entradas" +#: ../data/ui/vcview.ui.h:20 +msgid "_Flatten" +msgstr "_Aplanar" -#: ../meld/dirdiff.py:235 -msgid "Same" -msgstr "Iguales" +#: ../data/ui/vcview.ui.h:21 +msgid "Flatten directories" +msgstr "Aplanar carpetas" -#: ../meld/dirdiff.py:235 -msgid "Show identical" -msgstr "Mostrar idénticos" +#: ../data/ui/vcview.ui.h:22 +msgid "_Modified" +msgstr "_Modificados" -#: ../meld/dirdiff.py:236 -msgid "New" -msgstr "Nuevo" +#: ../data/ui/vcview.ui.h:23 +msgid "Show modified files" +msgstr "Mostrar los archivos modificados" -#: ../meld/dirdiff.py:236 -msgid "Show new" -msgstr "Mostrar nuevos" +#: ../data/ui/vcview.ui.h:24 +msgid "_Normal" +msgstr "_Normal" -#: ../meld/dirdiff.py:237 -msgid "Modified" -msgstr "Modificado" +#: ../data/ui/vcview.ui.h:25 +msgid "Show normal files" +msgstr "Mostrar los archivos normales" + +#: ../data/ui/vcview.ui.h:26 +msgid "Un_versioned" +msgstr "Sin _versión" -#: ../meld/dirdiff.py:237 ../meld/vcview.py:131 -msgid "Show modified" -msgstr "Mostrar modificados" +#: ../data/ui/vcview.ui.h:27 +msgid "Show unversioned files" +msgstr "Mostrar archivos sin versión" -#: ../meld/dirdiff.py:239 -msgid "Filters" -msgstr "Filtros" +#: ../data/ui/vcview.ui.h:28 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Ignorado" -#: ../meld/dirdiff.py:239 -msgid "Set active filters" -msgstr "Establecer filtros activos" +#: ../data/ui/vcview.ui.h:29 +msgid "Show ignored files" +msgstr "Mostrar archivos ignorados" + +#: ../data/ui/vcview.ui.h:30 +msgid "Commit" +msgstr "Efectuar" -#: ../meld/dirdiff.py:355 +#: ../data/ui/vcview.ui.h:31 +msgid "Commit Files" +msgstr "Efectuar a los archivos" + +#: ../data/ui/vcview.ui.h:32 +msgid "Log Message" +msgstr "Mensaje de registro" + +#: ../data/ui/vcview.ui.h:33 +msgid "Previous logs:" +msgstr "Registros anteriores:" + +#: ../data/ui/vcview.ui.h:34 +msgid "Co_mmit" +msgstr "E_fectuar" + +#: ../data/ui/vcview.ui.h:35 +msgid "Console output" +msgstr "Salida de la consola" + +#: ../data/ui/vcview.ui.h:36 +msgid "Push local commits to remote?" +msgstr "¿Empujar los cambios locales al equipo remoto?" + +#: ../data/ui/vcview.ui.h:37 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"Los cambios que empujar los determina su sistema de control de versiones." + +#: ../data/ui/vcview.ui.h:38 +msgid "_Push commits" +msgstr "_Empujar cambios" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:373 +msgid "Size" +msgstr "Tamaño" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:381 +msgid "Modification time" +msgstr "Hora de modificación" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:389 +msgid "Permissions" +msgstr "Permisos" + +#: ../meld/dirdiff.py:548 #, python-format msgid "Hide %s" msgstr "Ocultar %s" -#: ../meld/dirdiff.py:458 ../meld/dirdiff.py:471 ../meld/vcview.py:304 -#: ../meld/vcview.py:332 +#: ../meld/dirdiff.py:677 ../meld/dirdiff.py:699 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Buscando %s" -#: ../meld/dirdiff.py:570 +#: ../meld/dirdiff.py:828 #, python-format msgid "[%s] Done" msgstr "[%s] Hecho" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:835 msgid "Multiple errors occurred while scanning this folder" msgstr "Ocurrieron varios errores al escanear esta carpeta" -#: ../meld/dirdiff.py:575 +#: ../meld/dirdiff.py:836 msgid "Files with invalid encodings found" msgstr "Se encontraron archivos con codificaciones no válidas" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:577 +#: ../meld/dirdiff.py:838 msgid "Some files were in an incorrect encoding. The names are something like:" msgstr "" "Algunos archivos tienen una codificación incorrecta. Los nombres son como " "esto:" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:840 msgid "Files hidden by case insensitive comparison" msgstr "Archivos ocultos por una comparación no sensible a capitalización" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:842 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -513,259 +1133,229 @@ "sensible a capitalización. Los siguientes archivos de esta carpeta archivos " "están ocultos:" -#: ../meld/dirdiff.py:592 +#: ../meld/dirdiff.py:853 #, python-format msgid "'%s' hidden by '%s'" msgstr "«%s» oculto por «%s»" -#: ../meld/dirdiff.py:617 ../meld/filediff.py:1008 ../meld/filediff.py:1161 +#: ../meld/dirdiff.py:878 ../meld/filediff.py:1102 ../meld/filediff.py:1240 +#: ../meld/filediff.py:1411 ../meld/filediff.py:1441 ../meld/filediff.py:1443 msgid "Hi_de" msgstr "_Ocultar" -#: ../meld/dirdiff.py:667 -#, python-format -msgid "" -"'%s' exists.\n" -"Overwrite?" -msgstr "" -"«%s» ya existe.\n" -"¿Quiere sobreescribirlo?" - -#: ../meld/dirdiff.py:674 -#, python-format -msgid "" -"Error copying '%s' to '%s'\n" -"\n" -"%s." -msgstr "" -"Error al copiar «%s» a «%s»\n" -"\n" -"%s." - -#: ../meld/dirdiff.py:692 ../meld/vcview.py:504 +#: ../meld/dirdiff.py:909 #, python-format msgid "" -"'%s' is a directory.\n" -"Remove recursively?" +"'%s' exists.\n" +"Overwrite?" msgstr "" -"«%s» es un directorio.\n" -"¿Eliminarlo recursivamente?" +"«%s» ya existe.\n" +"¿Quiere sobreescribirlo?" -#: ../meld/dirdiff.py:699 ../meld/vcview.py:509 +#: ../meld/dirdiff.py:917 +msgid "Error copying file" +msgstr "Error al copiar el archivo" + +#: ../meld/dirdiff.py:918 #, python-format msgid "" -"Error removing %s\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Error al eliminar %s\n" +"No se pudo copiar %s\n" +"a %s.\n" "\n" -"%s." - -#: ../meld/dirdiff.py:711 -#, python-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "%i segundo" -msgstr[1] "%i segundos" - -#: ../meld/dirdiff.py:712 -#, python-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "%i minuto" -msgstr[1] "%i minutos" - -#: ../meld/dirdiff.py:713 -#, python-format -msgid "%i hour" -msgid_plural "%i hours" -msgstr[0] "%i hora" -msgstr[1] "%i horas" - -#: ../meld/dirdiff.py:714 -#, python-format -msgid "%i day" -msgid_plural "%i days" -msgstr[0] "%i día" -msgstr[1] "%i días" - -#: ../meld/dirdiff.py:715 -#, python-format -msgid "%i week" -msgid_plural "%i weeks" -msgstr[0] "%i semana" -msgstr[1] "%i semanas" - -#: ../meld/dirdiff.py:716 -#, python-format -msgid "%i month" -msgid_plural "%i months" -msgstr[0] "%i mes" -msgstr[1] "%i meses" +"%s" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:941 #, python-format -msgid "%i year" -msgid_plural "%i years" -msgstr[0] "%i año" -msgstr[1] "%i años" +msgid "Error deleting %s" +msgstr "Error al eliminar %s" -#: ../meld/filediff.py:294 -msgid "Format as patch..." +#: ../meld/filediff.py:231 +msgid "Format as Patch..." msgstr "Formatear el parche como…" -#: ../meld/filediff.py:294 +#: ../meld/filediff.py:232 msgid "Create a patch using differences between files" msgstr "Crear un parche usando las diferencias entre los archivos" -#: ../meld/filediff.py:295 -msgid "Previous conflict" +#: ../meld/filediff.py:234 +msgid "Save A_ll" +msgstr "Guardar _todo" + +#: ../meld/filediff.py:235 +msgid "Save all files in the current comparison" +msgstr "Guardar todos los archivos en la comparación actual" + +#: ../meld/filediff.py:238 +msgid "Revert files to their saved versions" +msgstr "Revertir los archivos a sus versiones guardadas" + +#: ../meld/filediff.py:240 +msgid "Add Synchronization Point" +msgstr "Añadir punto de sincronización" + +#: ../meld/filediff.py:241 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Añadir un punto manual para sincronización de cambios entre archivos" + +#: ../meld/filediff.py:244 +msgid "Clear Synchronization Points" +msgstr "Limpiar puntos de sincronización" + +#: ../meld/filediff.py:245 +msgid "Clear manual change sychronization points" +msgstr "Limpiar los cambios manuales de los puntos de sincronización" + +#: ../meld/filediff.py:247 +msgid "Previous Conflict" msgstr "Conflicto anterior" -#: ../meld/filediff.py:295 +#: ../meld/filediff.py:248 msgid "Go to the previous conflict" msgstr "Ir al conflicto anterior" -#: ../meld/filediff.py:296 -msgid "Next conflict" +#: ../meld/filediff.py:250 +msgid "Next Conflict" msgstr "Siguiente conflicto" -#: ../meld/filediff.py:296 +#: ../meld/filediff.py:251 msgid "Go to the next conflict" msgstr "Ir al siguiente conflicto" -#: ../meld/filediff.py:297 -msgid "Push to left" +#: ../meld/filediff.py:253 +msgid "Push to Left" msgstr "Pasar a la izquierda" -#: ../meld/filediff.py:297 +#: ../meld/filediff.py:254 msgid "Push current change to the left" msgstr "Pasar el cambio actual a la izquierda" -#: ../meld/filediff.py:298 -msgid "Push to right" +#: ../meld/filediff.py:257 +msgid "Push to Right" msgstr "Pasar a la derecha" -#: ../meld/filediff.py:298 +#: ../meld/filediff.py:258 msgid "Push current change to the right" msgstr "Pasar el cambio actual a la derecha" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:300 -msgid "Pull from left" +#: ../meld/filediff.py:262 +msgid "Pull from Left" msgstr "Traer desde la izquierda" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:263 msgid "Pull change from the left" msgstr "Traer el cambio actual desde la izquierda" -#: ../meld/filediff.py:301 -msgid "Pull from right" +#: ../meld/filediff.py:266 +msgid "Pull from Right" msgstr "Traer desde la derecha" -#: ../meld/filediff.py:301 +#: ../meld/filediff.py:267 msgid "Pull change from the right" msgstr "Traer el cambio actual desde la derecha" -#: ../meld/filediff.py:302 -msgid "Copy above left" +#: ../meld/filediff.py:269 +msgid "Copy Above Left" msgstr "Copiar por encima de la izquierda" -#: ../meld/filediff.py:302 +#: ../meld/filediff.py:270 msgid "Copy change above the left chunk" msgstr "Copiar el cambio por encima de la parte izquierda" -#: ../meld/filediff.py:303 -msgid "Copy below left" +#: ../meld/filediff.py:272 +msgid "Copy Below Left" msgstr "Copiar por debajo de la izquierda" -#: ../meld/filediff.py:303 +#: ../meld/filediff.py:273 msgid "Copy change below the left chunk" msgstr "Copiar el cambio por debajo de la parte izquierda" -#: ../meld/filediff.py:304 -msgid "Copy above right" +#: ../meld/filediff.py:275 +msgid "Copy Above Right" msgstr "Copiar por encima de la derecha" -#: ../meld/filediff.py:304 +#: ../meld/filediff.py:276 msgid "Copy change above the right chunk" msgstr "Copiar el cambio por encima de la parte derecha" -#: ../meld/filediff.py:305 -msgid "Copy below right" +#: ../meld/filediff.py:278 +msgid "Copy Below Right" msgstr "Copiar por debajo de la derecha" -#: ../meld/filediff.py:305 +#: ../meld/filediff.py:279 msgid "Copy change below the right chunk" msgstr "Copiar el cambio por debajo de la parte derecha" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:281 msgid "Delete" msgstr "Eliminar" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:282 msgid "Delete change" msgstr "Eliminar el cambio" -#: ../meld/filediff.py:307 -msgid "Merge all changes from left" -msgstr "Mezclar todos los cambios de la izquierda" +#: ../meld/filediff.py:284 +msgid "Merge All from Left" +msgstr "Mezclar desde la izquierda" -#: ../meld/filediff.py:307 +#: ../meld/filediff.py:285 msgid "Merge all non-conflicting changes from the left" msgstr "Mezclar todos los cambios sin conflicto de la izquierda" -#: ../meld/filediff.py:308 -msgid "Merge all changes from right" -msgstr "Mezclar todos los cambios de la derecha" +#: ../meld/filediff.py:287 +msgid "Merge All from Right" +msgstr "Mezclar desde la derecha" -#: ../meld/filediff.py:308 +#: ../meld/filediff.py:288 msgid "Merge all non-conflicting changes from the right" msgstr "Mezclar todos los cambios sin conflicto de la derecha" -#: ../meld/filediff.py:309 -msgid "Merge all non-conflicting" -msgstr "Mezclar todos los no conflictivos" +#: ../meld/filediff.py:290 +msgid "Merge All" +msgstr "Mezclar todo" -#: ../meld/filediff.py:309 +#: ../meld/filediff.py:291 msgid "Merge all non-conflicting changes from left and right panes" msgstr "" "Mezclar todos los cambios sin conflicto de los paneles de la izquierda y " "derecha" -#: ../meld/filediff.py:310 -msgid "Cycle through documents" +#: ../meld/filediff.py:295 +msgid "Cycle Through Documents" msgstr "Cambiar entre documentos" -#: ../meld/filediff.py:310 +#: ../meld/filediff.py:296 msgid "Move keyboard focus to the next document in this comparison" msgstr "Mover el foco del teclado al siguiente documento de esta comparación" -#: ../meld/filediff.py:314 -msgid "Lock scrolling" +#: ../meld/filediff.py:302 +msgid "Lock Scrolling" msgstr "Bloquear el desplazamiento" -#: ../meld/filediff.py:315 +#: ../meld/filediff.py:303 msgid "Lock scrolling of all panes" msgstr "Bloquear el desplazamiento de todos los paneles" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:490 msgid "INS" msgstr "INS" -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:490 msgid "OVR" msgstr "SOB" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:398 +#: ../meld/filediff.py:492 #, python-format msgid "Ln %i, Col %i" msgstr "Lín %i, Col %i" -#: ../meld/filediff.py:722 +#: ../meld/filediff.py:829 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " @@ -774,47 +1364,55 @@ "El filtro «%s» cambió el número de líneas en el archivo. La comparación será " "incorrecta. Vea el manual del usuario para más detalles." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:809 -msgid "" -msgstr "" - -#: ../meld/filediff.py:996 +#: ../meld/filediff.py:1090 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Establezca el número de paneles" -#: ../meld/filediff.py:1002 +#: ../meld/filediff.py:1096 #, python-format msgid "[%s] Opening files" msgstr "[%s] Abriendo archivos" -#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 -#: ../meld/filediff.py:1053 +#: ../meld/filediff.py:1119 ../meld/filediff.py:1129 ../meld/filediff.py:1142 +#: ../meld/filediff.py:1148 msgid "Could not read file" msgstr "No se pudo leer el archivo" -#: ../meld/filediff.py:1027 +#: ../meld/filediff.py:1120 #, python-format msgid "[%s] Reading files" msgstr "[%s] Leyendo archivos" -#: ../meld/filediff.py:1036 +#: ../meld/filediff.py:1130 #, python-format msgid "%s appears to be a binary file." msgstr "%s parece ser un archivo binario." -#: ../meld/filediff.py:1048 +#: ../meld/filediff.py:1143 #, python-format msgid "%s is not in encodings: %s" msgstr "%s no está en codificación: %s" -#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1178 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Calculando las diferencias" -#: ../meld/filediff.py:1148 +#: ../meld/filediff.py:1235 +#, python-format +msgid "File %s has changed on disk" +msgstr "El archivo %s ha cambiado en el disco" + +#: ../meld/filediff.py:1236 +msgid "Do you want to reload the file?" +msgstr "¿Quiere recargar el archivo?" + +#: ../meld/filediff.py:1239 +msgid "_Reload" +msgstr "_Recargar" + +#: ../meld/filediff.py:1400 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" @@ -822,15 +1420,36 @@ "Se están usando filtros de texto, y pueden estar ocultando diferencias entre " "archivos. ¿Quiere comprar los archivos no filtrados?" -#: ../meld/filediff.py:1154 +#: ../meld/filediff.py:1406 msgid "Files are identical" msgstr "Los campos son idénticos" -#: ../meld/filediff.py:1164 +#: ../meld/filediff.py:1414 msgid "Show without filters" msgstr "Mostrar sin filtros" -#: ../meld/filediff.py:1354 +#: ../meld/filediff.py:1436 +msgid "Change highlighting incomplete" +msgstr "Cambiar el resaltado incompleto" + +#: ../meld/filediff.py:1437 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Algunos cambios no se han resaltado porque eran demasiado largos. Puede " +"forzar a Meld para que resalte los cambios largos, aunque esto haga que sea " +"más lento." + +#: ../meld/filediff.py:1445 +msgid "Keep highlighting" +msgstr "Mantener el resaltado" + +#: ../meld/filediff.py:1447 +msgid "_Keep highlighting" +msgstr "_Mantener el resaltado" + +#: ../meld/filediff.py:1578 #, python-format msgid "" "\"%s\" exists!\n" @@ -839,7 +1458,7 @@ "«%s» ya existe.\n" "¿Quiere sobreescribirlo?" -#: ../meld/filediff.py:1367 +#: ../meld/filediff.py:1591 #, python-format msgid "" "Error writing to %s\n" @@ -850,12 +1469,36 @@ "\n" "%s." -#: ../meld/filediff.py:1376 +#: ../meld/filediff.py:1602 +msgid "Save Left Pane As" +msgstr "Guardar panel izquierdo como" + +#: ../meld/filediff.py:1604 +msgid "Save Middle Pane As" +msgstr "Guardar el panel central como" + +#: ../meld/filediff.py:1606 +msgid "Save Right Pane As" +msgstr "Guardar el panel derecho como" + +#: ../meld/filediff.py:1617 #, python-format -msgid "Choose a name for buffer %i." -msgstr "Elija un nombre para el búfer %i." +msgid "File %s has changed on disk since it was opened" +msgstr "El archivo %s ha cambiado en el disco desde que se abrió" + +#: ../meld/filediff.py:1619 +msgid "If you save it, any external changes will be lost." +msgstr "Si lo guarda, los cambios externos se perderán." + +#: ../meld/filediff.py:1622 +msgid "Save Anyway" +msgstr "Guardar de todas formas" -#: ../meld/filediff.py:1391 +#: ../meld/filediff.py:1623 +msgid "Don't Save" +msgstr "No guardar" + +#: ../meld/filediff.py:1647 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -866,7 +1509,7 @@ "\n" "¿Qué formato quiere usar?" -#: ../meld/filediff.py:1407 +#: ../meld/filediff.py:1663 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -875,668 +1518,914 @@ "«%s» contiene caracteres no codificables con «%s»\n" "¿Quiere guardarlos como UTF-8?" -#: ../meld/filediff.py:1466 -#, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"Al recargar perderá los cambios en:\n" -"%s\n" -"\n" -"No se puede deshacer esta operación." +#: ../meld/filediff.py:2022 +msgid "Live comparison updating disabled" +msgstr "Actualización de la comparación en directo desactivada" + +#: ../meld/filediff.py:2023 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" +"La actualización de la comparación en directo está desactivada cuando los " +"puntos de sincronización están activados. Sigue pudiendo actualizar " +"manualmente la comparación y la comparación en directo se reanudará cuando " +"se limpien los puntos de sincronización." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:49 #, python-format msgid "[%s] Merging files" msgstr "[%s] Mezclando archivos" -#: ../meld/meldapp.py:149 +#: ../meld/gutterrendererchunk.py:91 +msgid "Copy _up" +msgstr "Copiar hacia _arriba" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _down" +msgstr "Copiar hacia a_bajo" + +#: ../meld/meldapp.py:132 msgid "wrong number of arguments supplied to --diff" msgstr "el número de argumentos proporcionados para --diff es erróneo" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:137 msgid "Start with an empty window" msgstr "Iniciar con una ventana vacía" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:140 msgid "file" msgstr "archivo" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:142 msgid "dir" msgstr "dir" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:139 msgid "Start a version control comparison" msgstr "Iniciar una comparación de control de versiones" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:141 msgid "Start a 2- or 3-way file comparison" msgstr "Iniciar una comparación de archivo de 2 ó 3 vías" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:143 msgid "Start a 2- or 3-way directory comparison" -msgstr "Iniciar una comparación de directorio de 2 ó 3 vías" - -#: ../meld/meldapp.py:157 -msgid "Start a comparison between file and dir/file" -msgstr "Iniciar una comparación entre archivo y directorio/archivo" +msgstr "Iniciar una comparación de carpetas de 2 ó 3 vías" -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:151 msgid "Meld is a file and directory comparison tool." -msgstr "Meld es una herramienta de comparación de archivos y directorios" +msgstr "Meld es una herramienta de comparación de archivos y carpetas" -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:154 msgid "Set label to use instead of file name" msgstr "Establecer etiqueta que usar en vez del nombre del archivo" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:156 +msgid "Open a new tab in an already running instance" +msgstr "Abrir una pestaña nueva en una instancia en ejecución" + +#: ../meld/meldapp.py:159 msgid "Automatically compare all differing files on startup" msgstr "Comparar automáticamente al inicio todos los archivos que difieran" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:161 msgid "Ignored for compatibility" msgstr "Ignorado por compatibilidad" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:164 msgid "Set the target file for saving a merge result" msgstr "Establecer el archivo de destino para guardar el resultado del cambio" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." +#: ../meld/meldapp.py:166 +msgid "Automatically merge files" +msgstr "Mezclar archivos automáticamente" + +#: ../meld/meldapp.py:169 +msgid "Load a saved comparison from a Meld comparison file" msgstr "" -"Crea una pestaña diff para hasta tres archivos o carpetas proporcionados." +"Cargar un archivo de comparación guardado desde un archivo de comparación de " +"Meld" -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:172 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Crea una pestaña «diff» para los archivos o carpetas proporcionadas." + +#: ../meld/meldapp.py:175 #, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "demasiados argumentos (se esperaban 0-4, se obtuvieron %d)" +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "demasiados argumentos (se esperaban 0-3, se obtuvieron %d)" + +#: ../meld/meldapp.py:178 +msgid "can't auto-merge less than 3 files" +msgstr "no se pueden mezclar automáticamente menos de 3 archivos" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge directories" +msgstr "no se pueden mezclar carpetas automáticamente" + +#: ../meld/meldapp.py:190 +msgid "Error reading saved comparison file" +msgstr "Error al leer el archivo de comparación guardado" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "no se puede comparar una mezcla de archivos y directorios" +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:125 +msgid "" +msgstr "" -#: ../meld/melddoc.py:49 ../meld/melddoc.py:50 +#: ../meld/melddoc.py:75 ../meld/melddoc.py:76 msgid "untitled" msgstr "sin título" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:49 msgid "_File" msgstr "_Archivo" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Nuevo…" +#: ../meld/meldwindow.py:50 +msgid "_New Comparison..." +msgstr "_Nueva comparación…" -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:51 msgid "Start a new comparison" msgstr "Iniciar una nueva comparación" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:54 msgid "Save the current file" msgstr "Guardar el archivo actual" -#: ../meld/meldwindow.py:129 +#: ../meld/meldwindow.py:56 +msgid "Save As..." +msgstr "Guardar como…" + +#: ../meld/meldwindow.py:57 +msgid "Save the current file with a different name" +msgstr "Guardar el archivo actual con un nombre diferente" + +#: ../meld/meldwindow.py:60 msgid "Close the current file" msgstr "Cerrar el archivo actual" -#: ../meld/meldwindow.py:130 -msgid "Quit the program" -msgstr "Salir del programa" - -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:63 msgid "_Edit" msgstr "_Editar" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:65 msgid "Undo the last action" msgstr "Deshacer la última acción" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:68 msgid "Redo the last undone action" msgstr "Rehacer la última acción deshecha" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:70 msgid "Cut the selection" msgstr "Cortar la selección" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:72 msgid "Copy the selection" msgstr "Copiar la selección" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:74 msgid "Paste the clipboard" msgstr "Pegar del portapapeles" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:76 +msgid "Find..." +msgstr "Buscar…" + +#: ../meld/meldwindow.py:76 msgid "Search for text" msgstr "Buscar el texto" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:78 msgid "Find Ne_xt" msgstr "Buscar _siguiente" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:79 msgid "Search forwards for the same text" msgstr "Buscar el mismo texto hacia adelante" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:81 msgid "Find _Previous" msgstr "Buscar _anterior" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:82 msgid "Search backwards for the same text" msgstr "Buscar hacia atrás el mismo texto" -#: ../meld/meldwindow.py:141 +#: ../meld/meldwindow.py:85 +msgid "_Replace..." +msgstr "_Reemplazar…" + +#: ../meld/meldwindow.py:86 msgid "Find and replace text" msgstr "Buscar y reemplazar texto" -#: ../meld/meldwindow.py:142 -msgid "Prefere_nces" -msgstr "Prefere_ncias" - -#: ../meld/meldwindow.py:142 -msgid "Configure the application" -msgstr "Configurar la aplicación" - -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:89 msgid "_Changes" msgstr "_Cambios" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:90 +msgid "Next Change" msgstr "Siguiente cambio" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:91 msgid "Go to the next change" msgstr "Ir al siguiente cambio" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:93 +msgid "Previous Change" msgstr "Cambio anterior" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:94 msgid "Go to the previous change" msgstr "Ir al cambio anterior" -#: ../meld/meldwindow.py:147 -msgid "Open externally" +#: ../meld/meldwindow.py:96 +msgid "Open Externally" msgstr "Abrir externamente" -#: ../meld/meldwindow.py:147 +#: ../meld/meldwindow.py:97 msgid "Open selected file or directory in the default external application" msgstr "" "Abrir el archivo o la carpeta seleccionada en la aplicación externa " "predeterminada" -#: ../meld/meldwindow.py:149 +#: ../meld/meldwindow.py:101 msgid "_View" msgstr "_Ver" -#: ../meld/meldwindow.py:150 -msgid "File status" +#: ../meld/meldwindow.py:102 +msgid "File Status" msgstr "Estado del archivo" -#: ../meld/meldwindow.py:151 -msgid "Version status" +#: ../meld/meldwindow.py:103 +msgid "Version Status" msgstr "Estado de la versión" -#: ../meld/meldwindow.py:152 -msgid "File filters" -msgstr "Filtros de archivos" - -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:106 msgid "Stop the current action" msgstr "Parar la acción actual" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:109 msgid "Refresh the view" msgstr "Actualizar la vista" -#: ../meld/meldwindow.py:155 -msgid "Reload" -msgstr "Recargar" - -#: ../meld/meldwindow.py:155 -msgid "Reload the comparison" -msgstr "Recargar la comparación" - -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:112 msgid "_Tabs" msgstr "_Pestañas" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:113 msgid "_Previous Tab" msgstr "Pestaña _anterior" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:114 msgid "Activate previous tab" msgstr "Activar la pestaña anterior" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:116 msgid "_Next Tab" msgstr "_Siguiente pestaña" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:117 msgid "Activate next tab" msgstr "Activar la siguiente pestaña" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:120 msgid "Move Tab _Left" msgstr "Mover la pestaña a la _izquierda" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:121 msgid "Move current tab to left" msgstr "Mover la pestaña actual a la izquierda" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:124 msgid "Move Tab _Right" msgstr "Mover la pestaña a la de_recha" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:125 msgid "Move current tab to right" msgstr "Mover la pestaña actual a la derecha" -#: ../meld/meldwindow.py:163 -msgid "_Help" -msgstr "Ay_uda" - -#: ../meld/meldwindow.py:164 -msgid "_Contents" -msgstr "Índ_ice" - -#: ../meld/meldwindow.py:164 -msgid "Open the Meld manual" -msgstr "Abrir el manual de Meld" - -#: ../meld/meldwindow.py:165 -msgid "Report _Bug" -msgstr "Informar de un _fallo" - -#: ../meld/meldwindow.py:165 -msgid "Report a bug in Meld" -msgstr "Informar de un error en Meld" - -#: ../meld/meldwindow.py:166 -msgid "About this program" -msgstr "Acerca de este programa" - -#: ../meld/meldwindow.py:169 -msgid "Full Screen" +#: ../meld/meldwindow.py:129 +msgid "Fullscreen" msgstr "Pantalla completa" -#: ../meld/meldwindow.py:169 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:130 +msgid "View the comparison in fullscreen" msgstr "Ver la comparación a pantalla completa" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:132 msgid "_Toolbar" msgstr "Barra de _herramientas" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:133 msgid "Show or hide the toolbar" msgstr "Mostrar u ocultar la barra de herramientas" -#: ../meld/meldwindow.py:171 -msgid "_Statusbar" -msgstr "Barra de _estado" - -#: ../meld/meldwindow.py:171 -msgid "Show or hide the statusbar" -msgstr "Mostrar u ocultar la barra de estado" +#: ../meld/meldwindow.py:142 +msgid "Open Recent" +msgstr "Abrir recientes" + +#: ../meld/meldwindow.py:143 +msgid "Open recent files" +msgstr "Abrir archivos recientes" -#: ../meld/meldwindow.py:538 +#: ../meld/meldwindow.py:505 msgid "Switch to this tab" msgstr "Cambiar a esta pestaña" -#. exit at first non found directory + file -#: ../meld/meldwindow.py:629 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "No se puede comparar una mezcla de archivos y directorios.\n" +#: ../meld/meldwindow.py:626 +msgid "Cannot compare a mixture of files and directories" +msgstr "No se puede comparar una mezcla de archivos y carpetas" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:178 msgid "[None]" msgstr "[Ninguno]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Guardar el parche como…" - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "label" msgstr "etiqueta" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "pattern" msgstr "patrón" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Sólo están disponibles si tiene instalado gnome-python-desktop" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 -msgid "" -"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " -"Desktop.ini\n" -msgstr "" -"Metadatos específicos del sistema operativo\t0\t.DS_Store ._* .Spotlight-" -"V100 .Trashes Thumbs.db Desktop.ini\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Control de versiones\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binarios\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "palabras reservadas CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 -msgid "C++ comment\t0\t//.*\n" -msgstr "Comentario C++\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "Comentario C\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Todos los espacios en blanco\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Espacio en blanco al inicio\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:253 -msgid "Script comment\t0\t#.*" -msgstr "Comentario de script\t0\t#.*" +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Control de versión:" + +#: ../meld/ui/findbar.py:141 +msgid "Regular expression error" +msgstr "Error en la expresión regular" -#: ../meld/vcview.py:119 -msgid "Co_mmit" -msgstr "E_fectuar" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Cerrar pestaña" -#: ../meld/vcview.py:119 -msgid "Commit" -msgstr "Efectuar" +#: ../meld/ui/vcdialogs.py:61 +msgid "No files will be committed" +msgstr "No se efectuarán cambios en archivos" -#: ../meld/vcview.py:120 -msgid "_Update" -msgstr "_Actualizar" +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s en %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d cambio sin empujar" +msgstr[1] "%d cambios sin empujar" -#: ../meld/vcview.py:120 -msgid "Update" -msgstr "Actualizar" - -#: ../meld/vcview.py:121 -msgid "Add to VC" -msgstr "Añadir a CV" - -#: ../meld/vcview.py:122 -msgid "Add _Binary" -msgstr "Añadir _binario" - -#: ../meld/vcview.py:122 -msgid "Add binary to VC" -msgstr "Añadir binario a CV" - -#: ../meld/vcview.py:123 -msgid "Remove from VC" -msgstr "Quitar de CV" - -#: ../meld/vcview.py:124 -msgid "_Resolved" -msgstr "_Resuelto" - -#: ../meld/vcview.py:124 -msgid "Mark as resolved for VC" -msgstr "Marcar como resuelto para el CV" - -#: ../meld/vcview.py:125 -msgid "Revert to original" -msgstr "Revertir al original" - -#: ../meld/vcview.py:126 -msgid "Delete locally" -msgstr "Borrar localmente" +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d rama" +msgstr[1] "%d ramas" -#: ../meld/vcview.py:130 -msgid "_Flatten" -msgstr "_Aplanar" +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Modo cambiado de %s a %s" -#: ../meld/vcview.py:130 -msgid "Flatten directories" -msgstr "Aplanar directorios" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Mezclados" -#: ../meld/vcview.py:131 -msgid "_Modified" -msgstr "_Modificados" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Base" -#: ../meld/vcview.py:132 -msgid "_Normal" -msgstr "_Normal" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Local" -#: ../meld/vcview.py:132 -msgid "Show normal" -msgstr "Mostrar normales" - -#: ../meld/vcview.py:133 -msgid "Non _VC" -msgstr "Sin _CV" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Remoto" -#: ../meld/vcview.py:133 -msgid "Show unversioned files" -msgstr "Mostrar archivos sin versión" +#: ../meld/vc/_vc.py:65 +msgid "Unversioned" +msgstr "Sin versión" -#: ../meld/vcview.py:134 -msgid "Ignored" -msgstr "Ignorado" +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Error" -#: ../meld/vcview.py:134 -msgid "Show ignored files" -msgstr "Mostrar archivos ignorados" +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Nuevo añadido" -#: ../meld/vcview.py:176 ../meld/vcview.py:300 +#: ../meld/vc/_vc.py:72 +msgid "Conflict" +msgstr "Conflicto" + +#: ../meld/vc/_vc.py:73 +msgid "Removed" +msgstr "Eliminado" + +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Falta" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "No presente" + +#: ../meld/vcview.py:215 ../meld/vcview.py:387 msgid "Location" msgstr "Lugar" -#: ../meld/vcview.py:177 +#: ../meld/vcview.py:216 msgid "Status" msgstr "Estado" -#: ../meld/vcview.py:178 -msgid "Rev" -msgstr "Rev" +#: ../meld/vcview.py:217 +msgid "Revision" +msgstr "Revisión" -#: ../meld/vcview.py:180 +#: ../meld/vcview.py:218 msgid "Options" msgstr "Opciones" -#: ../meld/vcview.py:232 -msgid "Choose one Version Control" -msgstr "Elegir un control de versiones" - -#: ../meld/vcview.py:233 -msgid "Only one Version Control in this directory" -msgstr "Sólo el control de versiones en este directorio" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:246 +#: ../meld/vcview.py:298 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "%s no está instalado" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:250 -msgid "Invalid Repository" -msgstr "El repositorio no es válido" +#: ../meld/vcview.py:302 +msgid "Invalid repository" +msgstr "Repositorio no válido" -#: ../meld/vcview.py:259 +#: ../meld/vcview.py:311 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:313 ../meld/vcview.py:321 +msgid "None" +msgstr "Ninguno" + +#: ../meld/vcview.py:332 +msgid "No valid version control system found in this folder" +msgstr "" +"No se ha encontrado un sistema de control de versiones válido en esta carpeta" + +#: ../meld/vcview.py:334 +msgid "Only one version control system found in this folder" +msgstr "" +"Sólo se ha encontrado un sistema de control de versiones en esta carpeta" + +#: ../meld/vcview.py:336 +msgid "Choose which version control system to use" +msgstr "Elegir qué sistema de control de versiones usar" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:300 +#: ../meld/vcview.py:387 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:348 +#: ../meld/vcview.py:401 ../meld/vcview.py:409 +#, python-format +msgid "Scanning %s" +msgstr "Analizando %s" + +#: ../meld/vcview.py:443 msgid "(Empty)" msgstr "(Vacío)" -#: ../meld/vcview.py:386 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Calculando diferencias" +#: ../meld/vcview.py:666 +msgid "Remove folder and all its files?" +msgstr "¿Quitar la carpeta y todos sus archivos?" + +#: ../meld/vcview.py:668 +msgid "" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." +msgstr "" +"Esto quitará todos los archivos y carpetas seleccionadas, y todos los " +"archivos de las carpetas seleccionadas, del control de versiones." + +#: ../meld/vcview.py:702 +#, python-format +msgid "Error removing %s" +msgstr "Error al quitar %s" + +#~ msgid "%i second" +#~ msgid_plural "%i seconds" +#~ msgstr[0] "%i segundo" +#~ msgstr[1] "%i segundos" + +#~ msgid "%i minute" +#~ msgid_plural "%i minutes" +#~ msgstr[0] "%i minuto" +#~ msgstr[1] "%i minutos" + +#~ msgid "%i hour" +#~ msgid_plural "%i hours" +#~ msgstr[0] "%i hora" +#~ msgstr[1] "%i horas" + +#~ msgid "%i day" +#~ msgid_plural "%i days" +#~ msgstr[0] "%i día" +#~ msgstr[1] "%i días" + +#~ msgid "%i week" +#~ msgid_plural "%i weeks" +#~ msgstr[0] "%i semana" +#~ msgstr[1] "%i semanas" + +#~ msgid "%i month" +#~ msgid_plural "%i months" +#~ msgstr[0] "%i mes" +#~ msgstr[1] "%i meses" + +#~ msgid "%i year" +#~ msgid_plural "%i years" +#~ msgstr[0] "%i año" +#~ msgstr[1] "%i años" -#: ../meld/vcview.py:394 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Aplicando parche" +#~ msgid "_Statusbar" +#~ msgstr "Barra de _estado" -#: ../meld/vcview.py:479 -msgid "Select some files first." -msgstr "Seleccione algunos archivos primero." +#~ msgid "Show or hide the statusbar" +#~ msgstr "Mostrar u ocultar la barra de estado" -#: ../meld/vcview.py:552 -#, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" Falló al invocar «patch».\n" -" \n" -" Quizá no tiene «GNU patch» instalado,\n" -" o está usando una versión sin probar de %s.\n" -" \n" -" Envíe un informe de error a:\n" -" meld-list@gnome.org\n" -" \n" -" Con la siguiente información:\n" -" \n" -" - versión de meld: «%s»\n" -" - tipo de software de control de fuentes: «%s»\n" -" - versión del tipo de software de control de fuentes: «X." -"Y.Z»\n" -" - la salida de «%s algún-archivo.txt»\n" -" - comando de patch: «%s»\n" -" (no hay necesidad de ejecutarlo, simplemente\n" -" proporcione la línea del comando) \n" -" \n" -" Reemplace «X.Y.Z» por la versión actual\n" -" del software de control de fuentes que use.\n" -" " - -#: ../meld/ui/findbar.py:127 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Error en la expresión regular\n" -"«%s»" - -#: ../meld/ui/historyentry.py:293 -msgid "_Browse..." -msgstr "_Examinar…" - -#: ../meld/ui/historyentry.py:301 -msgid "Path" -msgstr "Ruta" - -#: ../meld/ui/historyentry.py:302 -msgid "Path to file" -msgstr "Ruta al archivo" - -#: ../meld/ui/historyentry.py:303 -msgid "Pop up a file selector to choose a file" -msgstr "Emerger un selector de archivos para elegir un archivo" - -#: ../meld/ui/historyentry.py:441 -msgid "Select directory" -msgstr "Seleccionar directorio" - -#: ../meld/ui/historyentry.py:445 -msgid "Select file" -msgstr "Seleccionar archivo" +#~ msgid "" +#~ "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" +#~ "Missing:Not present" +#~ msgstr "" +#~ "Ignorado:Sin versión:::Error::Añadidos nuevos:Modificado:Conflicto:" +#~ "Eliminado:Faltante:No presente" -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Cerrar pestaña" +#~ msgid "Loading" +#~ msgstr "Cargando" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" -msgstr "" -"Ignorado:Sin versión:::Error::Añadidos nuevos:Modificado:Conflicto:Eliminado:" -"Faltante" +#~ msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +#~ msgstr "" +#~ "Al cargar, probar en orden estas codificaciones (e.j. utf8, iso8859)" -#: ../meld/vc/cvs.py:163 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Error al convertir a una expresión regular\n" -"El patrón era «%s»\n" -"El error fue «%s»" +#~ msgid "Encoding" +#~ msgstr "Codificación" + +#~ msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgstr "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" + +#~ msgid "" +#~ "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +#~ "Desktop.ini\n" +#~ msgstr "" +#~ "Metadatos específicos del sistema operativo\t0\t.DS_Store ._* .Spotlight-" +#~ "V100 .Trashes Thumbs.db Desktop.ini\n" + +#~ msgid "Version Control\t1\t%s\n" +#~ msgstr "Control de versiones\t1\t%s\n" + +#~ msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +#~ msgstr "Binarios\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" + +#~ msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +#~ msgstr "Medios\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" + +#~ msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgstr "palabras reservadas CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" + +#~ msgid "C++ comment\t0\t//.*\n" +#~ msgstr "Comentario C++\t0\t//.*\n" + +#~ msgid "C comment\t0\t/\\*.*?\\*/\n" +#~ msgstr "Comentario C\t0\t/\\*.*?\\*/\n" + +#~ msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgstr "Todos los espacios en blanco\t0\t[ \\t\\r\\f\\v]*\n" + +#~ msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgstr "Espacio en blanco al inicio\t0\t^[ \\t\\r\\f\\v]*\n" + +#~ msgid "Script comment\t0\t#.*" +#~ msgstr "Comentario de script\t0\t#.*" + +#~ msgid "http://meldmerge.org/" +#~ msgstr "http://meldmerge.org/" + +#~ msgid "" +#~ "Meld 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.\n" +#~ "\n" +#~ "Meld 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. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see ." +#~ msgstr "" +#~ "Meld es software libre: usted puede redistribuirlo y/o modificarlo bajo " +#~ "los términos de la Licencia Pública General GNU publicada por la " +#~ "Fundación para el Software Libre, ya sea la versión 2 de la Licencia, o " +#~ "(a su elección) cualquier versión posterior.\n" +#~ "\n" +#~ "Meld se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA " +#~ "ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD PARA UN " +#~ "PROPÓSITO DETERMINADO. Consulte los detalles de la Licencia Pública " +#~ "General GNU para obtener una información más detallada. \n" +#~ "\n" +#~ "Debería haber recibido una copia de la Licencia Pública General GNU junto " +#~ "a este programa. En caso contrario, consulte ." + +#~ msgid "Start a comparison between file and dir/file" +#~ msgstr "Iniciar una comparación entre archivo y carpeta/archivo" + +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "Error de D-BUS; las comparaciones se abrirán en una ventana nueva." + +#~ msgid "Quit the program" +#~ msgstr "Salir del programa" + +#~ msgid "Configure the application" +#~ msgstr "Configurar la aplicación" + +#~ msgid "_Contents" +#~ msgstr "Índ_ice" + +#~ msgid "Open the Meld manual" +#~ msgstr "Abrir el manual de Meld" + +#~ msgid "Report _Bug" +#~ msgstr "Informar de un _fallo" + +#~ msgid "Report a bug in Meld" +#~ msgstr "Informar de un error en Meld" + +#~ msgid "About this program" +#~ msgstr "Acerca de este programa" + +#~ msgid "Only available if you have PyGtkSourceView 2 installed" +#~ msgstr "Sólo están disponibles si tiene instalado PyGtkSourceView 2" + +#~ msgid "_Browse..." +#~ msgstr "_Examinar…" + +#~ msgid "Path" +#~ msgstr "Ruta" + +#~ msgid "Path to file" +#~ msgstr "Ruta al archivo" + +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "Emerger un selector de archivos para elegir un archivo" + +#~ msgid "Select directory" +#~ msgstr "Seleccionar carpeta" + +#~ msgid "Select file" +#~ msgstr "Seleccionar archivo" -#~ msgid "Open selected" -#~ msgstr "Abrir seleccionados" +#~ msgid "Compare selected" +#~ msgstr "Comparar lo seleccionado" + +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "«%s» es una carpeta.\n" +#~ "¿Eliminarla recursivamente?" + +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "Error al convertir a una expresión regular\n" +#~ "El patrón era «%s»\n" +#~ "El error fue «%s»" + +#~ msgid "[%s] Fetching differences" +#~ msgstr "[%s] Calculando diferencias" + +#~ msgid "[%s] Applying patch" +#~ msgstr "[%s] Aplicando parche" + +#~ msgid "Patch tool not found" +#~ msgstr "Herramienta «patch» no encontrada" + +#~ msgid "" +#~ "Meld needs the patch tool to be installed to perform comparisons " +#~ "in %s repositories. Please install patch and try again." +#~ msgstr "" +#~ "Meld necesita que la herramienta patch esté instalada para " +#~ "realizar comparaciones en repositorios %s. Instale patch e " +#~ "inténtelo de nuevo." + +#~ msgid "Error fetching original comparison file" +#~ msgstr "Error al obtener el archivo original para comparar" + +#~ msgid "" +#~ "Meld couldn't obtain the original version of your comparison file. If you " +#~ "are using the most recent version of Meld, please report a bug, including " +#~ "as many details as possible." +#~ msgstr "" +#~ "Meld no pudo obtener la versión original del archivo que comparar. Si " +#~ "está usando la versión más reciente de Meld, informe de un error, " +#~ "incluyendo todos los detalles que pueda." + +#~ msgid "Report a bug" +#~ msgstr "Informar de un error" + +#~ msgid "Tag" +#~ msgstr "Etiqueta" + +#~ msgid "%d unpushed commits in %d branches" +#~ msgstr "%d cambios sin empujar en %d ramas" + +#~ msgid "Merge All Non-conflicting" +#~ msgstr "Mezclar todos los no conflictivos" + +#~ msgid "Create Patch" +#~ msgstr "Crear parche" + +#~ msgid "Create a patch" +#~ msgstr "Crear un parche" + +#~ msgid "Choose a name for buffer %i." +#~ msgstr "Elija un nombre para el búfer %i." + +#~ msgid "Save changes to documents before reloading?" +#~ msgstr "¿Guardar los cambios del documento antes de recargar?" + +#~ msgid "Reload the comparison" +#~ msgstr "Recargar la comparación" + +#~ msgid "Show normal" +#~ msgstr "Mostrar normales" + +#~ msgid "VC Log" +#~ msgstr "Informe CV" + +#~ msgid "Update" +#~ msgstr "Actualizar" + +#~ msgid "Add to VC" +#~ msgstr "Añadir a CV" + +#~ msgid "Remove from VC" +#~ msgstr "Quitar de CV" + +#~ msgid "Delete locally" +#~ msgstr "Eliminar localmente" + +#~ msgid "Non _VC" +#~ msgstr "Sin _CV" + +#~ msgid "Rev" +#~ msgstr "Rev" + +#~ msgid "Choose Files" +#~ msgstr "Seleccionar archivos" + +#~ msgid "_Three Way Compare" +#~ msgstr "_Comparación de tres vías" + +#~ msgid "Mine" +#~ msgstr "Mío" + +#~ msgid "Original" +#~ msgstr "Original" + +#~ msgid "Other" +#~ msgstr "Otro" + +#~ msgid "Select VC Directory" +#~ msgstr "Seleccionar carpeta VC" + +#~ msgid "Directory" +#~ msgstr "Carpeta" + +#~ msgid "_New..." +#~ msgstr "_Nuevo…" + +#~ msgid "" +#~ "Some files have been modified.\n" +#~ "Which ones would you like to save?" +#~ msgstr "" +#~ "Se han modificado algunos archivos.\n" +#~ "¿Cuáles quiere guardar?" + +#~ msgid "_Discard Changes" +#~ msgstr "_Descartar cambios" + +#~ msgid "_Save Selected" +#~ msgstr "_Guardar seleccionados" + +#~ msgid "" +#~ "Reloading will discard changes in:\n" +#~ "%s\n" +#~ "\n" +#~ "You cannot undo this operation." +#~ msgstr "" +#~ "Al recargar perderá los cambios en:\n" +#~ "%s\n" +#~ "\n" +#~ "No se puede deshacer esta operación." + +#~ msgid "Select some files first." +#~ msgstr "Seleccione algunos archivos primero." + +#~ msgid "Add _Binary" +#~ msgstr "Añadir _binario" + +#~ msgid "Add binary to VC" +#~ msgstr "Añadir binario a CV" + +#~ msgid "" +#~ "\n" +#~ " Invoking 'patch' failed.\n" +#~ " \n" +#~ " Maybe you don't have 'GNU patch' installed,\n" +#~ " or you use an untested version of %s.\n" +#~ " \n" +#~ " Please send email bug report to:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " Containing the following information:\n" +#~ " \n" +#~ " - meld version: '%s'\n" +#~ " - source control software type: '%s'\n" +#~ " - source control software version: 'X.Y.Z'\n" +#~ " - the output of '%s somefile.txt'\n" +#~ " - patch command: '%s'\n" +#~ " (no need to actually run it, just provide\n" +#~ " the command line) \n" +#~ " \n" +#~ " Replace 'X.Y.Z' by the actual version for the\n" +#~ " source control software you use.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Falló al invocar «patch».\n" +#~ " \n" +#~ " Quizá no tiene «GNU patch» instalado,\n" +#~ " o está usando una versión sin probar de %s.\n" +#~ " \n" +#~ " Envíe un informe de error a:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " Con la siguiente información:\n" +#~ " \n" +#~ " - versión de meld: «%s»\n" +#~ " - tipo de software de control de fuentes: «%s»\n" +#~ " - versión del tipo de software de control de fuentes: " +#~ "«X.Y.Z»\n" +#~ " - la salida de «%s algún-archivo.txt»\n" +#~ " - comando de patch: «%s»\n" +#~ " (no hay necesidad de ejecutarlo, simplemente\n" +#~ " proporcione la línea del comando) \n" +#~ " \n" +#~ " Reemplace «X.Y.Z» por la versión actual\n" +#~ " del software de control de fuentes que use.\n" +#~ " " + +#~ msgid "can't compare more than three directories" +#~ msgstr "no se puede comparar una mezcla de archivos y directorios" + +#~ msgid "Case" +#~ msgstr "Capitalización" + +#~ msgid "Ignore case of entries" +#~ msgstr "Ignorar capitalización de las entradas" + +#~ msgid "_Search for" +#~ msgstr "_Buscar" + +#~ msgid "Compare Options" +#~ msgstr "Opciones de comparación" + +#~ msgid "Date" +#~ msgstr "Fecha" + +#~ msgid "Local copy against other remote revision" +#~ msgstr "Copia local contra una revisión remota" + +#~ msgid "Local copy against same remote revision" +#~ msgstr "Copia local contra la misma revisión remota" #~ msgid "Error converting pattern '%s' to regular expression" #~ msgstr "Error al convertir el patrón «%s» en una expresión regular" @@ -1568,9 +2457,6 @@ #~ msgid "Two way file" #~ msgstr "Archivo de dos vías" -#~ msgid "Version control view" -#~ msgstr "Vista de control de versión" - #~ msgid "Display" #~ msgstr "Mostrar" @@ -1598,15 +2484,9 @@ #~ msgid "Use GNOME monospace font" #~ msgstr "Usar tipografía monoespaciada de GNOME" -#~ msgid "Use custom font" -#~ msgstr "Usar tipografía personalizada" - #~ msgid "_Character" #~ msgstr "_Carácter" -#~ msgid "_None" -#~ msgstr "_Ninguno" - #~ msgid "_Word" #~ msgstr "_Palabra" @@ -1647,15 +2527,9 @@ #~ msgid "Pick one source control plugin" #~ msgstr "Seleccione un complemento de control de origen" -#~ msgid "Find" -#~ msgstr "Buscar" - #~ msgid "Match _entire word only" #~ msgstr "Coincide sólo con la palabra _entera" -#~ msgid "_Wrap around" -#~ msgstr "_Volver al principio" - #~ msgid "Invoking patch failed, you need GNU patch." #~ msgstr "Falló al invocar el parche, necesita un parche GNU." @@ -1669,9 +2543,6 @@ #~ "Meld %s\n" #~ "Escrito por Stephen Kennedy " -#~ msgid "Save the current file with a different name" -#~ msgstr "Guardar el archivo actual con un nombre diferente" - #~ msgid "Drawing Style" #~ msgstr "Estilo de representación" diff -Nru meld-1.5.3/po/eu.po meld-3.11.0/po/eu.po --- meld-1.5.3/po/eu.po 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/po/eu.po 2014-02-08 21:03:00.000000000 +0000 @@ -0,0 +1,1666 @@ +# Basque translation for meld. +# Copyright (C) 2013 meld's COPYRIGHT HOLDER +# This file is distributed under the same license as the meld package. +# +# Maddi Agiriano Etxabe , 2013. +# Leire Agirre Aramendi , 2013. +# Juan Mari Apaolaza Estensoro , 2013. +# Nestor Atxikallende Bilbao , 2013. +# Amaia Bergara Aretxabaleta , 2013. +# Garikoitz Etxebarria Zamalloa , 2013. +# Ziortza Garmendia Bengoetxea , 2013. +# Susana Ibarrondo Rodriguez , 2013. +# Ramon Iriarte Otamendi , 2013. +# Izaskun Larrañaga Sanchez , 2013. +# Kristina Salas Sierra , 2013. +# Larraitz Uriarte Erkoreka , 2013. +# Josune Zuzuarregui Lizarazu , 2013. +# Elhuyar Fundazioa , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: meld master\n" +"Report-Msgid-Bugs-To: Stephen Kennedy \n" +"POT-Creation-Date: 2013-04-17 11:17+0200\n" +"PO-Revision-Date: 2013-02-17 19:27+0000\n" +"Last-Translator: Elhuyar Fundazioa \n" +"Language-Team: Basque \n" +"Language: eu\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" + +#: ../bin/meld:121 +msgid "Cannot import: " +msgstr "Ezin da inportatu: " + +#: ../bin/meld:124 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld-ek %s edo berriagoa behar du." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Diferentzia-ikustailea" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Meld diferentzia-ikustailea" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Konparatu eta konbinatu fitxategiak" + +#: ../data/mime/meld.xml.in.h:1 +#, fuzzy +msgid "Meld comparison description" +msgstr "Karpeten konparazioa" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Zerrenda editagarria" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Aktibo" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column name" +msgstr "Zutabe-izena" + +#: ../data/ui/EditableList.ui.h:4 ../meld/vcview.py:167 +msgid "_Add" +msgstr "_Gehitu" + +#: ../data/ui/EditableList.ui.h:5 ../meld/vcview.py:168 +msgid "_Remove" +msgstr "_Kendu" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Elementua igotzen du" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "_Igo" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "Elementua jaisten du" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "_Jaitsi" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:342 +#: ../meld/vcview.py:204 +msgid "Name" +msgstr "Izena" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Eredua" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Iragazki bat gehitu" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Hautatutako iragazkia kendu" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Dokumentuetan egindako aldaketak gorde itxi aurretik?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Aldaketak gordetzen ez badituzu, betiko galduko dira." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without saving" +msgstr "Itxi gorde g_abe" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "_Utzi" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "_Gorde" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Fitxategi honetan ezin da idatzi. Hala ere, hemen klik egin eta fitxategia " +"desblokea dezakezu, aldaketak egiteko. Aldaketa horiek, ordea, beste " +"fitxategi batean gorde behar dira." + +#: ../data/ui/findbar.ui.h:1 ../meld/meldwindow.py:78 +msgid "_Replace" +msgstr "_Ordeztu" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Ordeztu _dena" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Aurrekoa" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Hurrengoa" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Bilatu:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "Ordeztu ho_nekin:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match Case" +msgstr "_Bereizi maiuskulak/minuskulak" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Hitz _osoa" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular E_xpression" +msgstr "_Adierazpen erregularra" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Ertzean egokitua" + +#: ../data/ui/meldapp.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2012 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2012 Kai Willadsen" + +#: ../data/ui/meldapp.ui.h:4 +msgid "" +"Meld 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.\n" +"\n" +"Meld 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. \n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Meld software librea da; banatu eta/edo alda dezakezu, GNUren Lizentzia " +"Publiko Orokorraren arauak betez (Free Software foundation-ek argitaratutako " +"lizentziaren 2. bertsioa edo berriagoa).\n" +"\n" +"Meld erabilgarria izango delakoan banatzen dugu, baina INOLAKO BERMERIK " +"GABE; MERKATURATZEKO edo ERABILERA JAKIN BATERAKO egokitasunaren bermerik " +"ere gabe banatzen da. Informazio gehiago behar izanez gero, ikusi GNUren " +"Lizentzia Publiko Orokorra. \n" +"\n" +"GNUren Lizentzia Publiko orokorraren kopia bat jaso beharko zenuke programa " +"honekin batera. Bestela, ikusi ." + +#: ../data/ui/meldapp.ui.h:9 +msgid "translator-credits" +msgstr "Elhuyar Fundazioa " + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Create Patch" +msgstr "Sortu adabakia" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Create a patch" +msgstr "Sortu adabaki bat" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Use differences between:" +msgstr "Erabili hauen arteko diferentziak:" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Left and middle panes" +msgstr "ezkerreko eta erdiko panelak" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "Middle and right panes" +msgstr "erdiko eta eskuineko panelak" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "_Reverse patch direction" +msgstr "_Alderantzikatu adabakiaren norabidea" + +#: ../data/ui/patch-dialog.ui.h:7 +msgid "Copy to Clipboard" +msgstr "Kopiatu arbelean" + +#: ../data/ui/preferences.ui.h:1 +msgid "Meld Preferences" +msgstr "Meld-en hobespenak" + +#: ../data/ui/preferences.ui.h:2 +msgid "Font" +msgstr "Letra-tipoa" + +#: ../data/ui/preferences.ui.h:3 +msgid "_Use the system fixed width font" +msgstr "E_rabili sistemaren zabalera finkoko letra-tipoa" + +#: ../data/ui/preferences.ui.h:4 +msgid "_Editor font:" +msgstr "_Editorearen letra-tipoa:" + +#: ../data/ui/preferences.ui.h:5 +msgid "Display" +msgstr "Bistaratzea" + +#: ../data/ui/preferences.ui.h:6 +msgid "_Tab width:" +msgstr "_Tabuladorearen zabalera:" + +#: ../data/ui/preferences.ui.h:7 +msgid "_Insert spaces instead of tabs" +msgstr "_Txertatu zuriuneak tabuladoreen ordez" + +#: ../data/ui/preferences.ui.h:8 +msgid "Enable text _wrapping" +msgstr "Gaitu testua _egokitzea" + +#: ../data/ui/preferences.ui.h:9 +msgid "Do not _split words over two lines" +msgstr "Ez _zatitu hitzak bi lerrotan" + +#: ../data/ui/preferences.ui.h:10 +msgid "Show _line numbers" +msgstr "Erakutsi _lerro-zenbakiak" + +#: ../data/ui/preferences.ui.h:11 +msgid "Show w_hitespace" +msgstr "Erakutsi z_uriuneak" + +#: ../data/ui/preferences.ui.h:12 +msgid "Use s_yntax highlighting" +msgstr "Nabarmendu _sintaxia" + +#: ../data/ui/preferences.ui.h:13 +msgid "External editor" +msgstr "Kanpo-editorea" + +#: ../data/ui/preferences.ui.h:14 +msgid "Use _default system editor" +msgstr "Erabili sistema-editore _lehenetsia" + +#: ../data/ui/preferences.ui.h:15 +msgid "Edito_r command:" +msgstr "Edito_re-komandoa:" + +#: ../data/ui/preferences.ui.h:16 +msgid "Editor" +msgstr "Editorea" + +#: ../data/ui/preferences.ui.h:17 +msgid "Shallow comparison" +msgstr "Azaleko konparazioa" + +#: ../data/ui/preferences.ui.h:18 +msgid "C_ompare files based only on size and timestamp" +msgstr "_Konparatu fitxategiak tamainan eta data-zigiluan soilik oinarrituta" + +#: ../data/ui/preferences.ui.h:19 +msgid "_Timestamp resolution:" +msgstr "_Data-zigiluaren bereizmena:" + +#: ../data/ui/preferences.ui.h:20 +msgid "Symbolic links" +msgstr "Esteka sinbolikoak" + +#: ../data/ui/preferences.ui.h:21 +msgid "Ignore symbolic links" +msgstr "Ez ikusi egin esteka sinbolikoei" + +#: ../data/ui/preferences.ui.h:22 +msgid "Visible columns" +msgstr "Ikusgai dauden zutabeak" + +#: ../data/ui/preferences.ui.h:23 +msgid "Folder comparisons" +msgstr "Karpeten konparazioa" + +#: ../data/ui/preferences.ui.h:24 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Direktorioak konparatzean, izenaren arabera iragaz ditzakezu fitxategiak eta " +"direktorioak. Zuriunez bereizia dagoen shell motako komodinen zerrenda bat " +"da eredu bakoitza." + +#: ../data/ui/preferences.ui.h:25 +msgid "File Filters" +msgstr "Fitxategi-iragazkiak" + +#: ../data/ui/preferences.ui.h:26 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Fitxategiak konparatzean, aldaketa mota batzuei ez ikusi egin diezaiekezu. " +"Eredu bakoitza pythoneko adierazpen erregular bat da, eta bat datorren " +"testua kate huts batekin ordezten du konparazioa egin aurretik. Adierazpenak " +"taldeak badauzka, taldeak soilik ordezkatzen dira. Informazio gehiago behar " +"izanez gero, ikusi erabiltzailearen eskuliburua." + +#: ../data/ui/preferences.ui.h:27 +msgid "Ignore changes which insert or delete blank lines" +msgstr "" +"Ez ikusi egin lerro zurriak txertatzen edo ezabatzen dituzten aldaketei" + +#: ../data/ui/preferences.ui.h:28 +msgid "Text Filters" +msgstr "Testu-iragazkiak" + +#: ../data/ui/preferences.ui.h:29 +msgid "Loading" +msgstr "Kargatzea" + +#: ../data/ui/preferences.ui.h:30 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" +"Kargatzean, egin proba kodek hauekin, ordena horretan. (e.g. utf8, iso8859)" + +#: ../data/ui/preferences.ui.h:31 +msgid "Encoding" +msgstr "Kodeketa" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:612 +msgid "New comparison" +msgstr "Beste konparazio bat" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Fitxategi-konparazioa" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Direktorio-konparazioa" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Bertsio-kontrolaren ikuspegia" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_3 sarrerako konparazioa" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Hautatu hirugarren fitxategia" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Hautatu bigarren fitxategia" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Hautatu lehen fitxategia" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Hautatu lehen karpeta" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Hautatu bigarren karpeta" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Hautatu hirugarren karpeta" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Hautatu bertsioa kontrolatua duen karpeta bat" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Garbitu konparazioa" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "K_onparatu" + +#: ../data/ui/vcview.ui.h:1 +msgid "VC Log" +msgstr "Bertsio-kontrolaren egunkaria" + +#: ../data/ui/vcview.ui.h:2 +msgid "Commit Files" +msgstr "Balidatu fitxategiak" + +#: ../data/ui/vcview.ui.h:3 +msgid "Previous Logs" +msgstr "Aurreko egunkariak" + +#: ../data/ui/vcview.ui.h:4 +msgid "Log Message" +msgstr "Egunkariaren mezua" + +#: ../meld/dirdiff.py:269 ../meld/vcview.py:164 +msgid "_Compare" +msgstr "_Konparatu" + +#: ../meld/dirdiff.py:269 ../meld/vcview.py:164 +msgid "Compare selected" +msgstr "Hautapena konparatzen du" + +#: ../meld/dirdiff.py:270 +msgid "Copy _Left" +msgstr "Kopiatu e_zkerrean" + +#: ../meld/dirdiff.py:270 +msgid "Copy to left" +msgstr "Ezkerrean kopiatzen du" + +#: ../meld/dirdiff.py:271 +msgid "Copy _Right" +msgstr "Kopiatu e_skuinean" + +#: ../meld/dirdiff.py:271 +msgid "Copy to right" +msgstr "Eskuinean kopiatzen du" + +#: ../meld/dirdiff.py:272 +msgid "Delete selected" +msgstr "Ezabatu hautapena" + +#: ../meld/dirdiff.py:273 ../meld/filediff.py:1286 +msgid "Hide" +msgstr "Ezkutatu" + +#: ../meld/dirdiff.py:273 +msgid "Hide selected" +msgstr "Hautapena ezkutatzen du" + +#: ../meld/dirdiff.py:277 +msgid "Ignore filename case" +msgstr "Ez ikusi egin fitxategi-izeneko maiuskula/minuskulei" + +#: ../meld/dirdiff.py:277 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Berdintzat jotzen ditu fitxategi-izenak, berdinak badira maiuskulak/" +"minuskulak izan ezik" + +#: ../meld/dirdiff.py:278 +msgid "Same" +msgstr "Berdinak" + +#: ../meld/dirdiff.py:278 +msgid "Show identical" +msgstr "Berdinak erakusten ditu" + +#: ../meld/dirdiff.py:279 +msgid "New" +msgstr "Berriak" + +#: ../meld/dirdiff.py:279 +msgid "Show new" +msgstr "Berriak erakusten ditu" + +#: ../meld/dirdiff.py:280 +msgid "Modified" +msgstr "Aldatuak" + +#: ../meld/dirdiff.py:280 ../meld/vcview.py:176 +msgid "Show modified" +msgstr "Aldatuak erakusten ditu" + +#: ../meld/dirdiff.py:282 +msgid "Filters" +msgstr "Iragazkiak" + +#: ../meld/dirdiff.py:282 +msgid "Set active filters" +msgstr "Iragazki aktiboak ezartzen ditu" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:359 +msgid "Size" +msgstr "Tamaina" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:366 +msgid "Modification time" +msgstr "Aldaketa-ordua" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:373 +msgid "Permissions" +msgstr "Baimenak" + +#: ../meld/dirdiff.py:506 +#, python-format +msgid "Hide %s" +msgstr "Ezkutatu %s" + +#: ../meld/dirdiff.py:631 ../meld/dirdiff.py:650 ../meld/vcview.py:382 +#: ../meld/vcview.py:406 +#, python-format +msgid "[%s] Scanning %s" +msgstr "[%s] %s eskaneatzen" + +#: ../meld/dirdiff.py:750 +#, python-format +msgid "[%s] Done" +msgstr "[%s] Eginda" + +#: ../meld/dirdiff.py:756 +msgid "Multiple errors occurred while scanning this folder" +msgstr "Erroreak gertatu dira karpeta hau eskaneatzean" + +#: ../meld/dirdiff.py:757 +msgid "Files with invalid encodings found" +msgstr "Kodeketa baliogabea duten fitxategiak aurkitu dira" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:759 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "Fitxategi batzuen kodeketa okerra da. Hauek dira fitxategi-izenak:" + +#: ../meld/dirdiff.py:761 +msgid "Files hidden by case insensitive comparison" +msgstr "" +"Fitxategiren bat ezkutatu da, konparazioan maiuskulak/minuskulak ez " +"bereizteagatik" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:763 +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" +msgstr "" +"Maiuskulak/minuskulak bereizten ez dituen konparazio bat egiten ari zara, " +"maiuskulak/minuskulak bereizten dituen fitxategi-sistema batean. Karpeta " +"honetako fitxategi hauek ezkutatu dira:" + +#: ../meld/dirdiff.py:774 +#, python-format +msgid "'%s' hidden by '%s'" +msgstr "'%s', honek ezkutatua: '%s'" + +#: ../meld/dirdiff.py:799 ../meld/filediff.py:1029 ../meld/filediff.py:1290 +#: ../meld/vcview.py:676 ../meld/vcview.py:718 +msgid "Hi_de" +msgstr "Ezk_utatu" + +#: ../meld/dirdiff.py:831 +#, python-format +msgid "" +"'%s' exists.\n" +"Overwrite?" +msgstr "" +"'%s' dagoeneko badago.\n" +"Gainidatzi?" + +#: ../meld/dirdiff.py:838 +#, python-format +msgid "" +"Error copying '%s' to '%s'\n" +"\n" +"%s." +msgstr "" +"Errorea gertatu da '%s' '%s'(e)ra kopiatzean\n" +"\n" +"%s." + +#: ../meld/dirdiff.py:856 ../meld/vcview.py:650 +#, python-format +msgid "" +"'%s' is a directory.\n" +"Remove recursively?" +msgstr "" +"'%s' direktorio bat da.\n" +"Kendu errekurtsiboki?" + +#: ../meld/dirdiff.py:863 ../meld/vcview.py:655 +#, python-format +msgid "" +"Error removing %s\n" +"\n" +"%s." +msgstr "" +"Errorea gertatu da %s kentzean\n" +"\n" +"%s." + +#: ../meld/dirdiff.py:994 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i segundo" +msgstr[1] "%i segundo" + +#: ../meld/dirdiff.py:995 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minutu" +msgstr[1] "%i minutu" + +#: ../meld/dirdiff.py:996 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i ordu" +msgstr[1] "%i ordu" + +#: ../meld/dirdiff.py:997 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i egun" +msgstr[1] "%i egun" + +#: ../meld/dirdiff.py:998 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i aste" +msgstr[1] "%i aste" + +#: ../meld/dirdiff.py:999 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i hilabete" +msgstr[1] "%i hilabete" + +#: ../meld/dirdiff.py:1000 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i urte" +msgstr[1] "%i urte" + +#: ../meld/filediff.py:220 +msgid "Format as patch..." +msgstr "Adabaki gisa formateatu..." + +#: ../meld/filediff.py:220 +msgid "Create a patch using differences between files" +msgstr "Adabaki bat sortzen du fitxategien arteko diferentziekin" + +#: ../meld/filediff.py:221 +msgid "Add synchronization point" +msgstr "" + +#: ../meld/filediff.py:222 +msgid "Add a manual point for synchronization of changes between files" +msgstr "" + +#: ../meld/filediff.py:225 +msgid "Clear synchronization points" +msgstr "" + +#: ../meld/filediff.py:226 +msgid "Clear manual change sychronization points" +msgstr "" + +#: ../meld/filediff.py:228 +msgid "Previous conflict" +msgstr "Aurreko gatazka" + +#: ../meld/filediff.py:228 +msgid "Go to the previous conflict" +msgstr "Aurreko gatazkara joaten da" + +#: ../meld/filediff.py:229 +msgid "Next conflict" +msgstr "Hurrengo gatazka" + +#: ../meld/filediff.py:229 +msgid "Go to the next conflict" +msgstr "Hurrengo gatazkara joaten da" + +#: ../meld/filediff.py:230 +msgid "Push to left" +msgstr "Bidali ezkerrera" + +#: ../meld/filediff.py:230 +msgid "Push current change to the left" +msgstr "Uneko aldaketa ezkerrera bidaltzen du" + +#: ../meld/filediff.py:231 +msgid "Push to right" +msgstr "Bidali eskuinera" + +#: ../meld/filediff.py:231 +msgid "Push current change to the right" +msgstr "Uneko aldaketa eskuinera bidaltzen du" + +#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse +#: ../meld/filediff.py:233 +msgid "Pull from left" +msgstr "Ekarri ezkerretik" + +#: ../meld/filediff.py:233 +msgid "Pull change from the left" +msgstr "Ezkerreko aldaketa ekartzen du" + +#: ../meld/filediff.py:234 +msgid "Pull from right" +msgstr "Ekarri eskuinetik" + +#: ../meld/filediff.py:234 +msgid "Pull change from the right" +msgstr "Eskuineko aldaketa ekartzen du" + +#: ../meld/filediff.py:235 +msgid "Copy above left" +msgstr "Kopiatu ezkerrekoaren gainean" + +#: ../meld/filediff.py:235 +msgid "Copy change above the left chunk" +msgstr "Aldaketa ezkerreko zatiaren gainean kopiatzen du" + +#: ../meld/filediff.py:236 +msgid "Copy below left" +msgstr "Kopiatu ezkerrekoaren azpian" + +#: ../meld/filediff.py:236 +msgid "Copy change below the left chunk" +msgstr "Aldaketa ezkerreko zatiaren azpian kopiatzen du" + +#: ../meld/filediff.py:237 +msgid "Copy above right" +msgstr "Kopiatu eskuinekoaren gainean" + +#: ../meld/filediff.py:237 +msgid "Copy change above the right chunk" +msgstr "Aldaketa eskuineko zatiaren gainean kopiatzen du" + +#: ../meld/filediff.py:238 +msgid "Copy below right" +msgstr "Kopiatu eskuinekoaren azpian" + +#: ../meld/filediff.py:238 +msgid "Copy change below the right chunk" +msgstr "Aldaketa eskuinekoaren azpian kopiatzen du" + +#: ../meld/filediff.py:239 +msgid "Delete" +msgstr "Ezabatu" + +#: ../meld/filediff.py:239 +msgid "Delete change" +msgstr "Ezabatu aldaketa" + +#: ../meld/filediff.py:240 +msgid "Merge all changes from left" +msgstr "Ezkerreko aldaketa guztiak konbinatu" + +#: ../meld/filediff.py:240 +msgid "Merge all non-conflicting changes from the left" +msgstr "Ezkerreko aldaketa ez-gatazkatsu guztiak konbinatzen ditu" + +#: ../meld/filediff.py:241 +msgid "Merge all changes from right" +msgstr "Eskuineko aldaketa guztiak konbinatu" + +#: ../meld/filediff.py:241 +msgid "Merge all non-conflicting changes from the right" +msgstr "Eskuineko aldaketa ez-gatazkatsu guztiak konbinatzen ditu" + +#: ../meld/filediff.py:242 +msgid "Merge all non-conflicting" +msgstr "Gatazkatsuak ez direnak konbinatu" + +#: ../meld/filediff.py:242 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "" +"Ezkerreko eta eskuineko paneletako aldaketa ez-gatazkatsu guztiak " +"konbinatzen ditu" + +#: ../meld/filediff.py:243 +msgid "Cycle through documents" +msgstr "Joan hurrengo dokumentura" + +#: ../meld/filediff.py:243 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "Teklatuaren fokua konparaketa honetako hurrengo dokumentuan jartzen du" + +#: ../meld/filediff.py:247 +msgid "Lock scrolling" +msgstr "Blokeatu korritzea" + +#: ../meld/filediff.py:248 +msgid "Lock scrolling of all panes" +msgstr "Panel guztien korritzea blokeatzen du" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:370 +msgid "INS" +msgstr "TXERT" + +#: ../meld/filediff.py:370 +msgid "OVR" +msgstr "GAINID" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:372 +#, python-format +msgid "Ln %i, Col %i" +msgstr "%i. err., %i. zut." + +#: ../meld/filediff.py:709 +#, python-format +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" +"'%s' iragazkiak fitxategiko lerro kopurua aldatu du. Konparazioa okerra " +"izango da. Informazio gehiago behar izanez gero, ikusi erabiltzailearen " +"eskuliburua." + +#: ../meld/filediff.py:1017 +#, python-format +msgid "[%s] Set num panes" +msgstr "[%s] Ezarri panel kopurua" + +#: ../meld/filediff.py:1023 +#, python-format +msgid "[%s] Opening files" +msgstr "[%s] Fitxategiak irekitzen" + +#: ../meld/filediff.py:1047 ../meld/filediff.py:1057 ../meld/filediff.py:1070 +#: ../meld/filediff.py:1076 +msgid "Could not read file" +msgstr "Ezin izan da fitxategia irakurri" + +#: ../meld/filediff.py:1048 +#, python-format +msgid "[%s] Reading files" +msgstr "[%s] Fitxategiak irakurtzen" + +#: ../meld/filediff.py:1058 +#, python-format +msgid "%s appears to be a binary file." +msgstr "Badirudi %s fitxategi bitar bat dela." + +#: ../meld/filediff.py:1071 +#, python-format +msgid "%s is not in encodings: %s" +msgstr "%s ez dago kodeketetan: %s" + +#: ../meld/filediff.py:1105 +#, python-format +msgid "[%s] Computing differences" +msgstr "[%s] Diferentziak analizatzen" + +#: ../meld/filediff.py:1277 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Testu-iragazkiak erabiltzen ari dira fitxategiak, eta baliteke iragazki " +"horiek fitxategien arteko diferentziak ezkutatzea. Iragazi gabeko " +"fitxategiak konparatu nahi dituzu?" + +#: ../meld/filediff.py:1283 +msgid "Files are identical" +msgstr "Fitxategiak berdin-berdinak dira" + +#: ../meld/filediff.py:1293 +msgid "Show without filters" +msgstr "Erakutsi iragazkirik gabe" + +#: ../meld/filediff.py:1424 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" +msgstr "" +"\"%s\" badago!\n" +"Gainidatzi?" + +#: ../meld/filediff.py:1437 +#, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "" +"Errorea gertatu da %s(e)(a)n idaztean\n" +"\n" +"%s." + +#: ../meld/filediff.py:1446 +#, python-format +msgid "Choose a name for buffer %i." +msgstr "Aukeratu izen bat %i. bufferrerako." + +#: ../meld/filediff.py:1466 +#, python-format +msgid "" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" +msgstr "" +"'%s' fitxategiak askotariko lerro-amaierak ditu.\n" +"\n" +"Zer formatu erabili nahi duzu?" + +#: ../meld/filediff.py:1482 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" +msgstr "" +"'%s' fitxategiko karaktere batzuk ezin dira '%s' (r)ekin kodetu\n" +"Gorde nahi duzu UTF-8 gisa?" + +#: ../meld/filediff.py:1548 +msgid "Save changes to documents before reloading?" +msgstr "Gorde dokumentuetako aldaketak berriro kargatu aurretik?" + +#: ../meld/filemerge.py:53 +#, python-format +msgid "[%s] Merging files" +msgstr "[%s] Fitxategiak konbinatzen" + +#: ../meld/meldapp.py:95 +msgid "wrong number of arguments supplied to --diff" +msgstr "--diff: emandako argumentu kopurua okerra da" + +#: ../meld/meldapp.py:99 +msgid "Start with an empty window" +msgstr "Hasi leiho huts batekin" + +#: ../meld/meldapp.py:100 ../meld/meldapp.py:102 ../meld/meldapp.py:106 +msgid "file" +msgstr "fitxategia" + +#: ../meld/meldapp.py:100 ../meld/meldapp.py:104 ../meld/meldapp.py:106 +msgid "dir" +msgstr "direktorioa" + +#: ../meld/meldapp.py:101 +msgid "Start a version control comparison" +msgstr "Hasi bertsio-kontrolaren konparazioa" + +#: ../meld/meldapp.py:103 +msgid "Start a 2- or 3-way file comparison" +msgstr "Hasi bi edo hiru sarrerako fitxategi-konparazio bat" + +#: ../meld/meldapp.py:105 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Hasi bi edo hiru direktorioko konparazio bat" + +#: ../meld/meldapp.py:107 +msgid "Start a comparison between file and dir/file" +msgstr "Hasi fitxategi eta direktorio/fitxategi baten arteko konparazioa" + +#: ../meld/meldapp.py:114 +msgid "Meld is a file and directory comparison tool." +msgstr "Meld fitxategiak eta direktorioak konparatzeko tresna bat da." + +#: ../meld/meldapp.py:117 +msgid "Set label to use instead of file name" +msgstr "Ezarri etiketa bat fitxategi-izenaren ordez erabiltzeko" + +#: ../meld/meldapp.py:119 +msgid "Open a new tab in an already running instance" +msgstr "Ireki beste fitxa bat dagoeneko martxan dagoen instantzia batean" + +#: ../meld/meldapp.py:122 +msgid "Automatically compare all differing files on startup" +msgstr "Automatikoki konparatu fitxategi desberdin guztiak abioan" + +#: ../meld/meldapp.py:124 +msgid "Ignored for compatibility" +msgstr "Ez ikusi egin zaio, bateragarritasuna dela eta" + +#: ../meld/meldapp.py:127 +msgid "Set the target file for saving a merge result" +msgstr "Ezarri helburuko fitxategia emaitza konbinatua gordetzeko" + +#: ../meld/meldapp.py:129 +msgid "Automatically merge files" +msgstr "Automatikoki konbinatu fitxategiak" + +#: ../meld/meldapp.py:132 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Gordetako konparazio bat kargatu, Meld-en konparazio-fitxategi batetik" + +#: ../meld/meldapp.py:135 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Diferentzia-fitxa bat sortu, emandako fitxategi edo karpetetarako" + +#: ../meld/meldapp.py:138 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "argumentu gehiegi (0-3 beharrean, %d)" + +#: ../meld/meldapp.py:141 +msgid "can't auto-merge less than 3 files" +msgstr "ezin dira automatikoki konbinatu 3 fitxategi baino gutxiago" + +#: ../meld/meldapp.py:143 +msgid "can't auto-merge directories" +msgstr "ezin dira automatikoki konbinatu direktorioak" + +#: ../meld/meldapp.py:149 +msgid "D-Bus error; comparisons will open in a new window." +msgstr "D-Bus errorea; konparazioak beste leiho batean irekiko dira." + +#: ../meld/meldapp.py:167 +msgid "Error reading saved comparison file" +msgstr "Errorea gertatu da gordetako konparazio-fitxategia irakurtzean" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:89 +msgid "" +msgstr "" + +#: ../meld/melddoc.py:59 ../meld/melddoc.py:60 +msgid "untitled" +msgstr "izengabea" + +#: ../meld/meldwindow.py:62 +msgid "_File" +msgstr "_Fitxategia" + +#: ../meld/meldwindow.py:63 +msgid "_New comparison" +msgstr "_Konparazio berria" + +#: ../meld/meldwindow.py:63 +msgid "Start a new comparison" +msgstr "Konparazio berri bat hasten du" + +#: ../meld/meldwindow.py:64 +msgid "Save the current file" +msgstr "Gorde uneko fitxategia" + +#: ../meld/meldwindow.py:66 +msgid "Close the current file" +msgstr "Itxi uneko fitxategia" + +#: ../meld/meldwindow.py:67 +msgid "Quit the program" +msgstr "Irten programatik" + +#: ../meld/meldwindow.py:69 +msgid "_Edit" +msgstr "_Editatu" + +#: ../meld/meldwindow.py:70 +msgid "Undo the last action" +msgstr "Desegin azken ekintza" + +#: ../meld/meldwindow.py:71 +msgid "Redo the last undone action" +msgstr "Berregin desegindako azken ekintza" + +#: ../meld/meldwindow.py:72 +msgid "Cut the selection" +msgstr "Ebaki hautapena" + +#: ../meld/meldwindow.py:73 +msgid "Copy the selection" +msgstr "Kopiatu hautapena" + +#: ../meld/meldwindow.py:74 +msgid "Paste the clipboard" +msgstr "Itsatsi arbelean" + +#: ../meld/meldwindow.py:75 +msgid "Search for text" +msgstr "Testua bilatu" + +#: ../meld/meldwindow.py:76 +msgid "Find Ne_xt" +msgstr "Bilatu _hurrengoa" + +#: ../meld/meldwindow.py:76 +msgid "Search forwards for the same text" +msgstr "Testu bera bilatzen du berriro, aurrerantz" + +#: ../meld/meldwindow.py:77 +msgid "Find _Previous" +msgstr "Bilatu _aurrekoa" + +#: ../meld/meldwindow.py:77 +msgid "Search backwards for the same text" +msgstr "Testu bera bilatzen du berriro, atzerantz" + +#: ../meld/meldwindow.py:78 +msgid "Find and replace text" +msgstr "Testua bilatu eta ordeztu" + +#: ../meld/meldwindow.py:79 +msgid "Prefere_nces" +msgstr "Hobes_penak" + +#: ../meld/meldwindow.py:79 +msgid "Configure the application" +msgstr "Aplikazioa konfiguratzen du" + +#: ../meld/meldwindow.py:81 +msgid "_Changes" +msgstr "_Aldaketak" + +#: ../meld/meldwindow.py:82 +msgid "Next change" +msgstr "Hurrengo aldaketa" + +#: ../meld/meldwindow.py:82 +msgid "Go to the next change" +msgstr "Hurrengo aldaketara joaten da" + +#: ../meld/meldwindow.py:83 +msgid "Previous change" +msgstr "Aurreko aldaketa" + +#: ../meld/meldwindow.py:83 +msgid "Go to the previous change" +msgstr "Aurreko aldaketara joaten da" + +#: ../meld/meldwindow.py:84 +msgid "Open externally" +msgstr "Ireki kanpotik" + +#: ../meld/meldwindow.py:84 +msgid "Open selected file or directory in the default external application" +msgstr "" +"Hautatutako fitxategia edo direktorioa irekitzen du kanpo-aplikazio " +"lehenetsian" + +#: ../meld/meldwindow.py:86 +msgid "_View" +msgstr "_Ikusi" + +#: ../meld/meldwindow.py:87 +msgid "File status" +msgstr "Fitxategiaren egoera" + +#: ../meld/meldwindow.py:88 +msgid "Version status" +msgstr "Bertsioaren egoera" + +#: ../meld/meldwindow.py:89 +msgid "File filters" +msgstr "Fitxategi-iragazkiak" + +#: ../meld/meldwindow.py:90 +msgid "Stop the current action" +msgstr "Gelditu uneko ekintza" + +#: ../meld/meldwindow.py:91 +msgid "Refresh the view" +msgstr "Freskatu ikuspegia" + +#: ../meld/meldwindow.py:92 +msgid "Reload" +msgstr "Birkargatu" + +#: ../meld/meldwindow.py:92 +msgid "Reload the comparison" +msgstr "Konparazioa birkargatzen du" + +#: ../meld/meldwindow.py:94 +msgid "_Tabs" +msgstr "_Fitxak" + +#: ../meld/meldwindow.py:95 +msgid "_Previous Tab" +msgstr "_Aurreko fitxa" + +#: ../meld/meldwindow.py:95 +msgid "Activate previous tab" +msgstr "Aurreko fitxa aktibatzen du" + +#: ../meld/meldwindow.py:96 +msgid "_Next Tab" +msgstr "_Hurrengo fitxa" + +#: ../meld/meldwindow.py:96 +msgid "Activate next tab" +msgstr "Hurrengo fitxa aktibatzen du" + +#: ../meld/meldwindow.py:97 +msgid "Move Tab _Left" +msgstr "Eraman fitxa e_zkerrera" + +#: ../meld/meldwindow.py:97 +msgid "Move current tab to left" +msgstr "Uneko fitxa ezkerrera eramaten du" + +#: ../meld/meldwindow.py:98 +msgid "Move Tab _Right" +msgstr "Eraman fitxa e_skuinera" + +#: ../meld/meldwindow.py:98 +msgid "Move current tab to right" +msgstr "Uneko fitxa eskuinera eramaten du" + +#: ../meld/meldwindow.py:100 +msgid "_Help" +msgstr "_Laguntza" + +#: ../meld/meldwindow.py:101 +msgid "_Contents" +msgstr "_Edukia" + +#: ../meld/meldwindow.py:101 +msgid "Open the Meld manual" +msgstr "Meld-en eskuliburua irekitzen du" + +#: ../meld/meldwindow.py:102 +msgid "Report _Bug" +msgstr "Akatsaren _berri eman" + +#: ../meld/meldwindow.py:102 +msgid "Report a bug in Meld" +msgstr "Meld-eko akats baten txostena bidaltzen du" + +#: ../meld/meldwindow.py:103 +msgid "About this program" +msgstr "Programa honi buruz" + +#: ../meld/meldwindow.py:106 +msgid "Full Screen" +msgstr "Pantaila osoa" + +#: ../meld/meldwindow.py:106 +msgid "View the comparison in full screen" +msgstr "Konparazioa pantaila osoan bistaratzen du" + +#: ../meld/meldwindow.py:107 +msgid "_Toolbar" +msgstr "_Tresna-barra" + +#: ../meld/meldwindow.py:107 +msgid "Show or hide the toolbar" +msgstr "Tresna-barra bistaratzen/ezkutatzen du" + +#: ../meld/meldwindow.py:108 +msgid "_Statusbar" +msgstr "_Egoera-barra" + +#: ../meld/meldwindow.py:108 +msgid "Show or hide the statusbar" +msgstr "Egoera-barra bistaratzen/ezkutatzen du" + +#: ../meld/meldwindow.py:116 +msgid "Open Recent" +msgstr "Ireki azkenak" + +#: ../meld/meldwindow.py:117 +msgid "Open recent files" +msgstr "Azken erabilitako fitxategiak irekitzen ditu" + +#: ../meld/meldwindow.py:533 +msgid "Switch to this tab" +msgstr "Joan fitxa honetara" + +#. exit at first non found directory + file +#: ../meld/meldwindow.py:665 +msgid "Cannot compare a mixture of files and directories.\n" +msgstr "Ezin dira konparatu fitxategiak eta direktorioak nahasian.\n" + +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:189 +msgid "[None]" +msgstr "[Bat ere ez]" + +#: ../meld/patchdialog.py:124 +msgid "Save Patch As..." +msgstr "Gorde adabakia honela..." + +#: ../meld/preferences.py:44 +msgid "label" +msgstr "etiketa" + +#: ../meld/preferences.py:44 +msgid "pattern" +msgstr "eredua" + +#: ../meld/preferences.py:160 +msgid "Only available if you have gnome-python-desktop installed" +msgstr "Erabilgarri dago soilik gnome-python-mahaigaina instalatua badago" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:306 +msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +msgstr "Babeskopiak\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:308 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" +"Sistema eragilearen metadatu espezifikoak\t0\t.DS_Store ._* .Spotlight-V100 ." +"Trashes Thumbs.db Desktop.ini\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:310 +#, python-format +msgid "Version Control\t1\t%s\n" +msgstr "Bertsio-kontrola\t1\t%s\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:312 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +msgstr "Bitarrak\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:314 +msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +msgstr "Multimedia\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:316 +msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +msgstr "CVS gako-hitzak\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:318 +msgid "C++ comment\t0\t//.*\n" +msgstr "C++ iruzkina\t0\t//.*\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:320 +msgid "C comment\t0\t/\\*.*?\\*/\n" +msgstr "C iruzkina\t0\t/\\*.*?\\*/\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:322 +msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +msgstr "Zuriune guztiak\t0\t[ \\t\\r\\f\\v]*\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:324 +msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +msgstr "Hasierako zuriunea\t0\t^[ \\t\\r\\f\\v]*\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:326 +msgid "Script comment\t0\t#.*" +msgstr "Script iruzkina\t0\t#.*" + +#: ../meld/vcview.py:165 +msgid "Co_mmit" +msgstr "Ba_lidatu" + +#: ../meld/vcview.py:165 +msgid "Commit" +msgstr "Balidatu egiten du" + +#: ../meld/vcview.py:166 +msgid "_Update" +msgstr "_Eguneratu" + +#: ../meld/vcview.py:166 +msgid "Update" +msgstr "Eguneratu egiten du" + +#: ../meld/vcview.py:167 +msgid "Add to VC" +msgstr "Gehitu bertsio-kontrolari" + +#: ../meld/vcview.py:168 +msgid "Remove from VC" +msgstr "Kendu bertsio-kontroletik" + +#: ../meld/vcview.py:169 +msgid "_Resolved" +msgstr "_Ebatzita" + +#: ../meld/vcview.py:169 +msgid "Mark as resolved for VC" +msgstr "Bertsio-kontrolerako ebatzia dagoela markatzen du" + +#: ../meld/vcview.py:170 +msgid "Revert to original" +msgstr "Leheneratu jatorrizkora" + +#: ../meld/vcview.py:171 +msgid "Delete locally" +msgstr "Ezabatu lokalean" + +#: ../meld/vcview.py:175 +msgid "_Flatten" +msgstr "_Berdindu" + +#: ../meld/vcview.py:175 +msgid "Flatten directories" +msgstr "Direktorioak berdintzen ditu" + +#: ../meld/vcview.py:176 +msgid "_Modified" +msgstr "_Aldatuta" + +#: ../meld/vcview.py:177 +msgid "_Normal" +msgstr "_Normala" + +#: ../meld/vcview.py:177 +msgid "Show normal" +msgstr "Bistaratze normala" + +#: ../meld/vcview.py:178 +msgid "Non _VC" +msgstr "Bertsio-_kontrolik gabeak" + +#: ../meld/vcview.py:178 +msgid "Show unversioned files" +msgstr "Bertsiorik ez duten fitxategiak bistaratzen ditu" + +#: ../meld/vcview.py:179 +msgid "Ignored" +msgstr "Ez ikusi eginda" + +#: ../meld/vcview.py:179 +msgid "Show ignored files" +msgstr "Ez ikusi egin zaien fitxategiak bistaratzen ditu" + +#: ../meld/vcview.py:230 ../meld/vcview.py:378 +msgid "Location" +msgstr "Kokapena" + +#: ../meld/vcview.py:231 +msgid "Status" +msgstr "Egoera" + +#: ../meld/vcview.py:232 +msgid "Rev" +msgstr "Berrikuspena" + +#: ../meld/vcview.py:233 +msgid "Tag" +msgstr "Etiketa" + +#: ../meld/vcview.py:234 +msgid "Options" +msgstr "Aukerak" + +#: ../meld/vcview.py:296 +msgid "Choose one Version Control" +msgstr "Bertsio-kontrol bat aukeratu" + +#: ../meld/vcview.py:297 +msgid "Only one Version Control in this directory" +msgstr "Bertsio-kontrol bakar bat direktorio honetan" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:318 +#, python-format +msgid "%s Not Installed" +msgstr "%s ez dago instalatua" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:322 +msgid "Invalid Repository" +msgstr "Biltegia baliogabea da" + +#: ../meld/vcview.py:331 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:378 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../meld/vcview.py:421 +msgid "(Empty)" +msgstr "(hutsik)" + +#: ../meld/vcview.py:453 +#, python-format +msgid "[%s] Fetching differences" +msgstr "[%s] Diferentziak bilatzen" + +#: ../meld/vcview.py:466 +#, python-format +msgid "[%s] Applying patch" +msgstr "[%s] Adabakia aplikatzen" + +#: ../meld/vcview.py:669 +msgid "Patch tool not found" +msgstr "Ez da aurkitu adabaki-tresna" + +#: ../meld/vcview.py:670 +#, python-format +msgid "" +"Meld needs the patch tool to be installed to perform comparisons in " +"%s repositories. Please install patch and try again." +msgstr "" +"Adabaki-tresna instalatua egotea behar du Meld-ek %s biltegietan " +"konparazioak egiteko. Instalatu adabakia eta egin proba berriz." + +#: ../meld/vcview.py:710 +msgid "Error fetching original comparison file" +msgstr "Errorea gertatu da jatorrizko konparazio-fitxategia eskuratzean" + +#: ../meld/vcview.py:711 +msgid "" +"Meld couldn't obtain the original version of your comparison file. If you " +"are using the most recent version of Meld, please report a bug, including as " +"many details as possible." +msgstr "" +"Meld-ek ezin izan du eskuratu konparazio-fitxategiaren jatorrizko bertsioa. " +"Meld-en bertsio berriena erabiltzen ari bazara, eman arazoaren berri, eta " +"adierazi ahalik eta xehetasun gehien." + +#: ../meld/vcview.py:719 +msgid "Report a bug" +msgstr "Akats baten berri eman" + +#: ../meld/ui/findbar.py:150 +#, python-format +msgid "" +"Regular expression error\n" +"'%s'" +msgstr "" +"Adierazpen erregularraren errorea\n" +"'%s'" + +#: ../meld/ui/historyentry.py:296 +msgid "_Browse..." +msgstr "_Arakatu..." + +#: ../meld/ui/historyentry.py:304 +msgid "Path" +msgstr "Bide-izena" + +#: ../meld/ui/historyentry.py:305 +msgid "Path to file" +msgstr "Fitxategiaren bide-izena" + +#: ../meld/ui/historyentry.py:306 +msgid "Pop up a file selector to choose a file" +msgstr "Fitxategi-hautatzaile bat zabaldu, fitxategi bat aukeratzeko" + +#: ../meld/ui/historyentry.py:444 +msgid "Select directory" +msgstr "Direktorioa hautatu" + +#: ../meld/ui/historyentry.py:448 +msgid "Select file" +msgstr "Fitxategia hautatu" + +#: ../meld/ui/notebooklabel.py:63 +msgid "Close tab" +msgstr "Itxi fitxa" + +#: ../meld/vc/_vc.py:45 +msgid "Merged" +msgstr "" + +#: ../meld/vc/_vc.py:45 +msgid "Base" +msgstr "" + +#: ../meld/vc/_vc.py:45 +#, fuzzy +msgid "Local" +msgstr "Kokapena" + +#: ../meld/vc/_vc.py:45 +#, fuzzy +msgid "Remote" +msgstr "_Kendu" + +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:51 +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" +msgstr "" +"Ez ikusi egina:Bertsiorik gabea:::Errorea::Gehitu berria:Aldatua:Gatazka:" +"Kendua:Falta da:Ez dago" + +#: ../meld/vc/cvs.py:181 +#, python-format +msgid "" +"Error converting to a regular expression\n" +"The pattern was '%s'\n" +"The error was '%s'" +msgstr "" +"Errorea gertatu da adierazpen erregular bihurtzean\n" +"Eredua: '%s'\n" +"Errorea: '%s'" + +#: ../meld/vc/git.py:218 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Modua aldatu da %s modutik %s modura" diff -Nru meld-1.5.3/po/fi.po meld-3.11.0/po/fi.po --- meld-1.5.3/po/fi.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/fi.po 2014-02-16 20:23:22.000000000 +0000 @@ -2,1169 +2,2447 @@ # Copyright (C) 2006-2008 Free Software Foundation Inc. # This file is distributed under the same license as the meld package. # Ilkka Tuohela , 2006-2008. +# Jiri Grönroos , 2013. # msgid "" msgstr "" "Project-Id-Version: meld\n" -"Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2008-09-22 10:33+0300\n" -"PO-Revision-Date: 2008-09-22 10:30+0300\n" -"Last-Translator: Ilkka Tuohela \n" -"Language-Team: Finnish \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-09 06:09+0000\n" +"PO-Revision-Date: 2013-12-11 20:18+0200\n" +"Last-Translator: Jiri Grönroos \n" +"Language-Team: suomi \n" +"Language: fi\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" +"X-Generator: Gtranslator 2.91.6\n" -#: ../dirdiff.py:194 ../glade2/meldapp.glade.h:65 ../vcview.py:120 +#: ../bin/meld:115 +msgid "Cannot import: " +msgstr "Tuonti ei onnistu: " + +#: ../bin/meld:118 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld vaatii version %s tai uudemman." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Erojen vertailija" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Meld - erojen vertailija" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Vertaa ja yhdistä tiedostoja" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Meld-vertailun kuvaus" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Ikkunan oletuskoko" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +#| msgid "Show or hide the toolbar" +msgid "Show toolbar" +msgstr "Näytä työkalupalkki" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Jos tosi, ikkunan työkalupalkki näytetään." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +#| msgid "_Statusbar" +msgid "Show statusbar" +msgstr "Näytä tilapalkki" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Jos tosi, ikkunan tilapalkki näytetään." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +msgid "Automatically detected text encodings" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:12 +msgid "Show line numbers" +msgstr "Näytä rivinumerot" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Korosta syntaksi" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:16 +#, fuzzy +#| msgid "Show w_hitespace" +msgid "Displayed whitespace" +msgstr "Näytä _tyhjätila" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:18 +#, fuzzy +#| msgid "_Wrap around" +msgid "Wrap mode" +msgstr "_Rivitä" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:20 +msgid "Highlight current line" +msgstr "Korosta nykyinen rivi" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:22 +#, fuzzy +#| msgid "Use the system default editor" +msgid "Use the system default monospace font" +msgstr "Käytä järjestelmän oletusmuokkainta" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:24 +#| msgid "Use custom font" +msgid "Custom font" +msgstr "Omavalintainen kirjasin" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:28 +msgid "Use the system default editor" +msgstr "Käytä järjestelmän oletusmuokkainta" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Älä huomioi symbolisia linkkejä" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:36 +msgid "Use shallow comparison" +msgstr "Käytä pinnallista vertailua" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:38 +msgid "File timestamp resolution" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:40 +#, fuzzy +#| msgid "File Filters" +msgid "File status filters" +msgstr "Tiedostosuodattimet" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:42 +#, fuzzy +#| msgid "Choose which version control system to use" +msgid "Show the version control console output" +msgstr "Valitse käytettävä versionhallinta" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:52 +#, fuzzy +#| msgid "Version control view" +msgid "Version control status filters" +msgstr "Versionhallintanäkymä" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:54 +#, fuzzy +#| msgid "File Filters" +msgid "Filename-based filters" +msgstr "Tiedostosuodattimet" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:56 +#, fuzzy +#| msgid "Text Filters" +msgid "Text-based filters" +msgstr "Tekstisuodattimet" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "Tietoja - Meld" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Tekijänoikeus © 2002-2009 Stephen Kennedy\n" +"Tekijänoikeus © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Verkkosivusto" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "Jiri Grönroos" + +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "_Asetukset" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "_Ohje" + +#: ../data/ui/application.ui.h:8 +msgid "_About Meld" +msgstr "_Tietoja - Meld" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Lopeta" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 msgid "_Compare" msgstr "_Vertaa" -#: ../dirdiff.py:194 ../vcview.py:120 -msgid "Compare selected" -msgstr "Vertaa valittuja" - -#. FIXME: the glade files were inconsistent: GO_BACK vs GOTO_FIRST, "Left" vs "Copy To Left" -#: ../dirdiff.py:196 -msgid "Left" -msgstr "Vasen" +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Vertaa valittuja tiedostoja" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Kopioi _vasemmalle" -#: ../dirdiff.py:196 ../filediff.py:142 -msgid "Copy To Left" +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" msgstr "Kopioi vasemmalle" -#. FIXME: the glade files were inconsistent: GO_FORWARD vs GOTO_LAST, "Right" vs "Copy To Right" -#: ../dirdiff.py:198 -msgid "Right" -msgstr "Oikea" +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Kopioi _oikealle" -#: ../dirdiff.py:198 ../filediff.py:143 -msgid "Copy To Right" +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" msgstr "Kopioi oikealle" -#: ../dirdiff.py:199 +#: ../data/ui/dirdiff.ui.h:7 msgid "Delete selected" msgstr "Poista valittu" -#: ../dirdiff.py:200 -msgid "Hide..." -msgstr "Piilota..." +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1418 +msgid "Hide" +msgstr "Piilota" -#: ../dirdiff.py:200 +#: ../data/ui/dirdiff.ui.h:9 msgid "Hide selected" msgstr "Piilota valittu" -#: ../dirdiff.py:202 ../filediff.py:140 ../vcview.py:121 -msgid "Open selected" -msgstr "Avaa valittu" - -#: ../dirdiff.py:206 -msgid "Case" -msgstr "Kirjainkoko" - -#: ../dirdiff.py:206 -msgid "Ignore case of entries" -msgstr "Älä huomioi syötteiden kirjainten kokoa" +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Älä huomioi kirjainkoon eroja tiedostonimessä" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Kohtele eri kirjainkoolla nimettyjä tiedostoja samoina, jos ne ovat muuten " +"identtisiä" -#: ../dirdiff.py:207 +#: ../data/ui/dirdiff.ui.h:12 msgid "Same" msgstr "Sama" -#: ../dirdiff.py:207 +#: ../data/ui/dirdiff.ui.h:13 msgid "Show identical" msgstr "Näytä identtiset" -#: ../dirdiff.py:208 +#: ../data/ui/dirdiff.ui.h:14 msgid "New" msgstr "Uusi" -#: ../dirdiff.py:208 +#: ../data/ui/dirdiff.ui.h:15 msgid "Show new" msgstr "Näytä uudet" -#: ../dirdiff.py:209 +#: ../data/ui/dirdiff.ui.h:16 msgid "Modified" msgstr "Muokattu" -#: ../dirdiff.py:209 ../vcview.py:133 +#: ../data/ui/dirdiff.ui.h:17 msgid "Show modified" msgstr "Näytä muokatut" -#: ../dirdiff.py:270 ../dirdiff.py:285 -#, python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "Virhe muunnettaessa mallia \"%s\" säännölliseksi lausekkeeksi" +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Suodattimet" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Aseta aktiiviset suodattimet" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Muokattava luettelo" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Aktiivinen" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column Name" +msgstr "Sarakkeen nimi" + +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Lisää" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:670 +msgid "_Remove" +msgstr "_Poista" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Siirrä kohdetta ylös" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "Siirrä _ylös" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "Siirrä kohdetta alas" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Siirrä _alas" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:365 +#: ../meld/vcview.py:186 +msgid "Name" +msgstr "Nimi" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Malli" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Lisää uusi suodatin" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Poista valittu suodatin" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Tallennetaanko muutokset asiakirjaan ennen sulkemista?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Jos et tallenna, muutokset häviävät pysyvästi." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Sulje _tallentamatta" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "_Peru" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "_Tallenna" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" + +#: ../data/ui/filediff.ui.h:7 ../meld/filediff.py:301 +msgid "Lock scrolling of all panes" +msgstr "" + +#: ../data/ui/filediff.ui.h:8 +msgid "Revert unsaved changes to documents?" +msgstr "" + +#: ../data/ui/filediff.ui.h:9 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Seuraaviin asiakirjoihin tehdyt muutokset häviävät pysyvästi:\n" + +#: ../data/ui/findbar.ui.h:1 +msgid "_Replace" +msgstr "_Korvaa" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "K_orvaa kaikki" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Edellinen" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Seuraava" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Etsi:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "Kor_vaa käyttäen:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match case" +msgstr "Huomioi _kirjainkoko" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "K_oko sana" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular e_xpression" +msgstr "Säännöllinen _lauseke" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Rivitetty" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Format as Patch" +msgstr "Muotoile paikkatiedostoksi" + +#: ../data/ui/patch-dialog.ui.h:2 +#, fuzzy +#| msgid "No differences found." +msgid "Use differences between:" +msgstr "Eroja ei löytynyt." + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Left and middle panes" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Middle and right panes" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Kopioi leikepöydälle" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:121 +msgid "Save Patch" +msgstr "Tallenna paikkatiedosto" + +#: ../data/ui/preferences.ui.h:1 +msgid "Left is remote, right is local" +msgstr "Vasemmalla on etä, oikealla on paikallinen" + +#: ../data/ui/preferences.ui.h:2 +msgid "Left is local, right is remote" +msgstr "Vasemmalla on paikallinen, oikealla on etä" + +#: ../data/ui/preferences.ui.h:3 +msgid "1ns (ext4)" +msgstr "1ns (ext4)" + +#: ../data/ui/preferences.ui.h:4 +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" + +#: ../data/ui/preferences.ui.h:5 +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" + +#: ../data/ui/preferences.ui.h:6 +msgid "2s (VFAT)" +msgstr "2s (VFAT)" + +#: ../data/ui/preferences.ui.h:7 +msgid "Meld Preferences" +msgstr "Meldin asetukset" + +#: ../data/ui/preferences.ui.h:8 +msgid "Font" +msgstr "Kirjasin" + +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "_Käytä järjestelmän tasalevyistä kirjasinta" + +#: ../data/ui/preferences.ui.h:10 +msgid "_Editor font:" +msgstr "_Muokkaimen kirjasin:" + +#: ../data/ui/preferences.ui.h:11 +msgid "Display" +msgstr "Näytä" + +#: ../data/ui/preferences.ui.h:12 +msgid "_Tab width:" +msgstr "_Sarkaimen leveys:" + +#: ../data/ui/preferences.ui.h:13 +msgid "_Insert spaces instead of tabs" +msgstr "Lis_ää välilyöntejä sarkainten sijaan" + +#: ../data/ui/preferences.ui.h:14 +msgid "Enable text _wrapping" +msgstr "Käytä te_kstin rivitystä" + +#: ../data/ui/preferences.ui.h:15 +msgid "Do not _split words over two lines" +msgstr "Älä jaa sano_ja kahdelle riville" + +#: ../data/ui/preferences.ui.h:16 +msgid "Highlight _current line" +msgstr "Ko_rosta nykyinen rivi" + +#: ../data/ui/preferences.ui.h:17 +msgid "Show _line numbers" +msgstr "Näytä _rivinumerot" + +#: ../data/ui/preferences.ui.h:18 +msgid "Show w_hitespace" +msgstr "Näytä _tyhjätila" + +#: ../data/ui/preferences.ui.h:19 +msgid "Use s_yntax highlighting" +msgstr "Käytä s_yntaksin korostusta" + +#: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Ulkoinen muokkain" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "Käytä _järjestelmän oletusmuokkainta" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Muokkaimen kom_ento:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Muokkain" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Pinnallinen vertailu" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Symboliset linkit" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Näkyvät sarakkeet" + +#: ../data/ui/preferences.ui.h:30 +#, fuzzy +#| msgid "_File Comparison" +msgid "Folder Comparisons" +msgstr "_Tiedostojen vertailu" + +#: ../data/ui/preferences.ui.h:31 +#, fuzzy +#| msgid "_File Comparison" +msgid "Version Comparisons" +msgstr "_Tiedostojen vertailu" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "" + +#: ../data/ui/preferences.ui.h:33 +#, fuzzy +#| msgid "Log Message" +msgid "Commit Messages" +msgstr "Lokiviesti" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Versionhallinta" + +#: ../data/ui/preferences.ui.h:37 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Voit suodattaa pois tiedostoja ja hakemistoja nimen perusteella " +"suoritettaessa hakemistojen vertailuja. Kukin malli on lista komentorivin " +"tapaisia jokerimerkkejä erotettuna välilyönneillä." + +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:106 +msgid "File Filters" +msgstr "Tiedostosuodattimet" + +#: ../data/ui/preferences.ui.h:39 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Tietyn tyyppiset muutokset voidaan jättää huomiotta vertailtaessa " +"suoritettaessa tiedostojen vertailuja. Kukin malli on pythonin säännöllinen " +"lauseke, joka korvaa täsmäävän tekstin tyhjällä merkkijonolla ennen " +"vertailua. Jos lauseke sisältää ryhmiä, vain ryhmät korvataan. Katso " +"lisätietoja käyttöohjeesta." + +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Älä huomioi muutoksia, jotka lisäävät tai poistavat tyhjiä rivejä" + +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Tekstisuodattimet" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:618 +msgid "New comparison" +msgstr "Uusi vertalu" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Tiedostojen vertailu" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Kansioiden vertailu" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Versionhallintanäkymä" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_3-osainen vertailu" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Valitse kolmas tiedosto" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Valitse toinen tiedosto" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Valitse ensimmäinen tiedosto" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Valitse ensimmäinen kansio" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Valitse toinen kansio" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Valitse kolmas kansio" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Valitse versiohallittu kansio" + +#: ../data/ui/tab-placeholder.ui.h:13 +#, fuzzy +#| msgid "_File Comparison" +msgid "_Blank comparison" +msgstr "_Tiedostojen vertailu" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Vertaa" + +#: ../data/ui/vcview.ui.h:3 +#, fuzzy +#| msgid "Commit" +msgid "Co_mmit..." +msgstr "Toteuta" + +#: ../data/ui/vcview.ui.h:4 +msgid "Commit changes to version control" +msgstr "Tee commit muutoksista versionhallintaan" + +#: ../data/ui/vcview.ui.h:5 +msgid "_Update" +msgstr "_Päivitä" + +#: ../data/ui/vcview.ui.h:6 +msgid "Update working copy from version control" +msgstr "" + +#: ../data/ui/vcview.ui.h:7 +msgid "_Push" +msgstr "" + +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Lisää versionhallintaan" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Poista versionhallinnasta" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "" + +#: ../data/ui/vcview.ui.h:16 +#, fuzzy +#| msgid "Revert to original" +msgid "Revert working copy to original state" +msgstr "Palaa alkuperäiseen" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "" + +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Litistä" + +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Litistä kansiot" + +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "_Muokattu" + +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Näytä muokatut tiedostot" + +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Normaali" + +#: ../data/ui/vcview.ui.h:23 +#, fuzzy +#| msgid "Show ignored files" +msgid "Show normal files" +msgstr "Näytä versioimattomat tiedostot" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "" + +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Näytä versioimattomat tiedostot" + +#: ../data/ui/vcview.ui.h:26 +msgid "Ignored" +msgstr "Huomiotta jätetyt" + +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Näytä versioimattomat tiedostot" + +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Toteuta" + +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Toteuta tiedostot" + +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Lokiviesti" + +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Edelliset lokit:" + +#: ../data/ui/vcview.ui.h:32 +#, fuzzy +#| msgid "Commit" +msgid "Co_mmit" +msgstr "Toteuta" + +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" + +#: ../data/ui/vcview.ui.h:35 +#, fuzzy +#| msgid "_Commit" +msgid "_Push commits" +msgstr "_Toteuta" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:383 +msgid "Size" +msgstr "Koko" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:391 +msgid "Modification time" +msgstr "Muokkausaika" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:399 +msgid "Permissions" +msgstr "Oikeudet" -#: ../dirdiff.py:293 +#: ../meld/dirdiff.py:558 #, python-format msgid "Hide %s" msgstr "Piilota %s" -#: ../dirdiff.py:378 ../dirdiff.py:388 ../vcview.py:225 ../vcview.py:253 +#: ../meld/dirdiff.py:686 ../meld/dirdiff.py:708 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Tutkitaan %s" -#: ../dirdiff.py:421 +#: ../meld/dirdiff.py:808 #, python-format -msgid "'%s' hidden by '%s'" -msgstr "\"%s\" piilottanut \"%s\"" +msgid "[%s] Done" +msgstr "[%s] Valmis" -#: ../dirdiff.py:427 -#, python-format +#: ../meld/dirdiff.py:814 +msgid "Multiple errors occurred while scanning this folder" +msgstr "Tätä kansiota tutkittaessa tapahtui lukuisia virheitä" + +#: ../meld/dirdiff.py:815 +msgid "Files with invalid encodings found" +msgstr "Virheellisellä merkistökoodauksella varustettuja tiedostoja löytyi" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:817 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" +"Joillain tiedostoilla on virheellinen merkistö. Nimet ovat jotain tällaisia:" + +#: ../meld/dirdiff.py:819 +msgid "Files hidden by case insensitive comparison" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:821 +#, fuzzy +#| msgid "" +#| "You are running a case insensitive comparison on a case sensitive " +#| "filesystem. Some files are not visible:\n" +#| "%s" msgid "" "You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" +"filesystem. The following files in this folder are hidden:" msgstr "" "Suoritat kirjainkoosta riippuvaa vertailua tiedostojärjestelmässä, joka ei " "tue kirjainkokoja. Jotkut tiedostot eivät näy:\n" "%s" -#: ../dirdiff.py:501 +#: ../meld/dirdiff.py:832 #, python-format -msgid "[%s] Done" -msgstr "[%s] Valmis" +msgid "'%s' hidden by '%s'" +msgstr "\"%s\" piilottanut \"%s\"" -#: ../dirdiff.py:547 +#: ../meld/dirdiff.py:857 ../meld/filediff.py:1111 ../meld/filediff.py:1249 +#: ../meld/filediff.py:1420 ../meld/filediff.py:1450 ../meld/filediff.py:1452 +msgid "Hi_de" +msgstr "_Piilota" + +#: ../meld/dirdiff.py:888 #, python-format msgid "" "'%s' exists.\n" "Overwrite?" msgstr "" "\"%s\" on olemassa.\n" -"Kirjoitetaanko yli?" +"Korvataanko se?" -#: ../dirdiff.py:554 -#, python-format +#: ../meld/dirdiff.py:896 +msgid "Error copying file" +msgstr "Virhe tiedostoa kopioitaessa" + +#: ../meld/dirdiff.py:897 +#, fuzzy, python-format +#| msgid "" +#| "Error copying '%s' to '%s'\n" +#| "\n" +#| "%s." msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" "Virhe kopioitaessa \"%s\" kohteeseen \"%s\"\n" "\n" "%s." -#: ../dirdiff.py:572 ../vcview.py:417 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recusively?" -msgstr "" -"\"%s\" on kansio.\n" -"Poistetaanko rekursiivisesti?" - -#: ../dirdiff.py:579 ../vcview.py:422 -#, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." +#: ../meld/dirdiff.py:920 +#, fuzzy, python-format +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error deleting %s" msgstr "" "Virhe poistettaessa %s\n" "\n" "%s." -#: ../dirdiff.py:590 +#: ../meld/dirdiff.py:1051 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i sekunti" msgstr[1] "%i sekuntia" -#: ../dirdiff.py:591 +#: ../meld/dirdiff.py:1052 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minuutti" msgstr[1] "%i minuuttia" -#: ../dirdiff.py:592 +#: ../meld/dirdiff.py:1053 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i tunti" msgstr[1] "%i tuntia" -#: ../dirdiff.py:593 +#: ../meld/dirdiff.py:1054 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i päivä" msgstr[1] "%i päivää" -#: ../dirdiff.py:594 +#: ../meld/dirdiff.py:1055 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i viikko" msgstr[1] "%i viikkoa" -#: ../dirdiff.py:595 +#: ../meld/dirdiff.py:1056 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i kuukausi" msgstr[1] "%i kuukautta" -#: ../dirdiff.py:596 +#: ../meld/dirdiff.py:1057 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i vuosi" msgstr[1] "%i vuotta" -#: ../filediff.py:135 ../meldapp.py:533 +#: ../meld/filediff.py:229 +msgid "Format as Patch..." +msgstr "Muotoile paikkatiedosto..." + +#: ../meld/filediff.py:230 +msgid "Create a patch using differences between files" +msgstr "Luo paikkatiedosto käyttäen tiedostojen välisiä eroja" + +#: ../meld/filediff.py:232 +msgid "Save A_ll" +msgstr "Tallenna _kaikki" + +#: ../meld/filediff.py:233 +msgid "Save all files in the current comparison" +msgstr "" + +#: ../meld/filediff.py:236 +msgid "Revert files to their saved versions" +msgstr "" + +#: ../meld/filediff.py:238 +msgid "Add Synchronization Point" +msgstr "Lisää synkronointipiste" + +#: ../meld/filediff.py:239 +msgid "Add a manual point for synchronization of changes between files" +msgstr "" + +#: ../meld/filediff.py:242 +msgid "Clear Synchronization Points" +msgstr "Tyhjennä synkronointipisteet" + +#: ../meld/filediff.py:243 +msgid "Clear manual change sychronization points" +msgstr "" + +#: ../meld/filediff.py:245 +msgid "Previous Conflict" +msgstr "Edellinen ristiriita" + +#: ../meld/filediff.py:246 +msgid "Go to the previous conflict" +msgstr "Siirry edelliseen ristiriitaan" + +#: ../meld/filediff.py:248 +msgid "Next Conflict" +msgstr "Seuraava ristiriita" + +#: ../meld/filediff.py:249 +msgid "Go to the next conflict" +msgstr "Siirry seuraavaan ristiriitaan" + +#: ../meld/filediff.py:251 +msgid "Push to Left" +msgstr "" + +#: ../meld/filediff.py:252 +msgid "Push current change to the left" +msgstr "" + +#: ../meld/filediff.py:255 +#, fuzzy +#| msgid "Copy To Right" +msgid "Push to Right" +msgstr "Kopioi oikealle" + +#: ../meld/filediff.py:256 +msgid "Push current change to the right" +msgstr "" + +#: ../meld/filediff.py:260 +msgid "Pull from Left" +msgstr "" + +#: ../meld/filediff.py:261 +#, fuzzy +#| msgid "Copy all changes from right pane to left pane" +msgid "Pull change from the left" +msgstr "Kopioi kaikki muutokset oikeasta paneelista vasempaan" + +#: ../meld/filediff.py:264 +#, fuzzy +#| msgid "Copy All To _Right" +msgid "Pull from Right" +msgstr "Kopioi kaikki _Oikealle" + +#: ../meld/filediff.py:265 +#, fuzzy +#| msgid "Copy all changes from left pane to right pane" +msgid "Pull change from the right" +msgstr "Kopioi kaikki muutokset vasemmasta paneelista oikeaan" + +#: ../meld/filediff.py:267 +#, fuzzy +#| msgid "Copy To Left" +msgid "Copy Above Left" +msgstr "Kopioi vasemmalle" + +#: ../meld/filediff.py:268 +msgid "Copy change above the left chunk" +msgstr "" + +#: ../meld/filediff.py:270 +#, fuzzy +#| msgid "Copy To Left" +msgid "Copy Below Left" +msgstr "Kopioi vasemmalle" + +#: ../meld/filediff.py:271 +msgid "Copy change below the left chunk" +msgstr "" + +#: ../meld/filediff.py:273 +#, fuzzy +#| msgid "Copy To Right" +msgid "Copy Above Right" +msgstr "Kopioi oikealle" + +#: ../meld/filediff.py:274 +#, fuzzy +#| msgid "Copy all changes from left pane to right pane" +msgid "Copy change above the right chunk" +msgstr "Kopioi kaikki muutokset vasemmasta paneelista oikeaan" + +#: ../meld/filediff.py:276 +#, fuzzy +#| msgid "Copy To Right" +msgid "Copy Below Right" +msgstr "Kopioi oikealle" + +#: ../meld/filediff.py:277 +#, fuzzy +#| msgid "Copy all changes from left pane to right pane" +msgid "Copy change below the right chunk" +msgstr "Kopioi kaikki muutokset vasemmasta paneelista oikeaan" + +#: ../meld/filediff.py:279 +msgid "Delete" +msgstr "Poista" + +#: ../meld/filediff.py:280 +msgid "Delete change" +msgstr "Poista muutos" + +#: ../meld/filediff.py:282 +msgid "Merge All from Left" +msgstr "Yhdistä kaikki vasemmalta" + +#: ../meld/filediff.py:283 +msgid "Merge all non-conflicting changes from the left" +msgstr "" + +#: ../meld/filediff.py:285 +msgid "Merge All from Right" +msgstr "Yhdistä kaikki oikealta" + +#: ../meld/filediff.py:286 +msgid "Merge all non-conflicting changes from the right" +msgstr "" + +#: ../meld/filediff.py:288 +msgid "Merge All" +msgstr "Yhdistä kaikki" + +#: ../meld/filediff.py:289 +#, fuzzy +#| msgid "Copy all changes from left pane to right pane" +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "Kopioi kaikki muutokset vasemmasta paneelista oikeaan" + +#: ../meld/filediff.py:293 +msgid "Cycle Through Documents" +msgstr "Vaihda asiakirjojen välillä" + +#: ../meld/filediff.py:294 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "Siirrä näppäimistön kohdistus seuraavaan vertailun asiakirjaan" + +#: ../meld/filediff.py:300 +msgid "Lock Scrolling" +msgstr "Lukitse vieritys" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:472 +#, fuzzy +#| msgid "INS,OVR" +msgid "INS" +msgstr "INS, OVR" + +#: ../meld/filediff.py:472 +#, fuzzy +#| msgid "INS,OVR" +msgid "OVR" +msgstr "INS, OVR" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:474 +#, python-format +msgid "Ln %i, Col %i" +msgstr "Rv %i, sar %i" + +#: ../meld/filediff.py:811 +#, fuzzy, python-format +#| msgid "" +#| "Regular expression '%s' changed the number of lines in the file. " +#| "Comparison will be incorrect. See the user manual for more details." +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" +"Säännöllinen lauseke \"%s\" muutti tiedoston rivien määrää, joten vertailu " +"on nyt virheellinen. Katso opaskirjasta lisätietoja." + +#: ../meld/filediff.py:1099 +#, python-format +msgid "[%s] Set num panes" +msgstr "[%s} aseta paneelien lukumäärä" + +#: ../meld/filediff.py:1105 +#, python-format +msgid "[%s] Opening files" +msgstr "[%s] avataan tiedostoja" + +#: ../meld/filediff.py:1128 ../meld/filediff.py:1138 ../meld/filediff.py:1151 +#: ../meld/filediff.py:1157 +msgid "Could not read file" +msgstr "Tiedoston lukeminen epäonnistui" + +#: ../meld/filediff.py:1129 +#, python-format +msgid "[%s] Reading files" +msgstr "[%s] luetaan tiedostoja" + +#: ../meld/filediff.py:1139 +#, python-format +msgid "%s appears to be a binary file." +msgstr "%s vaikuttaa binääritiedostolta." + +#: ../meld/filediff.py:1152 +#, fuzzy, python-format +#| msgid "I tried encodings %s." +msgid "%s is not in encodings: %s" +msgstr "Yritettiin merkistöjä %s." + +#: ../meld/filediff.py:1187 +#, python-format +msgid "[%s] Computing differences" +msgstr "[%s] lasketaan eroja" + +#: ../meld/filediff.py:1244 +#, python-format +msgid "File %s has changed on disk" +msgstr "Tiedosto %s on muuttunut levyllä" + +#: ../meld/filediff.py:1245 +msgid "Do you want to reload the file?" +msgstr "Haluatko ladata tiedoston uudelleen?" + +#: ../meld/filediff.py:1248 +msgid "_Reload" +msgstr "_Lataa uudestaan" + +#: ../meld/filediff.py:1409 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" + +#: ../meld/filediff.py:1415 +msgid "Files are identical" +msgstr "Tiedostot ovat identtiset" + +#: ../meld/filediff.py:1423 +msgid "Show without filters" +msgstr "Näytä ilman suodattimia" + +#: ../meld/filediff.py:1445 +msgid "Change highlighting incomplete" +msgstr "" + +#: ../meld/filediff.py:1446 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" + +#: ../meld/filediff.py:1454 +msgid "Keep highlighting" +msgstr "Säilytä korostus" + +#: ../meld/filediff.py:1456 +msgid "_Keep highlighting" +msgstr "_Säilytä korostus" + +#: ../meld/filediff.py:1587 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" +msgstr "" +"\"%s\" on olemassa\n" +"Korvataanko se?" + +#: ../meld/filediff.py:1600 +#, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "" +"Virhe kirjoitettaessa tiedostoon %s\n" +"\n" +"%s." + +#: ../meld/filediff.py:1611 +msgid "Save Left Pane As" +msgstr "" + +#: ../meld/filediff.py:1613 +msgid "Save Middle Pane As" +msgstr "" + +#: ../meld/filediff.py:1615 +msgid "Save Right Pane As" +msgstr "" + +#: ../meld/filediff.py:1626 +#, python-format +msgid "File %s has changed on disk since it was opened" +msgstr "Tiedosto %s on muuttunut levyllä sen avaamisen jälkeen" + +#: ../meld/filediff.py:1628 +msgid "If you save it, any external changes will be lost." +msgstr "Jos tallennat sen, kaikki ulkoiset muutokset häviävät pysyvästi." + +#: ../meld/filediff.py:1631 +msgid "Save Anyway" +msgstr "Tallenna silti" + +#: ../meld/filediff.py:1632 +msgid "Don't Save" +msgstr "Älä tallenna" + +#: ../meld/filediff.py:1656 +#, python-format +msgid "" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" +msgstr "" +"Tiedosto \"%s\" sisältää erilaisia rivinvaihtotapoja.\n" +"\n" +"Mitä muotoa haluat käyttää?" + +#: ../meld/filediff.py:1672 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" +msgstr "" +"\"%s\" sisältää merkkejä, joita ei voi esittää merkistössä \"%s\".\n" +"Haluatko tallentaa UTF-8 -muodossa?" + +#: ../meld/filediff.py:2049 +msgid "Live comparison updating disabled" +msgstr "" + +#: ../meld/filediff.py:2050 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" + +#: ../meld/filemerge.py:51 +#, fuzzy, python-format +#| msgid "[%s] Opening files" +msgid "[%s] Merging files" +msgstr "[%s] avataan tiedostoja" + +#: ../meld/gutterrendererchunk.py:92 +#, fuzzy +#| msgid "Copy _Left" +msgid "Copy _up" +msgstr "Kopioi _vasemmalle" + +#: ../meld/gutterrendererchunk.py:93 +#, fuzzy +#| msgid "Copy _Left" +msgid "Copy _down" +msgstr "Kopioi _vasemmalle" + +#: ../meld/meldapp.py:138 +#, fuzzy +#| msgid "Wrong number of arguments (Got %i)" +msgid "wrong number of arguments supplied to --diff" +msgstr "Virheellinen määrä argumentteja (saatiin %i)" + +#: ../meld/meldapp.py:143 +msgid "Start with an empty window" +msgstr "Aloita tyhjällä ikkunalla" + +#: ../meld/meldapp.py:144 ../meld/meldapp.py:146 +msgid "file" +msgstr "tiedosto" + +#: ../meld/meldapp.py:144 ../meld/meldapp.py:148 +msgid "dir" +msgstr "kansio" + +#: ../meld/meldapp.py:145 +msgid "Start a version control comparison" +msgstr "Aloita versionhallinnan vertailu" + +#: ../meld/meldapp.py:147 +msgid "Start a 2- or 3-way file comparison" +msgstr "Aloita 2- tai 3-osainen tiedostovertailu" + +#: ../meld/meldapp.py:149 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Aloita 2- tai 3-osainen kansiovertailu" + +#: ../meld/meldapp.py:157 +msgid "Meld is a file and directory comparison tool." +msgstr "Meld on työkalu tiedostojen ja kansioiden vertailuun." + +#: ../meld/meldapp.py:160 +msgid "Set label to use instead of file name" +msgstr "Aseta käytettävä otsikko tiedostonimen sijasta" + +#: ../meld/meldapp.py:162 +msgid "Open a new tab in an already running instance" +msgstr "Avaa uusi välilehti jo avoinna olevassa ikkunassa" + +#: ../meld/meldapp.py:165 +msgid "Automatically compare all differing files on startup" +msgstr "" + +#: ../meld/meldapp.py:167 +msgid "Ignored for compatibility" +msgstr "Jätetty huomioimatta yhteensopivuuden takaamiseksi" + +#: ../meld/meldapp.py:170 +msgid "Set the target file for saving a merge result" +msgstr "" + +#: ../meld/meldapp.py:172 +msgid "Automatically merge files" +msgstr "" + +#: ../meld/meldapp.py:175 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "" + +#: ../meld/meldapp.py:178 +msgid "Create a diff tab for the supplied files or folders" +msgstr "" + +#: ../meld/meldapp.py:181 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "" + +#: ../meld/meldapp.py:184 +msgid "can't auto-merge less than 3 files" +msgstr "" + +#: ../meld/meldapp.py:186 +#, fuzzy +#| msgid "Flatten directories" +msgid "can't auto-merge directories" +msgstr "Litistä kansiot" + +#: ../meld/meldapp.py:196 +msgid "Error reading saved comparison file" +msgstr "" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:107 +msgid "" +msgstr "" + +#: ../meld/melddoc.py:77 ../meld/melddoc.py:78 +msgid "untitled" +msgstr "nimeämätön" + +#: ../meld/meldwindow.py:51 +msgid "_File" +msgstr "_Tiedosto" + +#: ../meld/meldwindow.py:52 +msgid "_New Comparison..." +msgstr "_Uusi vertailu..." + +#: ../meld/meldwindow.py:53 +msgid "Start a new comparison" +msgstr "Aloita uusi vertailu" + +#: ../meld/meldwindow.py:56 msgid "Save the current file" msgstr "Tallenna nykyinen tiedosto" -#: ../filediff.py:136 +#: ../meld/meldwindow.py:58 +msgid "Save As..." +msgstr "Tallenna _nimellä..." + +#: ../meld/meldwindow.py:59 msgid "Save the current file with a different name" msgstr "Tallenna nykyinen tiedosto toisella nimellä" -#: ../filediff.py:137 ../meldapp.py:541 +#: ../meld/meldwindow.py:62 +msgid "Close the current file" +msgstr "Sulje nykyinen tiedosto" + +#: ../meld/meldwindow.py:65 +msgid "_Edit" +msgstr "_Muokkaa" + +#: ../meld/meldwindow.py:67 +msgid "Undo the last action" +msgstr "Peru viimeisin toiminto" + +#: ../meld/meldwindow.py:70 +msgid "Redo the last undone action" +msgstr "Tee viimeisin peruttu toiminto uudestaan" + +#: ../meld/meldwindow.py:72 msgid "Cut the selection" msgstr "Leikkaa valinta" -#: ../filediff.py:138 ../meldapp.py:542 +#: ../meld/meldwindow.py:74 msgid "Copy the selection" msgstr "Kopioi valinta" -#: ../filediff.py:139 ../meldapp.py:543 -msgid "Paste the clipboard" -msgstr "Liitä leikepöydältä" +#: ../meld/meldwindow.py:76 +msgid "Paste the clipboard" +msgstr "Liitä leikepöydältä" + +#: ../meld/meldwindow.py:78 +msgid "Find..." +msgstr "Etsi..." + +#: ../meld/meldwindow.py:78 +msgid "Search for text" +msgstr "Etsi tekstiä" + +#: ../meld/meldwindow.py:80 +msgid "Find Ne_xt" +msgstr "Etsi _seuraava" + +#: ../meld/meldwindow.py:81 +msgid "Search forwards for the same text" +msgstr "Etsi samaa tekstiä eteenpäin" + +#: ../meld/meldwindow.py:83 +msgid "Find _Previous" +msgstr "Etsi e_dellinen" + +#: ../meld/meldwindow.py:84 +msgid "Search backwards for the same text" +msgstr "Etsi samaa tekstiä taaksepäin" + +#: ../meld/meldwindow.py:87 +msgid "_Replace..." +msgstr "_Korvaa..." + +#: ../meld/meldwindow.py:88 +msgid "Find and replace text" +msgstr "Etsi ja korvaa tekstiä" + +#: ../meld/meldwindow.py:91 +msgid "_Changes" +msgstr "_Muutokset" + +#: ../meld/meldwindow.py:92 +msgid "Next Change" +msgstr "Seuraava muutos" + +#: ../meld/meldwindow.py:93 +msgid "Go to the next change" +msgstr "Siirry seuraavaan muutokseen" + +#: ../meld/meldwindow.py:95 +msgid "Previous Change" +msgstr "Edellinen muutos" + +#: ../meld/meldwindow.py:96 +msgid "Go to the previous change" +msgstr "Siirry edelliseen muutokseen" + +#: ../meld/meldwindow.py:98 +msgid "Open Externally" +msgstr "Avaa ulkoisesti" + +#: ../meld/meldwindow.py:99 +msgid "Open selected file or directory in the default external application" +msgstr "Avaa valittu tiedosto tai kansio ulkoisessa oletussovelluksessa" + +#: ../meld/meldwindow.py:103 +msgid "_View" +msgstr "_Näytä" + +#: ../meld/meldwindow.py:104 +#, fuzzy +#| msgid "Status" +msgid "File Status" +msgstr "Tila" + +#: ../meld/meldwindow.py:105 +#, fuzzy +#| msgid "Status" +msgid "Version Status" +msgstr "Tila" + +#: ../meld/meldwindow.py:108 +msgid "Stop the current action" +msgstr "Pysäytä nykyinen toiminto" + +#: ../meld/meldwindow.py:111 +msgid "Refresh the view" +msgstr "Päivitä näkymä" + +#: ../meld/meldwindow.py:114 +msgid "_Tabs" +msgstr "_Välilehdet" + +#: ../meld/meldwindow.py:115 +msgid "_Previous Tab" +msgstr "_Edellinen välilehti" + +#: ../meld/meldwindow.py:116 +msgid "Activate previous tab" +msgstr "Vaihda edelliseen välilehteen" + +#: ../meld/meldwindow.py:118 +msgid "_Next Tab" +msgstr "_Seuraava välilehti" + +#: ../meld/meldwindow.py:119 +msgid "Activate next tab" +msgstr "Vaihda seuraavaan välilehteen" + +#: ../meld/meldwindow.py:122 +msgid "Move Tab _Left" +msgstr "Sii_rrä välilehti vasemmalle" + +#: ../meld/meldwindow.py:123 +msgid "Move current tab to left" +msgstr "Siirrä nykyinen välilehti vasemmalle" + +#: ../meld/meldwindow.py:126 +msgid "Move Tab _Right" +msgstr "Siirrä välilehti _oikealle" + +#: ../meld/meldwindow.py:127 +msgid "Move current tab to right" +msgstr "Siirrä nykyinen välilehti oikealle" + +#: ../meld/meldwindow.py:131 +msgid "Fullscreen" +msgstr "Koko näyttö" + +#: ../meld/meldwindow.py:132 +msgid "View the comparison in fullscreen" +msgstr "Näytä vertailu koko näytön tilassa" + +#: ../meld/meldwindow.py:134 +msgid "_Toolbar" +msgstr "_Työkalupalkki" + +#: ../meld/meldwindow.py:135 +msgid "Show or hide the toolbar" +msgstr "Näytä tai piilota työkalupalkki" + +#: ../meld/meldwindow.py:137 +msgid "_Statusbar" +msgstr "T_ilapalkki" + +#: ../meld/meldwindow.py:138 +msgid "Show or hide the statusbar" +msgstr "Näytä tai piilota tilapalkki" + +#: ../meld/meldwindow.py:147 +msgid "Open Recent" +msgstr "Avaa viimeisimpiä" + +#: ../meld/meldwindow.py:148 +msgid "Open recent files" +msgstr "Avaa viimeisimpiä tiedostoja" + +#: ../meld/meldwindow.py:539 +msgid "Switch to this tab" +msgstr "Vaihda tähän välilehteen" + +#: ../meld/meldwindow.py:662 +#, fuzzy +#| msgid "Cannot compare a mixture of files and directories.\n" +msgid "Cannot compare a mixture of files and directories" +msgstr "Hakemistoja ja tiedostoja ei voi verrata samanaikaisesti.\n" -#: ../filediff.py:141 ../glade2/filediff.glade.h:4 -msgid "Create Patch" -msgstr "Luo paikkatiedosto" - -#: ../filediff.py:141 -msgid "Create a patch" -msgstr "Luo paikkatiedosto" +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:180 +msgid "[None]" +msgstr "[Ei mitään]" -#: ../filediff.py:142 -msgid "Copy all changes from right pane to left pane" -msgstr "Kopioi kaikki muutokset oikeasta paneelista vasempaan" +#: ../meld/preferences.py:36 +msgid "label" +msgstr "otsikko" -#: ../filediff.py:143 -msgid "Copy all changes from left pane to right pane" -msgstr "Kopioi kaikki muutokset vasemmasta paneelista oikeaan" +#: ../meld/preferences.py:36 +msgid "pattern" +msgstr "malli" -#. Abbreviation for insert,overwrite so that it will fit in the status bar -#: ../filediff.py:192 -msgid "INS,OVR" -msgstr "INS, OVR" +#: ../meld/recent.py:109 +msgid "Version control:" +msgstr "Versionhallinta:" + +#: ../meld/ui/findbar.py:143 +msgid "Regular expression error" +msgstr "Säännöllisen lausekkeen virhe" -#. Abbreviation for line, column so that it will fit in the status bar -#: ../filediff.py:194 -#, python-format -msgid "Ln %i, Col %i" -msgstr "Rv %i, sar %i" +#: ../meld/ui/notebooklabel.py:67 +msgid "Close tab" +msgstr "Sulje välilehti" -#: ../filediff.py:252 -#, python-format -msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." +#: ../meld/ui/vcdialogs.py:63 +msgid "No files will be committed" msgstr "" -"Säännöllinen lauseke \"%s\" muutti tiedoston rivien määrää, joten vertailu " -"on nyt virheellinen. Katso opaskirjasta lisätietoja." -#: ../filediff.py:506 +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 #, python-format -msgid "" -"Regular expression error\n" -"'%s'" +msgid "%s in %s" msgstr "" -"Säännöllisen lausekkeen virh\n" -"\"%s\"" -#: ../filediff.py:518 +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 #, python-format -msgid "The regular expression '%s' was not found." -msgstr "Säännöllistä lauseketta \"%s\" ei löytynyt." +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "" +msgstr[1] "" -#: ../filediff.py:520 +#: ../meld/vc/git.py:129 #, python-format -msgid "The text '%s' was not found." -msgstr "Tekstiä \"%s\" ei löytynyt." +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "" +msgstr[1] "" -#: ../filediff.py:572 +#: ../meld/vc/git.py:341 #, python-format -msgid "[%s] Set num panes" -msgstr "[%s} aseta paneelien lukumäärä" +msgid "Mode changed from %s to %s" +msgstr "" -#: ../filediff.py:579 -#, python-format -msgid "[%s] Opening files" -msgstr "[%s] avataan tiedostoja" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "" -#: ../filediff.py:596 ../filediff.py:610 ../filediff.py:626 ../filediff.py:633 -#, python-format -msgid "Could not read from '%s'" -msgstr "Tiedostosta \"%s\" ei voitu lukea" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "" -#: ../filediff.py:597 ../filediff.py:634 -msgid "The error was:" -msgstr "Virhe oli:" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Paikallinen" -#: ../filediff.py:602 -#, python-format -msgid "[%s] Reading files" -msgstr "[%s] luetaan tiedostoja" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Etä" -#: ../filediff.py:611 +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:62 +#, fuzzy +#| msgid "" +#| "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" +#| "Missing" msgid "" -"It contains ascii nulls.\n" -"Perhaps it is a binary file." +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" msgstr "" -"Sisältää ASCII-NULL -merkkejä.\n" -"Tiedosto saattaa olla binääritiedosto." +"Ei huomioitu:Ei versiohallinnassa:::Virhe::Lisätty:Muokattu:Ristiriita:Poistettu:" -#: ../filediff.py:627 -#, python-format -msgid "I tried encodings %s." -msgstr "Yritettiin merkistöjä %s." +#: ../meld/vcview.py:216 ../meld/vcview.py:386 +msgid "Location" +msgstr "Sijainti" -#: ../filediff.py:656 -#, python-format -msgid "[%s] Computing differences" -msgstr "[%s] lasketaan eroja" +#: ../meld/vcview.py:217 +msgid "Status" +msgstr "Tila" -#: ../filediff.py:762 -#, python-format -msgid "" -"\"%s\" exists!\n" -"Overwrite?" +#: ../meld/vcview.py:218 +msgid "Revision" msgstr "" -"\"%s\" on olemassa\n" -"Kirjoitetaanko yli?" -#: ../filediff.py:775 -#, python-format -msgid "" -"Error writing to %s\n" -"\n" -"%s." -msgstr "" -"Virhe kirjoitettaessa tiedostoon %s\n" -"\n" -"%s." +#: ../meld/vcview.py:219 +msgid "Options" +msgstr "Vaihtoehdot" -#: ../filediff.py:784 +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:297 #, python-format -msgid "Choose a name for buffer %i." -msgstr "Valitse nimi puskurille %i." +msgid "%s not installed" +msgstr "%s ei ole asennettu" -#: ../filediff.py:797 -#, python-format -msgid "" -"This file '%s' contains a mixture of line endings.\n" -"\n" -"Which format would you like to use?" -msgstr "" -"Tiedosto \"%s\" sisältää erilaisia rivinvaihtotapoja.\n" -"\n" -"Mitä muotoa haluat käyttää?" +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:301 +msgid "Invalid repository" +msgstr "Virheellinen tietovarasto" -#: ../filediff.py:813 +#: ../meld/vcview.py:310 #, python-format -msgid "" -"'%s' contains characters not encodable with '%s'\n" -"Would you like to save as UTF-8?" -msgstr "" -"\"%s\" sisältää merkkejä, joita ei voi esittää merkistössä \"%s\".\n" -"Haluatko tallentaa UTF-8 -muodossa?" +msgid "%s (%s)" +msgstr "%s (%s)" -#. save as -#: ../filediff.py:864 -msgid "Save patch as..." -msgstr "Tallenna paikkatiedosto nimellä..." +#: ../meld/vcview.py:312 ../meld/vcview.py:320 +msgid "None" +msgstr "Ei mitään" -#: ../filediff.py:923 -#, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"Uudelleenlataus hukkaa muutokset tiedostossa:\n" -"%s\n" -"\n" -"Suoritettua toimintoa ei voi perua." +#: ../meld/vcview.py:331 +msgid "No valid version control system found in this folder" +msgstr "Tästä kansiosta ei löytynyt kelvollista versionhallintajärjestelmää" -#: ../glade2/filediff.glade.h:1 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Joitain tiedostoja on muokattu.\n" -"Mitkä haluat tallentaa?" +#: ../meld/vcview.py:333 +msgid "Only one version control system found in this folder" +msgstr "Tästä kansiosta löytyi vain yksi versionhallintajärjestelmä" -#: ../glade2/filediff.glade.h:3 -msgid "Copy to Clipboard" -msgstr "Kopioi leikepöydälle" +#: ../meld/vcview.py:335 +msgid "Choose which version control system to use" +msgstr "Valitse käytettävä versionhallinta" -#: ../glade2/filediff.glade.h:5 -msgid "Find" -msgstr "Etsi" - -#: ../glade2/filediff.glade.h:6 -msgid "Match _entire word only" -msgstr "Täsmää vain _koko sanoihin" +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:386 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" -#: ../glade2/filediff.glade.h:7 -msgid "Regular e_xpression" -msgstr "Säännöllinen _lauseke" +#: ../meld/vcview.py:400 ../meld/vcview.py:408 +#, python-format +msgid "Scanning %s" +msgstr "Tutkitaan %s" -#: ../glade2/filediff.glade.h:8 -msgid "Save modified files?" -msgstr "Tallennetaanko muokatut tiedostot?" +#: ../meld/vcview.py:441 +msgid "(Empty)" +msgstr "(tyhjä)" -#: ../glade2/filediff.glade.h:9 -msgid "Search for:" -msgstr "Etsi:" +#: ../meld/vcview.py:664 +msgid "Remove folder and all its files?" +msgstr "Poistetaanko kansio ja kaikki sen tiedostot?" -#: ../glade2/filediff.glade.h:10 -msgid "_Match case" -msgstr "Huomioi _kirjainkoko" +#: ../meld/vcview.py:666 +msgid "" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." +msgstr "" -#: ../glade2/filediff.glade.h:11 -msgid "_Save Selected" -msgstr "_Tallenna valittu" +#: ../meld/vcview.py:700 +#, python-format +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error removing %s" +msgstr "Virhe kohdetta %s poistaessa" -#: ../glade2/filediff.glade.h:12 -msgid "_Wrap around" -msgstr "_Rivitä" +#~ msgid "Loading" +#~ msgstr "Lataaminen" -#: ../glade2/meldapp.glade.h:1 -msgid "(gnome-default-editor)" -msgstr "(gnomen-oletusmuokkain)" +#~ msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +#~ msgstr "Kokeile ladattaessa näitä merkistökoodauksiä järjestyksessä." -#: ../glade2/meldapp.glade.h:2 -msgid "Drawing Style" -msgstr "Piirtotyyli" +#~ msgid "Encoding" +#~ msgstr "Merkistö" -#: ../glade2/meldapp.glade.h:3 -msgid "Edit Menu" -msgstr "Muokkausvalikko" +#~ msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgstr "Varmuuuskopiot\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -#: ../glade2/meldapp.glade.h:4 -msgid "Font" -msgstr "Kirjasin" +#, fuzzy +#~| msgid "_Version Control Browser" +#~ msgid "Version Control\t1\t%s\n" +#~ msgstr "_Versinhallinnan selain" -#: ../glade2/meldapp.glade.h:5 -msgid "Loading" -msgstr "Lataaminen" +#, fuzzy +#~| msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +#~ msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +#~ msgstr "Binäärit\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -#: ../glade2/meldapp.glade.h:6 -msgid "Misc" -msgstr "Lisäasetukset" +#, fuzzy +#~| msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +#~ msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +#~ msgstr "Mediatiedostot\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm" -#: ../glade2/meldapp.glade.h:7 -msgid "Saving" -msgstr "Tallentaminen" +#~ msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgstr "CVS-avainsanat\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -#: ../glade2/meldapp.glade.h:8 -msgid "Toolbar Appearance" -msgstr "Työkalupalkin ulkoasu" +#~ msgid "C++ comment\t0\t//.*\n" +#~ msgstr "C++-kommentti\t0\t//.*\n" -#: ../glade2/meldapp.glade.h:9 -msgid "Whitespace" -msgstr "Tyhjä teksti" +#~ msgid "C comment\t0\t/\\*.*?\\*/\n" +#~ msgstr "C-kommentti\t0\t/\\*.*?\\*/\n" -#: ../glade2/meldapp.glade.h:10 -msgid "Compare" -msgstr "Vertaa" +#~ msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgstr "Kaikki tyhjät merkit\t0\t[ \\t\\r\\f\\v]*\n" -#: ../glade2/meldapp.glade.h:11 -msgid "Display" -msgstr "Näytä" +#~ msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgstr "Alun tyhjät merkit\t0\t^[ \\t\\r\\f\\v]*\n" -#: ../glade2/meldapp.glade.h:12 -msgid "Editor" -msgstr "Muokkain" +#~ msgid "Script comment\t0\t#.*" +#~ msgstr "Skriptin kommentti\t0\t#.*" -#: ../glade2/meldapp.glade.h:13 -msgid "Encoding" -msgstr "Merkistö" +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "D-Bus-virhe; vertailut avataan uuteen ikkunaan." -#: ../glade2/meldapp.glade.h:14 -msgid "File Filters" -msgstr "Tiedostosuodattimet" +#~ msgid "Quit the program" +#~ msgstr "Lopeta ohjelma" -#: ../glade2/meldapp.glade.h:15 -msgid "Text Filters" -msgstr "Tekstisuodattimet" +#~ msgid "Configure the application" +#~ msgstr "Muuta ohjelman asetuksia" -#: ../glade2/meldapp.glade.h:16 -msgid "Automatically supply missing newline at end of file" -msgstr "Lisää puuttuva rivinvaihto automattisesti tiedoston loppuun" +#~ msgid "_Contents" +#~ msgstr "_Sisältö" -#: ../glade2/meldapp.glade.h:17 -msgid "Choose Files" -msgstr "Valitse tiedostot" +#~ msgid "Open the Meld manual" +#~ msgstr "Avaa Meldin ohje" -#: ../glade2/meldapp.glade.h:18 -msgid "" -"Choose how the central bar of the diff viewer is drawn. You may wish to " -"choose a simpler mode if you find scrolling is slow." -msgstr "" -"Valitse, kuinka vertailunäkymän keskipalkki piirretään. Voi olla että haluat " -"käyttää yksinkertaisempaa mallia, jos vieritys tuntuu hitaalta." +#~ msgid "Report _Bug" +#~ msgstr "Raportoi _virhe" -#: ../glade2/meldapp.glade.h:19 -msgid "Copyright (C) 2002-2006 Stephen Kennedy" -msgstr "Copyright (©) 2002-2006 Stephen Kennedy" +#~ msgid "Report a bug in Meld" +#~ msgstr "Raportoi vika meldissä" -#: ../glade2/meldapp.glade.h:20 -msgid "Curved: Filled Curves" -msgstr "Kaaret: täytettyjä kaaria" +#~ msgid "About this program" +#~ msgstr "Tietoja ohjelmasta" -#: ../glade2/meldapp.glade.h:21 -msgid "Custom command" -msgstr "Oma komento" +#~| msgid "" +#~| "Line numbers are only available if you have gnome-python-desktop " +#~| "installed." +#~ msgid "Only available if you have PyGtkSourceView 2 installed" +#~ msgstr "Käytettävissä vain jos PyGtkSourceView 2 on asennettu" -#: ../glade2/meldapp.glade.h:22 -msgid "Directory" -msgstr "Kansio" +#~ msgid "_Browse..." +#~ msgstr "_Selaa..." -#: ../glade2/meldapp.glade.h:23 -msgid "Display" -msgstr "Näytä" +#~ msgid "Path" +#~ msgstr "Polku" -#: ../glade2/meldapp.glade.h:24 -msgid "Edit files with:" -msgstr "Muokkaa tiedostoja ohjelmalla:" +#~| msgid "Save the current file" +#~ msgid "Path to file" +#~ msgstr "Tiedoston polku" -#: ../glade2/meldapp.glade.h:25 -msgid "Editor" -msgstr "Muokkain" +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "Avaa tiedostovalitsin valitaksesi tiedoston" -#: ../glade2/meldapp.glade.h:26 -msgid "Encoding" -msgstr "Merkistö" +#~| msgid "CVS Directory" +#~ msgid "Select directory" +#~ msgstr "Valitse kansio" -#: ../glade2/meldapp.glade.h:27 -msgid "File Filters" -msgstr "Tiedostosuodattimet" +#~| msgid "Select some files first." +#~ msgid "Select file" +#~ msgstr "Valitse tiedosto" -#: ../glade2/meldapp.glade.h:28 -msgid "Gnome Default" -msgstr "Gnomen oletus" +#~ msgid "Left" +#~ msgstr "Vasen" -#: ../glade2/meldapp.glade.h:29 -msgid "Gnome default editor" -msgstr "Gnomen oletusmuokkain" +#~ msgid "Right" +#~ msgstr "Oikea" -#: ../glade2/meldapp.glade.h:30 -msgid "Icons Only" -msgstr "Vain kuvakkeet" +#~ msgid "Case" +#~ msgstr "Kirjainkoko" -#: ../glade2/meldapp.glade.h:31 -msgid "Ignore changes in amount of white space" -msgstr "Älä huomioi muutoksia välilyöntien määrään" +#~ msgid "Ignore case of entries" +#~ msgstr "Älä huomioi syötteiden kirjainten kokoa" -#: ../glade2/meldapp.glade.h:32 -msgid "" -"Ignore changes in case; consider upper and lower-case letters equivalent" -msgstr "" -"Älä huomioi muutoksia kirjainkoossa: pienet ja suuret kirjaimet ovat sama " -"asia." +#~ msgid "Error converting pattern '%s' to regular expression" +#~ msgstr "Virhe muunnettaessa mallia \"%s\" säännölliseksi lausekkeeksi" -#: ../glade2/meldapp.glade.h:33 -msgid "Ignore changes that just insert or delete blank lines" -msgstr "Älä huomioi muutoksia, jotka vain lisäävät tai poistavat tyhjiä rivejä" +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recusively?" +#~ msgstr "" +#~ "\"%s\" on kansio.\n" +#~ "Poistetaanko rekursiivisesti?" -#: ../glade2/meldapp.glade.h:34 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Älä huomioi muutoksia, jotka lisäävät tai poistavat tyhjiä rivejä" +#~ msgid "The regular expression '%s' was not found." +#~ msgstr "Säännöllistä lauseketta \"%s\" ei löytynyt." -#: ../glade2/meldapp.glade.h:35 -msgid "Ignore symbolic links" -msgstr "Älä huomioi symbolisia linkkejä" +#~ msgid "The text '%s' was not found." +#~ msgstr "Tekstiä \"%s\" ei löytynyt." -#: ../glade2/meldapp.glade.h:36 -msgid "Internal editor" -msgstr "Sisäinen muokkain" - -#: ../glade2/meldapp.glade.h:37 -msgid "Line Wrapping " -msgstr "Rivitys " +#~ msgid "The error was:" +#~ msgstr "Virhe oli:" -#: ../glade2/meldapp.glade.h:38 -msgid "Meld" -msgstr "Meld" +#~ msgid "" +#~ "It contains ascii nulls.\n" +#~ "Perhaps it is a binary file." +#~ msgstr "" +#~ "Sisältää ASCII-NULL -merkkejä.\n" +#~ "Tiedosto saattaa olla binääritiedosto." -#: ../glade2/meldapp.glade.h:39 -msgid "Mine" -msgstr "Oma" - -#: ../glade2/meldapp.glade.h:40 -msgid "Original" -msgstr "Alkuperäinen" - -#: ../glade2/meldapp.glade.h:41 -msgid "Other" -msgstr "Muu" - -#: ../glade2/meldapp.glade.h:42 -msgid "Preferences : Meld" -msgstr "Asetukset: Meld" - -#: ../glade2/meldapp.glade.h:43 -msgid "Save in UTF-8 encoding" -msgstr "Tallenna UTF-8 -koodauksella" - -#: ../glade2/meldapp.glade.h:44 -msgid "Save in the files original encoding" -msgstr "Tallenna käyttäen tiedoston alkuperäistä merkistökoodausta" +#~ msgid "Choose a name for buffer %i." +#~ msgstr "Valitse nimi puskurille %i." -#: ../glade2/meldapp.glade.h:45 -msgid "Show line numbers" -msgstr "Näytä rivinumerot" +#~ msgid "Save patch as..." +#~ msgstr "Tallenna paikkatiedosto nimellä..." -#: ../glade2/meldapp.glade.h:46 -msgid "Simple: Lines only" -msgstr "Yksinkertainen - vain rivit" - -#: ../glade2/meldapp.glade.h:47 -msgid "Solid: Filled Quadilaterals" -msgstr "Kiinteä - täytetyt nelikulmiot" - -#: ../glade2/meldapp.glade.h:48 -msgid "Tab width" -msgstr "Sarkaimen leveys" - -#: ../glade2/meldapp.glade.h:49 -msgid "Text Beside Icons" -msgstr "Teksti kuvakkeiden vierellä" +#~ msgid "" +#~ "Reloading will discard changes in:\n" +#~ "%s\n" +#~ "\n" +#~ "You cannot undo this operation." +#~ msgstr "" +#~ "Uudelleenlataus hukkaa muutokset tiedostossa:\n" +#~ "%s\n" +#~ "\n" +#~ "Suoritettua toimintoa ei voi perua." -#: ../glade2/meldapp.glade.h:50 -msgid "Text Filters" -msgstr "Tekstisuodattimet" +#~ msgid "" +#~ "Some files have been modified.\n" +#~ "Which ones would you like to save?" +#~ msgstr "" +#~ "Joitain tiedostoja on muokattu.\n" +#~ "Mitkä haluat tallentaa?" -#: ../glade2/meldapp.glade.h:51 -msgid "Text Only" -msgstr "Vain teksti" - -#: ../glade2/meldapp.glade.h:52 -msgid "Text Under Icons" -msgstr "Teksti kuvakkeiden alla" - -#: ../glade2/meldapp.glade.h:53 -msgid "Three way directory" -msgstr "Kolmiosainen kansio" - -#: ../glade2/meldapp.glade.h:54 -msgid "Three way file" -msgstr "Kolmiosainen tiedosto" - -#: ../glade2/meldapp.glade.h:55 -msgid "Two way directory" -msgstr "Kaksiosainen kansio" - -#: ../glade2/meldapp.glade.h:56 -msgid "Two way file" -msgstr "Kaksiosainen tiedosto" - -#: ../glade2/meldapp.glade.h:57 -msgid "Use GNOME monospace font" -msgstr "Käytä Gnomen tasalevyistä kirjasinta" - -#: ../glade2/meldapp.glade.h:58 -msgid "Use custom font" -msgstr "Käytä omaa kirjasinta" - -#: ../glade2/meldapp.glade.h:59 -msgid "Use syntax highlighting" -msgstr "Käytä syntaksin korostusta" +#~ msgid "Match _entire word only" +#~ msgstr "Täsmää vain _koko sanoihin" -#: ../glade2/meldapp.glade.h:60 -msgid "Version control view" -msgstr "Versionhallintanäkymä" +#~ msgid "Search for:" +#~ msgstr "Etsi:" -#: ../glade2/meldapp.glade.h:61 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Kokeile ladattaessa näitä merkistökoodauksiä järjestyksessä." +#~ msgid "_Save Selected" +#~ msgstr "_Tallenna valittu" -#: ../glade2/meldapp.glade.h:62 -msgid "" -"When performing directory comparisons, you may filter out files and " -"directories by name. Each pattern is a list of shell style wildcards " -"separated by spaces." -msgstr "" -"Voit suodattaa pois tiedostoja ja hakemistoja nimen perusteella " -"suoritettaessa hakemistojen vertailuja. Kukin malli on lista komentorivin " -"tapaisia jokerimerkkejä erotettuna välilyönneillä." +#~ msgid "(gnome-default-editor)" +#~ msgstr "(gnomen-oletusmuokkain)" -#: ../glade2/meldapp.glade.h:63 -msgid "" -"When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching " -"text with the empty string before comparison is performed. If the expression " -"contains groups, only the groups are replaced. See the user manual for more " -"details." -msgstr "" -"Tietyn tyyppiset muutokset voidaan jättää huomiotta vertailtaessa " -"suoritettaessa tiedostojen vertailuja. Kukin malli on pythonin säännöllinen " -"lauseke, joka korvaa täsmäävän tekstin tyhjällä merkkijonolla ennen " -"vertailua. Jos lauseke sisältää ryhmiä, vain ryhmät korvataan. Katso " -"lisätietoja käyttöohjeesta." +#~ msgid "Drawing Style" +#~ msgstr "Piirtotyyli" -#: ../glade2/meldapp.glade.h:64 -msgid "Whitespace is significant" -msgstr "Välilyönnit huomioidaan" - -#: ../glade2/meldapp.glade.h:66 -msgid "_Directory Comparison" -msgstr "_Kansioiden vertailu" +#~ msgid "Edit Menu" +#~ msgstr "Muokkausvalikko" -#: ../glade2/meldapp.glade.h:67 -msgid "_File Comparison" -msgstr "_Tiedostojen vertailu" +#~ msgid "Font" +#~ msgstr "Kirjasin" -#: ../glade2/meldapp.glade.h:68 -msgid "_Logo" -msgstr "_Logo" - -#: ../glade2/meldapp.glade.h:69 -msgid "_Three Way Compare" -msgstr "_Kolmiosainen vertailu" - -#: ../glade2/meldapp.glade.h:70 -msgid "_Version Control Browser" -msgstr "_Versinhallinnan selain" +#~ msgid "Misc" +#~ msgstr "Lisäasetukset" -#: ../glade2/vcview.glade.h:1 -msgid "Commit Files" -msgstr "Toteuta tiedostot" +#~ msgid "Saving" +#~ msgstr "Tallentaminen" -#: ../glade2/vcview.glade.h:2 -msgid "Compare Options" -msgstr "Vertailun asetukset" - -#: ../glade2/vcview.glade.h:3 -msgid "Date" -msgstr "Päiväys" - -#: ../glade2/vcview.glade.h:4 -msgid "Local copy against other remote revision" -msgstr "Paikallinen kopio toista etäversiota vastaan" - -#: ../glade2/vcview.glade.h:5 -msgid "Local copy against same remote revision" -msgstr "Paikallinen kopio samaa etäversiota vastaan" +#~ msgid "Toolbar Appearance" +#~ msgstr "Työkalupalkin ulkoasu" -#: ../glade2/vcview.glade.h:6 -msgid "Log Message" -msgstr "Lokiviesti" +#~ msgid "Whitespace" +#~ msgstr "Tyhjä teksti" -#: ../glade2/vcview.glade.h:7 -msgid "Previous Logs" -msgstr "Edelliset lokit" - -#: ../glade2/vcview.glade.h:8 ../vcview.py:185 -msgid "Tag" -msgstr "Merkintä" - -#: ../glade2/vcview.glade.h:9 -msgid "VC Log" -msgstr "Versionhallinnan loki" +#~ msgid "Compare" +#~ msgstr "Vertaa" -#: ../meld:47 -#, c-format -msgid "Meld requires %s or higher." -msgstr "Meld vaatii version %s tai uudemman." +#~ msgid "Display" +#~ msgstr "Näytä" -#: ../meld.desktop.in.h:1 -msgid "Compare and merge your files." -msgstr "Vertaa ja yhdistä tiedostojasi." +#~ msgid "Editor" +#~ msgstr "Muokkain" -#: ../meld.desktop.in.h:2 -msgid "Meld Diff Viewer" -msgstr "Meld - erojen vertailija" +#~ msgid "Encoding" +#~ msgstr "Merkistö" -#: ../meldapp.py:150 -msgid "label" -msgstr "otsikko" +#~ msgid "File Filters" +#~ msgstr "Tiedostosuodattimet" -#: ../meldapp.py:151 -msgid "pattern" -msgstr "malli" +#~ msgid "Text Filters" +#~ msgstr "Tekstisuodattimet" -#. file filters -#. text filters -#: ../meldapp.py:252 ../meldapp.py:257 ../vcview.py:165 -msgid "Name" -msgstr "Nimi" +#~ msgid "Automatically supply missing newline at end of file" +#~ msgstr "Lisää puuttuva rivinvaihto automattisesti tiedoston loppuun" -#: ../meldapp.py:252 ../meldapp.py:257 -msgid "Active" -msgstr "Aktiivinen" +#~ msgid "Choose Files" +#~ msgstr "Valitse tiedostot" -#: ../meldapp.py:252 -msgid "Pattern" -msgstr "Malli" +#~ msgid "" +#~ "Choose how the central bar of the diff viewer is drawn. You may wish to " +#~ "choose a simpler mode if you find scrolling is slow." +#~ msgstr "" +#~ "Valitse, kuinka vertailunäkymän keskipalkki piirretään. Voi olla että " +#~ "haluat käyttää yksinkertaisempaa mallia, jos vieritys tuntuu hitaalta." -#: ../meldapp.py:257 -msgid "Regex" -msgstr "Regexp" +#~ msgid "Copyright (C) 2002-2006 Stephen Kennedy" +#~ msgstr "Copyright (©) 2002-2006 Stephen Kennedy" -#: ../meldapp.py:291 -msgid "" -"Line numbers are only available if you have gnome-python-desktop installed." -msgstr "" -"Rivinumerot ovat käytettävissä vain jos gnome-python-desktop on asennettu." +#~ msgid "Curved: Filled Curves" +#~ msgstr "Kaaret: täytettyjä kaaria" -#: ../meldapp.py:295 -msgid "" -"Syntax highlighting is only available if you have gnome-python-desktop " -"installed." -msgstr "" -"Syntaksin korostus on käytettävissä vain jos gnome-python-desktop on " -"asennettu." +#~ msgid "Directory" +#~ msgstr "Kansio" -#: ../meldapp.py:383 -msgid "Close tab" -msgstr "Sulje välilehti" +#~ msgid "Gnome Default" +#~ msgstr "Gnomen oletus" -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:444 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Varmuuuskopiot\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:446 -msgid "" -"Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" -msgstr "" -"Versionhallinta\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:448 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binäärit\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:450 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Mediatiedostot\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:452 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "CVS-avainsanat\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:454 -msgid "C++ comment\t0\t//.*\n" -msgstr "C++-kommentti\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:456 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "C-kommentti\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:458 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Kaikki tyhjät merkit\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:460 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Alun tyhjät merkit\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:462 -msgid "Script comment\t0\t#.*" -msgstr "Skriptin kommentti\t0\t#.*" - -#: ../meldapp.py:532 -msgid "_New..." -msgstr "_Uusi..." +#~ msgid "Icons Only" +#~ msgstr "Vain kuvakkeet" -#: ../meldapp.py:532 -msgid "Start a new comparison" -msgstr "Aloita uusi vertailu" +#~ msgid "Ignore changes in amount of white space" +#~ msgstr "Älä huomioi muutoksia välilyöntien määrään" -#: ../meldapp.py:535 -msgid "Close the current file" -msgstr "Sulje nykyinen tiedosto" +#~ msgid "" +#~ "Ignore changes in case; consider upper and lower-case letters equivalent" +#~ msgstr "" +#~ "Älä huomioi muutoksia kirjainkoossa: pienet ja suuret kirjaimet ovat sama " +#~ "asia." -#: ../meldapp.py:536 -msgid "Quit the program" -msgstr "Lopeta ohjelma" +#~ msgid "Ignore changes that just insert or delete blank lines" +#~ msgstr "" +#~ "Älä huomioi muutoksia, jotka vain lisäävät tai poistavat tyhjiä rivejä" -#: ../meldapp.py:539 -msgid "Undo the last action" -msgstr "Peru viimeisin toiminto" +#~ msgid "Line Wrapping " +#~ msgstr "Rivitys " -#: ../meldapp.py:540 -msgid "Redo the last undone action" -msgstr "Tee viimeisin peruttu toiminto uudestaan" +#~ msgid "Mine" +#~ msgstr "Oma" -#: ../meldapp.py:544 -msgid "Search for text" -msgstr "Etsi tekstiä" +#~ msgid "Original" +#~ msgstr "Alkuperäinen" -#: ../meldapp.py:545 -msgid "Find Ne_xt" -msgstr "Etsi _seuraava" +#~ msgid "Other" +#~ msgstr "Muu" -#: ../meldapp.py:545 -msgid "Search forwards for the same text" -msgstr "Etsi samaa tekstiä eteenpäin" +#~ msgid "Save in UTF-8 encoding" +#~ msgstr "Tallenna UTF-8 -koodauksella" -#: ../meldapp.py:546 -msgid "Go to the next difference" -msgstr "Siirry seuraavaan eroon" - -#: ../meldapp.py:547 -msgid "Go to the previous difference" -msgstr "Siirry edelliseen eroon" - -#: ../meldapp.py:548 -msgid "Configure the application" -msgstr "Muuta ohjelman asetuksia" +#~ msgid "Save in the files original encoding" +#~ msgstr "Tallenna käyttäen tiedoston alkuperäistä merkistökoodausta" -#: ../meldapp.py:551 -msgid "Stop the current action" -msgstr "Pysäytä nykyinen toiminto" +#~ msgid "Simple: Lines only" +#~ msgstr "Yksinkertainen - vain rivit" -#: ../meldapp.py:552 -msgid "Refresh the view" -msgstr "Päivitä näkymä" +#~ msgid "Solid: Filled Quadilaterals" +#~ msgstr "Kiinteä - täytetyt nelikulmiot" -#: ../meldapp.py:553 -msgid "Reload" -msgstr "Lataa uudestaan" - -#: ../meldapp.py:553 -msgid "Reload the comparison" -msgstr "Lataa vertailu uudestaan" - -#: ../meldapp.py:556 -msgid "_Contents" -msgstr "_Sisältö" - -#: ../meldapp.py:556 -msgid "Open the Meld manual" -msgstr "Avaa meldin ohje" - -#: ../meldapp.py:557 -msgid "Report _Bug" -msgstr "Raportoi _virhe" - -#: ../meldapp.py:557 -msgid "Report a bug in Meld" -msgstr "Raportoi vika meldissä" - -#: ../meldapp.py:558 -msgid "Mailing _List" -msgstr "Sähköposti_lista" - -#: ../meldapp.py:558 -msgid "Go to the Meld mailing list" -msgstr "Siirry meldin sähköpostilistalle" - -#: ../meldapp.py:559 -msgid "About this program" -msgstr "Tietoja ohjelmasta" +#~ msgid "Text Beside Icons" +#~ msgstr "Teksti kuvakkeiden vierellä" -#: ../meldapp.py:821 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Hakemistoja ja tiedostoja ei voi verrata samanaikaisesti.\n" +#~ msgid "Text Only" +#~ msgstr "Vain teksti" -#. ############################################################################### -#. -#. usage -#. -#. ############################################################################### -#: ../meldapp.py:869 -#, python-format -msgid "" -"Meld %s\n" -"Written by Stephen Kennedy " -msgstr "" -"Meld %s\n" -"Ohjelmoinut Stephen Kennedy " +#~ msgid "Text Under Icons" +#~ msgstr "Teksti kuvakkeiden alla" -#: ../meldapp.py:898 -msgid "Set label to use instead of file name" -msgstr "Aseta käytettävä otsikko tiedostonimen sijasta" +#~ msgid "Three way directory" +#~ msgstr "Kolmiosainen kansio" -#: ../meldapp.py:899 ../meldapp.py:900 ../meldapp.py:901 ../meldapp.py:902 -msgid "Ignored for compatibility" -msgstr "Jätetty huomioimatta yhteensopivuuden takaamiseksi" +#~ msgid "Three way file" +#~ msgstr "Kolmiosainen tiedosto" -#: ../meldapp.py:930 -#, python-format -msgid "Wrong number of arguments (Got %i)" -msgstr "Virheellinen määrä argumentteja (saatiin %i)" +#~ msgid "Two way directory" +#~ msgstr "Kaksiosainen kansio" -#: ../melddoc.py:46 -msgid "untitled" -msgstr "nimeämätön" +#~ msgid "Two way file" +#~ msgstr "Kaksiosainen tiedosto" -#. no common path. empty names get changed to "[None]" -#: ../misc.py:121 -msgid "[None]" -msgstr "[Ei mitään]" +#~ msgid "Use GNOME monospace font" +#~ msgstr "Käytä Gnomen tasalevyistä kirjasinta" -#: ../vcview.py:122 -msgid "_Commit" -msgstr "_Toteuta" +#~ msgid "Whitespace is significant" +#~ msgstr "Välilyönnit huomioidaan" -#: ../vcview.py:122 -msgid "Commit" -msgstr "Toteuta" +#~ msgid "_Logo" +#~ msgstr "_Logo" -#. FIXME: popup used to use gtk.STOCK_GO_BACK -#: ../vcview.py:123 -msgid "_Update" -msgstr "_Päivitä" +#~ msgid "_Three Way Compare" +#~ msgstr "_Kolmiosainen vertailu" -#: ../vcview.py:123 -msgid "Update" -msgstr "Päivitä" +#~ msgid "Compare Options" +#~ msgstr "Vertailun asetukset" -#. FIXME: popup used to use gtk.STOCK_GO_FORWARD -#: ../vcview.py:124 -msgid "_Add" -msgstr "_Lisää" +#~ msgid "Date" +#~ msgstr "Päiväys" -#: ../vcview.py:124 -msgid "Add to VC" -msgstr "Lisää versionhallintaan" +#~ msgid "Local copy against other remote revision" +#~ msgstr "Paikallinen kopio toista etäversiota vastaan" -#. FIXME: popup used to use gtk.STOCK_ADD -#: ../vcview.py:125 -msgid "Add _Binary" -msgstr "Lisää _binääri" - -#: ../vcview.py:125 -msgid "Add binary to VC" -msgstr "Lisää binääritiedosto versiohallintaan" +#~ msgid "Local copy against same remote revision" +#~ msgstr "Paikallinen kopio samaa etäversiota vastaan" -#. FIXME: stock is inconsistent with other VC actions -#: ../vcview.py:126 -msgid "_Remove" -msgstr "_Poista" +#~ msgid "Tag" +#~ msgstr "Merkintä" -#: ../vcview.py:126 -msgid "Remove from VC" -msgstr "Poista versiohallinnasta" - -#. FIXME: popup used to use gtk.STOCK_REMOVE -#: ../vcview.py:127 -msgid "Revert to original" -msgstr "Palaa alkuperäiseen" +#~ msgid "VC Log" +#~ msgstr "Versionhallinnan loki" -#: ../vcview.py:128 -msgid "Delete locally" -msgstr "Poista paikallinen kopio" +#~ msgid "Regex" +#~ msgstr "Regexp" -#: ../vcview.py:132 -msgid "_Flatten" -msgstr "_Litistä" +#~ msgid "" +#~ "Syntax highlighting is only available if you have gnome-python-desktop " +#~ "installed." +#~ msgstr "" +#~ "Syntaksin korostus on käytettävissä vain jos gnome-python-desktop on " +#~ "asennettu." -#: ../vcview.py:132 -msgid "Flatten directories" -msgstr "Litistä kansiot" +#~ msgid "" +#~ "Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" +#~ msgstr "" +#~ "Versionhallinta\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" -#: ../vcview.py:133 -msgid "_Modified" -msgstr "_Muokattu" +#~ msgid "_New..." +#~ msgstr "_Uusi..." -#: ../vcview.py:134 -msgid "_Normal" -msgstr "_Normaali" +#~ msgid "Reload the comparison" +#~ msgstr "Lataa vertailu uudestaan" -#: ../vcview.py:134 -msgid "Show normal" -msgstr "Näytä tavallinen" - -#: ../vcview.py:135 -msgid "Non _VC" -msgstr "Ei _versiohallinnassa" +#~ msgid "Mailing _List" +#~ msgstr "Sähköposti_lista" -#: ../vcview.py:135 -msgid "Show unversioned files" -msgstr "Näytä versioimattomat tiedostot" +#~ msgid "Go to the Meld mailing list" +#~ msgstr "Siirry meldin sähköpostilistalle" -#: ../vcview.py:136 -msgid "Ignored" -msgstr "Huomiotta jätetyt" +#~ msgid "" +#~ "Meld %s\n" +#~ "Written by Stephen Kennedy " +#~ msgstr "" +#~ "Meld %s\n" +#~ "Ohjelmoinut Stephen Kennedy " -#: ../vcview.py:136 -msgid "Show ignored files" -msgstr "Näytä versioimattomat tiedostot" +#~ msgid "Update" +#~ msgstr "Päivitä" -#: ../vcview.py:182 -msgid "Location" -msgstr "Sijainti" +#~ msgid "Add to VC" +#~ msgstr "Lisää versionhallintaan" -#: ../vcview.py:183 -msgid "Status" -msgstr "Tila" +#~ msgid "Add _Binary" +#~ msgstr "Lisää _binääri" -#: ../vcview.py:184 -msgid "Rev" -msgstr "Versio" +#~ msgid "Add binary to VC" +#~ msgstr "Lisää binääritiedosto versiohallintaan" -#: ../vcview.py:186 -msgid "Options" -msgstr "Vaihtoehdot" +#~ msgid "Remove from VC" +#~ msgstr "Poista versiohallinnasta" -#: ../vcview.py:269 -msgid "(Empty)" -msgstr "[tyhjä]" +#~ msgid "Show normal" +#~ msgstr "Näytä tavallinen" -#: ../vcview.py:306 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Noudetaan eroja" +#~ msgid "Non _VC" +#~ msgstr "Ei _versiohallinnassa" -#: ../vcview.py:313 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Toteutetaan paikka" +#~ msgid "Rev" +#~ msgstr "Versio" -#: ../vcview.py:317 -msgid "No differences found." -msgstr "Eroja ei löytynyt." +#~ msgid "[%s] Fetching differences" +#~ msgstr "[%s] Noudetaan eroja" -#: ../vcview.py:394 -msgid "Select some files first." -msgstr "Valitse ensin joitain tiedostoja." - -#: ../vcview.py:461 -msgid "Invoking patch failed, you need GNU patch." -msgstr "Komentoa patch ei voitu käynnistää, tarvitset GNU patchin." +#~ msgid "[%s] Applying patch" +#~ msgstr "[%s] Toteutetaan paikka" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../vc/_vc.py:40 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" -"Missing" -msgstr "" -"Ei huomioitu:Ei versiohallinnassa:::Virhe::Lisätty:Muokattu:Ristiriita:Poistettu:" +#~ msgid "Invoking patch failed, you need GNU patch." +#~ msgstr "Komentoa patch ei voitu käynnistää, tarvitset GNU patchin." -#: ../vc/cvs.py:155 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Virhe muunnettaessa säännöllistä lauseketta\n" -"Malli oli \"%s\"\n" -"Virhe oli \"%s\"" +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "Virhe muunnettaessa säännöllistä lauseketta\n" +#~ "Malli oli \"%s\"\n" +#~ "Virhe oli \"%s\"" #~ msgid "Edit" #~ msgstr "Muokkaa" @@ -1172,24 +2450,9 @@ #~ msgid "Edit selected" #~ msgstr "Muokkaa valittua" -#~ msgid "Edit the selected file" -#~ msgstr "Muokkaa valittua tiedostoa" - -#~ msgid "_Edit" -#~ msgstr "_Muokkaa" - #~ msgid "Edit files" #~ msgstr "Muokkaa tiedostoja" -#~ msgid "Compare" -#~ msgstr "Vertaa" - -#~ msgid "Copy All To _Left" -#~ msgstr "Kopioi kaikki _vasemmalle" - -#~ msgid "Copy All To _Right" -#~ msgstr "Kopioi kaikki _Oikealle" - #~ msgid "Global options" #~ msgstr "Yleiset asetukset" @@ -1202,9 +2465,6 @@ #~ msgid "CVS" #~ msgstr "CVS" -#~ msgid "CVS Directory" -#~ msgstr "CVS-kansio" - #~ msgid "CVS binary" #~ msgstr "CVS-binääri" @@ -1220,9 +2480,6 @@ #~ msgid "My Directory" #~ msgstr "Oma kansio" -#~ msgid "My File" -#~ msgstr "Oma tiedosto" - #~ msgid "Original Directory" #~ msgstr "Alkuperäinen kansio" @@ -1241,24 +2498,12 @@ #~ msgid "Quiet mode (-q)" #~ msgstr "Hiljainen tila (-q)" -#~ msgid "Save _As" -#~ msgstr "Tallenna _nimellä" - #~ msgid "Use Compression (-z)" #~ msgstr "Käytä pakkausta (-z)" #~ msgid "_Character" #~ msgstr "_Merkki" -#~ msgid "_Down" -#~ msgstr "_Alas" - -#~ msgid "_None" -#~ msgstr "_Ei mitään" - -#~ msgid "_Save" -#~ msgstr "_Tallenna" - #~ msgid "_Up" #~ msgstr "_Ylös" diff -Nru meld-1.5.3/po/fr.po meld-3.11.0/po/fr.po --- meld-1.5.3/po/fr.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/fr.po 2013-12-07 19:30:09.000000000 +0000 @@ -1,20 +1,20 @@ # French translation of Meld. -# Copyright (C) 2003-2011 Free Software Foundation, Inc. +# Copyright (C) 2003-2012 Free Software Foundation, Inc. # This file is distributed under the same license as the meld package. # # Stephen Kennedy , 2003. # Jonathan Ernst , 2006. # Claude Paroz , 2006-2011. # Robert-André Mauchin , 2007. -# Bruno Brouard , 2009-2011. +# Bruno Brouard , 2009-2012. # msgid "" msgstr "" "Project-Id-Version: Meld HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-05-29 02:18+0000\n" -"PO-Revision-Date: 2011-08-02 17:27+0200\n" +"POT-Creation-Date: 2012-04-30 14:40+0000\n" +"PO-Revision-Date: 2012-04-15 16:49+0200\n" "Last-Translator: Bruno Brouard \n" "Language-Team: GNOME French Team \n" "MIME-Version: 1.0\n" @@ -22,78 +22,78 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../bin/meld:96 +#: ../bin/meld:103 msgid "Cannot import: " msgstr "Impossible d'importer : " -#: ../bin/meld:99 +#: ../bin/meld:106 #, c-format msgid "Meld requires %s or higher." msgstr "Meld nécessite %s ou supérieur." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Comparer et fusionner des fichiers" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Visionneur de différences" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Meld visionneur de différences" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Comparer et fusionner des fichiers" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Actif" +msgid "Editable List" +msgstr "Liste modifiable" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Ajouter un nouveau filtre" +msgid "Active" +msgstr "Actif" -#: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Liste modifiable" +#: ../data/ui/EditableList.ui.h:3 ../meld/vcview.py:166 +msgid "Name" +msgstr "Nom" #: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "_Descendre" +msgid "Pattern" +msgstr "Motif" #: ../data/ui/EditableList.ui.h:5 -msgid "Move _Up" -msgstr "_Monter" +msgid "Add new filter" +msgstr "Ajouter un nouveau filtre" -#: ../data/ui/EditableList.ui.h:6 -msgid "Move item down" -msgstr "Fait descendre l'élément" +#: ../data/ui/EditableList.ui.h:6 ../meld/vcview.py:130 +msgid "_Add" +msgstr "_Ajouter" #: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Fait monter l'élément" +msgid "Remove selected filter" +msgstr "Enlève le filtre sélectionné" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:157 -msgid "Name" -msgstr "Nom" +#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:132 +msgid "_Remove" +msgstr "_Supprimer" #: ../data/ui/EditableList.ui.h:9 -msgid "Pattern" -msgstr "Motif" +msgid "Move item up" +msgstr "Fait monter l'élément" #: ../data/ui/EditableList.ui.h:10 -msgid "Remove selected filter" -msgstr "Enlève le filtre sélectionné" +msgid "Move _Up" +msgstr "_Monter" -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:122 -msgid "_Add" -msgstr "_Ajouter" +#: ../data/ui/EditableList.ui.h:11 +msgid "Move item down" +msgstr "Fait descendre l'élément" -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:124 -msgid "_Remove" -msgstr "_Supprimer" +#: ../data/ui/EditableList.ui.h:12 +msgid "Move _Down" +msgstr "_Descendre" #: ../data/ui/filediff.ui.h:1 msgid "Save modified files?" @@ -115,113 +115,114 @@ msgid "_Save Selected" msgstr "_Enregistrer la sélection" -#: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "E_xpression régulière" +#: ../data/ui/findbar.ui.h:1 ../meld/meldwindow.py:141 +msgid "_Replace" +msgstr "_Remplacer" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "_Tout remplacer" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Remplacer _par" +msgid "_Previous" +msgstr "_Précédent" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "_Mots entiers" +msgid "_Next" +msgstr "_Suivant" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "Res_pecter la casse" +msgid "Find:" +msgstr "Rechercher :" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Suivant" +msgid "Replace _with:" +msgstr "Remplacer _par :" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Précédent" +msgid "_Match Case" +msgstr "Res_pecter la casse" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "_Remplacer" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "_Mots entiers" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Rechercher" - -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Sélectionnez les fichiers" +msgid "Regular E_xpression" +msgstr "E_xpression régulière" #: ../data/ui/meldapp.ui.h:2 msgid "" "Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" +"Copyright © 2009-2012 Kai Willadsen" msgstr "" -"Copyright © 2002-2009 Stephen KennedyCopyright © 2009-2010 Kai Willadsen" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2012 Kai Willadsen" #: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Répertoire" +msgid "translator-credits" +msgstr "" +"Stephen Kennedy , 2003\n" +"Jonathan Ernst , 2006\n" +"Claude Paroz , 2006-2010\n" +"Robert-André Mauchin , 2007\n" +"Bruno Brouard , 2009-2010" + +#: ../data/ui/meldapp.ui.h:5 +msgid "Choose Files" +msgstr "Sélectionnez les fichiers" + +#: ../data/ui/meldapp.ui.h:6 +msgid "_Three Way Compare" +msgstr "Comparaison _triple" #. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 +#: ../data/ui/meldapp.ui.h:8 msgid "Mine" msgstr "Le mien" #. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 +#: ../data/ui/meldapp.ui.h:10 msgid "Original" msgstr "Original" #. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 +#: ../data/ui/meldapp.ui.h:12 msgid "Other" msgstr "Autre" -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Sélectionner le répertoire du gestionnaire de versions" - #: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Comparaison de _répertoires" - -#: ../data/ui/meldapp.ui.h:14 msgid "_File Comparison" msgstr "Comparaison de _fichiers" +#: ../data/ui/meldapp.ui.h:14 +msgid "_Directory Comparison" +msgstr "Comparaison de _répertoires" + #: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "Comparaison _triple" +msgid "Select VC Directory" +msgstr "Sélectionner le répertoire du gestionnaire de versions" #: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "Navigateur du gestionnaire de _versions" +msgid "Directory" +msgstr "Répertoire" #: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "" -"Stephen Kennedy , 2003\n" -"Jonathan Ernst , 2006\n" -"Claude Paroz , 2006-2010\n" -"Robert-André Mauchin , 2007\n" -"Bruno Brouard , 2009-2010" +msgid "_Version Control Browser" +msgstr "Navigateur du gestionnaire de _versions" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Copier vers le presse-papiers" - -#: ../data/ui/patch-dialog.ui.h:2 msgid "Create Patch" msgstr "Créer un correctif" -#: ../data/ui/patch-dialog.ui.h:3 +#: ../data/ui/patch-dialog.ui.h:2 msgid "Create a patch" msgstr "Créer un correctif" +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Use differences between:" +msgstr "Utiliser les différences entre :" + #: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Panneaux de gauche et du milieu" @@ -231,93 +232,78 @@ msgstr "Panneaux du milieu et de droite" #: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Utiliser les différences entre :" - -#: ../data/ui/patch-dialog.ui.h:7 msgid "_Reverse patch direction" msgstr "Inve_rser la direction du correctif" +#: ../data/ui/patch-dialog.ui.h:7 +msgid "Copy to Clipboard" +msgstr "Copier vers le presse-papiers" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Affichage" +msgid "Meld Preferences" +msgstr "Préférences de Meld" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Ne pas _couper les mots par les sauts de ligne" +msgid "Font" +msgstr "Police" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Commande de l'éditeu_r :" +msgid "_Use the system fixed width font" +msgstr "_Utiliser la police à chasse fixe du système" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Éditeur" +msgid "_Editor font:" +msgstr "_Police de l'éditeur :" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Acti_ver les sauts de ligne automatiques" +msgid "Display" +msgstr "Affichage" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Codage des caractères" +msgid "_Tab width:" +msgstr "Largeur des _tabulations :" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Éditeur externe" +msgid "_Insert spaces instead of tabs" +msgstr "Insérer des _espaces au lieu des tabulations" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filtres de fichiers" +msgid "Enable text _wrapping" +msgstr "Acti_ver les sauts de ligne automatiques" #: ../data/ui/preferences.ui.h:9 -msgid "Font" -msgstr "Police" +msgid "Do not _split words over two lines" +msgstr "Ne pas _couper les mots par les sauts de ligne" #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "" -"Ignorer les modifications qui concernent l'insertion ou l'effacement de " -"lignes vides." +msgid "Show _line numbers" +msgstr "Afficher les numéros de _ligne" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Ignorer les liens symboliques" +msgid "Show w_hitespace" +msgstr "Affic_her les espaces" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Chargement" +msgid "Use s_yntax highlighting" +msgstr "Utiliser la _coloration syntaxique" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Préférences de Meld" +msgid "External editor" +msgstr "Éditeur externe" #: ../data/ui/preferences.ui.h:14 -msgid "Show _line numbers" -msgstr "Afficher les numéros de _ligne" +msgid "Use _default system editor" +msgstr "Utiliser l'éditeur par _défaut du système" #: ../data/ui/preferences.ui.h:15 -msgid "Show w_hitespace" -msgstr "Affic_her les espaces" +msgid "Edito_r command:" +msgstr "Commande de l'éditeu_r :" #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filtres de texte" +msgid "Editor" +msgstr "Éditeur" #: ../data/ui/preferences.ui.h:17 -msgid "Use _default system editor" -msgstr "Utiliser l'éditeur par _défaut du système" - -#: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Utiliser la _coloration syntaxique" - -#: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" -"Lors du chargement, essayer ces codages dans l'ordre (ex : utf-8, iso8859)" - -#: ../data/ui/preferences.ui.h:20 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " @@ -327,7 +313,15 @@ "des dossiers en fonction de leur nom. Chaque motif est une liste de jokers " "de type shell séparés par des espaces." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:18 +msgid "Ignore symbolic links" +msgstr "Ignorer les liens symboliques" + +#: ../data/ui/preferences.ui.h:19 +msgid "File Filters" +msgstr "Filtres de fichiers" + +#: ../data/ui/preferences.ui.h:20 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -341,175 +335,158 @@ "comparaison. Si l'expression contient des groupes, seuls les groupes sont " "remplacés. Consultez le manuel d'utilisation pour plus de détails." +#: ../data/ui/preferences.ui.h:21 +msgid "Ignore changes which insert or delete blank lines" +msgstr "" +"Ignorer les modifications qui concernent l'insertion ou l'effacement de " +"lignes vides." + #: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "_Police de l'éditeur :" +msgid "Text Filters" +msgstr "Filtres de texte" #: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "Insérer des _espaces au lieu des tabulations" +msgid "Loading" +msgstr "Chargement" #: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "Largeur des _tabulations :" +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" +"Lors du chargement, essayer ces codages dans l'ordre (ex : utf-8, iso8859)" #: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "_Utiliser la police à chasse fixe du système" +msgid "Encoding" +msgstr "Codage des caractères" #: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Valider les fichiers" +msgid "VC Log" +msgstr "Journal du gestionnaire de versions" #: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Comparer les options" +msgid "Commit Files" +msgstr "Valider les fichiers" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Date" +msgid "Previous Logs" +msgstr "Journaux précédents" #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Copie locale par rapport à une autre révision distante" - -#: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Copie locale par rapport à la même révision distante" - -#: ../data/ui/vcview.ui.h:6 msgid "Log Message" msgstr "Message du journal" -#: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Journaux précédents" - -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:180 -msgid "Tag" -msgstr "Étiquette" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "Journal du gestionnaire de versions" - -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 msgid "_Compare" msgstr "_Comparer" -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 msgid "Compare selected" msgstr "Comparer la sélection" -#: ../meld/dirdiff.py:228 +#: ../meld/dirdiff.py:233 msgid "Copy _Left" msgstr "Copier à _gauche" -#: ../meld/dirdiff.py:228 +#: ../meld/dirdiff.py:233 msgid "Copy to left" msgstr "Copie vers la gauche" -#: ../meld/dirdiff.py:229 +#: ../meld/dirdiff.py:234 msgid "Copy _Right" msgstr "Copier à _droite" -#: ../meld/dirdiff.py:229 +#: ../meld/dirdiff.py:234 msgid "Copy to right" msgstr "Copie vers la droite" -#: ../meld/dirdiff.py:230 +#: ../meld/dirdiff.py:235 msgid "Delete selected" msgstr "Effacer la sélection" -#: ../meld/dirdiff.py:231 ../meld/filediff.py:1117 +#: ../meld/dirdiff.py:236 ../meld/filediff.py:1167 msgid "Hide" msgstr "Masquer" -#: ../meld/dirdiff.py:231 +#: ../meld/dirdiff.py:236 msgid "Hide selected" msgstr "Masquer la sélection" -#: ../meld/dirdiff.py:233 ../meld/filediff.py:267 ../meld/vcview.py:119 -msgid "Open selected" -msgstr "Ouvrir la sélection" - -#: ../meld/dirdiff.py:237 +#: ../meld/dirdiff.py:240 msgid "Case" msgstr "Casse" -#: ../meld/dirdiff.py:237 +#: ../meld/dirdiff.py:240 msgid "Ignore case of entries" msgstr "Ignorer la casse des entrées" -#: ../meld/dirdiff.py:238 +#: ../meld/dirdiff.py:241 msgid "Same" msgstr "Identique" -#: ../meld/dirdiff.py:238 +#: ../meld/dirdiff.py:241 msgid "Show identical" msgstr "Afficher les fichiers identiques" -#: ../meld/dirdiff.py:239 +#: ../meld/dirdiff.py:242 msgid "New" msgstr "Nouveaux" -#: ../meld/dirdiff.py:239 +#: ../meld/dirdiff.py:242 msgid "Show new" msgstr "Afficher les nouveaux fichiers" -#: ../meld/dirdiff.py:240 +#: ../meld/dirdiff.py:243 msgid "Modified" msgstr "Modifiés" -#: ../meld/dirdiff.py:240 ../meld/vcview.py:132 +#: ../meld/dirdiff.py:243 ../meld/vcview.py:140 msgid "Show modified" msgstr "Afficher les objets modifiés" -#: ../meld/dirdiff.py:242 +#: ../meld/dirdiff.py:245 msgid "Filters" msgstr "Filtres" -#: ../meld/dirdiff.py:242 +#: ../meld/dirdiff.py:245 msgid "Set active filters" msgstr "Définir les filtres actifs" -#: ../meld/dirdiff.py:359 +#: ../meld/dirdiff.py:362 #, python-format msgid "Hide %s" msgstr "Masquer %s" -#: ../meld/dirdiff.py:462 ../meld/dirdiff.py:475 ../meld/vcview.py:305 -#: ../meld/vcview.py:333 +#: ../meld/dirdiff.py:466 ../meld/dirdiff.py:479 ../meld/vcview.py:323 +#: ../meld/vcview.py:347 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] En cours d'analyse de %s" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:578 #, python-format msgid "[%s] Done" msgstr "[%s] Terminé" -#: ../meld/dirdiff.py:578 +#: ../meld/dirdiff.py:582 msgid "Multiple errors occurred while scanning this folder" msgstr "Plusieurs erreurs se sont produites lors de l'analyse de ce dossier" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:583 msgid "Files with invalid encodings found" msgstr "Le codage de caractères de certains fichiers n'est pas valide" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:585 msgid "Some files were in an incorrect encoding. The names are something like:" msgstr "" "Le codage de caractères de certains fichiers n'est pas correct. Les noms " "ressemblent à :" -#: ../meld/dirdiff.py:583 +#: ../meld/dirdiff.py:587 msgid "Files hidden by case insensitive comparison" msgstr "Fichiers cachés en raison de la comparaison insensible à la casse" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:585 +#: ../meld/dirdiff.py:589 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -518,16 +495,16 @@ "fichiers sensible à la casse. Les fichiers suivants de ce dossier sont " "masqués :" -#: ../meld/dirdiff.py:596 +#: ../meld/dirdiff.py:600 #, python-format msgid "'%s' hidden by '%s'" msgstr "« %s » est masqué par « %s »" -#: ../meld/dirdiff.py:621 ../meld/filediff.py:981 ../meld/filediff.py:1121 +#: ../meld/dirdiff.py:625 ../meld/filediff.py:1010 ../meld/filediff.py:1171 msgid "Hi_de" msgstr "Mas_quer" -#: ../meld/dirdiff.py:671 +#: ../meld/dirdiff.py:675 #, python-format msgid "" "'%s' exists.\n" @@ -536,7 +513,7 @@ "« %s » existe déjà.\n" "Écraser ?" -#: ../meld/dirdiff.py:678 +#: ../meld/dirdiff.py:682 #, python-format msgid "" "Error copying '%s' to '%s'\n" @@ -547,7 +524,7 @@ "\n" "%s." -#: ../meld/dirdiff.py:696 ../meld/vcview.py:505 +#: ../meld/dirdiff.py:700 ../meld/vcview.py:536 #, python-format msgid "" "'%s' is a directory.\n" @@ -556,7 +533,7 @@ "« %s » est un répertoire.\n" "Supprimer récursivement ?" -#: ../meld/dirdiff.py:703 ../meld/vcview.py:510 +#: ../meld/dirdiff.py:707 ../meld/vcview.py:541 #, python-format msgid "" "Error removing %s\n" @@ -567,211 +544,212 @@ "\n" "%s." -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:741 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i seconde" msgstr[1] "%i secondes" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:742 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minute" msgstr[1] "%i minutes" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:743 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i heure" msgstr[1] "%i heures" -#: ../meld/dirdiff.py:718 +#: ../meld/dirdiff.py:744 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i jour" msgstr[1] "%i jours" -#: ../meld/dirdiff.py:719 +#: ../meld/dirdiff.py:745 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i semaine" msgstr[1] "%i semaines" -#: ../meld/dirdiff.py:720 +#: ../meld/dirdiff.py:746 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i mois" msgstr[1] "%i mois" -#: ../meld/dirdiff.py:721 +#: ../meld/dirdiff.py:747 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i année" msgstr[1] "%i années" -#: ../meld/filediff.py:268 +#: ../meld/filediff.py:295 msgid "Format as patch..." msgstr "Mettre sous forme de correctif..." -#: ../meld/filediff.py:268 +#: ../meld/filediff.py:295 msgid "Create a patch using differences between files" msgstr "" "Crée un correctif (patch) en utilisant les différences entre les fichiers" -#: ../meld/filediff.py:269 +#: ../meld/filediff.py:296 msgid "Previous conflict" msgstr "Conflit précédent" -#: ../meld/filediff.py:269 +#: ../meld/filediff.py:296 msgid "Go to the previous conflict" msgstr "Revient au conflit précédent" -#: ../meld/filediff.py:270 +#: ../meld/filediff.py:297 msgid "Next conflict" msgstr "Conflit suivant" -#: ../meld/filediff.py:270 +#: ../meld/filediff.py:297 msgid "Go to the next conflict" msgstr "Va au prochain conflit" -#: ../meld/filediff.py:271 +#: ../meld/filediff.py:298 msgid "Push to left" msgstr "Envoyer à gauche" -#: ../meld/filediff.py:271 +#: ../meld/filediff.py:298 msgid "Push current change to the left" msgstr "Envoie la modification actuelle vers la gauche" -#: ../meld/filediff.py:272 +#: ../meld/filediff.py:299 msgid "Push to right" msgstr "Envoyer à droite" -#: ../meld/filediff.py:272 +#: ../meld/filediff.py:299 msgid "Push current change to the right" msgstr "Envoie la modification actuelle vers la droite" #. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:274 +#: ../meld/filediff.py:301 msgid "Pull from left" msgstr "Récupérer de la gauche" -#: ../meld/filediff.py:274 +#: ../meld/filediff.py:301 msgid "Pull change from the left" msgstr "Récupère la modification de gauche" -#: ../meld/filediff.py:275 +#: ../meld/filediff.py:302 msgid "Pull from right" msgstr "Récupérer de la droite" -#: ../meld/filediff.py:275 +#: ../meld/filediff.py:302 msgid "Pull change from the right" msgstr "Récupère la modification de droite" -#: ../meld/filediff.py:276 +#: ../meld/filediff.py:303 msgid "Copy above left" msgstr "Copier au-dessus de la gauche" -#: ../meld/filediff.py:276 +#: ../meld/filediff.py:303 msgid "Copy change above the left chunk" msgstr "Copie la modification au-dessus du segment de gauche" -#: ../meld/filediff.py:277 +#: ../meld/filediff.py:304 msgid "Copy below left" msgstr "Copier en dessous de la gauche" -#: ../meld/filediff.py:277 +#: ../meld/filediff.py:304 msgid "Copy change below the left chunk" msgstr "Copie la modification en dessous du segment de gauche" -#: ../meld/filediff.py:278 +#: ../meld/filediff.py:305 msgid "Copy above right" msgstr "Copier au-dessus de la droite" -#: ../meld/filediff.py:278 +#: ../meld/filediff.py:305 msgid "Copy change above the right chunk" msgstr "Copie la modification au-dessus du segment de droite" -#: ../meld/filediff.py:279 +#: ../meld/filediff.py:306 msgid "Copy below right" msgstr "Copier en dessous de la droite" -#: ../meld/filediff.py:279 +#: ../meld/filediff.py:306 msgid "Copy change below the right chunk" msgstr "Copie la modification en dessous du segement de droite" -#: ../meld/filediff.py:280 +#: ../meld/filediff.py:307 msgid "Delete" msgstr "Supprimer" -#: ../meld/filediff.py:280 +#: ../meld/filediff.py:307 msgid "Delete change" msgstr "Supprimer les modifications" -#: ../meld/filediff.py:281 +#: ../meld/filediff.py:308 msgid "Merge all changes from left" msgstr "Fusionne toutes les modifications de gauche" -#: ../meld/filediff.py:281 +#: ../meld/filediff.py:308 msgid "Merge all non-conflicting changes from the left" msgstr "Fusionne toutes les modifications non-conflictuelles de gauche" -#: ../meld/filediff.py:282 +#: ../meld/filediff.py:309 msgid "Merge all changes from right" msgstr "Fusionne toutes les modifications de droite" -#: ../meld/filediff.py:282 +#: ../meld/filediff.py:309 msgid "Merge all non-conflicting changes from the right" msgstr "Fusionne toutes les modifications non-conflictuelles de droite" -#: ../meld/filediff.py:283 +#: ../meld/filediff.py:310 msgid "Merge all non-conflicting" msgstr "Fusionne toutes les modifications non-conflictuelles" -#: ../meld/filediff.py:283 +#: ../meld/filediff.py:310 msgid "Merge all non-conflicting changes from left and right panes" msgstr "" "Fusionne toutes les modifications non-conflictuelles des panneaux de gauche " "et de droite" -#: ../meld/filediff.py:284 +#: ../meld/filediff.py:311 msgid "Cycle through documents" msgstr "Parcourir cycliquement les documents" -#: ../meld/filediff.py:284 +#: ../meld/filediff.py:311 msgid "Move keyboard focus to the next document in this comparison" -msgstr "Déplacer le focus clavier vers le document suivant dans cette comparaison" +msgstr "" +"Déplacer le focus clavier vers le document suivant dans cette comparaison" -#: ../meld/filediff.py:288 +#: ../meld/filediff.py:315 msgid "Lock scrolling" msgstr "Verrouiller le défilement" -#: ../meld/filediff.py:289 +#: ../meld/filediff.py:316 msgid "Lock scrolling of all panes" msgstr "Verrouille le défilement de tous les panneaux" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:381 +#: ../meld/filediff.py:396 msgid "INS" msgstr "INS" -#: ../meld/filediff.py:381 +#: ../meld/filediff.py:396 msgid "OVR" msgstr "ÉCR" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:383 +#: ../meld/filediff.py:398 #, python-format msgid "Ln %i, Col %i" msgstr "Ln %i, Col %i" -#: ../meld/filediff.py:693 +#: ../meld/filediff.py:722 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " @@ -781,62 +759,63 @@ "sera plus correcte. Consultez le manuel d'utilisation pour plus de détails." #. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:780 +#: ../meld/filediff.py:809 msgid "" msgstr "" -#: ../meld/filediff.py:969 +#: ../meld/filediff.py:998 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Régler le nombre de volets" -#: ../meld/filediff.py:975 +#: ../meld/filediff.py:1004 #, python-format msgid "[%s] Opening files" msgstr "[%s] Ouverture des fichiers" -#: ../meld/filediff.py:999 ../meld/filediff.py:1008 ../meld/filediff.py:1020 -#: ../meld/filediff.py:1026 +#: ../meld/filediff.py:1028 ../meld/filediff.py:1037 ../meld/filediff.py:1049 +#: ../meld/filediff.py:1055 msgid "Could not read file" msgstr "Impossible de lire le fichier" -#: ../meld/filediff.py:1000 +#: ../meld/filediff.py:1029 #, python-format msgid "[%s] Reading files" msgstr "[%s] Lecture des fichiers" -#: ../meld/filediff.py:1009 +#: ../meld/filediff.py:1038 #, python-format msgid "%s appears to be a binary file." msgstr "%s semble être un fichier binaire." -#: ../meld/filediff.py:1021 +#: ../meld/filediff.py:1050 #, python-format msgid "%s is not in encodings: %s" msgstr "%s n'est pas dans un des codages : %s" -#: ../meld/filediff.py:1051 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1080 ../meld/filemerge.py:67 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Calcul des différences" -#: ../meld/filediff.py:1108 +#: ../meld/filediff.py:1158 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" msgstr "" -"Les filtres de texte sont actuellement utilisés et il se peut qu'ils masquent " -"des différences entre les fichiers. Voulez-vous comparer les fichiers non filtrés ?" +"Les filtres de texte sont actuellement utilisés et il se peut qu'ils " +"masquent des différences entre les fichiers. Voulez-vous comparer les " +"fichiers non filtrés ?" -#: ../meld/filediff.py:1114 +#: ../meld/filediff.py:1164 msgid "Files are identical" msgstr "Les fichiers sont identiques" -#: ../meld/filediff.py:1124 +#: ../meld/filediff.py:1174 msgid "Show without filters" msgstr "Afficher sans les filtres" -#: ../meld/filediff.py:1278 +#: ../meld/filediff.py:1363 #, python-format msgid "" "\"%s\" exists!\n" @@ -845,7 +824,7 @@ "« %s » existe déjà !\n" "Écraser ?" -#: ../meld/filediff.py:1291 +#: ../meld/filediff.py:1376 #, python-format msgid "" "Error writing to %s\n" @@ -856,12 +835,12 @@ "\n" "%s." -#: ../meld/filediff.py:1300 +#: ../meld/filediff.py:1385 #, python-format msgid "Choose a name for buffer %i." msgstr "Choisissez un nom pour le tampon %i." -#: ../meld/filediff.py:1315 +#: ../meld/filediff.py:1400 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -872,7 +851,7 @@ "\n" "Quel format voulez-vous utiliser ?" -#: ../meld/filediff.py:1331 +#: ../meld/filediff.py:1416 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -881,7 +860,7 @@ "« %s » contient des caractères qui ne peuvent être codés avec « %s »\n" "Voulez-vous enregistrer en UTF-8 ?" -#: ../meld/filediff.py:1390 +#: ../meld/filediff.py:1475 #, python-format msgid "" "Reloading will discard changes in:\n" @@ -899,72 +878,72 @@ msgid "[%s] Merging files" msgstr "[%s] Fusion des fichiers" -#: ../meld/meldapp.py:149 +#: ../meld/meldapp.py:152 msgid "wrong number of arguments supplied to --diff" msgstr "Nombre de paramètres incorrect pour --diff" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:156 msgid "Start with an empty window" msgstr "Démarrer avec une fenêtre vide" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:157 ../meld/meldapp.py:158 ../meld/meldapp.py:160 msgid "file" msgstr "fichier" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:157 ../meld/meldapp.py:159 ../meld/meldapp.py:160 msgid "dir" msgstr "répertoire" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:157 msgid "Start a version control comparison" msgstr "Démarrer une comparaison de gestion de versions" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:158 msgid "Start a 2- or 3-way file comparison" msgstr "Démarrer une comparaison de 2 ou 3 fichiers" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:159 msgid "Start a 2- or 3-way directory comparison" msgstr "Démarrer une comparaison de 2 ou 3 répertoires" -#: ../meld/meldapp.py:157 +#: ../meld/meldapp.py:160 msgid "Start a comparison between file and dir/file" msgstr "Démarrer une comparaison de fichier et de répertoire/fichier" -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:166 msgid "Meld is a file and directory comparison tool." msgstr "Meld est un outil de comparaison de fichiers et de répertoires." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:169 msgid "Set label to use instead of file name" msgstr "Définit l'étiquette à utiliser au lieu du nom de fichier" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:171 msgid "Automatically compare all differing files on startup" msgstr "Compare automatiquement tous les fichiers différents au démarrage" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:173 msgid "Ignored for compatibility" msgstr "Ignorée pour compatibilité" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:176 msgid "Set the target file for saving a merge result" msgstr "Définit le fichier cible pour l'enregistrement d'un résultat de fusion" -#: ../meld/meldapp.py:176 +#: ../meld/meldapp.py:179 msgid "Creates a diff tab for up to 3 supplied files or directories." msgstr "Crée un onglet diff pour un maximum de 3 fichiers ou répertoires." -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:182 #, python-format msgid "too many arguments (wanted 0-4, got %d)" msgstr "trop de paramètres (0-4 désirés, %d reçus)" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 +#: ../meld/meldapp.py:184 ../meld/meldapp.py:188 msgid "can't compare more than three directories" msgstr "impossible de comparer plus de trois répertoires" -#: ../meld/melddoc.py:51 ../meld/melddoc.py:52 +#: ../meld/melddoc.py:56 ../meld/melddoc.py:57 msgid "untitled" msgstr "sans titre" @@ -1068,128 +1047,138 @@ msgid "Go to the previous change" msgstr "Revient à la différence précédente" -#: ../meld/meldwindow.py:148 +#: ../meld/meldwindow.py:147 +msgid "Open externally" +msgstr "Ouvrir avec" + +#: ../meld/meldwindow.py:147 +msgid "Open selected file or directory in the default external application" +msgstr "" +"Ouvre le dossier ou le fichier sélectionné dans l'application externe par " +"défaut" + +#: ../meld/meldwindow.py:149 msgid "_View" msgstr "_Affichage" -#: ../meld/meldwindow.py:149 +#: ../meld/meldwindow.py:150 msgid "File status" msgstr "État du fichier" -#: ../meld/meldwindow.py:150 +#: ../meld/meldwindow.py:151 msgid "Version status" msgstr "État de la version" -#: ../meld/meldwindow.py:151 +#: ../meld/meldwindow.py:152 msgid "File filters" msgstr "Filtres de fichier" -#: ../meld/meldwindow.py:152 +#: ../meld/meldwindow.py:153 msgid "Stop the current action" msgstr "Arrête l'action en cours" -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:154 msgid "Refresh the view" msgstr "Actualise l'affichage" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:155 msgid "Reload" msgstr "Recharger" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:155 msgid "Reload the comparison" msgstr "Recharge la comparaison" -#: ../meld/meldwindow.py:156 +#: ../meld/meldwindow.py:157 msgid "_Tabs" msgstr "_Onglets" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:158 msgid "_Previous Tab" msgstr "Onglet _précédent" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:158 msgid "Activate previous tab" msgstr "Active l'onglet précédent" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:159 msgid "_Next Tab" msgstr "Onglet _suivant" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:159 msgid "Activate next tab" msgstr "Active l'onglet suivant" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:160 msgid "Move Tab _Left" msgstr "Déplacer l'onglet vers la _gauche" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:160 msgid "Move current tab to left" msgstr "Déplace l'onglet actuel vers la gauche" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:161 msgid "Move Tab _Right" msgstr "Déplacer l'onglet vers la _droite" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:161 msgid "Move current tab to right" msgstr "Déplace l'onglet actuel vers la droite" -#: ../meld/meldwindow.py:162 +#: ../meld/meldwindow.py:163 msgid "_Help" msgstr "Aid_e" -#: ../meld/meldwindow.py:163 +#: ../meld/meldwindow.py:164 msgid "_Contents" msgstr "_Sommaire" -#: ../meld/meldwindow.py:163 +#: ../meld/meldwindow.py:164 msgid "Open the Meld manual" msgstr "Ouvre le manuel de Meld" -#: ../meld/meldwindow.py:164 +#: ../meld/meldwindow.py:165 msgid "Report _Bug" msgstr "Signaler une _anomalie" -#: ../meld/meldwindow.py:164 +#: ../meld/meldwindow.py:165 msgid "Report a bug in Meld" msgstr "Rapporte une anomalie de Meld" -#: ../meld/meldwindow.py:165 +#: ../meld/meldwindow.py:166 msgid "About this program" msgstr "À propos de ce programme" -#: ../meld/meldwindow.py:168 +#: ../meld/meldwindow.py:169 msgid "Full Screen" msgstr "Plein écran" -#: ../meld/meldwindow.py:168 +#: ../meld/meldwindow.py:169 msgid "View the comparison in full screen" msgstr "Afficher la comparaison en plein écran" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:170 msgid "_Toolbar" msgstr "_Barre d'outils" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:170 msgid "Show or hide the toolbar" msgstr "Affiche ou masque la barre d'outils" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:171 msgid "_Statusbar" msgstr "B_arre d'état" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:171 msgid "Show or hide the statusbar" msgstr "Affiche ou masque la barre d'état" -#: ../meld/meldwindow.py:534 +#: ../meld/meldwindow.py:541 msgid "Switch to this tab" msgstr "Basculer vers cet onglet" #. exit at first non found directory + file -#: ../meld/meldwindow.py:625 +#: ../meld/meldwindow.py:639 msgid "Cannot compare a mixture of files and directories.\n" msgstr "Impossible de comparer des fichiers avec des répertoires.\n" @@ -1210,212 +1199,225 @@ msgid "pattern" msgstr "motif" -#: ../meld/preferences.py:105 +#: ../meld/preferences.py:111 msgid "Only available if you have gnome-python-desktop installed" msgstr "Disponible uniquement si gnome-python-desktop est installé" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 +#: ../meld/preferences.py:234 msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" msgstr "Sauvegardes\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 +#: ../meld/preferences.py:236 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" +"Métadonnées spécifiques au système d'exploitation\t0\t.DS_Store ._* ." +"Spotlight-V100 .Trashes Thumbs.db Desktop.ini\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:238 #, python-format msgid "Version Control\t1\t%s\n" msgstr "Gestionnaire de versions\t1\t%s\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 +#: ../meld/preferences.py:240 msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" msgstr "Binaires\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 +#: ../meld/preferences.py:242 msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" msgstr "Média\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 +#: ../meld/preferences.py:244 msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" msgstr "Mots-clés CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 +#: ../meld/preferences.py:246 msgid "C++ comment\t0\t//.*\n" msgstr "Commentaire C++\t0\t//.*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 +#: ../meld/preferences.py:248 msgid "C comment\t0\t/\\*.*?\\*/\n" msgstr "Commentaire C\t0\t/\\*.*?\\*/\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 +#: ../meld/preferences.py:250 msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" msgstr "Tout caractère d'espacement\t0\t[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 +#: ../meld/preferences.py:252 msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" msgstr "Caractère d'espacement en début de ligne\t0\t^[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 +#: ../meld/preferences.py:254 msgid "Script comment\t0\t#.*" msgstr "Commentaire de script\t0\t#.*" -#: ../meld/vcview.py:120 +#: ../meld/vcview.py:128 msgid "Co_mmit" msgstr "_Valider" -#: ../meld/vcview.py:120 +#: ../meld/vcview.py:128 msgid "Commit" msgstr "Fait un « Commit »" -#: ../meld/vcview.py:121 +#: ../meld/vcview.py:129 msgid "_Update" msgstr "Mettre à _jour" -#: ../meld/vcview.py:121 +#: ../meld/vcview.py:129 msgid "Update" msgstr "Fait un « Update »" -#: ../meld/vcview.py:122 +#: ../meld/vcview.py:130 msgid "Add to VC" msgstr "Ajoute au gestionnaire de versions" -#: ../meld/vcview.py:123 +#: ../meld/vcview.py:131 msgid "Add _Binary" msgstr "Ajouter _binaire" -#: ../meld/vcview.py:123 +#: ../meld/vcview.py:131 msgid "Add binary to VC" msgstr "Ajoute le binaire au gestionnaire de versions" -#: ../meld/vcview.py:124 +#: ../meld/vcview.py:132 msgid "Remove from VC" msgstr "Supprime du gestionnaire de versions" -#: ../meld/vcview.py:125 +#: ../meld/vcview.py:133 msgid "_Resolved" msgstr "_Résolu" -#: ../meld/vcview.py:125 +#: ../meld/vcview.py:133 msgid "Mark as resolved for VC" msgstr "Marque comme résolu pour le gestionnaire de versions" -#: ../meld/vcview.py:126 +#: ../meld/vcview.py:134 msgid "Revert to original" msgstr "Revenir à l'original" -#: ../meld/vcview.py:127 +#: ../meld/vcview.py:135 msgid "Delete locally" msgstr "Effacer localement" -#: ../meld/vcview.py:131 +#: ../meld/vcview.py:139 msgid "_Flatten" msgstr "A_platir" -#: ../meld/vcview.py:131 +#: ../meld/vcview.py:139 msgid "Flatten directories" msgstr "Aplatir les répertoires" -#: ../meld/vcview.py:132 +#: ../meld/vcview.py:140 msgid "_Modified" msgstr "_Modifiés" -#: ../meld/vcview.py:133 +#: ../meld/vcview.py:141 msgid "_Normal" msgstr "_Normal" -#: ../meld/vcview.py:133 +#: ../meld/vcview.py:141 msgid "Show normal" msgstr "Affichage normal" -#: ../meld/vcview.py:134 +#: ../meld/vcview.py:142 msgid "Non _VC" msgstr "Non _versionné" -#: ../meld/vcview.py:134 +#: ../meld/vcview.py:142 msgid "Show unversioned files" msgstr "Affiche les fichiers qui ne sont pas versionnés" -#: ../meld/vcview.py:135 +#: ../meld/vcview.py:143 msgid "Ignored" msgstr "Ignoré" -#: ../meld/vcview.py:135 +#: ../meld/vcview.py:143 msgid "Show ignored files" msgstr "Affiche les fichiers ignorés" -#: ../meld/vcview.py:177 ../meld/vcview.py:301 +#: ../meld/vcview.py:186 ../meld/vcview.py:319 msgid "Location" msgstr "Emplacement" -#: ../meld/vcview.py:178 +#: ../meld/vcview.py:187 msgid "Status" msgstr "État" -#: ../meld/vcview.py:179 +#: ../meld/vcview.py:188 msgid "Rev" msgstr "Révision" -#: ../meld/vcview.py:181 +#: ../meld/vcview.py:189 +msgid "Tag" +msgstr "Étiquette" + +#: ../meld/vcview.py:190 msgid "Options" msgstr "Options" -#: ../meld/vcview.py:233 +#: ../meld/vcview.py:249 msgid "Choose one Version Control" msgstr "Choisir un système de gestion de versions" -#: ../meld/vcview.py:234 +#: ../meld/vcview.py:250 msgid "Only one Version Control in this directory" msgstr "Un seul système de gestion de versions dans ce répertoire" #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:247 +#: ../meld/vcview.py:263 #, python-format msgid "%s Not Installed" msgstr "%s n'est pas installé" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:251 +#: ../meld/vcview.py:267 msgid "Invalid Repository" msgstr "Dépôt non valide" -#: ../meld/vcview.py:260 +#: ../meld/vcview.py:276 #, python-format msgid "%s (%s)" msgstr "%s (%s)" #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:301 +#: ../meld/vcview.py:319 #, python-format msgid "%s: %s" msgstr "%s : %s" -#: ../meld/vcview.py:349 +#: ../meld/vcview.py:363 msgid "(Empty)" msgstr "(vide)" -#: ../meld/vcview.py:387 +#: ../meld/vcview.py:401 #, python-format msgid "[%s] Fetching differences" msgstr "[%s] Récupération des différences" -#: ../meld/vcview.py:395 +#: ../meld/vcview.py:409 #, python-format msgid "[%s] Applying patch" msgstr "[%s] Application du correctif" -#: ../meld/vcview.py:480 +#: ../meld/vcview.py:511 msgid "Select some files first." msgstr "Sélectionnez d'abord des fichiers." -#: ../meld/vcview.py:553 +#: ../meld/vcview.py:584 #, python-format msgid "" "\n" @@ -1464,7 +1466,7 @@ " gestionnaire de versions que vous utilisez.\n" " " -#: ../meld/ui/findbar.py:127 +#: ../meld/ui/findbar.py:140 #, python-format msgid "" "Regular expression error\n" @@ -1519,3 +1521,6 @@ "Erreur durant la conversion en expression régulière\n" "Le motif était « %s »\n" "L'erreur était « %s »" + +#~ msgid "_Search for" +#~ msgstr "_Rechercher" diff -Nru meld-1.5.3/po/.gitignore meld-3.11.0/po/.gitignore --- meld-1.5.3/po/.gitignore 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/.gitignore 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -*.gmo -*.mo -*.pot -Makefile -Makefile.in -Makefile.in.in -#POTFILES -cat-id-tbl.c -messages -missing -notexist -po2tbl.sed -po2tbl.sed.in -stamp-cat-id diff -Nru meld-1.5.3/po/gl.po meld-3.11.0/po/gl.po --- meld-1.5.3/po/gl.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/gl.po 2014-02-16 20:23:22.000000000 +0000 @@ -1,328 +1,489 @@ -# translation of meld_gl_ES(jaunty).po to Galician -# Galician translations for PACKAGE package. -# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# +# Galician translations for meld. +# Copyright (C) 2012 Leandro Regueiro. +# This file is distributed under the same license as the meld package. +# Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas +# colaborar connosco, podes atopar máis información en http://www.trasno.net # Enrique Estévez , 2009. # Antón Méixome , 2009. -# Fran Diéguez , 2009, 2010, 2011. -# Fran Dieguez , 2011. -# +# Fran Diéguez , 2009, 2010, 2011, 2012. +# Leandro Regueiro , 2012. +# Fran Dieguez , 2012, 2013. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2011-09-25 13:19+0200\n" -"PO-Revision-Date: 2011-09-25 13:20+0200\n" +"POT-Creation-Date: 2013-10-07 13:44+0200\n" +"PO-Revision-Date: 2013-10-07 13:46+0200\n" "Last-Translator: Fran Dieguez \n" -"Language-Team: Galician \n" +"Language-Team: gnome-l10n-gl@gnome.org\n" "Language: gl\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" -"X-Generator: KBabel 1.11.4\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" "X-Poedit-Language: Galician\n" -#: ../bin/meld:96 +#: ../bin/meld:121 msgid "Cannot import: " msgstr "Non é posíbel importar: " -#: ../bin/meld:99 +#: ../bin/meld:124 #, c-format msgid "Meld requires %s or higher." msgstr "Meld require %s ou superior." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Compare e combine os seus ficheiros" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Visualizador Diff" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Visualizador Diff Meld" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Compare e combine os seus ficheiros" + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Descrición da comparación do Meld" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Comparar" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Comparar ficheiros seleccionados" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Copiar á _esquerda" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Copiar á esquerda" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Copiar á _dereita" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Copiar á dereita" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Eliminar o seleccionado" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1379 +msgid "Hide" +msgstr "Ocultar" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Ocultar o seleccionado" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Ignorar maiúsculas e minúsculas do nome do ficheiro" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Considerar casos diferentes os nomes de ficheiro que de outro modo serían " +"idénticos" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Iguais" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Mostrar idénticos" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Novo" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Mostrar novo" + +#: ../data/ui/dirdiff.ui.h:16 +msgid "Modified" +msgstr "Modificado" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Mostrar modificados" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Filtros" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Estabelecer filtros activos" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Activo" +msgid "Editable List" +msgstr "Editar lista" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Engadir novo filtro" +msgid "Active" +msgstr "Activo" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Editar lista" +msgid "Column Name" +msgstr "Nome da columna" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "_Baixar" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "Eng_adir" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:644 +msgid "_Remove" +msgstr "_Retirar" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Mover o elemento cara arriba" + +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "S_ubir" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" msgstr "Mover o elemento cara abaixo" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Mover o elemento cara arriba" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "_Baixar" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:156 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:324 +#: ../meld/vcview.py:174 msgid "Name" msgstr "Nome" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Patrón" -#: ../data/ui/EditableList.ui.h:10 -msgid "Remove selected filter" -msgstr "Eliminar o filtro seleccionado" - -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:121 -msgid "_Add" -msgstr "Eng_adir" +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Engadir novo filtro" -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:123 -msgid "_Remove" -msgstr "Elimina_r" +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Retirar o filtro seleccionado" #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Gardar os ficheiros modificados?" +msgid "Save changes to documents before closing?" +msgstr "Desexa gardar cambios nos documentos antes de gardar?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Algúns ficheiros foron modificados.\n" -"Cales quere gardar?" +msgid "If you don't save, changes will be permanently lost." +msgstr "Se non os garda, os seus cambios perderanse permanentemente." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Pechar _sen gardar" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Rexeitar os cambios" +msgid "_Cancel" +msgstr "_Cancelar" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "Gardar os _seleccionados" +msgid "_Save" +msgstr "_Gardar" + +#: ../data/ui/filediff.ui.h:6 +msgid "Revert unsaved changes to documents?" +msgstr "Desexa reverter os cambios non gardados nos documentos?" + +#: ../data/ui/filediff.ui.h:7 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "" +"Os cambios realizados nos seguintes documentos perderanse permanentemente:\n" + +#: ../data/ui/filediff.ui.h:9 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Este ficheiro non se pode sobrescribir. Pode premer aquí para desbloquear " +"este ficheiro e facer cambios de todas formas, aínda así os cambios debe " +"gardalos nun ficheiro novo." + +#: ../data/ui/filediff.ui.h:10 ../meld/filediff.py:299 +msgid "Lock scrolling of all panes" +msgstr "Bloquear o desprazamento de todos os paneis" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "E_xpresión regular" +msgid "_Replace" +msgstr "Substituí_r" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "Substituír _todo" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Substituír _con" +msgid "_Previous" +msgstr "_Anterior" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "Pa_labra completa" +msgid "_Next" +msgstr "Segui_nte" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "Diferenciar _maiúsculas de minúsculas" +msgid "Find:" +msgstr "Buscar:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "Segui_nte" +msgid "Replace _with:" +msgstr "Substituír _con:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Anterior" +msgid "_Match case" +msgstr "_Coincidir coa capitalización" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "Substituí_r" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Pa_labra completa" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "Bu_scar por:" +msgid "Regular e_xpression" +msgstr "Expresión regular" -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Escoller ficheiros" +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Axustado" #: ../data/ui/meldapp.ui.h:2 msgid "" "Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" +"Copyright © 2009-2013 Kai Willadsen" msgstr "" "Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" +"Copyright © 2009-2013 Kai Willadsen" #: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Cartafol" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Meu" +msgid "" +"Meld 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.\n" +"\n" +"Meld 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. \n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Meld é software libre, vostede pode redistribuílo e/ou modificalo baixo os " +"termos da Licenza Pública Xeral de GNU publicada pola Free Software " +"Foundation, tanto a versión 2 como as posteriores.\n" +"\n" +"Este programa distribúese coa esperanza de que lle sexa útil, pero SEN " +"GARANTÍA NINGUNHA, incluso sen a garantía de MERCANTIBILIDADE ou ADECUACIÓN " +"A UN PROPÓSITO EN PARTICULAR. Vexa a Licenza Pública Xeral para ter máis " +"detalles.\n" +"\n" +"Debeu recibir unha copia da Licenza Pública Xeral de GNU con este programa, " +"se non foi así vexa http://www.gnu.org/licenses/." -#. Refers to version of the file being compared #: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Orixinal" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Outro" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Seleccionar cartafol VC" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Comparación _de cartafoles" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "Comparación de _ficheiros" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "Comparación a _tres bandas" - -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "Navegador do Control de _versións" - -#: ../data/ui/meldapp.ui.h:17 msgid "translator-credits" -msgstr "Fran Dieguez , 2011." +msgstr "" +"Leandro Regueiro , 2012\n" +"Fran Diéguez , 2011\n" +"Proxecto Trasno - Tradución de software libre ao galego , 1999-2012" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Copiar ao portapapeis" +msgid "Format as Patch" +msgstr "Formatar como parche" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Crear parche" +msgid "Use differences between:" +msgstr "Usar as diferencias entre:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Crear un parche" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Paneis esquerdo e do medio" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Paneis dereito e do medio" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Usar as diferencias entre:" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "Dirección _inversa do parche" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Copiar ao portapapeis" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:124 +msgid "Save Patch" +msgstr "Gardar parche" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Pantalla" +msgid "Left is remote, right is local" +msgstr "Á esquerda está o remoto, á dereita o local" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Non _dividir as palabras en dúas liñas" +msgid "Left is local, right is remote" +msgstr "Á esquerda está o local, á dereita o remoto" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Orde do edito_r:" +msgid "Meld Preferences" +msgstr "Preferencias de Meld" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Editor" +msgid "Font" +msgstr "Tipo de letra" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Activar o a_xuste de texto" +msgid "_Use the system fixed width font" +msgstr "Usar o tipo de letra de ancho fixo do sistema" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Codificación" +msgid "_Editor font:" +msgstr "Tipo de letra do _editor: " #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Editor externo" +msgid "Display" +msgstr "Pantalla" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filtros de ficheiro" +msgid "_Tab width:" +msgstr "Ancho do _tabulador:" #: ../data/ui/preferences.ui.h:9 -msgid "Font" -msgstr "Tipo de letra" +msgid "_Insert spaces instead of tabs" +msgstr "Insertar e_spazos no lugar de tabuladores" #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Ignorar os cambios que insiran ou borren liñas en branco" +msgid "Enable text _wrapping" +msgstr "Activar o a_xuste de texto" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Ignorar as ligazóns simbólicas" +msgid "Do not _split words over two lines" +msgstr "Non _dividir as palabras en dúas liñas" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Cargando" +msgid "Highlight _current line" +msgstr "Realzar a liña a_ctual" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Preferencias de Meld" - -#: ../data/ui/preferences.ui.h:14 msgid "Show _line numbers" msgstr "Mostrar os números de _liña" -#: ../data/ui/preferences.ui.h:15 +#: ../data/ui/preferences.ui.h:14 msgid "Show w_hitespace" msgstr "Mostrar espazos en _branco" +#: ../data/ui/preferences.ui.h:15 +msgid "Use s_yntax highlighting" +msgstr "Usar realce de _sintaxe" + #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filtros de texto" +msgid "External Editor" +msgstr "Editor externo" #: ../data/ui/preferences.ui.h:17 msgid "Use _default system editor" msgstr "Usar o editor pre_definido do sistema" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Usar resaltado de _sintaxis" +msgid "Edito_r command:" +msgstr "Orde do edito_r:" #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Ao cargar, tentar en orde estas codificacións. (p.ex. utf8, iso8859)" +msgid "Editor" +msgstr "Editor" #: ../data/ui/preferences.ui.h:20 +msgid "Shallow Comparison" +msgstr "Comparación superficial" + +#: ../data/ui/preferences.ui.h:21 +msgid "C_ompare files based only on size and timestamp" +msgstr "C_omparar ficheiros baseándose só no tamaño e marca de tempo" + +#: ../data/ui/preferences.ui.h:22 +msgid "_Timestamp resolution:" +msgstr "Resolución da _marca de tempo:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Symbolic Links" +msgstr "Ligazóns simbólicas" + +#: ../data/ui/preferences.ui.h:24 +msgid "Ignore symbolic links" +msgstr "Ignorar as ligazóns simbólicas" + +#: ../data/ui/preferences.ui.h:25 +msgid "Visible Columns" +msgstr "Columnas visíbeis" + +#: ../data/ui/preferences.ui.h:26 +msgid "Folder Comparisons" +msgstr "Comparación de cartafoles" + +#: ../data/ui/preferences.ui.h:27 +msgid "Version Comparisons" +msgstr "Comparacións de versión" + +#: ../data/ui/preferences.ui.h:28 +msgid "_When comparing file revisions:" +msgstr "_Ao comparar revisións de ficheiros:" + +#: ../data/ui/preferences.ui.h:29 +msgid "Commit Messages" +msgstr "Mensaxe de remisión" + +#: ../data/ui/preferences.ui.h:30 +msgid "Show _right margin at:" +msgstr "Mostrar a marxe de_reita en:" + +#: ../data/ui/preferences.ui.h:31 +msgid "Automatically _break lines at right margin on commit" +msgstr "Cor_tar liñas automaticamente na marxe dereita ao remitir" + +#: ../data/ui/preferences.ui.h:32 +msgid "Version Control" +msgstr "Control de versións" + +#: ../data/ui/preferences.ui.h:33 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " "separated by spaces." msgstr "" -"Ao realizar a comparación de cartafoles, pode filtrar a saída de ficheiros e " -"cartafoles polo nome. Cada patrón é unha lista de comodíns de shell " +"Ao realizar a comparación de directorios, pode filtrar a saída de ficheiros " +"e cartafoles polo nome. Cada patrón é unha lista de comodíns de shell " "separados por espazos." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:34 ../meld/meldwindow.py:122 +msgid "File Filters" +msgstr "Filtros de ficheiro" + +#: ../data/ui/preferences.ui.h:35 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -336,170 +497,257 @@ "Se a expresión contén grupos, só o grupos son substituídos. Ver o manual de " "usuario para máis detalles." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "Tipo de letra do _editor: " +#: ../data/ui/preferences.ui.h:36 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Ignorar os cambios que insiran ou eliminen liñas en branco" -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "Insertar e_spazos no lugar de tabuladores" +#: ../data/ui/preferences.ui.h:37 +msgid "Text Filters" +msgstr "Filtros de texto" -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "Ancho do _tabulador:" +#: ../data/ui/preferences.ui.h:38 +msgid "Loading" +msgstr "Cargando" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "Usar o tipo de letra de ancho fixo do sistema" +#: ../data/ui/preferences.ui.h:39 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "Ao cargar, tentar en orde estas codificacións. (p.ex. utf8, iso8859)" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Remitir os ficheiros" +#: ../data/ui/preferences.ui.h:40 +msgid "Encoding" +msgstr "Codificación" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Opcións de comparación" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:681 +msgid "New comparison" +msgstr "Nova comparación" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Comparación de ficheiros" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Comparación de directorios" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Mostrar control de versións" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Comparación a _3 bandas" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Seleccionar terceiro ficheiro" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Seleccionar segundo ficheiro" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Seleccionar primeiro ficheiro" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Seleccionar primeiro cartafol" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Seleccionar segundo cartafol" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Seleccionar terceiro cartafol" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Seleccionar un cartafol controlado por versións" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "Comparación _baleira" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "C_omparar" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Data" +msgid "Co_mmit..." +msgstr "Re_mitir…" #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Copia local contra unha revisión remota" +msgid "Commit changes to version control" +msgstr "Remitir cambios ao control de versións" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Copia local contra a mesma revisión remota" +msgid "_Update" +msgstr "Act_ualizar" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Mensaxe de rexistro" +msgid "Update working copy from version control" +msgstr "Actualizar a copia local desde o sistema de control de versións" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Rexistros anteriores" - -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:179 -msgid "Tag" -msgstr "Etiqueta" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "Rexistro CV" - -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "_Comparar" +msgid "_Push" +msgstr "_Enviar" -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Comparar o seleccionado" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Enviar cambios locais ao remoto" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Engadir ao control de versións" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Eliminar do control de versións" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Marc_ar como solucionado" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Marcar como solucionado no control de versións" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Re_verter" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Reverter a copia local ao seu estado orixinal" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Eliminar desde a copia local" -#: ../meld/dirdiff.py:228 -msgid "Copy _Left" -msgstr "Copiar á _esquerda" - -#: ../meld/dirdiff.py:228 -msgid "Copy to left" -msgstr "Copiar á esquerda" - -#: ../meld/dirdiff.py:229 -msgid "Copy _Right" -msgstr "Copiar á _dereita" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "Apl_anar" -#: ../meld/dirdiff.py:229 -msgid "Copy to right" -msgstr "Copiar á dereita" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Rasar cartafoles" -#: ../meld/dirdiff.py:230 -msgid "Delete selected" -msgstr "Borrar o seleccionado" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "_Modificado" -#: ../meld/dirdiff.py:231 ../meld/filediff.py:1146 -msgid "Hide" -msgstr "Ocultar" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Mostrar ficheiros modificados" -#: ../meld/dirdiff.py:231 -msgid "Hide selected" -msgstr "Ocultar o seleccionado" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Normal" -#: ../meld/dirdiff.py:235 -msgid "Case" -msgstr "Capitalización" - -#: ../meld/dirdiff.py:235 -msgid "Ignore case of entries" -msgstr "Ignorar maiúsculas e minúsculas das entradas" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Mostrar ficheiros normais" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "Sen _versión" -#: ../meld/dirdiff.py:236 -msgid "Same" -msgstr "Iguais" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Mostrar ficheiros sen versión" -#: ../meld/dirdiff.py:236 -msgid "Show identical" -msgstr "Mostrar idénticos" +#: ../data/ui/vcview.ui.h:26 +msgid "Ignored" +msgstr "Ignorado" -#: ../meld/dirdiff.py:237 -msgid "New" -msgstr "Novo" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Mostrar ficheiros ignorados" -#: ../meld/dirdiff.py:237 -msgid "Show new" -msgstr "Mostrar novo" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Remitir" -#: ../meld/dirdiff.py:238 -msgid "Modified" -msgstr "Modificado" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Remitir os ficheiros" -#: ../meld/dirdiff.py:238 ../meld/vcview.py:131 -msgid "Show modified" -msgstr "Mostrar modificados" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Mensaxe de rexistro" -#: ../meld/dirdiff.py:240 -msgid "Filters" -msgstr "Filtros" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Rexistros anteriores:" -#: ../meld/dirdiff.py:240 -msgid "Set active filters" -msgstr "Estabelecer filtros activos" +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "Remitir" -#: ../meld/dirdiff.py:357 +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Remitir cambios locais ao remoto?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"As remisións a enviar determínaas o seu sistema de control de versións." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Enviar remisións" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:342 +msgid "Size" +msgstr "Tamaño" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:350 +msgid "Modification time" +msgstr "Hora de modificación" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:358 +msgid "Permissions" +msgstr "Permisos" + +#: ../meld/dirdiff.py:492 #, python-format msgid "Hide %s" msgstr "Ocultar %s" -#: ../meld/dirdiff.py:460 ../meld/dirdiff.py:473 ../meld/vcview.py:304 -#: ../meld/vcview.py:332 +#: ../meld/dirdiff.py:618 ../meld/dirdiff.py:637 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Analizando %s" -#: ../meld/dirdiff.py:572 +#: ../meld/dirdiff.py:737 #, python-format msgid "[%s] Done" msgstr "[%s] Feito" -#: ../meld/dirdiff.py:576 +#: ../meld/dirdiff.py:743 msgid "Multiple errors occurred while scanning this folder" msgstr "Producíronse varios erros ao analizar este cartafol" -#: ../meld/dirdiff.py:577 +#: ../meld/dirdiff.py:744 msgid "Files with invalid encodings found" msgstr "Atopáronse ficheiros con modificacións non válidas" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:746 msgid "Some files were in an incorrect encoding. The names are something like:" msgstr "" "Algúns ficheiros teñen unha codificación incorrecta. Os nomes son como isto:" -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:748 msgid "Files hidden by case insensitive comparison" msgstr "Ficheiros agochados por unha comparación non sensíbel a capitalización" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:583 +#: ../meld/dirdiff.py:750 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -508,16 +756,17 @@ "sistema de ficheiros que diferencia maiúsculas de minúsculas. Algúns " "ficheiros non están visíbeis:" -#: ../meld/dirdiff.py:594 +#: ../meld/dirdiff.py:761 #, python-format msgid "'%s' hidden by '%s'" msgstr "«%s» agochado por «%s»" -#: ../meld/dirdiff.py:619 ../meld/filediff.py:1009 ../meld/filediff.py:1150 +#: ../meld/dirdiff.py:786 ../meld/filediff.py:1095 ../meld/filediff.py:1381 +#: ../meld/filediff.py:1411 ../meld/filediff.py:1413 msgid "Hi_de" msgstr "Ocu_ltar" -#: ../meld/dirdiff.py:669 +#: ../meld/dirdiff.py:817 #, python-format msgid "" "'%s' exists.\n" @@ -526,241 +775,255 @@ "«%s» existe.\n" "Sobrescribir?" -#: ../meld/dirdiff.py:676 +#: ../meld/dirdiff.py:825 +msgid "Error copying file" +msgstr "Produciuse un erro ao copiar o ficheiro" + +#: ../meld/dirdiff.py:826 #, python-format msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Produciuse un erro ao copiar «%s» a «%s»\n" +"Non foi posíbel copiar «%s»\n" +"en «%s»\n" "\n" "%s." -#: ../meld/dirdiff.py:694 ../meld/vcview.py:504 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"«%s» é un cartafol.\n" -"Eliminar recursivamente?" - -#: ../meld/dirdiff.py:701 ../meld/vcview.py:509 +#: ../meld/dirdiff.py:849 #, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Produciuse un erro ao eliminar %s\n" -"\n" -"%s." +msgid "Error deleting %s" +msgstr "Produciuse un erro ao eliminar %s" -#: ../meld/dirdiff.py:713 +#: ../meld/dirdiff.py:980 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i segundo" msgstr[1] "%i segundos" -#: ../meld/dirdiff.py:714 +#: ../meld/dirdiff.py:981 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minuto" msgstr[1] "%i minutos" -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:982 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i hora" msgstr[1] "%i horas" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:983 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i día" msgstr[1] "%i días" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:984 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i semana" msgstr[1] "%i semanas" -#: ../meld/dirdiff.py:718 +#: ../meld/dirdiff.py:985 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i mes" msgstr[1] "%i meses" -#: ../meld/dirdiff.py:719 +#: ../meld/dirdiff.py:986 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i ano" msgstr[1] "%i anos" -#: ../meld/filediff.py:298 -msgid "Format as patch..." -msgstr "Formatar o parche como…" +#: ../meld/filediff.py:227 +msgid "Format as Patch..." +msgstr "Formatar como parche…" -#: ../meld/filediff.py:298 +#: ../meld/filediff.py:228 msgid "Create a patch using differences between files" msgstr "Crear un parche usando as diferenzas entre os ficheiros" -#: ../meld/filediff.py:299 -msgid "Previous conflict" +#: ../meld/filediff.py:230 +msgid "Save A_ll" +msgstr "G_ardar todo" + +#: ../meld/filediff.py:231 +msgid "Save all files in the current comparison" +msgstr "Garda todos os ficheiros na comparación actual" + +#: ../meld/filediff.py:234 +msgid "Revert files to their saved versions" +msgstr "Reverte os ficheiros ás súas versións gardadas" + +#: ../meld/filediff.py:236 +msgid "Add Synchronization Point" +msgstr "Engadir punto de sincronización" + +#: ../meld/filediff.py:237 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Engade un punto de sincronización manual dos cambios entre ficheiros" + +#: ../meld/filediff.py:240 +msgid "Clear Synchronization Points" +msgstr "Limpar puntos de sincronización" + +#: ../meld/filediff.py:241 +msgid "Clear manual change sychronization points" +msgstr "Limpar os puntos de sincronización de cambios manuais" + +#: ../meld/filediff.py:243 +msgid "Previous Conflict" msgstr "Conflito anterior" -#: ../meld/filediff.py:299 +#: ../meld/filediff.py:244 msgid "Go to the previous conflict" msgstr "Ir ao conflito anterior" -#: ../meld/filediff.py:300 -msgid "Next conflict" +#: ../meld/filediff.py:246 +msgid "Next Conflict" msgstr "Seguinte conflito" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:247 msgid "Go to the next conflict" msgstr "Ir ao seguinte conflito" -#: ../meld/filediff.py:301 -msgid "Push to left" +#: ../meld/filediff.py:249 +msgid "Push to Left" msgstr "Empurrar á esquerda" -#: ../meld/filediff.py:301 +#: ../meld/filediff.py:250 msgid "Push current change to the left" msgstr "Empurrar o cambio actual á esquerda" -#: ../meld/filediff.py:302 -msgid "Push to right" +#: ../meld/filediff.py:253 +msgid "Push to Right" msgstr "Empurrar á dereita" -#: ../meld/filediff.py:302 +#: ../meld/filediff.py:254 msgid "Push current change to the right" msgstr "Empurrar o cambio actual á dereita" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:304 -msgid "Pull from left" +#: ../meld/filediff.py:258 +msgid "Pull from Left" msgstr "Traer desde á esquerda" -#: ../meld/filediff.py:304 +#: ../meld/filediff.py:259 msgid "Pull change from the left" msgstr "Traer o cambio desde á esquerda" -#: ../meld/filediff.py:305 -msgid "Pull from right" +#: ../meld/filediff.py:262 +msgid "Pull from Right" msgstr "Traer desde á dereita" -#: ../meld/filediff.py:305 +#: ../meld/filediff.py:263 msgid "Pull change from the right" msgstr "Traer o cambio desde á dereita" -#: ../meld/filediff.py:306 -msgid "Copy above left" +#: ../meld/filediff.py:265 +msgid "Copy Above Left" msgstr "Copiar por enriba da esquerda" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:266 msgid "Copy change above the left chunk" msgstr "Copiar o cambio por enriba da parte esquerda" -#: ../meld/filediff.py:307 -msgid "Copy below left" +#: ../meld/filediff.py:268 +msgid "Copy Below Left" msgstr "Copiar por debaixo da esquerda" -#: ../meld/filediff.py:307 +#: ../meld/filediff.py:269 msgid "Copy change below the left chunk" msgstr "Copiar o cambio por embaixo da parte esquerda" -#: ../meld/filediff.py:308 -msgid "Copy above right" +#: ../meld/filediff.py:271 +msgid "Copy Above Right" msgstr "Copiar por enriba da dereita" -#: ../meld/filediff.py:308 +#: ../meld/filediff.py:272 msgid "Copy change above the right chunk" msgstr "Copiar o cambio por enriba da parte dereita" -#: ../meld/filediff.py:309 -msgid "Copy below right" +#: ../meld/filediff.py:274 +msgid "Copy Below Right" msgstr "Copiar por debaixo da dereita" -#: ../meld/filediff.py:309 +#: ../meld/filediff.py:275 msgid "Copy change below the right chunk" msgstr "Copiar o cambio por embaixo da parte dereita" -#: ../meld/filediff.py:310 +#: ../meld/filediff.py:277 msgid "Delete" -msgstr "Borrar" +msgstr "Eliminar" -#: ../meld/filediff.py:310 +#: ../meld/filediff.py:278 msgid "Delete change" -msgstr "Borrar o cambio" +msgstr "Eliminar o cambio" -#: ../meld/filediff.py:311 -msgid "Merge all changes from left" +#: ../meld/filediff.py:280 +msgid "Merge All from Left" msgstr "Combinar todos os cambios desde a esquerda" -#: ../meld/filediff.py:311 +#: ../meld/filediff.py:281 msgid "Merge all non-conflicting changes from the left" msgstr "Combinar todos os cambios non conflitivos desde a esquerda" -#: ../meld/filediff.py:312 -msgid "Merge all changes from right" +#: ../meld/filediff.py:283 +msgid "Merge All from Right" msgstr "Combinar todos os cambios desde a dereita" -#: ../meld/filediff.py:312 +#: ../meld/filediff.py:284 msgid "Merge all non-conflicting changes from the right" msgstr "Combinar todos os cambios non conflitivos desde a dereita" -#: ../meld/filediff.py:313 -msgid "Merge all non-conflicting" -msgstr "Combinar todos os cambios non conflitivos" +#: ../meld/filediff.py:286 +msgid "Merge All" +msgstr "Combinar todos" -#: ../meld/filediff.py:313 +#: ../meld/filediff.py:287 msgid "Merge all non-conflicting changes from left and right panes" msgstr "" "Combinar todos os cambios non conflitivos desde os paneis da esquerda e " "dereita" -#: ../meld/filediff.py:314 -msgid "Cycle through documents" -msgstr "Cambiar entre documentos" +#: ../meld/filediff.py:291 +msgid "Cycle Through Documents" +msgstr "Cambiar ciclicamente entre documentos" -#: ../meld/filediff.py:314 +#: ../meld/filediff.py:292 msgid "Move keyboard focus to the next document in this comparison" msgstr "Mover o foco do teclado ao seguinte documento desta comparación" -#: ../meld/filediff.py:318 -msgid "Lock scrolling" -msgstr "Bloquear o desprazamento" - -#: ../meld/filediff.py:319 -msgid "Lock scrolling of all panes" -msgstr "Bloquear o desprazamento de tódolos paneis" +#: ../meld/filediff.py:298 +msgid "Lock Scrolling" +msgstr "Bloquear desprazamento" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:411 +#: ../meld/filediff.py:420 msgid "INS" msgstr "INS" -#: ../meld/filediff.py:411 +#: ../meld/filediff.py:420 msgid "OVR" msgstr "SOB" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:413 +#: ../meld/filediff.py:422 #, python-format msgid "Ln %i, Col %i" msgstr "Li %i, Col %i" -#: ../meld/filediff.py:723 +#: ../meld/filediff.py:757 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " @@ -769,47 +1032,42 @@ "O filtro «%s» cambiou o número de liñas no ficheiro. A comparación será " "incorrecta. Ver o manual de usuario para máis detalles." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:810 -msgid "" -msgstr "" - -#: ../meld/filediff.py:997 +#: ../meld/filediff.py:1083 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Estabelecer número de paneis" -#: ../meld/filediff.py:1003 +#: ../meld/filediff.py:1089 #, python-format msgid "[%s] Opening files" msgstr "[%s] Abrindo os ficheiros" -#: ../meld/filediff.py:1027 ../meld/filediff.py:1036 ../meld/filediff.py:1048 -#: ../meld/filediff.py:1054 +#: ../meld/filediff.py:1112 ../meld/filediff.py:1122 ../meld/filediff.py:1135 +#: ../meld/filediff.py:1141 msgid "Could not read file" msgstr "Non foi posíbel ler o ficheiro" -#: ../meld/filediff.py:1028 +#: ../meld/filediff.py:1113 #, python-format msgid "[%s] Reading files" msgstr "[%s] Lendo os ficheiros" -#: ../meld/filediff.py:1037 +#: ../meld/filediff.py:1123 #, python-format msgid "%s appears to be a binary file." msgstr "%s semella ser un ficheiro binario." -#: ../meld/filediff.py:1049 +#: ../meld/filediff.py:1136 #, python-format msgid "%s is not in encodings: %s" msgstr "%s non está na codificación: %s" -#: ../meld/filediff.py:1079 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1170 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Calculando as diferenzas" -#: ../meld/filediff.py:1137 +#: ../meld/filediff.py:1370 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" @@ -817,15 +1075,36 @@ "Se están usando filtros de texto, e poden estar agochando diferenzas entre " "ficheiros. Quere comparar os ficheiros non filtrados?" -#: ../meld/filediff.py:1143 +#: ../meld/filediff.py:1376 msgid "Files are identical" msgstr "Os ficheiros son idénticos" -#: ../meld/filediff.py:1153 +#: ../meld/filediff.py:1384 msgid "Show without filters" -msgstr "Mostrar ficheiros ignorados" +msgstr "Mostrar sen filtros" + +#: ../meld/filediff.py:1406 +msgid "Change highlighting incomplete" +msgstr "Cambiar realzado incompleto" + +#: ../meld/filediff.py:1407 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Algúns cambios non se realzan porque son demasiado longos. Pode forzar a " +"Meld que vote máis tempo realzando cambios máis largos, porén isto pode ser " +"lento." + +#: ../meld/filediff.py:1415 +msgid "Keep highlighting" +msgstr "Manter realzado" -#: ../meld/filediff.py:1343 +#: ../meld/filediff.py:1417 +msgid "_Keep highlighting" +msgstr "_Manter realzado" + +#: ../meld/filediff.py:1549 #, python-format msgid "" "\"%s\" exists!\n" @@ -834,7 +1113,7 @@ "\"%s\" existe!\n" "Sobrescribir?" -#: ../meld/filediff.py:1356 +#: ../meld/filediff.py:1562 #, python-format msgid "" "Error writing to %s\n" @@ -845,12 +1124,19 @@ "\n" "%s." -#: ../meld/filediff.py:1365 -#, python-format -msgid "Choose a name for buffer %i." -msgstr "Escolla un nome para o búfer %i." +#: ../meld/filediff.py:1573 +msgid "Save Left Pane As" +msgstr "Gardar panel da esquerda como" + +#: ../meld/filediff.py:1575 +msgid "Save Middle Pane As" +msgstr "Gardar panel intermedio como" + +#: ../meld/filediff.py:1577 +msgid "Save Right Pane As" +msgstr "Gardar panel da dereita como" -#: ../meld/filediff.py:1380 +#: ../meld/filediff.py:1598 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -861,7 +1147,7 @@ "\n" "Que formato quere usar?" -#: ../meld/filediff.py:1396 +#: ../meld/filediff.py:1614 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -870,659 +1156,861 @@ "«%s» contén caracteres non codificábeis con «%s»\n" "Quere gardar como UTF-8?" -#: ../meld/filediff.py:1455 -#, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"Ao recargar rexeitará os cambios en:\n" -"%s\n" -"\n" -"Non é posíbel desfacer esta operación." +#: ../meld/filediff.py:1982 +msgid "Live comparison updating disabled" +msgstr "Actualización de comparación en vivo desactivada" + +#: ../meld/filediff.py:1983 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" +"A actualización en vivo de comparacións está desactivada cando os puntos de " +"sincronización está activo. Aínda pode actualizar a comparación manualmente, " +"as actualizacións en vivo volverán a activarse cando se limpen os puntos de " +"sincronización." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:51 #, python-format msgid "[%s] Merging files" msgstr "[%s] Combinando os ficheiros" -#: ../meld/meldapp.py:149 +#: ../meld/meldapp.py:95 msgid "wrong number of arguments supplied to --diff" msgstr "número incorrecto de argumentos proporcionado a --diff" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:99 msgid "Start with an empty window" msgstr "Comezar cunha xanela baleira" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:100 ../meld/meldapp.py:102 ../meld/meldapp.py:106 msgid "file" msgstr "ficheiro" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:100 ../meld/meldapp.py:104 ../meld/meldapp.py:106 msgid "dir" msgstr "cartafol" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:101 msgid "Start a version control comparison" msgstr "Comezar unha comparación no control de versións" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:103 msgid "Start a 2- or 3-way file comparison" msgstr "Comezar unha comparación de ficheiros a 2 ou 3 bandas" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:105 msgid "Start a 2- or 3-way directory comparison" msgstr "Comezar unha comparación de cartafol a 2 ou 3 bandas" -#: ../meld/meldapp.py:157 +#: ../meld/meldapp.py:107 msgid "Start a comparison between file and dir/file" msgstr "Comezar unha comparación entre ficheiro e dir/file" -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:114 msgid "Meld is a file and directory comparison tool." msgstr "Meld é un ferramenta de comparación de ficheiros e cartafoles." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:117 msgid "Set label to use instead of file name" msgstr "Estabelecer a etiqueta a usar en vez do nome do ficheiro" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:119 +msgid "Open a new tab in an already running instance" +msgstr "Abre unha nova lapela nunha instancia en execución" + +#: ../meld/meldapp.py:122 msgid "Automatically compare all differing files on startup" msgstr "Comparar automaticamente ao inicio todos os ficheiros distintos" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:124 msgid "Ignored for compatibility" msgstr "Ignorado para compatibilidade" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:127 msgid "Set the target file for saving a merge result" -msgstr "Estabelecer o ficheiro de destino para gardar o resultado do cambio" +msgstr "Definir o ficheiro de destino para gardar o resultado da combinación" + +#: ../meld/meldapp.py:129 +msgid "Automatically merge files" +msgstr "Combinar ficheiros automaticamente" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." +#: ../meld/meldapp.py:132 +msgid "Load a saved comparison from a Meld comparison file" msgstr "" -"Crea un separador coas diferenzas dos 3 cartafoles ou ficheiros " -"proporcionados" +"Cargar unha comparación gardada desde un ficheiro de comparación de Meld" -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:135 +msgid "Create a diff tab for the supplied files or folders" +msgstr "" +"Crea unha lapela coas diferenzas para os directorios ou ficheiros fornecidos." + +#: ../meld/meldapp.py:138 #, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "demasiados argumentos (buscábanse 0-4, obtivéronse %d)" +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "demasiados argumentos (buscábanse 0-3, obtivéronse %d)" + +#: ../meld/meldapp.py:141 +msgid "can't auto-merge less than 3 files" +msgstr "non é posíbel autocombinar menos de 3 ficheiros" + +#: ../meld/meldapp.py:143 +msgid "can't auto-merge directories" +msgstr "non é posíbel autocombinar cartafoles" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "Non é posíbel comparar unha mestura de ficheiros e cartafoles." +#: ../meld/meldapp.py:149 +msgid "D-Bus error; comparisons will open in a new window." +msgstr "Erro de D-Bus; as comparacións abriranse nunha nova xanela." + +#: ../meld/meldapp.py:167 +msgid "Error reading saved comparison file" +msgstr "Produciuse un erro ao ler o ficheiro de comparación gardado" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:89 +msgid "" +msgstr "" -#: ../meld/melddoc.py:51 ../meld/melddoc.py:52 +#: ../meld/melddoc.py:58 ../meld/melddoc.py:59 msgid "untitled" msgstr "sen título" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:61 msgid "_File" msgstr "_Ficheiro" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Novo..." +#: ../meld/meldwindow.py:62 +msgid "_New Comparison..." +msgstr "_Nova comparación…" -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:63 msgid "Start a new comparison" msgstr "Comezar unha nova comparación" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:66 msgid "Save the current file" msgstr "Gardar o ficheiro actual" -#: ../meld/meldwindow.py:129 +#: ../meld/meldwindow.py:68 +msgid "Save As..." +msgstr "Gardar como…" + +#: ../meld/meldwindow.py:69 +msgid "Save the current file with a different name" +msgstr "Gardar o ficheiro actual con un nome diferente" + +#: ../meld/meldwindow.py:72 msgid "Close the current file" msgstr "Pechar o ficheiro actual" -#: ../meld/meldwindow.py:130 +#: ../meld/meldwindow.py:75 msgid "Quit the program" msgstr "Saír do programa" -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:78 msgid "_Edit" msgstr "_Editar" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:80 msgid "Undo the last action" msgstr "Desfacer a última acción" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:83 msgid "Redo the last undone action" msgstr "Refacer a última acción desfeita" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:85 msgid "Cut the selection" msgstr "Cortar a selección" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:87 msgid "Copy the selection" msgstr "Copiar a selección" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:89 msgid "Paste the clipboard" msgstr "Pegar o contido do portapapeis" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:91 +msgid "Find..." +msgstr "Buscar…" + +#: ../meld/meldwindow.py:91 msgid "Search for text" msgstr "Buscar texto" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:93 msgid "Find Ne_xt" msgstr "Buscar a _seguinte" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:94 msgid "Search forwards for the same text" msgstr "Buscar cara a adiante o mesmo texto" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:96 msgid "Find _Previous" msgstr "_Anterior" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:97 msgid "Search backwards for the same text" msgstr "Buscar cara a adiante o mesmo texto" -#: ../meld/meldwindow.py:141 +#: ../meld/meldwindow.py:100 +msgid "_Replace..." +msgstr "Substituí_r…" + +#: ../meld/meldwindow.py:101 msgid "Find and replace text" msgstr "Buscar e substituír texto" -#: ../meld/meldwindow.py:142 +#: ../meld/meldwindow.py:103 msgid "Prefere_nces" msgstr "Prefere_ncias" -#: ../meld/meldwindow.py:142 +#: ../meld/meldwindow.py:104 msgid "Configure the application" msgstr "Configurar o aplicativo" -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:107 msgid "_Changes" msgstr "_Cambios" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:108 +msgid "Next Change" msgstr "Seguinte cambio" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:109 msgid "Go to the next change" msgstr "Ir ao seguinte cambio" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:111 +msgid "Previous Change" msgstr "Anterior cambio" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:112 msgid "Go to the previous change" msgstr "Ir ao cambio anterior" -#: ../meld/meldwindow.py:147 -msgid "Open externally" +#: ../meld/meldwindow.py:114 +msgid "Open Externally" msgstr "Abrir externamente" -#: ../meld/meldwindow.py:147 +#: ../meld/meldwindow.py:115 msgid "Open selected file or directory in the default external application" msgstr "" "Abrir o ficheiro ou cartafol seleccionado no aplicativo externo " "predeterminado" -#: ../meld/meldwindow.py:149 +#: ../meld/meldwindow.py:119 msgid "_View" msgstr "_Ver" -#: ../meld/meldwindow.py:150 -msgid "File status" +#: ../meld/meldwindow.py:120 +msgid "File Status" msgstr "Estado do ficheiro" -#: ../meld/meldwindow.py:151 -msgid "Version status" +#: ../meld/meldwindow.py:121 +msgid "Version Status" msgstr "Estado da versión" -#: ../meld/meldwindow.py:152 -msgid "File filters" -msgstr "Filtros de ficheiro" - -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:124 msgid "Stop the current action" msgstr "Deter a acción actual" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:127 msgid "Refresh the view" -msgstr "Actualizar a visualización" +msgstr "Actualizar a vista" -#: ../meld/meldwindow.py:155 -msgid "Reload" -msgstr "Recargar" - -#: ../meld/meldwindow.py:155 -msgid "Reload the comparison" -msgstr "Recargar a comparación" - -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:130 msgid "_Tabs" msgstr "_Lapelas" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:131 msgid "_Previous Tab" msgstr "_Anterior" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:132 msgid "Activate previous tab" -msgstr "Ir ao cambio anterior" +msgstr "Ir á lapela anterior" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:134 msgid "_Next Tab" msgstr "Segui_nte" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:135 msgid "Activate next tab" msgstr "Activar a seguinte lapela" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:138 msgid "Move Tab _Left" msgstr "Copiar á esquerda" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:139 msgid "Move current tab to left" -msgstr "Empurrar o cambio actual á esquerda" +msgstr "Mover a lapela actual á esquerda" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:142 msgid "Move Tab _Right" msgstr "Copiar á dereita" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:143 msgid "Move current tab to right" -msgstr "Empurrar o cambio actual á dereita" +msgstr "Mover a lapela actual á dereita" -#: ../meld/meldwindow.py:163 +#: ../meld/meldwindow.py:146 msgid "_Help" msgstr "A_xuda" -#: ../meld/meldwindow.py:164 +#: ../meld/meldwindow.py:147 msgid "_Contents" msgstr "_Contidos" -#: ../meld/meldwindow.py:164 +#: ../meld/meldwindow.py:148 msgid "Open the Meld manual" msgstr "Abrir o manual do Meld" -#: ../meld/meldwindow.py:165 +#: ../meld/meldwindow.py:149 msgid "Report _Bug" -msgstr "_Informar dun erro" +msgstr "_Informar dun fallo" -#: ../meld/meldwindow.py:165 +#: ../meld/meldwindow.py:150 msgid "Report a bug in Meld" -msgstr "Informe dun erro en Meld" +msgstr "Informe dun fallo en Meld" -#: ../meld/meldwindow.py:166 +#: ../meld/meldwindow.py:153 msgid "About this program" -msgstr "Sobre este aplicativo" +msgstr "Sobre este programa" -#: ../meld/meldwindow.py:169 -msgid "Full Screen" +#: ../meld/meldwindow.py:157 +msgid "Fullscreen" msgstr "Pantalla completa" -#: ../meld/meldwindow.py:169 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:158 +msgid "View the comparison in fullscreen" msgstr "Ver a comparación a pantalla completa" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:160 msgid "_Toolbar" msgstr "Barra de ferramen_tas" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:161 msgid "Show or hide the toolbar" msgstr "Mostrar ou ocultar a barra de ferramentas" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:163 msgid "_Statusbar" msgstr "Barra de e_stado" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:164 msgid "Show or hide the statusbar" msgstr "Mostrar ou ocultar a barra de estado" -#: ../meld/meldwindow.py:538 +#: ../meld/meldwindow.py:173 +msgid "Open Recent" +msgstr "Abrir recentes" + +#: ../meld/meldwindow.py:174 +msgid "Open recent files" +msgstr "Abrir ficheiros recentes" + +#: ../meld/meldwindow.py:601 msgid "Switch to this tab" msgstr "Cambiar a esta lapela" #. exit at first non found directory + file -#: ../meld/meldwindow.py:629 +#: ../meld/meldwindow.py:734 msgid "Cannot compare a mixture of files and directories.\n" msgstr "Non é posíbel comparar unha mestura de ficheiros e cartafoles.\n" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:189 msgid "[None]" msgstr "[Ningún]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Gardar parche como..." - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:49 msgid "label" msgstr "etiqueta" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:49 msgid "pattern" msgstr "patrón" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Só está dispoñíbel se ten instalado gnome-python-desktop" +#: ../meld/preferences.py:168 ../meld/preferences.py:240 +msgid "Only available if you have PyGtkSourceView 2 installed" +msgstr "Só está dispoñíbel se ten instalado PyGtkSourceView 2" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 +#: ../meld/preferences.py:356 msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" msgstr "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 +#: ../meld/preferences.py:358 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" +"Metadatos específicos do sistema operativo\t0\t.DS_Store ._* .Spotlight-" +"V100 .Trashes Thumbs.db Desktop.ini\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:360 #, python-format msgid "Version Control\t1\t%s\n" msgstr "Control de versións\t1\t%s\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binarios\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +#: ../meld/preferences.py:362 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +msgstr "Binarios\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +#: ../meld/preferences.py:364 +msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +msgstr "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 +#: ../meld/preferences.py:366 msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" msgstr "Palabras chave CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 +#: ../meld/preferences.py:368 msgid "C++ comment\t0\t//.*\n" msgstr "Comentario C++ \t0\t//.*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 +#: ../meld/preferences.py:370 msgid "C comment\t0\t/\\*.*?\\*/\n" msgstr "Comentario C\t0\t/\\*.*?\\*/\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 +#: ../meld/preferences.py:372 msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" msgstr "Todos os espazos en branco\t0\t[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 +#: ../meld/preferences.py:374 msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" msgstr "Espazo en branco ao inicio\t0\t^[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 +#: ../meld/preferences.py:376 msgid "Script comment\t0\t#.*" msgstr "Comentario de script\t0\t#.*" -#: ../meld/vcview.py:119 -msgid "Co_mmit" -msgstr "Remitir" - -#: ../meld/vcview.py:119 -msgid "Commit" -msgstr "Remitir" - -#: ../meld/vcview.py:120 -msgid "_Update" -msgstr "Act_ualizar" - -#: ../meld/vcview.py:120 -msgid "Update" -msgstr "Actualizar" - -#: ../meld/vcview.py:121 -msgid "Add to VC" -msgstr "Engadir a CV" - -#: ../meld/vcview.py:122 -msgid "Add _Binary" -msgstr "Engadir _binario" - -#: ../meld/vcview.py:122 -msgid "Add binary to VC" -msgstr "Engadir binario a CV" - -#: ../meld/vcview.py:123 -msgid "Remove from VC" -msgstr "Eliminar de CV" - -#: ../meld/vcview.py:124 -msgid "_Resolved" -msgstr "Soluciona_do" - -#: ../meld/vcview.py:124 -msgid "Mark as resolved for VC" -msgstr "Marcar como solucionado para o CV" - -#: ../meld/vcview.py:125 -msgid "Revert to original" -msgstr "Reverter ao orixinal" - -#: ../meld/vcview.py:126 -msgid "Delete locally" -msgstr "Borrar localmente" - -#: ../meld/vcview.py:130 -msgid "_Flatten" -msgstr "Apl_anar" - -#: ../meld/vcview.py:130 -msgid "Flatten directories" -msgstr "Rasar cartafoles" - -#: ../meld/vcview.py:131 -msgid "_Modified" -msgstr "_Modificado" - -#: ../meld/vcview.py:132 -msgid "_Normal" -msgstr "_Normal" - -#: ../meld/vcview.py:132 -msgid "Show normal" -msgstr "Mostrar normal" - -#: ../meld/vcview.py:133 -msgid "Non _VC" -msgstr "Sen C_V" - -#: ../meld/vcview.py:133 -msgid "Show unversioned files" -msgstr "Mostrar ficheiros sen versión" - -#: ../meld/vcview.py:134 -msgid "Ignored" -msgstr "Ignorado" - -#: ../meld/vcview.py:134 -msgid "Show ignored files" -msgstr "Mostrar ficheiros ignorados" +#: ../meld/recent.py:104 +msgid "Version control:" +msgstr "Control de versións:" -#: ../meld/vcview.py:176 ../meld/vcview.py:300 +#: ../meld/vcview.py:205 ../meld/vcview.py:363 msgid "Location" msgstr "Localización" -#: ../meld/vcview.py:177 +#: ../meld/vcview.py:206 msgid "Status" msgstr "Estado" -#: ../meld/vcview.py:178 -msgid "Rev" -msgstr "Rev" +#: ../meld/vcview.py:207 +msgid "Revision" +msgstr "Revisión" -#: ../meld/vcview.py:180 +#: ../meld/vcview.py:208 msgid "Options" msgstr "Opcións" -#: ../meld/vcview.py:232 -msgid "Choose one Version Control" -msgstr "Escoller un control de versións" - -#: ../meld/vcview.py:233 -msgid "Only one Version Control in this directory" -msgstr "Só control de versións neste cartafol" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:246 +#: ../meld/vcview.py:273 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "%s non está instalado" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:250 -msgid "Invalid Repository" +#: ../meld/vcview.py:277 +msgid "Invalid repository" msgstr "O repositorio non é válido" -#: ../meld/vcview.py:259 +#: ../meld/vcview.py:286 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:288 ../meld/vcview.py:296 +msgid "None" +msgstr "Ningún" + +#: ../meld/vcview.py:307 +msgid "No valid version control system found in this folder" +msgstr "Non hai ningún sistema de control de versións válido neste cartafol" + +#: ../meld/vcview.py:309 +msgid "Only one version control system found in this folder" +msgstr "Só se atopou un sistema de control de versións neste cartafol" + +#: ../meld/vcview.py:311 +msgid "Choose which version control system to use" +msgstr "Seleccione que sistema de control de versións usar" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:300 +#: ../meld/vcview.py:363 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:348 -msgid "(Empty)" -msgstr "(Baleiro)" - -#: ../meld/vcview.py:386 +#: ../meld/vcview.py:377 ../meld/vcview.py:385 #, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Obtendo as diferenzas" +msgid "Scanning %s" +msgstr "Analizando %s" -#: ../meld/vcview.py:394 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Aplicando o parche" +#: ../meld/vcview.py:418 +msgid "(Empty)" +msgstr "(Baleiro)" -#: ../meld/vcview.py:479 -msgid "Select some files first." -msgstr "Antes seleccione algúns ficheiros." +#: ../meld/vcview.py:638 +msgid "Remove folder and all its files?" +msgstr "Desexa eliminar o cartafol e todos os seus ficheiros?" -#: ../meld/vcview.py:552 -#, python-format +#: ../meld/vcview.py:640 msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"\n" -" Produciuse un fallo ao invocar a 'patch'.\n" -" \n" -" Pode ser que non estea instalado 'GNU Patch'\n" -" ou vostede usa unha versión non probada de %s.\n" -" \n" -" Envíe un informe de erro por correo electrónico a:\n" -" meld-list@gnome.org\n" -" \n" -" Contendo a seguinte información:\n" -" \n" -" - meld versión: «%s»\n" -" - tipo de software de control de código: «%s»\n" -" - versión do software de control de código: 'X.Y.Z'\n" -" - a saída de'%s algunficheiro.txt'\n" -" - camiño da orde (path): «%s»\n" -" (non necesita executa-la, xa lla proporciona\n" -" a liña de ordes) \n" -" \n" -" Substitúe 'X.Y.Z', pola versión real para o\n" -" software de control de código que vostede usa.\n" -" " - -#: ../meld/ui/findbar.py:127 +"Isto eliminará todos os ficheiros e cartafoles seleccionados, e todos os " +"ficheiros dentro de calqueda dos cartafoles seleccionados, do control de " +"versións." + +#: ../meld/vcview.py:674 #, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Erro na expresión regular\n" -"«%s»" +msgid "Error removing %s" +msgstr "Produciuse un erro ao retirar %s" + +#: ../meld/ui/findbar.py:143 +msgid "Regular expression error" +msgstr "Erro na expresión regular" -#: ../meld/ui/historyentry.py:293 +#: ../meld/ui/historyentry.py:381 msgid "_Browse..." -msgstr "_Buscar..." +msgstr "E_xaminar..." -#: ../meld/ui/historyentry.py:301 +#: ../meld/ui/historyentry.py:389 msgid "Path" -msgstr "Camiño" +msgstr "Ruta" -#: ../meld/ui/historyentry.py:302 +#: ../meld/ui/historyentry.py:390 msgid "Path to file" -msgstr "Camiño ao ficheiro" +msgstr "Ruta ao ficheiro" -#: ../meld/ui/historyentry.py:303 +#: ../meld/ui/historyentry.py:391 msgid "Pop up a file selector to choose a file" msgstr "Mostrar un selector para escoller un ficheiro" -#: ../meld/ui/historyentry.py:441 +#: ../meld/ui/historyentry.py:529 msgid "Select directory" msgstr "Seleccionar cartafol" -#: ../meld/ui/historyentry.py:445 +#: ../meld/ui/historyentry.py:533 msgid "Select file" msgstr "Seleccionar ficheiro" -#: ../meld/ui/notebooklabel.py:60 +#: ../meld/ui/notebooklabel.py:63 msgid "Close tab" -msgstr "Pechar o separador" +msgstr "Pechar a lapela" + +#: ../meld/ui/vcdialogs.py:57 +msgid "No files will be committed" +msgstr "Non se remitirá ningún ficheiro" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Combinado" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Base" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Local" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Remoto" #. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 +#: ../meld/vc/_vc.py:62 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" msgstr "" -"Ignored:Unversioned:::Erro::Novos engadidos:Modificados:Conflito:" -"Eliminadas:Que faltan" +"Ignorado:Non Versionado:::Erro::Novas adicións:Modificado:Conflito:Eliminado:" +"Que falta:Non presente" -#: ../meld/vc/cvs.py:163 +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 #, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Produciuse un erro ao converter a unha expresión regular\n" -"O patrón era «%s»\n" -"O erro foi «%s»" +msgid "%s in %s" +msgstr "%s en %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d remisión sen enviar" +msgstr[1] "%d remisións sen enviar" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d rama" +msgstr[1] "%d ramas" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Modo cambiado desde %s a %s" + +#~ msgid "Compare selected" +#~ msgstr "Comparar o seleccionado" + +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "«%s» é un cartafol.\n" +#~ "Retirar recursivamente?" + +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "Produciuse un erro ao converter a unha expresión regular\n" +#~ "O patrón era «%s»\n" +#~ "O erro foi «%s»" + +#~ msgid "[%s] Fetching differences" +#~ msgstr "[%s] Obtendo as diferenzas" + +#~ msgid "[%s] Applying patch" +#~ msgstr "[%s] Aplicando o parche" + +#~ msgid "Patch tool not found" +#~ msgstr "Ferramenta de parches non atopada" + +#~ msgid "" +#~ "Meld needs the patch tool to be installed to perform comparisons " +#~ "in %s repositories. Please install patch and try again." +#~ msgstr "" +#~ "Meld precisa que estea instalada a ferramenta patch para levar a " +#~ "cabo comparacións en repositorios %s. Instale patch e ténteo de " +#~ "novo." + +#~ msgid "Error fetching original comparison file" +#~ msgstr "Produciuse un erro ao obter o ficheiro de comparación orixinal" + +#~ msgid "" +#~ "Meld couldn't obtain the original version of your comparison file. If you " +#~ "are using the most recent version of Meld, please report a bug, including " +#~ "as many details as possible." +#~ msgstr "" +#~ "Meld non puido obter a versión orixinal do seu ficheiro de comparación. " +#~ "Se está usando a versión última de Meld, informe do erro, incluíndo os " +#~ "detalles." + +#~ msgid "Report a bug" +#~ msgstr "Informar dun fallo" + +#~ msgid "%d unpushed commits in %d branches" +#~ msgstr "%d remisións sen mandar en %d ramas" + +#~ msgid "Choose Files" +#~ msgstr "Escoller ficheiros" + +#~ msgid "_Three Way Compare" +#~ msgstr "Comparación a _tres bandas" + +#~ msgid "Mine" +#~ msgstr "Meu" + +#~ msgid "Original" +#~ msgstr "Orixinal" + +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Select VC Directory" +#~ msgstr "Seleccionar cartafol VC" + +#~ msgid "Directory" +#~ msgstr "Cartafol" + +#~ msgid "Create Patch" +#~ msgstr "Crear parche" + +#~ msgid "Create a patch" +#~ msgstr "Crear un parche" + +#~ msgid "VC Log" +#~ msgstr "Rexistro CV" + +#~ msgid "Merge all non-conflicting" +#~ msgstr "Combinar todos os cambios non conflitivos" + +#~ msgid "Choose a name for buffer %i." +#~ msgstr "Escolla un nome para o búfer %i." + +#~ msgid "Save changes to documents before reloading?" +#~ msgstr "Desexa gardar cambios nos documentos antes de recargar?" + +#~ msgid "_New..." +#~ msgstr "_Novo..." + +#~ msgid "File filters" +#~ msgstr "Filtros de ficheiro" + +#~ msgid "Reload" +#~ msgstr "Recargar" -#~ msgid "Open selected" -#~ msgstr "Abrir seleccionados" +#~ msgid "Reload the comparison" +#~ msgstr "Recargar a comparación" + +#~ msgid "Update" +#~ msgstr "Actualizar" + +#~ msgid "Add to VC" +#~ msgstr "Engadir a CV" + +#~ msgid "Remove from VC" +#~ msgstr "Retirar de CV" + +#~ msgid "_Resolved" +#~ msgstr "Soluciona_do" + +#~ msgid "Delete locally" +#~ msgstr "Eliminar localmente" + +#~ msgid "Show normal" +#~ msgstr "Mostrar normal" + +#~ msgid "Non _VC" +#~ msgstr "Sen C_V" + +#~ msgid "Rev" +#~ msgstr "Rev" + +#~ msgid "Tag" +#~ msgstr "Etiqueta" + +#~ msgid "" +#~ "Some files have been modified.\n" +#~ "Which ones would you like to save?" +#~ msgstr "" +#~ "Algúns ficheiros foron modificados.\n" +#~ "Cales quere gardar?" + +#~ msgid "_Discard Changes" +#~ msgstr "_Rexeitar os cambios" + +#~ msgid "_Save Selected" +#~ msgstr "Gardar os _seleccionados" + +#~ msgid "" +#~ "Reloading will discard changes in:\n" +#~ "%s\n" +#~ "\n" +#~ "You cannot undo this operation." +#~ msgstr "" +#~ "Ao recargar rexeitará os cambios en:\n" +#~ "%s\n" +#~ "\n" +#~ "Non é posíbel desfacer esta operación." + +#~ msgid "Select some files first." +#~ msgstr "Antes seleccione algúns ficheiros." + +#~ msgid "Add _Binary" +#~ msgstr "Engadir _binario" + +#~ msgid "Add binary to VC" +#~ msgstr "Engadir binario a CV" + +#~ msgid "" +#~ "\n" +#~ " Invoking 'patch' failed.\n" +#~ " \n" +#~ " Maybe you don't have 'GNU patch' installed,\n" +#~ " or you use an untested version of %s.\n" +#~ " \n" +#~ " Please send email bug report to:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " Containing the following information:\n" +#~ " \n" +#~ " - meld version: '%s'\n" +#~ " - source control software type: '%s'\n" +#~ " - source control software version: 'X.Y.Z'\n" +#~ " - the output of '%s somefile.txt'\n" +#~ " - patch command: '%s'\n" +#~ " (no need to actually run it, just provide\n" +#~ " the command line) \n" +#~ " \n" +#~ " Replace 'X.Y.Z' by the actual version for the\n" +#~ " source control software you use.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Produciuse un erro ao invocar a 'patch'.\n" +#~ " \n" +#~ " Pode ser que non estea instalado 'GNU Patch'\n" +#~ " ou vostede usa unha versión non probada de %s.\n" +#~ " \n" +#~ " Envíe un informe de fallo por correo electrónico a:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " Contendo a seguinte información:\n" +#~ " \n" +#~ " - versión de meld: «%s»\n" +#~ " - tipo de software de control de código: «%s»\n" +#~ " - versión do software de control de código: 'X.Y.Z'\n" +#~ " - a saída de'%s algunficheiro.txt'\n" +#~ " - orde (patch): «%s»\n" +#~ " (non necesita executala, xa lla fornece\n" +#~ " a liña de ordes) \n" +#~ " \n" +#~ " Substitúa 'X.Y.Z', pola versión real para o\n" +#~ " software de control de código que usa vostede.\n" +#~ " " + +#~ msgid "can't compare more than three directories" +#~ msgstr "non é posíbel comparar máis de tres directorios" + +#~ msgid "Case" +#~ msgstr "Capitalización" + +#~ msgid "Ignore case of entries" +#~ msgstr "Ignorar maiúsculas e minúsculas das entradas" + +#~ msgid "_Search for" +#~ msgstr "Bu_scar por:" + +#~ msgid "Compare Options" +#~ msgstr "Opcións de comparación" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Local copy against other remote revision" +#~ msgstr "Copia local contra unha revisión remota" + +#~ msgid "Local copy against same remote revision" +#~ msgstr "Copia local contra a mesma revisión remota" #~ msgid "Copyright © 2002-2009 Stephen Kennedy" #~ msgstr "Copyright © 2002-2009 Stephen Kennedy" @@ -1539,9 +2027,6 @@ #~ msgid "Two way file" #~ msgstr "Ficheiro a dúas bandas" -#~ msgid "Version control view" -#~ msgstr "Mostrar control de versións" - #~ msgid "Display" #~ msgstr "Mostrar" @@ -1588,9 +2073,6 @@ #~ msgid "_Character" #~ msgstr "_Carácter" -#~ msgid "_None" -#~ msgstr "_Ningún" - #~ msgid "_Word" #~ msgstr "_Palabra" @@ -1662,9 +2144,6 @@ #~ "Elixa como se debuxa a barra central do visor de diferenzas. Debería " #~ "escoller un modo máis sinxelo se o desprazamento vai lento." -#~ msgid "Compare" -#~ msgstr "Comparar" - #~ msgid "Copy All To _Left" #~ msgstr "Copiar todo á es_querda" @@ -1690,9 +2169,6 @@ #~ msgid "Edit" #~ msgstr "Editar" -#~ msgid "Find" -#~ msgstr "Buscar" - #~ msgid "Gnome Default" #~ msgstr "Predeterminado do Gnome" @@ -1748,9 +2224,6 @@ #~ msgid "Save" #~ msgstr "Gardar" -#~ msgid "Save _As" -#~ msgstr "G_ardar como" - #~ msgid "Save in UTF-8 encoding" #~ msgstr "Gardar na codificación UTF-8" @@ -1812,9 +2285,6 @@ #~ msgid "_Logo" #~ msgstr "_Logotipo" -#~ msgid "_Save" -#~ msgstr "_Gardar" - #~ msgid "_Stop" #~ msgstr "_Deter" diff -Nru meld-1.5.3/po/hu.po meld-3.11.0/po/hu.po --- meld-1.5.3/po/hu.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/hu.po 2014-02-16 20:23:22.000000000 +0000 @@ -1,269 +1,790 @@ # Hungarian translation of Meld. # This file is distributed under the same license as the Meld package. -# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013. Free Software Foundation, Inc. # # CSÉCSY László , 2005. -# Gabor Kelemen , 2005, 2006, 2007, 2008, 2009, 2010. +# Gabor Kelemen , 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: meld master\n" -"Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2010-12-26 00:05+0100\n" -"PO-Revision-Date: 2010-12-26 00:05+0100\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-30 21:38+0000\n" +"PO-Revision-Date: 2014-02-04 14:16+0100\n" "Last-Translator: Gabor Kelemen \n" -"Language-Team: Hungarian \n" -"Language: \n" +"Language-Team: Hungarian \n" +"Language: hu\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" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Lokalize 1.4\n" -#: ../bin/meld:96 +#: ../bin/meld:117 msgid "Cannot import: " msgstr "Nem importálható: " -#: ../bin/meld:99 +#: ../bin/meld:120 #, c-format msgid "Meld requires %s or higher." msgstr "A Meld futásához %s vagy újabb szükséges." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Fájlok összehasonlítása és összefésülése" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Eltérésmegjelenítő" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Meld eltérésmegjelenítő" -#: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Menti a módosított fájlokat?" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Fájlok összehasonlítása és összefésülése" -#: ../data/ui/filediff.ui.h:2 +#: ../data/meld.appdata.xml.in.h:1 msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"A Meld egy vizuális diff- és összefésülő eszköz fejlesztőknek. A Meld segít " +"fájlok, könyvtárak és verziókövetőt használó projektek összehasonlításában. " +"Két- és háromutas összehasonlítást biztosít fájlokhoz és könyvtárakhoz, és " +"sok verziókövető rendszert is támogat, beleértve a Git, Mercurial, Bazaar és " +"Subversion rendszereket." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." msgstr "" -"Néhány fájl megváltozott.\n" -"Melyeket szeretné menteni?" +"A Meld segít kódváltozások áttekintésében, foltok megértésében és a hatalmas " +"összefésülési ütközéseket valamivel fájdalommentesebbé teszi." -#: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Változások eldobása" +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Meld összehasonlítás-leírás" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Alapértelmezett ablakméret" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +#| msgid "Show or hide the toolbar" +msgid "Show toolbar" +msgstr "Eszköztár megjelenítése" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Az ablak eszköztára látható-e." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +#| msgid "_Statusbar" +msgid "Show statusbar" +msgstr "Állapotsor megjelenítése" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Az ablak állapotsora látható-e." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +#| msgid "Automatically merge files" +msgid "Automatically detected text encodings" +msgstr "Automatikusan felismert szövegkódolások" -#: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "_Kijelöltek mentése" +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" -#: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "Szabályos ki_fejezés" +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "" -#: ../data/ui/findbar.ui.h:2 -msgid "Replace _All" -msgstr "Öss_zes cseréje" +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "" -#: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Cse_re ezzel" +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "" -#: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "_Teljes szó" +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" -#: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "Kis- és _nagybetű" +#: ../data/org.gnome.meld.gschema.xml.h:12 +#| msgid "Show _line numbers" +msgid "Show line numbers" +msgstr "Sorszámok megjelenítése" -#: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Következő" +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" -#: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Előző" +#: ../data/org.gnome.meld.gschema.xml.h:14 +#| msgid "Highlight _current line" +msgid "Highlight syntax" +msgstr "Szintaxiskiemelés" -#: ../data/ui/findbar.ui.h:8 ../meld/meldapp.py:147 -msgid "_Replace" -msgstr "_Csere" +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" -#: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "K_eresés" +#: ../data/org.gnome.meld.gschema.xml.h:16 +#| msgid "Show w_hitespace" +msgid "Displayed whitespace" +msgstr "Üres helyek megjelenítése" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:18 +#| msgid "Wrapped" +msgid "Wrap mode" +msgstr "Tördelés módja" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:20 +#| msgid "Highlight _current line" +msgid "Highlight current line" +msgstr "A jelenlegi sor kiemelése" -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Válasszon fájlokat" +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:22 +#| msgid "_Use the system fixed width font" +msgid "Use the system default monospace font" +msgstr "" +"A rendszer alapértelmezett rögzített szélességű betűkészletének használata" -#: ../data/ui/meldapp.ui.h:2 +#: ../data/org.gnome.meld.gschema.xml.h:23 msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" +"If false, the defined custom font will be used instead of the system " +"monospace font." msgstr "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Könyvtár" +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Egyéni betűkészlet" -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Saját" +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Eredeti" +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "" -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Másik" +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Válasszon VC könyvtárat" +#: ../data/org.gnome.meld.gschema.xml.h:28 +#| msgid "Use _default system editor" +msgid "Use the system default editor" +msgstr "A rendszer alapértelmezett szerkesztőjének használata" -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "_Könyvtár-összehasonlítás" +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "_Fájl-összehasonlítás" +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "" -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "_Háromutas összehasonlítás" +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "_Verziókövetés-böngésző" +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Szimbolikus linkek figyelmen kívül hagyása" -#: ../data/ui/meldapp.ui.h:17 +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:36 +#| msgid "Shallow Comparison" +msgid "Use shallow comparison" +msgstr "Sekély összehasonlítás használata" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:38 +#| msgid "_Timestamp resolution:" +msgid "File timestamp resolution" +msgstr "Fájlidőbélyeg felbontása" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:40 +#| msgid "File filters" +msgid "File status filters" +msgstr "Fájlállapotszűrők" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:42 +#| msgid "Choose which version control system to use" +msgid "Show the version control console output" +msgstr "A verziókövető konzolos kimenetének megjelenítése" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:52 +#| msgid "Version control view" +msgid "Version control status filters" +msgstr "Verziókövetési állapotszűrők" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:54 +#| msgid "File filters" +msgid "Filename-based filters" +msgstr "Fájlnév alapú szűrők" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:56 +#| msgid "Text Filters" +msgid "Text-based filters" +msgstr "Szöveg alapú szűrők" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "A Meld névjegye" + +#: ../data/ui/application.ui.h:2 +#| msgid "" +#| "Copyright © 2002-2009 Stephen Kennedy\n" +#| "Copyright © 2009-2013 Kai Willadsen" +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Weboldal" + +#: ../data/ui/application.ui.h:5 msgid "translator-credits" msgstr "" "CSÉCSY László \n" "Kelemen Gábor " +#: ../data/ui/application.ui.h:6 +#| msgid "Prefere_nces" +msgid "_Preferences" +msgstr "_Beállítások" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "_Súgó" + +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "_Névjegy" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Kilépés" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "Össze_hasonlítás" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Kijelölt fájlok összehasonlítása" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Másolás _balra" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Másolás a bal oldalra" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Másolás j_obbra" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Másolás a jobb oldalra" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Kijelölt törlése" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1415 +msgid "Hide" +msgstr "Elrejtés" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Kijelölt elrejtése" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Kis- és nagybetűk nem különböznek a fájlnévben" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Tartalmukban azonos, csak a fájlnév kis- és nagybetűiben eltérő fájlok " +"azonosnak tekintése" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Egyezik" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Azonosak megjelenítése" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Új" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Újak megjelenítése" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Módosítva" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Módosítottak megjelenítése" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Szűrők" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Aktív szűrők beállítása" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Szerkeszthető lista" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Aktív" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column Name" +msgstr "Oszlopnév" + +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "Hozzá_adás" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:677 +msgid "_Remove" +msgstr "_Eltávolítás" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Elem mozgatása fel" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "Mozgatás _fel" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "Elem mozgatása le" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Mozgatás _le" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:365 +#: ../meld/vcview.py:187 +msgid "Name" +msgstr "Név" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Minta" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Új szűrő hozzáadása" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Kiválasztott szűrő eltávolítása" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Menti a dokumentumok változtatásait bezárás előtt?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Ha nem ment, akkor a változtatások véglegesen elvesznek." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Bezárás mentés _nélkül" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "Mé_gse" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "M_entés" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Ebbe a fájlba nem lehet írni. Ide kattintva feloldhatja a fájlt és " +"módosításokat végezhet, de ezeket a módosításokat új fájlba kell mentenie." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Visszavonja a dokumentumok mentetlen változtatásait?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "A következő dokumentumok változásai véglegesen elvesznek:\n" + +#: ../data/ui/findbar.ui.h:1 +msgid "_Replace" +msgstr "_Csere" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Öss_zes cseréje" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Előző" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Következő" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Keresés:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "C_sere ezzel:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match case" +msgstr "Kis- és _nagybetű" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "_Teljes szó" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular e_xpression" +msgstr "Reguláris ki_fejezés" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Körbeért" + #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Másolás vágólapra" +msgid "Format as Patch" +msgstr "Formázás foltként" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Folt létrehozása" +msgid "Use differences between:" +msgstr "Ezek eltéréseinek használata:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Folt létrehozása" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Bal és középső ablaktáblák" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Középső és jobb ablaktáblák" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Ezek eltéréseinek használata:" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "F_olt irányának megfordítása" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Másolás vágólapra" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:121 +msgid "Save Patch" +msgstr "Folt mentése" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Megjelenítés" +msgid "Left is remote, right is local" +msgstr "Bal a távoli, jobb a helyi" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Ne _törje a szavakat két sorba" +msgid "Left is local, right is remote" +msgstr "Bal a helyi, jobb a távoli" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Szerkesztő_parancs:" +msgid "1ns (ext4)" +msgstr "1ns (ext4)" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Szerkesztő" +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "_Sortörés engedélyezése" +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Kódolás" +msgid "2s (VFAT)" +msgstr "2s (VFAT)" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Külső szerkesztő" +msgid "Meld Preferences" +msgstr "A Meld beállításai" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Fájlszűrők" - -#: ../data/ui/preferences.ui.h:9 msgid "Font" msgstr "Betűkészlet" +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "A rendszer rögzített szélességű betűkészletének _használata" + #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Üres sorokat beszúró vagy törlő változások mellőzése" +msgid "_Editor font:" +msgstr "Sz_erkesztő betűkészlete:" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Szimbolikus linkek figyelmen kívül hagyása" +msgid "Display" +msgstr "Megjelenítés" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Betöltés" +msgid "_Tab width:" +msgstr "_Tabulátorok szélessége:" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "A Meld beállításai" +msgid "_Insert spaces instead of tabs" +msgstr "Tabulátorok helyett s_zóközök beszúrása" #: ../data/ui/preferences.ui.h:14 -msgid "Show _line numbers" -msgstr "S_orszámok megjelenítése" +msgid "Enable text _wrapping" +msgstr "_Sortörés engedélyezése" #: ../data/ui/preferences.ui.h:15 -msgid "Show w_hitespace" -msgstr "Ü_res helyek megjelenítése" +msgid "Do not _split words over two lines" +msgstr "Ne _törje a szavakat két sorba" #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Szövegszűrők" +msgid "Highlight _current line" +msgstr "A jelenlegi s_or kiemelése" #: ../data/ui/preferences.ui.h:17 -msgid "Use _default system editor" -msgstr "Alapértelmezett _rendszerszerkesztő használata" +msgid "Show _line numbers" +msgstr "S_orszámok megjelenítése" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "S_zintaxiskiemelés használata" +msgid "Show w_hitespace" +msgstr "Ü_res helyek megjelenítése" #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" -"Betöltéskor ezen kodekek ilyen sorrendben történő próbálása (például utf8, " -"iso8859)" +msgid "Use s_yntax highlighting" +msgstr "S_zintaxiskiemelés használata" #: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Külső szerkesztő" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "Alapértelmezett _rendszerszerkesztő használata" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Szerkesztő_parancs:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Szerkesztő" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Sekély összehasonlítás" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "_Fájlok összehasonlítása csak méret és időbélyeg alapján" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "_Időbélyeg felbontása:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Szimbolikus linkek" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Látható oszlopok" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Mappa-összehasonlítás" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Verzió-összehasonlítás" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "Fájl_revíziók összehasonlításakor:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Véglegesítési üzenetek" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "_Jobb margó megjelenítése:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Sorok a_utomatikus tördelése a jobb margónál véglegesítéskor" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Verziókövetés" + +#: ../data/ui/preferences.ui.h:37 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " @@ -273,7 +794,11 @@ "alapján. Minden minta egy shell-stílusú helyettesítőkarakter-lista " "szóközökkel elválasztva." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:106 +msgid "File Filters" +msgstr "Fájlszűrők" + +#: ../data/ui/preferences.ui.h:39 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -287,176 +812,263 @@ "csoportokat tartalmaz, csak a csoportok lesznek kicserélve. További " "részletekért lásd a felhasználói kézikönyvet." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "Sz_erkesztő betűkészlete:" - -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "Tabulátorok helyett s_zóközök beszúrása" - -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "_Tabulátorok szélessége:" +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Üres sorokat beszúró vagy törlő változások mellőzése" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "A rendszer rögzített szélességű betűkészletének _használata" +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Szövegszűrők" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Fájlok véglegesítése" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:618 +msgid "New comparison" +msgstr "Új összehasonlítás" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Fájl-összehasonlítás" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Könyvtár-összehasonlítás" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Verziókövetés-nézet" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_3 utas összehasonlítás" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Válasszon harmadik fájlt" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Válasszon második fájlt" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Válasszon első fájlt" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Válasszon első mappát" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Válasszon második mappát" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Válasszon harmadik mappát" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Válasszon egy verziókövetés alatti mappát" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "Ü_res összehasonlítás" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Összehasonlítás beállításai" +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "Össze_hasonlítás" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Dátum" +msgid "Co_mmit..." +msgstr "_Véglegesítés…" #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Helyi másolat másik távoli verzióval szemben" +msgid "Commit changes to version control" +msgstr "Változtatások véglegesítése verziókövetőbe" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Helyi másolat ugyanazon távoli verzióval szemben" +msgid "_Update" +msgstr "_Frissítés" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Naplóüzenet" +msgid "Update working copy from version control" +msgstr "Munkapéldány frissítése a verziókövetőből" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Előző naplók" +msgid "_Push" +msgstr "_Push" -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:179 -msgid "Tag" -msgstr "Címke" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "Verziókövetési napló" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Helyi változások elküldése a távoli tárolóba" -#: ../meld/dirdiff.py:142 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "Össze_hasonlítás" +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Hozzáadás verziókövetéshez" -#: ../meld/dirdiff.py:142 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Kijelöltek összehasonlítása" - -#: ../meld/dirdiff.py:143 -msgid "Left" -msgstr "Bal" - -#: ../meld/dirdiff.py:143 -msgid "Copy To Left" -msgstr "Másolás balra" - -#: ../meld/dirdiff.py:144 -msgid "Right" -msgstr "Jobb" - -#: ../meld/dirdiff.py:144 -msgid "Copy To Right" -msgstr "Másolás jobbra" +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Eltávolítás a verziókövetőből" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Megjelölés _feloldottként" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Megjelölés feloldottként a verziókövetőben" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Vissz_aállítás" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Munkapéldány visszaállítása az eredeti állapotba" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Törlés a munkapéldányból" -#: ../meld/dirdiff.py:145 -msgid "Delete selected" -msgstr "Kijelölt törlése" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Simítás" -#: ../meld/dirdiff.py:146 ../meld/filediff.py:962 -msgid "Hide" -msgstr "Elrejtés" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Könyvtárak simítása" -#: ../meld/dirdiff.py:146 -msgid "Hide selected" -msgstr "Kijelölt elrejtése" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "Módosít_va" -#: ../meld/dirdiff.py:148 ../meld/filediff.py:246 ../meld/vcview.py:119 -msgid "Open selected" -msgstr "Kijelölt megnyitása" - -#: ../meld/dirdiff.py:152 -msgid "Case" -msgstr "Kis- és nagybetűk" - -#: ../meld/dirdiff.py:152 -msgid "Ignore case of entries" -msgstr "Kis- és nagybetűk egyenértékűek" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Módosított fájlok megjelenítése" -#: ../meld/dirdiff.py:153 -msgid "Same" -msgstr "Egyezik" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Normál" -#: ../meld/dirdiff.py:153 -msgid "Show identical" -msgstr "Azonosak megjelenítése" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Normál fájlok megjelenítése" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "Ver_zió nélküli" -#: ../meld/dirdiff.py:154 -msgid "New" -msgstr "Új" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Verzió nélküli fájlok megjelenítése" -#: ../meld/dirdiff.py:154 -msgid "Show new" -msgstr "Újak megjelenítése" +#: ../data/ui/vcview.ui.h:26 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Mellőzve" -#: ../meld/dirdiff.py:155 -msgid "Modified" -msgstr "Módosítva" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Figyelmen kívül hagyott fájlok megjelenítése" -#: ../meld/dirdiff.py:155 ../meld/vcview.py:132 -msgid "Show modified" -msgstr "Módosítottak megjelenítése" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Véglegesítés" -#: ../meld/dirdiff.py:157 -msgid "Filters" -msgstr "Szűrők" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Fájlok véglegesítése" -#: ../meld/dirdiff.py:157 -msgid "Set active filters" -msgstr "Aktív szűrők beállítása" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Naplóüzenet" -#: ../meld/dirdiff.py:213 ../meld/dirdiff.py:259 -#, python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "Hiba „%s” minta szabályos kifejezéssé alakításakor" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Előző naplók:" -#: ../meld/dirdiff.py:270 +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "_Véglegesítés" + +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Elküldi a helyi kommitokat a távoli tárolóba?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "Az elküldendő kommitokat a verziókövető rendszer határozza meg." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Kommitok elküldése" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:383 +msgid "Size" +msgstr "Méret" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:391 +msgid "Modification time" +msgstr "Módosítási idő" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:399 +msgid "Permissions" +msgstr "Jogosultságok" + +#: ../meld/dirdiff.py:558 #, python-format msgid "Hide %s" msgstr "%s elrejtése" -#: ../meld/dirdiff.py:355 ../meld/dirdiff.py:365 ../meld/vcview.py:299 -#: ../meld/vcview.py:327 +#: ../meld/dirdiff.py:687 ../meld/dirdiff.py:709 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] %s beolvasása" -#: ../meld/dirdiff.py:394 +#: ../meld/dirdiff.py:809 #, python-format -msgid "'%s' hidden by '%s'" -msgstr "„%s” rejtve „%s” által" +msgid "[%s] Done" +msgstr "[%s] Kész" -#: ../meld/dirdiff.py:400 -#, python-format +#: ../meld/dirdiff.py:815 +msgid "Multiple errors occurred while scanning this folder" +msgstr "Több hiba történt a mappa vizsgálatakor" + +#: ../meld/dirdiff.py:816 +msgid "Files with invalid encodings found" +msgstr "Érvénytelen kódolású fájlok találhatók" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:818 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "Egyes fájlok kódolása érvénytelen. A nevek a következők:" + +#: ../meld/dirdiff.py:820 +msgid "Files hidden by case insensitive comparison" +msgstr "" +"Kis- és nagybetűket meg nem különböztető összehasonlítás által elrejtett " +"fájlok" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:822 msgid "" "You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" +"filesystem. The following files in this folder are hidden:" msgstr "" "Kis- és nagybetűkre nem érzékeny összehasonlítást futtat nagybetűérzékeny " -"fájlrendszeren. Néhány fájl nem látható:\n" -"%s" +"fájlrendszeren. A mappa alábbi fájljai el lettek rejtve:" -#: ../meld/dirdiff.py:477 +#: ../meld/dirdiff.py:833 #, python-format -msgid "[%s] Done" -msgstr "[%s] Kész" +msgid "'%s' hidden by '%s'" +msgstr "„%s” rejtve „%s” által" + +#: ../meld/dirdiff.py:858 ../meld/filediff.py:1108 ../meld/filediff.py:1246 +#: ../meld/filediff.py:1417 ../meld/filediff.py:1447 ../meld/filediff.py:1449 +msgid "Hi_de" +msgstr "_Elrejtés" -#: ../meld/dirdiff.py:523 +#: ../meld/dirdiff.py:889 #, python-format msgid "" "'%s' exists.\n" @@ -465,281 +1077,361 @@ "„%s” létezik.\n" "Felülírja?" -#: ../meld/dirdiff.py:530 -#, python-format +#: ../meld/dirdiff.py:897 +#| msgid "Error reading saved comparison file" +msgid "Error copying file" +msgstr "Hiba a fájl másolásakor" + +#: ../meld/dirdiff.py:898 +#, python-format +#| msgid "" +#| "Error copying '%s' to '%s'\n" +#| "\n" +#| "%s." msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Hiba „%s” másolásakor „%s” helyre\n" +"„%s” nem másolható\n" +"„%s” helyre.\n" "\n" -"%s." - -#: ../meld/dirdiff.py:548 ../meld/vcview.py:486 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"„%s” egy könyvtár.\n" -"Eltávolítja rekurzívan?" +"%s" -#: ../meld/dirdiff.py:555 ../meld/vcview.py:491 +#: ../meld/dirdiff.py:921 #, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Hiba %s eltávolításakor\n" -"\n" -"%s." +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error deleting %s" +msgstr "Hiba %s törlésekor" -#: ../meld/dirdiff.py:567 +#: ../meld/dirdiff.py:1052 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i másodperc" msgstr[1] "%i másodperc" -#: ../meld/dirdiff.py:568 +#: ../meld/dirdiff.py:1053 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i perc" msgstr[1] "%i perc" -#: ../meld/dirdiff.py:569 +#: ../meld/dirdiff.py:1054 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i óra" msgstr[1] "%i óra" -#: ../meld/dirdiff.py:570 +#: ../meld/dirdiff.py:1055 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i nap" msgstr[1] "%i nap" -#: ../meld/dirdiff.py:571 +#: ../meld/dirdiff.py:1056 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i hét" msgstr[1] "%i hét" -#: ../meld/dirdiff.py:572 +#: ../meld/dirdiff.py:1057 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i hónap" msgstr[1] "%i hónap" -#: ../meld/dirdiff.py:573 +#: ../meld/dirdiff.py:1058 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i év" msgstr[1] "%i év" -#: ../meld/filediff.py:247 -msgid "Format as patch..." +#: ../meld/filediff.py:229 +msgid "Format as Patch..." msgstr "Formázás foltként…" -#: ../meld/filediff.py:247 +#: ../meld/filediff.py:230 msgid "Create a patch using differences between files" msgstr "Folt létrehozása a fájlok közti különbségeket felhasználva" -#: ../meld/filediff.py:248 -msgid "Previous conflict" +#: ../meld/filediff.py:232 +msgid "Save A_ll" +msgstr "Összes men_tése" + +#: ../meld/filediff.py:233 +msgid "Save all files in the current comparison" +msgstr "Minden fájl mentése a jelenlegi összehasonlításban" + +#: ../meld/filediff.py:236 +msgid "Revert files to their saved versions" +msgstr "Fájlok visszaállítása a mentett verzióikra" + +#: ../meld/filediff.py:238 +msgid "Add Synchronization Point" +msgstr "Szinkronizálási pont hozzáadása" + +#: ../meld/filediff.py:239 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Egyéni pont hozzáadása a fájlok közti változások szinkronizálásához" + +#: ../meld/filediff.py:242 +msgid "Clear Synchronization Points" +msgstr "Szinkronizálási pontok törlése" + +#: ../meld/filediff.py:243 +msgid "Clear manual change sychronization points" +msgstr "Egyéni változásszinkronizálási pontok törlése" + +#: ../meld/filediff.py:245 +msgid "Previous Conflict" msgstr "Előző ütközés" -#: ../meld/filediff.py:248 +#: ../meld/filediff.py:246 msgid "Go to the previous conflict" msgstr "Ugrás az előző ütközésre" -#: ../meld/filediff.py:249 -msgid "Next conflict" +#: ../meld/filediff.py:248 +msgid "Next Conflict" msgstr "Következő ütközés" #: ../meld/filediff.py:249 msgid "Go to the next conflict" msgstr "Ugrás a következő ütközésre" -#: ../meld/filediff.py:250 -msgid "Push to left" +#: ../meld/filediff.py:251 +msgid "Push to Left" msgstr "Balra küldés" -#: ../meld/filediff.py:250 +#: ../meld/filediff.py:252 msgid "Push current change to the left" msgstr "Jelenlegi változás balra küldése" -#: ../meld/filediff.py:251 -msgid "Push to right" +#: ../meld/filediff.py:255 +msgid "Push to Right" msgstr "Jobbra küldés" -#: ../meld/filediff.py:251 +#: ../meld/filediff.py:256 msgid "Push current change to the right" msgstr "Jelenlegi változás jobbra küldése" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:253 -msgid "Pull from left" +#: ../meld/filediff.py:260 +msgid "Pull from Left" msgstr "Áthúzás balról" -#: ../meld/filediff.py:253 +#: ../meld/filediff.py:261 msgid "Pull change from the left" msgstr "Változás áthúzása balról" -#: ../meld/filediff.py:254 -msgid "Pull from right" +#: ../meld/filediff.py:264 +msgid "Pull from Right" msgstr "Áthúzás jobbról" -#: ../meld/filediff.py:254 +#: ../meld/filediff.py:265 msgid "Pull change from the right" msgstr "Változás áthúzása jobbról" -#: ../meld/filediff.py:255 -msgid "Copy above left" +#: ../meld/filediff.py:267 +msgid "Copy Above Left" msgstr "Másolás balra fel" -#: ../meld/filediff.py:255 +#: ../meld/filediff.py:268 msgid "Copy change above the left chunk" msgstr "Változás másolása a bal oldali darab fölé" -#: ../meld/filediff.py:256 -msgid "Copy below left" +#: ../meld/filediff.py:270 +msgid "Copy Below Left" msgstr "Másolás balra le" -#: ../meld/filediff.py:256 +#: ../meld/filediff.py:271 msgid "Copy change below the left chunk" msgstr "Változás másolása a bal oldali darab alá" -#: ../meld/filediff.py:257 -msgid "Copy above right" +#: ../meld/filediff.py:273 +msgid "Copy Above Right" msgstr "Másolás jobbra fel" -#: ../meld/filediff.py:257 +#: ../meld/filediff.py:274 msgid "Copy change above the right chunk" msgstr "Változás másolása a jobb oldali darab fölé" -#: ../meld/filediff.py:258 -msgid "Copy below right" +#: ../meld/filediff.py:276 +msgid "Copy Below Right" msgstr "Másolás jobbra le" -#: ../meld/filediff.py:258 +#: ../meld/filediff.py:277 msgid "Copy change below the right chunk" msgstr "Változás másolása a jobb oldali darab alá" -#: ../meld/filediff.py:259 +#: ../meld/filediff.py:279 msgid "Delete" msgstr "Törlés" -#: ../meld/filediff.py:259 +#: ../meld/filediff.py:280 msgid "Delete change" msgstr "Változás törlése" -#: ../meld/filediff.py:260 -msgid "Merge all changes from left" -msgstr "Minden változás egyesítése balról" +#: ../meld/filediff.py:282 +msgid "Merge All from Left" +msgstr "Minden egyesítése balról" -#: ../meld/filediff.py:260 +#: ../meld/filediff.py:283 msgid "Merge all non-conflicting changes from the left" msgstr "Minden nem ütköző változás egyesítése balról" -#: ../meld/filediff.py:261 -msgid "Merge all changes from right" -msgstr "Minden változás egyesítése jobbról" +#: ../meld/filediff.py:285 +msgid "Merge All from Right" +msgstr "Minden egyesítése jobbról" -#: ../meld/filediff.py:261 +#: ../meld/filediff.py:286 msgid "Merge all non-conflicting changes from the right" msgstr "Minden nem ütköző változás egyesítése jobbról" -#: ../meld/filediff.py:262 -msgid "Merge all non-conflicting" -msgstr "Minden nem ütköző egyesítése" +#: ../meld/filediff.py:288 +msgid "Merge All" +msgstr "Minden egyesítése" -#: ../meld/filediff.py:262 +#: ../meld/filediff.py:289 msgid "Merge all non-conflicting changes from left and right panes" msgstr "Minden nem ütköző változás egyesítése a bal és jobb ablaktábláról" +#: ../meld/filediff.py:293 +msgid "Cycle Through Documents" +msgstr "Végiglépkedés a dokumentumokon" + +#: ../meld/filediff.py:294 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "Billentyűzetfókusz átvitele az összehasonlítás következő dokumentumára" + +#: ../meld/filediff.py:300 +msgid "Lock Scrolling" +msgstr "Görgetés zárolása" + +#: ../meld/filediff.py:301 +msgid "Lock scrolling of all panes" +msgstr "Minden ablaktábla görgetésének zárolása" + #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:333 +#: ../meld/filediff.py:487 msgid "INS" msgstr "BESZ" -#: ../meld/filediff.py:333 +#: ../meld/filediff.py:487 msgid "OVR" msgstr "ÁTÍR" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:335 +#: ../meld/filediff.py:489 #, python-format msgid "Ln %i, Col %i" msgstr "%i. sor, %i. oszlop" -#: ../meld/filediff.py:537 +#: ../meld/filediff.py:826 #, python-format msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." msgstr "" -"„%s” szabályos kifejezés megváltoztatta a fájl sorainak számát. Az " -"összehasonlítás hibás lesz. További részletekért lásd a felhasználói " -"kézikönyvet." +"„%s” szűrő megváltoztatta a fájl sorainak számát. Az összehasonlítás hibás " +"lesz. További részletekért lásd a felhasználói kézikönyvet." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:645 -msgid "" -msgstr "" - -#: ../meld/filediff.py:828 +#: ../meld/filediff.py:1096 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Panelek számának beállítása" -#: ../meld/filediff.py:834 +#: ../meld/filediff.py:1102 #, python-format msgid "[%s] Opening files" msgstr "[%s] Fájlok megnyitása" -#: ../meld/filediff.py:840 ../meld/filediff.py:966 -msgid "Hi_de" -msgstr "_Elrejtés" - -#: ../meld/filediff.py:861 ../meld/filediff.py:870 ../meld/filediff.py:882 -#: ../meld/filediff.py:888 +#: ../meld/filediff.py:1125 ../meld/filediff.py:1135 ../meld/filediff.py:1148 +#: ../meld/filediff.py:1154 msgid "Could not read file" msgstr "A fájl nem olvasható" -#: ../meld/filediff.py:862 +#: ../meld/filediff.py:1126 #, python-format msgid "[%s] Reading files" msgstr "[%s] Fájlok olvasása" -#: ../meld/filediff.py:871 +#: ../meld/filediff.py:1136 #, python-format msgid "%s appears to be a binary file." msgstr "%s bináris fájlnak tűnik." -#: ../meld/filediff.py:883 +#: ../meld/filediff.py:1149 #, python-format msgid "%s is not in encodings: %s" msgstr "%s nincs a kódolások között: %s" -#: ../meld/filediff.py:913 ../meld/filemerge.py:69 +#: ../meld/filediff.py:1184 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Eltérések számítása" -#: ../meld/filediff.py:960 +#: ../meld/filediff.py:1241 +#, python-format +msgid "File %s has changed on disk" +msgstr "%s fájl megváltozott a lemezen" + +#: ../meld/filediff.py:1242 +#| msgid "Could not read file" +msgid "Do you want to reload the file?" +msgstr "Újratölti a fájlt?" + +#: ../meld/filediff.py:1245 +#| msgid "Reload" +msgid "_Reload" +msgstr "Új_ratöltés" + +#: ../meld/filediff.py:1406 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Szöveges szűrők vannak használatban, és elfedhetik a fájlok közti " +"különbségeket. Szeretné a szűretlen fájlokat összehasonlítani?" + +#: ../meld/filediff.py:1412 msgid "Files are identical" msgstr "A fájlok azonosak" -#: ../meld/filediff.py:1095 +#: ../meld/filediff.py:1420 +msgid "Show without filters" +msgstr "Megjelenítés szűrők nélkül" + +#: ../meld/filediff.py:1442 +msgid "Change highlighting incomplete" +msgstr "Részleges kiemelés módosítása" + +#: ../meld/filediff.py:1443 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Egyes változtatások nincsenek kiemelve, mert túl nagyok. A Meld kiemelheti " +"ezeket a nagyobb változtatásokat, de lassú lehet." + +#: ../meld/filediff.py:1451 +msgid "Keep highlighting" +msgstr "Kiemelés továbbra is" + +#: ../meld/filediff.py:1453 +msgid "_Keep highlighting" +msgstr "_Kiemelés továbbra is" + +#: ../meld/filediff.py:1584 #, python-format msgid "" "\"%s\" exists!\n" @@ -748,7 +1440,7 @@ "„%s” létezik!\n" "Felülírja?" -#: ../meld/filediff.py:1108 +#: ../meld/filediff.py:1597 #, python-format msgid "" "Error writing to %s\n" @@ -759,12 +1451,38 @@ "\n" "%s." -#: ../meld/filediff.py:1117 -#, python-format -msgid "Choose a name for buffer %i." -msgstr "Válasszon nevet a(z) %i puffernek." +#: ../meld/filediff.py:1608 +msgid "Save Left Pane As" +msgstr "Bal ablaktábla mentése másként" + +#: ../meld/filediff.py:1610 +msgid "Save Middle Pane As" +msgstr "Középső ablaktábla mentése másként" + +#: ../meld/filediff.py:1612 +msgid "Save Right Pane As" +msgstr "Jobb ablaktábla mentése másként" + +#: ../meld/filediff.py:1623 +#, python-format +msgid "File %s has changed on disk since it was opened" +msgstr "A(z) %s fájl megváltozott a lemezen a megnyitása óta" + +#: ../meld/filediff.py:1625 +#| msgid "If you don't save, changes will be permanently lost." +msgid "If you save it, any external changes will be lost." +msgstr "Ha menti, minden külső változtatás elvész." + +#: ../meld/filediff.py:1628 +#| msgid "Save A_ll" +msgid "Save Anyway" +msgstr "Mentés mindenképp" + +#: ../meld/filediff.py:1629 +msgid "Don't Save" +msgstr "Ne mentse" -#: ../meld/filediff.py:1132 +#: ../meld/filediff.py:1653 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -775,7 +1493,7 @@ "\n" "Melyik formátumot szeretné használni?" -#: ../meld/filediff.py:1148 +#: ../meld/filediff.py:1669 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -784,620 +1502,895 @@ "„%s” „%s” használatával kódolhatatlan karaktereket tartalmaz\n" "Szeretné UTF-8 kódolással menteni?" -#: ../meld/filediff.py:1207 -#, python-format +#: ../meld/filediff.py:2033 +msgid "Live comparison updating disabled" +msgstr "Az élő összehasonlítás-frissítés kikapcsolva" + +#: ../meld/filediff.py:2034 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"A frissítés eldobja a következő változásait:\n" -"%s\n" -"\n" -"A művelet nem vonható vissza." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" +"Az összehasonlítások élő frissítése ki van kapcsolva, ha a szinkronizálási " +"pontok aktívak. Saját kezűleg továbbra is frissítheti az összehasonlítást, " +"és az élő frissítések folytatódnak a szinkronizálási pontok törlésekor." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:51 #, python-format msgid "[%s] Merging files" msgstr "[%s] Fájlok összefésülése" -#: ../meld/meldapp.py:132 +#: ../meld/gutterrendererchunk.py:92 +#| msgid "Copy _Left" +msgid "Copy _up" +msgstr "Másolás _fel" + +#: ../meld/gutterrendererchunk.py:93 +#| msgid "Copy _Left" +msgid "Copy _down" +msgstr "Másolás _le" + +#: ../meld/meldapp.py:134 +msgid "wrong number of arguments supplied to --diff" +msgstr "Hibás számú argumentum a --diff kapcsolóhoz" + +#: ../meld/meldapp.py:139 +msgid "Start with an empty window" +msgstr "Indítás üres ablakkal" + +#: ../meld/meldapp.py:140 ../meld/meldapp.py:142 +msgid "file" +msgstr "fájl" + +#: ../meld/meldapp.py:140 ../meld/meldapp.py:144 +msgid "dir" +msgstr "könyvtár" + +#: ../meld/meldapp.py:141 +msgid "Start a version control comparison" +msgstr "Verziókövető-összehasonlítás indítása" + +#: ../meld/meldapp.py:143 +msgid "Start a 2- or 3-way file comparison" +msgstr "2 vagy 3 utas fájl-összehasonlítás indítása" + +#: ../meld/meldapp.py:145 +msgid "Start a 2- or 3-way directory comparison" +msgstr "2 vagy 3 utas könyvtár-összehasonlítás indítása" + +#: ../meld/meldapp.py:153 +msgid "Meld is a file and directory comparison tool." +msgstr "A Meld egy fájl- és könyvtár-összehasonlító eszköz." + +#: ../meld/meldapp.py:156 +msgid "Set label to use instead of file name" +msgstr "A fájlnevek helyett használandó címke beállítása" + +#: ../meld/meldapp.py:158 +msgid "Open a new tab in an already running instance" +msgstr "Új lap megnyitása már futó példányban" + +#: ../meld/meldapp.py:161 +msgid "Automatically compare all differing files on startup" +msgstr "Minden eltérő fájl automatikus összehasonlítása indításkor" + +#: ../meld/meldapp.py:163 +msgid "Ignored for compatibility" +msgstr "Mellőzve a kompatibilitás érdekében" + +#: ../meld/meldapp.py:166 +msgid "Set the target file for saving a merge result" +msgstr "Célfájl beállítása összefésülés eredményének mentéséhez" + +#: ../meld/meldapp.py:168 +msgid "Automatically merge files" +msgstr "Fájlok automatikus összefésülése" + +#: ../meld/meldapp.py:171 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Mentett összehasonlítás betöltése Meld összehasonlítás-fájlból" + +#: ../meld/meldapp.py:174 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Különbséglap létrehozása a megadott fájlokhoz vagy mappákhoz" + +#: ../meld/meldapp.py:177 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "túl sok argumentum (0-3 helyett %d)" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge less than 3 files" +msgstr "nem lehet 3-nál kevesebb fájlt automatikusan összefésülni" + +#: ../meld/meldapp.py:182 +msgid "can't auto-merge directories" +msgstr "könyvtárak nem fésülhetők össze automatikusan" + +#: ../meld/meldapp.py:192 +msgid "Error reading saved comparison file" +msgstr "Hiba az elmentett összehasonlítás-fájl olvasása közben" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:107 +msgid "" +msgstr "" + +#: ../meld/melddoc.py:77 ../meld/melddoc.py:78 +msgid "untitled" +msgstr "névtelen" + +#: ../meld/meldwindow.py:51 msgid "_File" msgstr "_Fájl" -#: ../meld/meldapp.py:133 -msgid "_New..." -msgstr "Ú_j…" +#: ../meld/meldwindow.py:52 +msgid "_New Comparison..." +msgstr "Új össze_hasonlítás…" -#: ../meld/meldapp.py:133 +#: ../meld/meldwindow.py:53 msgid "Start a new comparison" msgstr "Új összehasonlítás indítása" -#: ../meld/meldapp.py:134 +#: ../meld/meldwindow.py:56 msgid "Save the current file" msgstr "A jelenlegi fájl mentése" -#: ../meld/meldapp.py:136 +#: ../meld/meldwindow.py:58 +msgid "Save As..." +msgstr "Mentés másként…" + +#: ../meld/meldwindow.py:59 +msgid "Save the current file with a different name" +msgstr "A jelenlegi fájl mentése más néven" + +#: ../meld/meldwindow.py:62 msgid "Close the current file" msgstr "A jelenlegi fájl bezárása" -#: ../meld/meldapp.py:137 -msgid "Quit the program" -msgstr "Kilépés a programból" - -#: ../meld/meldapp.py:139 +#: ../meld/meldwindow.py:65 msgid "_Edit" msgstr "S_zerkesztés" -#: ../meld/meldapp.py:140 +#: ../meld/meldwindow.py:67 msgid "Undo the last action" msgstr "Az utolsó művelet visszavonása" -#: ../meld/meldapp.py:141 +#: ../meld/meldwindow.py:70 msgid "Redo the last undone action" msgstr "A visszavont művelet ismételt végrehajtása" -#: ../meld/meldapp.py:142 +#: ../meld/meldwindow.py:72 msgid "Cut the selection" msgstr "A kijelölés kivágása" -#: ../meld/meldapp.py:143 +#: ../meld/meldwindow.py:74 msgid "Copy the selection" msgstr "A kijelölés másolása" -#: ../meld/meldapp.py:144 +#: ../meld/meldwindow.py:76 msgid "Paste the clipboard" msgstr "A vágólap tartalmának beillesztése" -#: ../meld/meldapp.py:145 +#: ../meld/meldwindow.py:78 +msgid "Find..." +msgstr "Keresés…" + +#: ../meld/meldwindow.py:78 msgid "Search for text" msgstr "Szöveg keresése" -#: ../meld/meldapp.py:146 +#: ../meld/meldwindow.py:80 msgid "Find Ne_xt" msgstr "Kö_vetkező találat" -#: ../meld/meldapp.py:146 +#: ../meld/meldwindow.py:81 msgid "Search forwards for the same text" msgstr "Keresés előre ugyanarra a szövegre" -#: ../meld/meldapp.py:147 +#: ../meld/meldwindow.py:83 +msgid "Find _Previous" +msgstr "_Előző találat" + +#: ../meld/meldwindow.py:84 +msgid "Search backwards for the same text" +msgstr "Keresés visszafelé ugyanarra a szövegre" + +#: ../meld/meldwindow.py:87 +msgid "_Replace..." +msgstr "_Csere…" + +#: ../meld/meldwindow.py:88 msgid "Find and replace text" msgstr "Szöveg keresése és cseréje" -#: ../meld/meldapp.py:148 -msgid "Prefere_nces" -msgstr "B_eállítások" - -#: ../meld/meldapp.py:148 -msgid "Configure the application" -msgstr "Az alkalmazás beállítása" - -#: ../meld/meldapp.py:150 +#: ../meld/meldwindow.py:91 msgid "_Changes" msgstr "Válto_zások" -#: ../meld/meldapp.py:151 -msgid "Next change" +#: ../meld/meldwindow.py:92 +msgid "Next Change" msgstr "Következő változás" -#: ../meld/meldapp.py:151 +#: ../meld/meldwindow.py:93 msgid "Go to the next change" msgstr "Ugrás a következő változásra" -#: ../meld/meldapp.py:152 -msgid "Previous change" +#: ../meld/meldwindow.py:95 +msgid "Previous Change" msgstr "Előző változás" -#: ../meld/meldapp.py:152 +#: ../meld/meldwindow.py:96 msgid "Go to the previous change" msgstr "Ugrás az előző változásra" -#: ../meld/meldapp.py:154 +#: ../meld/meldwindow.py:98 +msgid "Open Externally" +msgstr "Megnyitás alkalmazással" + +#: ../meld/meldwindow.py:99 +msgid "Open selected file or directory in the default external application" +msgstr "" +"Kijelölt fájl vagy könyvtár megnyitása az alapértelmezett külső alkalmazással" + +#: ../meld/meldwindow.py:103 msgid "_View" msgstr "_Nézet" -#: ../meld/meldapp.py:155 -msgid "File status" +#: ../meld/meldwindow.py:104 +msgid "File Status" msgstr "Fájlállapot" -#: ../meld/meldapp.py:156 -msgid "Version status" +#: ../meld/meldwindow.py:105 +msgid "Version Status" msgstr "Verzióállapot" -#: ../meld/meldapp.py:157 -msgid "File filters" -msgstr "Fájlszűrők" - -#: ../meld/meldapp.py:158 +#: ../meld/meldwindow.py:108 msgid "Stop the current action" msgstr "Jelenlegi művelet leállítása" -#: ../meld/meldapp.py:159 +#: ../meld/meldwindow.py:111 msgid "Refresh the view" msgstr "A nézet frissítése" -#: ../meld/meldapp.py:160 -msgid "Reload" -msgstr "Újratöltés" - -#: ../meld/meldapp.py:160 -msgid "Reload the comparison" -msgstr "Összehasonlítás újratöltése" - -#: ../meld/meldapp.py:162 -msgid "_Help" -msgstr "_Súgó" - -#: ../meld/meldapp.py:163 -msgid "_Contents" -msgstr "_Tartalom" +#: ../meld/meldwindow.py:114 +msgid "_Tabs" +msgstr "_Lapok" + +#: ../meld/meldwindow.py:115 +msgid "_Previous Tab" +msgstr "_Előző lap" + +#: ../meld/meldwindow.py:116 +msgid "Activate previous tab" +msgstr "Előző lap aktiválása" + +#: ../meld/meldwindow.py:118 +msgid "_Next Tab" +msgstr "_Következő lap" + +#: ../meld/meldwindow.py:119 +msgid "Activate next tab" +msgstr "Következő lap aktiválása" + +#: ../meld/meldwindow.py:122 +msgid "Move Tab _Left" +msgstr "Lap _balra" + +#: ../meld/meldwindow.py:123 +msgid "Move current tab to left" +msgstr "A jelenlegi lap mozgatása balra" + +#: ../meld/meldwindow.py:126 +msgid "Move Tab _Right" +msgstr "Lap mozgatása j_obbra" + +#: ../meld/meldwindow.py:127 +msgid "Move current tab to right" +msgstr "A jelenlegi lap mozgatása jobbra" -#: ../meld/meldapp.py:163 -msgid "Open the Meld manual" -msgstr "A Meld kézikönyvének megnyitása" - -#: ../meld/meldapp.py:164 -msgid "Report _Bug" -msgstr "Hi_babejelentés" - -#: ../meld/meldapp.py:164 -msgid "Report a bug in Meld" -msgstr "A Meld hibájának jelentése" - -#: ../meld/meldapp.py:165 -msgid "About this program" -msgstr "A program névjegye" - -#: ../meld/meldapp.py:168 -msgid "Full Screen" +#: ../meld/meldwindow.py:131 +msgid "Fullscreen" msgstr "Teljes képernyő" -#: ../meld/meldapp.py:168 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:132 +msgid "View the comparison in fullscreen" msgstr "Az összehasonlítás megjelenítése teljes képernyőn" -#: ../meld/meldapp.py:169 +#: ../meld/meldwindow.py:134 msgid "_Toolbar" msgstr "_Eszköztár" -#: ../meld/meldapp.py:169 +#: ../meld/meldwindow.py:135 msgid "Show or hide the toolbar" msgstr "Eszköztár megjelenítése vagy elrejtése" -#: ../meld/meldapp.py:170 +#: ../meld/meldwindow.py:137 msgid "_Statusbar" msgstr "Á_llapotsor" -#: ../meld/meldapp.py:170 +#: ../meld/meldwindow.py:138 msgid "Show or hide the statusbar" msgstr "Állapotsor megjelenítése vagy elrejtése" -#. exit at first non found directory + file -#: ../meld/meldapp.py:542 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Fájlok és könyvtárak keveréke nem hasonlítható össze.\n" - -#: ../meld/meldapp.py:597 -msgid "wrong number of arguments supplied to --diff" -msgstr "Hibás számú argumentum a --diff kapcsolóhoz" - -#: ../meld/meldapp.py:601 -msgid "Start with an empty window" -msgstr "Indítás üres ablakkal" - -#: ../meld/meldapp.py:602 ../meld/meldapp.py:603 ../meld/meldapp.py:605 -msgid "file" -msgstr "fájl" - -#: ../meld/meldapp.py:602 ../meld/meldapp.py:604 ../meld/meldapp.py:605 -msgid "dir" -msgstr "könyvtár" - -#: ../meld/meldapp.py:602 -msgid "Start a version control comparison" -msgstr "Verziókezelő-összehasonlítás indítása" - -#: ../meld/meldapp.py:603 -msgid "Start a 2- or 3-way file comparison" -msgstr "2 vagy 3 utas fájl-összehasonlítás indítása" - -#: ../meld/meldapp.py:604 -msgid "Start a 2- or 3-way directory comparison" -msgstr "2 vagy 3 utas könyvtár-összehasonlítás indítása" - -#: ../meld/meldapp.py:605 -msgid "Start a comparison between file and dir/file" -msgstr "Összehasonlítás indítása fájl és könyvtár/fájl között" - -#: ../meld/meldapp.py:611 -msgid "Meld is a file and directory comparison tool." -msgstr "A Meld egy fájl- és könyvtár-összehasonlító eszköz." - -#: ../meld/meldapp.py:614 -msgid "Set label to use instead of file name" -msgstr "A fájlnevek helyett használandó címke beállítása" - -#: ../meld/meldapp.py:616 -msgid "Automatically compare all differing files on startup" -msgstr "Minden eltérő fájl automatikus összehasonlítása indításkor" - -#: ../meld/meldapp.py:619 -msgid "Set the target file for saving a merge result" -msgstr "Célfájl beállítása összefésülés eredményének mentéséhez" - -#: ../meld/meldapp.py:622 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "Különbséglap létrehozása akár 3 megadott fájlhoz vagy könyvtárhoz." - -#: ../meld/meldapp.py:625 -#, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "túl sok paraméter (0-4 helyett %d érkezett)" - -#: ../meld/melddoc.py:51 ../meld/melddoc.py:52 -msgid "untitled" -msgstr "névtelen" +#: ../meld/meldwindow.py:147 +msgid "Open Recent" +msgstr "Legutóbbi megnyitása" + +#: ../meld/meldwindow.py:148 +msgid "Open recent files" +msgstr "Legutóbbi fájlok megnyitása" + +#: ../meld/meldwindow.py:539 +msgid "Switch to this tab" +msgstr "Váltás erre a lapra" + +#: ../meld/meldwindow.py:662 +#| msgid "Cannot compare a mixture of files and directories.\n" +msgid "Cannot compare a mixture of files and directories" +msgstr "Fájlok és könyvtárak keveréke nem hasonlítható össze." #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:192 +#: ../meld/misc.py:180 msgid "[None]" msgstr "[Semmi]" -#: ../meld/patchdialog.py:119 -msgid "Save Patch As..." -msgstr "Folt mentése másként…" - -#: ../meld/preferences.py:81 +#: ../meld/preferences.py:36 msgid "label" msgstr "címke" -#: ../meld/preferences.py:81 +#: ../meld/preferences.py:36 msgid "pattern" msgstr "minta" -#: ../meld/preferences.py:142 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Csak akkor érhető el, ha a gnome-python-desktop csomag telepítve van" - -#. file filters -#. text filters -#: ../meld/preferences.py:167 ../meld/preferences.py:172 ../meld/vcview.py:156 -msgid "Name" -msgstr "Név" - -#: ../meld/preferences.py:167 ../meld/preferences.py:172 -msgid "Active" -msgstr "Aktív" - -#: ../meld/preferences.py:167 -msgid "Pattern" -msgstr "Minta" - -#: ../meld/preferences.py:172 -msgid "Regex" -msgstr "Reg.kif." - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:269 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Másolatok\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:271 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Verziókövetés\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:273 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binárisok\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:275 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Média\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:277 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "CVS kulcsszavak\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:279 -msgid "C++ comment\t0\t//.*\n" -msgstr "C++ megjegyzés\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:281 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "C megjegyzés\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:283 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Üreshely-karakterek\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:285 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Kezdő üreshelyek\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:287 -msgid "Script comment\t0\t#.*" -msgstr "Parancsfájl-megjegyzés\t0\t#.*" - -#: ../meld/vcview.py:120 -msgid "_Commit" -msgstr "_Véglegesítés" - -#: ../meld/vcview.py:120 -msgid "Commit" -msgstr "Véglegesítés" - -#. FIXME: popup used to use gtk.STOCK_GO_BACK -#: ../meld/vcview.py:121 -msgid "_Update" -msgstr "_Frissítés" - -#: ../meld/vcview.py:121 -msgid "Update" -msgstr "Frissítés" - -#. FIXME: popup used to use gtk.STOCK_GO_FORWARD -#: ../meld/vcview.py:122 -msgid "_Add" -msgstr "Hozzá_adás" - -#: ../meld/vcview.py:122 -msgid "Add to VC" -msgstr "Hozzáadás verziókövetéshez" - -#. FIXME: popup used to use gtk.STOCK_ADD -#: ../meld/vcview.py:123 -msgid "Add _Binary" -msgstr "_Bináris hozzáadása" - -#: ../meld/vcview.py:123 -msgid "Add binary to VC" -msgstr "Bináris hozzáadása verziókövetéshez" - -#. FIXME: stock is inconsistent with other VC actions -#: ../meld/vcview.py:124 -msgid "_Remove" -msgstr "_Eltávolítás" - -#: ../meld/vcview.py:124 -msgid "Remove from VC" -msgstr "Törlés a verziókövetésből" - -#. FIXME: popup used to use gtk.STOCK_REMOVE -#: ../meld/vcview.py:125 -msgid "_Resolved" -msgstr "_Feloldva" - -#: ../meld/vcview.py:125 -msgid "Mark as resolved for VC" -msgstr "Megjelölés feloldottként a verziókövetőhöz" - -#: ../meld/vcview.py:126 -msgid "Revert to original" -msgstr "Visszaállítás az eredetire" - -#: ../meld/vcview.py:127 -msgid "Delete locally" -msgstr "Törlés helyben" - -#: ../meld/vcview.py:131 -msgid "_Flatten" -msgstr "_Simítás" - -#: ../meld/vcview.py:131 -msgid "Flatten directories" -msgstr "Könyvtárak simítása" - -#: ../meld/vcview.py:132 -msgid "_Modified" -msgstr "Módosít_va" - -#: ../meld/vcview.py:133 -msgid "_Normal" -msgstr "_Normál" - -#: ../meld/vcview.py:133 -msgid "Show normal" -msgstr "Normál megjelenítése" - -#: ../meld/vcview.py:134 -msgid "Non _VC" -msgstr "Nem _verziókövetéses" - -#: ../meld/vcview.py:134 -msgid "Show unversioned files" -msgstr "Verzió nélküli fájlok megjelenítése" +#: ../meld/recent.py:107 +msgid "Version control:" +msgstr "Verziókövetés:" + +#: ../meld/ui/findbar.py:143 +#| msgid "" +#| "Regular expression error\n" +#| "'%s'" +msgid "Regular expression error" +msgstr "Hibás reguláris kifejezés" -#: ../meld/vcview.py:135 -msgid "Ignored" -msgstr "Mellőzve" +#: ../meld/ui/notebooklabel.py:67 +msgid "Close tab" +msgstr "Lap bezárása" -#: ../meld/vcview.py:135 -msgid "Show ignored files" -msgstr "Figyelmen kívül hagyott fájlok megjelenítése" +#: ../meld/ui/vcdialogs.py:63 +msgid "No files will be committed" +msgstr "Nem lesznek fájlok kommitolva" + +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d nem továbbított kommit" +msgstr[1] "%d nem továbbított kommit" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d ágban" +msgstr[1] "%d ágban" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Mód megváltoztatva: %s -> %s" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Egyesítve" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Alap" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Helyi" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Távoli" + +#: ../meld/vc/_vc.py:65 +#| msgid "Un_versioned" +msgid "Unversioned" +msgstr "Verziózatlan" + +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Hiba" + +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Újonnan hozzáadott" + +#: ../meld/vc/_vc.py:72 +#| msgid "Next Conflict" +msgid "Conflict" +msgstr "Ütközés" + +#: ../meld/vc/_vc.py:73 +#| msgid "_Remove" +msgid "Removed" +msgstr "Eltávolítva" + +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Hiányzó" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Nincs jelen" -#: ../meld/vcview.py:176 ../meld/vcview.py:295 +#: ../meld/vcview.py:217 ../meld/vcview.py:392 msgid "Location" msgstr "Hely" -#: ../meld/vcview.py:177 +#: ../meld/vcview.py:218 msgid "Status" msgstr "Állapot" -#: ../meld/vcview.py:178 -msgid "Rev" -msgstr "Verzió" +#: ../meld/vcview.py:219 +msgid "Revision" +msgstr "Revízió" -#: ../meld/vcview.py:180 +#: ../meld/vcview.py:220 msgid "Options" msgstr "Beállítások" -#: ../meld/vcview.py:227 -msgid "Choose one Version Control" -msgstr "Válasszon egy verziókövetőt" - -#: ../meld/vcview.py:228 -msgid "Only one Version Control in this directory" -msgstr "Csak egy verziókövető a könyvtárban" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:241 +#: ../meld/vcview.py:303 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "A(z) %s nincs telepítve" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:245 -msgid "Invalid Repository" +#: ../meld/vcview.py:307 +msgid "Invalid repository" msgstr "Érvénytelen tároló" -#: ../meld/vcview.py:254 +#: ../meld/vcview.py:316 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:318 ../meld/vcview.py:326 +msgid "None" +msgstr "Nincs" + +#: ../meld/vcview.py:337 +msgid "No valid version control system found in this folder" +msgstr "Nem található használható verziókövető rendszer ebben a mappában" + +#: ../meld/vcview.py:339 +msgid "Only one version control system found in this folder" +msgstr "Csak egy verziókövető rendszer található ebben a mappában" + +#: ../meld/vcview.py:341 +msgid "Choose which version control system to use" +msgstr "Válassza ki a használandó verziókövető rendszert" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:295 +#: ../meld/vcview.py:392 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:343 -msgid "(Empty)" -msgstr "(Üres)" - -#: ../meld/vcview.py:376 +#: ../meld/vcview.py:406 ../meld/vcview.py:414 #, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Eltérések letöltése" +msgid "Scanning %s" +msgstr "%s vizsgálata" -#: ../meld/vcview.py:383 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Folt alkalmazása" - -#: ../meld/vcview.py:387 -msgid "No differences found." -msgstr "Nincs eltérés." +#: ../meld/vcview.py:448 +msgid "(Empty)" +msgstr "(Üres)" -#: ../meld/vcview.py:461 -msgid "Select some files first." -msgstr "Először válasszon ki néhány fájlt." +#: ../meld/vcview.py:671 +msgid "Remove folder and all its files?" +msgstr "Eltávolítja a mappát és benne minden fájlt?" -#: ../meld/vcview.py:527 -#, python-format +#: ../meld/vcview.py:673 msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"\n" -" A „patch” indítása meghiúsult.\n" -" \n" -" Lehet, hogy a „GNU patch” nincs telepítve,\n" -" vagy a(z) %s nem támogatott verzióját használja.\n" -" \n" -" Küldjön hibajelentést e-mailben ide:\n" -" meld-list@gnome.org\n" -" \n" -" A következő információkkal:\n" -" \n" -" - meld verzió: „%s”\n" -" - verziókövető szoftver típusa: „%s”\n" -" - verziókövető szoftver verziója: „X.Y.Z”\n" -" - a következő kimenetét: „%s valamifájl.txt”\n" -" - patch parancs: „%s”\n" -" (nem kell ténylegesen lefuttatni, csak adja " -"meg a parancssort)\n" -" \n" -" Az „X.Y.Z” helyett a ténylegesen használt " -"verziókövető szoftver verzióját adja meg.\n" -" " - -#: ../meld/ui/findbar.py:120 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Hibás szabályos kifejezés\n" -"„%s”" - -#: ../meld/ui/historyentry.py:290 -msgid "_Browse..." -msgstr "_Tallózás…" - -#: ../meld/ui/historyentry.py:298 -msgid "Path" -msgstr "Útvonal" - -#: ../meld/ui/historyentry.py:299 -msgid "Path to file" -msgstr "Útvonal a fájlhoz" - -#: ../meld/ui/historyentry.py:300 -msgid "Pop up a file selector to choose a file" -msgstr "Megjelenik egy fájlválasztó egy fájl kiválasztásához" - -#: ../meld/ui/historyentry.py:419 -msgid "Select directory" -msgstr "Válasszon könyvtárat" - -#: ../meld/ui/historyentry.py:423 -msgid "Select file" -msgstr "Válasszon fájlt" +"Ez eltávolítja az összes kijelölt fájlt és mappát, valamint minden fájlt a " +"kijelölt mappákon belül a verziókövetőből." -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Lap bezárása" +#: ../meld/vcview.py:707 +#, python-format +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error removing %s" +msgstr "Hiba %s eltávolításakor" + +#~ msgid "" +#~ "Meld 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.\n" +#~ "\n" +#~ "Meld 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. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see ." +#~ msgstr "" +#~ "A Meld szabad szoftver, terjesztheti és/vagy módosíthatja a Free Software " +#~ "Foundation által kiadott GNU General Public License második (vagy bármely " +#~ "későbbi) változatában foglaltak alapján.\n" +#~ "\n" +#~ "A Meldet abban a reményben terjesztjük, hogy hasznos lesz, de nem " +#~ "vállalunk SEMMIFÉLE GARANCIÁT, még olyan értelemben sem, hogy a program " +#~ "alkalmas-e a KÖZREADÁSRA vagy EGY BIZONYOS FELADAT ELVÉGZÉSÉRE. További " +#~ "részletekért tanulmányozza a GNU GPL licencet.\n" +#~ "\n" +#~ "A Meldhez a GNU General Public License egy példánya is jár, ha nem kapta " +#~ "meg, írjon a Free Software Foundation Inc.-nek. Levélcímük: 51 Franklin " +#~ "Street, Fifth Floor, Boston, MA 02110-1301, USA/>." + +#~ msgid "Loading" +#~ msgstr "Betöltés" + +#~ msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +#~ msgstr "" +#~ "Betöltéskor ezen kodekek ilyen sorrendben történő próbálása (például " +#~ "utf8, iso8859)" + +#~ msgid "Encoding" +#~ msgstr "Kódolás" + +#~ msgid "Compare selected" +#~ msgstr "Kijelöltek összehasonlítása" + +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "„%s” egy könyvtár.\n" +#~ "Eltávolítja rekurzívan?" + +#~ msgid "Start a comparison between file and dir/file" +#~ msgstr "Összehasonlítás indítása fájl és könyvtár/fájl között" + +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "D-Bus hiba, az összehasonlítások új ablakban nyílnak meg." + +#~ msgid "Quit the program" +#~ msgstr "Kilépés a programból" + +#~ msgid "Configure the application" +#~ msgstr "Az alkalmazás beállítása" + +#~ msgid "_Contents" +#~ msgstr "_Tartalom" + +#~ msgid "Open the Meld manual" +#~ msgstr "A Meld kézikönyvének megnyitása" + +#~ msgid "Report _Bug" +#~ msgstr "Hi_babejelentés" + +#~ msgid "Report a bug in Meld" +#~ msgstr "A Meld hibájának jelentése" + +#~ msgid "About this program" +#~ msgstr "A program névjegye" + +#~| msgid "Only available if you have gnome-python-desktop installed" +#~ msgid "Only available if you have PyGtkSourceView 2 installed" +#~ msgstr "Csak akkor érhető el, ha a PyGtkSourceView 2 telepítve van" + +#~ msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgstr "Másolatok\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" + +#~ msgid "" +#~ "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +#~ "Desktop.ini\n" +#~ msgstr "" +#~ "Rendszerspecifikus metaadatok\t0\t.DS_Store ._* .Spotlight-V100 .Trashes " +#~ "Thumbs.db Desktop.ini\n" + +#~ msgid "Version Control\t1\t%s\n" +#~ msgstr "Verziókövetés\t1\t%s\n" + +#~ msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +#~ msgstr "Binárisok\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" + +#~ msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +#~ msgstr "Média\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" + +#~ msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgstr "CVS kulcsszavak\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" + +#~ msgid "C++ comment\t0\t//.*\n" +#~ msgstr "C++ megjegyzés\t0\t//.*\n" + +#~ msgid "C comment\t0\t/\\*.*?\\*/\n" +#~ msgstr "C megjegyzés\t0\t/\\*.*?\\*/\n" + +#~ msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgstr "Üreshely-karakterek\t0\t[ \\t\\r\\f\\v]*\n" + +#~ msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgstr "Kezdő üreshelyek\t0\t^[ \\t\\r\\f\\v]*\n" + +#~ msgid "Script comment\t0\t#.*" +#~ msgstr "Parancsfájl-megjegyzés\t0\t#.*" + +#~ msgid "_Browse..." +#~ msgstr "_Tallózás…" + +#~ msgid "Path" +#~ msgstr "Útvonal" + +#~ msgid "Path to file" +#~ msgstr "Útvonal a fájlhoz" + +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "Megjelenik egy fájlválasztó egy fájl kiválasztásához" + +#~ msgid "Select directory" +#~ msgstr "Válasszon könyvtárat" + +#~ msgid "Select file" +#~ msgstr "Válasszon fájlt" + +#~ msgid "" +#~ "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" +#~ "Missing:Not present" +#~ msgstr "" +#~ "Mellőzve:Verzió nélkül:::Hiba::Újonnan hozzáadva:Módosítva:Ütközés:" +#~ "Eltávolítva:Hiányzik:Nincs jelen" + +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "Hiba szabályos kifejezéssé alakítás közben\n" +#~ "A minta: „%s”\n" +#~ "A hiba: „%s”" + +#~ msgid "Create Patch" +#~ msgstr "Folt létrehozása" + +#~ msgid "Create a patch" +#~ msgstr "Folt létrehozása" + +#~| msgid "Merge all non-conflicting" +#~ msgid "Merge All Non-conflicting" +#~ msgstr "Minden nem ütköző egyesítése" + +#~ msgid "Choose a name for buffer %i." +#~ msgstr "Válasszon nevet a(z) %i puffernek." + +#~ msgid "Save changes to documents before reloading?" +#~ msgstr "Menti a dokumentumok változtatásait újratöltés előtt?" + +#~ msgid "Reload the comparison" +#~ msgstr "Összehasonlítás újratöltése" + +#~ msgid "Show normal" +#~ msgstr "Normál megjelenítése" + +#~ msgid "Tag" +#~ msgstr "Címke" + +#~ msgid "[%s] Fetching differences" +#~ msgstr "[%s] Eltérések letöltése" + +#~ msgid "[%s] Applying patch" +#~ msgstr "[%s] Folt alkalmazása" + +#~ msgid "Patch tool not found" +#~ msgstr "A patch eszköz nem található" + +#~ msgid "" +#~ "Meld needs the patch tool to be installed to perform comparisons " +#~ "in %s repositories. Please install patch and try again." +#~ msgstr "" +#~ "A Meld a patch eszköz telepítését igényli az összehasonlítás " +#~ "végzéséhez %s tárolókban. Telepítse a patch csomagot, és próbálja " +#~ "újra." + +#~ msgid "Error fetching original comparison file" +#~ msgstr "Hiba az eredeti összehasonlítás-fájl lekérése közben" + +#~ msgid "" +#~ "Meld couldn't obtain the original version of your comparison file. If you " +#~ "are using the most recent version of Meld, please report a bug, including " +#~ "as many details as possible." +#~ msgstr "" +#~ "A Meld nem tudta beszerezni az összehasonlítás-fájl eredeti verzióját. Ha " +#~ "a Meld legújabb verzióját használja, akkor küldjön hibajelentést a lehető " +#~ "legtöbb részlet megadásával." + +#~ msgid "Report a bug" +#~ msgstr "Hiba bejelentése" + +#~ msgid "VC Log" +#~ msgstr "Verziókövetési napló" + +#~ msgid "Update" +#~ msgstr "Frissítés" + +#~ msgid "Add to VC" +#~ msgstr "Hozzáadás verziókövetéshez" + +#~ msgid "Remove from VC" +#~ msgstr "Törlés a verziókövetésből" + +#~ msgid "Delete locally" +#~ msgstr "Törlés helyben" + +#~ msgid "Non _VC" +#~ msgstr "Nem _verziókövetéses" + +#~ msgid "Rev" +#~ msgstr "Verzió" + +#~ msgid "" +#~ "Some files have been modified.\n" +#~ "Which ones would you like to save?" +#~ msgstr "" +#~ "Néhány fájl megváltozott.\n" +#~ "Melyeket szeretné menteni?" + +#~ msgid "_Discard Changes" +#~ msgstr "_Változások eldobása" + +#~ msgid "_Save Selected" +#~ msgstr "_Kijelöltek mentése" + +#~ msgid "Choose Files" +#~ msgstr "Válasszon fájlokat" + +#~ msgid "_Three Way Compare" +#~ msgstr "_Háromutas összehasonlítás" + +#~ msgid "Mine" +#~ msgstr "Saját" + +#~ msgid "Original" +#~ msgstr "Eredeti" + +#~ msgid "Other" +#~ msgstr "Másik" + +#~ msgid "Select VC Directory" +#~ msgstr "Válasszon VC könyvtárat" + +#~ msgid "Directory" +#~ msgstr "Könyvtár" + +#~ msgid "" +#~ "Reloading will discard changes in:\n" +#~ "%s\n" +#~ "\n" +#~ "You cannot undo this operation." +#~ msgstr "" +#~ "A frissítés eldobja a következő változásait:\n" +#~ "%s\n" +#~ "\n" +#~ "A művelet nem vonható vissza." + +#~ msgid "_New..." +#~ msgstr "Ú_j…" + +#~ msgid "Add _Binary" +#~ msgstr "_Bináris hozzáadása" + +#~ msgid "Add binary to VC" +#~ msgstr "Bináris hozzáadása verziókövetéshez" + +#~ msgid "Select some files first." +#~ msgstr "Először válasszon ki néhány fájlt." + +#~ msgid "" +#~ "\n" +#~ " Invoking 'patch' failed.\n" +#~ " \n" +#~ " Maybe you don't have 'GNU patch' installed,\n" +#~ " or you use an untested version of %s.\n" +#~ " \n" +#~ " Please send email bug report to:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " Containing the following information:\n" +#~ " \n" +#~ " - meld version: '%s'\n" +#~ " - source control software type: '%s'\n" +#~ " - source control software version: 'X.Y.Z'\n" +#~ " - the output of '%s somefile.txt'\n" +#~ " - patch command: '%s'\n" +#~ " (no need to actually run it, just provide\n" +#~ " the command line) \n" +#~ " \n" +#~ " Replace 'X.Y.Z' by the actual version for the\n" +#~ " source control software you use.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " A „patch” indítása meghiúsult.\n" +#~ " \n" +#~ " Lehet, hogy a „GNU patch” nincs telepítve,\n" +#~ " vagy a(z) %s nem támogatott verzióját használja.\n" +#~ " \n" +#~ " Küldjön hibajelentést e-mailben ide:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " A következő információkkal:\n" +#~ " \n" +#~ " - meld verzió: „%s”\n" +#~ " - verziókövető szoftver típusa: „%s”\n" +#~ " - verziókövető szoftver verziója: „X.Y.Z”\n" +#~ " - a következő kimenetét: „%s valamifájl.txt”\n" +#~ " - patch parancs: „%s”\n" +#~ " (nem kell ténylegesen lefuttatni, csak adja " +#~ "meg a parancssort)\n" +#~ " \n" +#~ " Az „X.Y.Z” helyett a ténylegesen használt " +#~ "verziókövető szoftver verzióját adja meg.\n" +#~ " " + +#~ msgid "_Search for" +#~ msgstr "K_eresés" + +#~ msgid "Compare Options" +#~ msgstr "Összehasonlítás beállításai" + +#~ msgid "Date" +#~ msgstr "Dátum" + +#~ msgid "Local copy against other remote revision" +#~ msgstr "Helyi másolat másik távoli verzióval szemben" + +#~ msgid "Local copy against same remote revision" +#~ msgstr "Helyi másolat ugyanazon távoli verzióval szemben" + +#~ msgid "Left" +#~ msgstr "Bal" + +#~ msgid "Right" +#~ msgstr "Jobb" + +#~ msgid "Case" +#~ msgstr "Kis- és nagybetűk" + +#~ msgid "Ignore case of entries" +#~ msgstr "Kis- és nagybetűk egyenértékűek" + +#~ msgid "Error converting pattern '%s' to regular expression" +#~ msgstr "Hiba „%s” minta szabályos kifejezéssé alakításakor" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" -msgstr "" -"Mellőzve:Verzió nélkül:::Hiba::Újonnan hozzáadva:Módosítva:Ütközés:" -"Eltávolítva:Hiányzik" +#~ msgid "Regex" +#~ msgstr "Reg.kif." -#: ../meld/vc/cvs.py:156 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Hiba szabályos kifejezéssé alakítás közben\n" -"A minta: „%s”\n" -"A hiba: „%s”" +#~ msgid "_Commit" +#~ msgstr "_Véglegesítés" + +#~ msgid "No differences found." +#~ msgstr "Nincs eltérés." diff -Nru meld-1.5.3/po/id.po meld-3.11.0/po/id.po --- meld-1.5.3/po/id.po 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/po/id.po 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,2030 @@ +# Indonesian translation for meld. +# Copyright (C) 2013 meld's COPYRIGHT HOLDER +# This file is distributed under the same license as the meld package. +# Andika Triwidada , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: meld master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-31 23:25+0000\n" +"PO-Revision-Date: 2014-01-02 14:36+0700\n" +"Last-Translator: Andika Triwidada \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.5.7\n" + +#: ../bin/meld:115 +msgid "Cannot import: " +msgstr "Tak bisa mengimpor:" + +#: ../bin/meld:118 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld memerlukan %s atau lebih tinggi." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Penampil Diff" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Meld Penampil Diff" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Membandingkan dan menggabung berkas-berkas Anda" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Meld adalah alat diff dan merge visual yang ditujukan bagi para pengembang. " +"Meld membantu Anda membandingkan berkas, direktori, dan projek yang " +"dikendalikan versinya. Ini menyediakan perbandingan dua dan tiga arah bagi " +"berkas dan direktori, dan mendukung banyak kendali sistem versi termasuk " +"Git, Mercurial, Bazaar, dan Subversion." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" +"Meld membantu Anda meninjau perubahan kode, memahami patch, dan membuat " +"konflik merge yang besar sedikit lebih mudah." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Deskripsi perbandingan Meld" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Ukuran jendela baku" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +msgid "Show toolbar" +msgstr "Tampilkan bilah alat" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Bila berisi true, bilah alat jendela tampak." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +msgid "Show statusbar" +msgstr "Tampilkan bilah status" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Bila berisi true, bilah status jendela tampak." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +msgid "Automatically detected text encodings" +msgstr "Enkoding teks yang dideteksi secara otomatis " + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Enkoding teks ini akan dipakai secara otomatis (sesuai urutan) untuk mencoba " +"mendekode berkas teks yang dimuat." + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Lebar langkah indentasi" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "Banyaknya spasi yang dipakai untuk langkah indentasi tunggal" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "Apakah indentasi memakai spasi atau tab" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" +"Bila berisi true, sebarang indentasi baru akan memakai spasi sebagai ganti " +"tab." + +#: ../data/org.gnome.meld.gschema.xml.h:12 +msgid "Show line numbers" +msgstr "Tampilkan nomor baris" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" +"Bila berisi true, nomor baris akan ditampilkan dalam parit perbandingan " +"berkas." + +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Sorot sintaks" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Apakah menyorot sintaks dalam perbandingan. Karena warna penyorotan milik " +"Meld, ini secara baku mati." + +#: ../data/org.gnome.meld.gschema.xml.h:16 +msgid "Displayed whitespace" +msgstr "Whitespace yang ditampilkan" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Pemilih bagi tipe karakter whitespace individu yang akan ditampilkan. Nilai " +"yang mungkin adalah 'space' (spasi), 'tab', 'newline' (baris baru), dan " +"'nbsp' (spasi tak putus)." + +#: ../data/org.gnome.meld.gschema.xml.h:18 +msgid "Wrap mode" +msgstr "Mode lipat" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Baris dalam perbandingan berkas akan dilipat sesuai pengaturan ini, bisa " +"tidak sedikitpun ('none'), pada sebarang karakter ('char'), atau hanya pada " +"akhir kata ('word')." + +#: ../data/org.gnome.meld.gschema.xml.h:20 +msgid "Highlight current line" +msgstr "Sorot baris saat ini" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" +"Bila berisi true, baris yang memuat kursor akan disorot dalam perbandingan " +"berkas." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +msgid "Use the system default monospace font" +msgstr "Gunakan fonta monospace bawaan sistem" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Bila berisi false, fonta ubahan yang didefinisikan akan dipakai sebagai " +"ganti fonta monospace sistem." + +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Fonta ubahan" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"Fonta yang dipilih untuk dipakai, disimpai sebagai suatu string dan diurai " +"sebagai suatu deskripsi fonta Pango" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Abaikan baris kosong ketika membandingkan berkas" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Bila berisi true, baris-baris kosong akan dibuang ketika menyorot perubahan " +"antar berkas." + +#: ../data/org.gnome.meld.gschema.xml.h:28 +msgid "Use the system default editor" +msgstr "Gunakan penyunting bawaan sistem" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Bila berisi false, penyunting ubahan yang didefinisikan akan dipakai sebagai " +"ganti penyunting sistem ketika membuka berkas secara eksternal." + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "Perintah peluncuran penyunting ubahan" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"Perintah yang dipakai untuk meluncurkan penyunting ubahan. Beberapa " +"penemplatan yang terbatas didukung di sini; saat ini '{file}' dan '{line}' " +"adalah token yang dikenal." + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Kolom yang akan ditampilkan" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" +"Daftar nama kolom dalam perbandingan folder dan apakah mereka mesti " +"ditampilkan." + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Abaikan taut simbolik" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Bila berisi true, perbandingan folder tidak mengikuti taut simbolik ketika " +"menelusuri pohon folder." + +#: ../data/org.gnome.meld.gschema.xml.h:36 +msgid "Use shallow comparison" +msgstr "Gunakan perbandingan dangkal" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Bila berisi true, perbandingan folder membandingkan berkas hanya berdasarkan " +"pada ukuran dan mtime, menganggap berkas identik bila ukuran dan mtime " +"mereka cocok, dan berbeda bila tidak." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +msgid "File timestamp resolution" +msgstr "Resolusi penanda waktu" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" +"Ketima membandingkan berdasarkan mtime, ini adalah perbedaan minimum dalam " +"nanodetik antara dua berkas sebelum mereka dianggap memiliki mtime yang " +"berbeda. Ini berguna ketika membandingkan berkas antar sistem berkas dengan " +"resolusi penanda waktu yang berbeda." + +#: ../data/org.gnome.meld.gschema.xml.h:40 +msgid "File status filters" +msgstr "Penyaring status berkas" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" +"Daftar dari status yang dipakai untuk menyaring berkas yang tampak dalam " +"perbandingan folder." + +#: ../data/org.gnome.meld.gschema.xml.h:42 +msgid "Show the version control console output" +msgstr "Tampilkan keluaran konsol kendali versi" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" +"Bila berisi true, suatu seksi keluaran konsol akan ditampilkan dalam tilikan " +"kendali versi, menunjukkan perintah yang dijalankan bagi operasi kendali " +"versi." + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "Sajikan perbandingan versi sebagai kiri-lokal/kanan-jauh" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" +"Bila berisi true, perbandingan kendali versi akan memakai skema kiri-adalah-" +"lokal, kanan-adalah-remote untuk menentukan urutan apa menyajikan berkas " +"dalam panel. Bila tidak, skema left-adalah-milik-mereka, kanan-adalah-" +"milikku dipakai." + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "Tampilkan marjin dalam penyunting pesan komit" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" +"Bila berisi true, suatu panduan akan ditampilkan untuk menunjukkan marjin " +"pada kolom mana dalam penyunting pesan komit kendali versi." + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "Marjin kolom dalam penyunting pesan komit" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "Kolom tempat marjin berada dalam penyunting pesan komit kendali versi." + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "Secara otomatis melipat isi pesan komit" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" +"Bila berisi true, penyunting pesan komit kendali versi akan melipat (yaitu " +"menyisipkan pemecah baris) pada marjin komit yang didefinisikan sebelum " +"komit." + +#: ../data/org.gnome.meld.gschema.xml.h:52 +msgid "Version control status filters" +msgstr "Penyaring status kendali versi" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" +"Daftar status yang dipakai untuk menyaring berkas yang tampak dalam " +"perbandingan kendali versi." + +#: ../data/org.gnome.meld.gschema.xml.h:54 +msgid "Filename-based filters" +msgstr "Penyaring berbasis nama berkas" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" +"Daftar penyaring berbasis nama berkas yang terpradefinisi, yang bila aktif, " +"akan menghapus berkas yang cocok dari perbandingan folder." + +#: ../data/org.gnome.meld.gschema.xml.h:56 +msgid "Text-based filters" +msgstr "Penyaring berbasis teks" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" +"Daftar penyaring berbasis teks yang terpradefinisi, yang bila aktif, akan " +"menghapus teks agar tidak dipakai dalam perbandingan berkas. Teks masih akan " +"ditampilkan, tapi tak akan menyumbang ke perbandingan itu sendiri." + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "Tentang Meld" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Hak Cipta © 2002-2009 Stephen Kennedy\n" +"Hak Cipta © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Situs web" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "Andika Triwidada , 2013." + +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "_Preferensi" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "_Bantuan" + +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "Tent_ang" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Keluar" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Bandingkan" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Bandingkan berkas-berkas yang dipilih" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Salin Ke K_iri" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Salin ke kiri" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Salin Ke K_anan" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Salin ke kanan" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Hapus yang dipilih" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1414 +msgid "Hide" +msgstr "Sembunyikan" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Sembunyikan yang dipilih" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Abaikan Besar Kecil Huruf Nama Berkas" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Menganggap sama nama berkas yang berbeda huruf besar kecilnya yang bila " +"tidak menjadi identik" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Sama" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Tampilkan yang identik" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Baru" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Tampilkan yang baru" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Diubah" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Tampilkan yang berubah" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Penyaring" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Tata penyaring aktif" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Daftar Yang Dapat Disunting" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Aktif" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column Name" +msgstr "Nama Kolom" + +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "T_ambah" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:678 +msgid "_Remove" +msgstr "_Hapus" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Pindahkan item ke atas" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "_Naikkan" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "Pindahkan item ke bawah" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "_Turunkan" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:366 +#: ../meld/vcview.py:188 +msgid "Name" +msgstr "Nama" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Pola" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Tambah penyaring baru" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Hapus penyaring yang dipilih" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Simpan perubahan ke dokumen sebelum menutup?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Bila Anda tak menyimpan, perubahan akan hilang selamanya." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Tutup _Tanpa Menyimpan" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "_Batal" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "_Simpan" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Berkas ini tidak bisa ditulisi. Anda dapat mengklik di sini untuk membuka " +"kunci berkas dan membuat perubahan, tapi perubahan tersebut mesti disimpan " +"ke suatu berkas baru." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Batalkan perubahan yang belum tersimpan ke dokumen?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "" +"Perubahan yang dibuat ke dokumen-dokumen berikut akan hilang selamanya:\n" + +#: ../data/ui/findbar.ui.h:1 +msgid "_Replace" +msgstr "_Timpa" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Timp_a Semua" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "Se_belumnya" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "Se_lanjutnya" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Cari:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "Gantikan _dengan:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match case" +msgstr "_Cocok huruf besar kecil" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Se_luruh kata" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular e_xpression" +msgstr "E_kspresi reguler" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Dilipat" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Format as Patch" +msgstr "Format sebagai Patch" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Use differences between:" +msgstr "Pakai perbedaan antara:" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Left and middle panes" +msgstr "Panel kiri dan tengah" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Middle and right panes" +msgstr "Panel tengah dan kanan" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "Balikkan a_rah patch" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Salin ke Papan Klip" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:121 +msgid "Save Patch" +msgstr "Simpan Patch" + +#: ../data/ui/preferences.ui.h:1 +msgid "Left is remote, right is local" +msgstr "Kiri remote, kanan lokal" + +#: ../data/ui/preferences.ui.h:2 +msgid "Left is local, right is remote" +msgstr "Kiri lokal, kanan remote" + +#: ../data/ui/preferences.ui.h:3 +msgid "1ns (ext4)" +msgstr "1ns (ext4)" + +#: ../data/ui/preferences.ui.h:4 +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" + +#: ../data/ui/preferences.ui.h:5 +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" + +#: ../data/ui/preferences.ui.h:6 +msgid "2s (VFAT)" +msgstr "2s (VFAT)" + +#: ../data/ui/preferences.ui.h:7 +msgid "Meld Preferences" +msgstr "Preferensi Meld" + +#: ../data/ui/preferences.ui.h:8 +msgid "Font" +msgstr "Fonta" + +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "G_unakan fonta lebar tetap sistem" + +#: ../data/ui/preferences.ui.h:10 +msgid "_Editor font:" +msgstr "Fonta p_enyunting:" + +#: ../data/ui/preferences.ui.h:11 +msgid "Display" +msgstr "Tampilan" + +#: ../data/ui/preferences.ui.h:12 +msgid "_Tab width:" +msgstr "Lebar _tab:" + +#: ../data/ui/preferences.ui.h:13 +msgid "_Insert spaces instead of tabs" +msgstr "S_isipkan spasi-spasi sebagai penggati tab" + +#: ../data/ui/preferences.ui.h:14 +msgid "Enable text _wrapping" +msgstr "Fungsikan pe_lipatan text" + +#: ../data/ui/preferences.ui.h:15 +msgid "Do not _split words over two lines" +msgstr "Jangan penggal kata ke dua bari_s" + +#: ../data/ui/preferences.ui.h:16 +msgid "Highlight _current line" +msgstr "Sorot baris _saat ini" + +#: ../data/ui/preferences.ui.h:17 +msgid "Show _line numbers" +msgstr "Tampi_lkan nomor baris" + +#: ../data/ui/preferences.ui.h:18 +msgid "Show w_hitespace" +msgstr "Tampilkan w_hitespace" + +#: ../data/ui/preferences.ui.h:19 +msgid "Use s_yntax highlighting" +msgstr "Gunakan penyorotan s_intaks" + +#: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Penyunting Eksternal" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "_Gunakan penyunting bawaan sistem" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Pe_rintah penyunting:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Penyunting" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Perbandingan Dangkal" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "B_andingkan berkas hanya berdasarkan ukuran dan penanda waktu" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "Resolusi penanda wak_tu:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Taut Simbolik" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Kolom Yang Nampak" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Perbandingan Folder" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Perbandingan Versi" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "_Ketika membandingkan revisi berkas:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Pesan Komit" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Tampilkan ma_rjin kanan pada:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Otomatis lipat _baris pada marjin kanan saat komit" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Kendali Versi" + +#: ../data/ui/preferences.ui.h:37 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Ketika melakukan perbandingan direktori, Anda mungkin menyaring berkas dan " +"direktori menurut namanya. Setiap pola adalah daftar dari wildcard gaya " +"shell yang dipisahkan oleh spasi." + +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:106 +msgid "File Filters" +msgstr "Penyaring Berkas" + +#: ../data/ui/preferences.ui.h:39 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Ketika melakukan perbandingan berkas, Anda mungkin mengabaikan beberapa " +"jenis perubahan. Setiap pola di sini adalah ekspresi reguler python yang " +"menggantikan teks yang cocok dengan string kosong sebelum perbandingan " +"dilakukan. Bila ekspresi memuat grup, hanya grup tersebut yang diganti. " +"Lihat manual pengguna untuk rincian lebih lanjut." + +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Abaikan perubahan yang menyisipkan atau menghapus baris-baris kosong" + +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Penyaring Teks" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:618 +msgid "New comparison" +msgstr "Perbandingan baru" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Perbandingan berkas" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Perbandingan direktori" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Tilikan kendali versi" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Perbandingan _3 pihak" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Pilih Berkas Ke Tiga" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Pilih Berkas Ke Dua" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Pilih Berkas Pertama" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Pilih Folder Pertama" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Pilih Folder Ke Dua" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Pilih Folder Ke Tiga" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Pilih Suatu Folder Versi-Terkendali" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "Per_bandingan kosong" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "B_andingkan" + +#: ../data/ui/vcview.ui.h:3 +msgid "Co_mmit..." +msgstr "Ko_mit..." + +#: ../data/ui/vcview.ui.h:4 +msgid "Commit changes to version control" +msgstr "Komit perubahan ke kendali versi" + +#: ../data/ui/vcview.ui.h:5 +msgid "_Update" +msgstr "M_utakhirkan" + +#: ../data/ui/vcview.ui.h:6 +msgid "Update working copy from version control" +msgstr "Mutakhirkan salinan kerja dari kendali versi" + +#: ../data/ui/vcview.ui.h:7 +msgid "_Push" +msgstr "_Push" + +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Push perubahan lokal ke remote" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Tambahkan ke kendali versi" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Hapus dari kendali versi" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Tandai sebagai Terselesai_kan" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Tandai sebagai terselesaikan dalam kendali versi" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Re_vert" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Kembalikan salinan kerja ke keadaan asli" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Hapus dari salinan kerja" + +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Ratakan" + +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Ratakan direktori" + +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "_Berubah" + +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Tampilkan berkas-berkas yang berubah" + +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Normal" + +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Tampilkan berkas-berkas normal" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "Tanpa _Versi" + +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Tampilkan berkas tanpa versi" + +#: ../data/ui/vcview.ui.h:26 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Diabaikan" + +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Tampilkan berkas-berkas yang diabaikan" + +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Komit" + +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Komit Berkas" + +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Pesan Log" + +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Log sebelumnya:" + +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "Ko_mit" + +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Push komit lokal ke remote?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "Komit yang akan di-push ditentukan oleh sistem kendali versi Anda." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Push komit" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:384 +msgid "Size" +msgstr "Ukuran" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:392 +msgid "Modification time" +msgstr "Waktu modifikasi" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:400 +msgid "Permissions" +msgstr "Ijin" + +#: ../meld/dirdiff.py:559 +#, python-format +msgid "Hide %s" +msgstr "Sembunyikan %s" + +#: ../meld/dirdiff.py:688 ../meld/dirdiff.py:710 +#, python-format +msgid "[%s] Scanning %s" +msgstr "[%s] Memindai %s" + +#: ../meld/dirdiff.py:810 +#, python-format +msgid "[%s] Done" +msgstr "[%s] Selesai" + +#: ../meld/dirdiff.py:817 +msgid "Multiple errors occurred while scanning this folder" +msgstr "Galat berganda terjadi ketika memindai folder ini" + +#: ../meld/dirdiff.py:818 +msgid "Files with invalid encodings found" +msgstr "Berkas dengan pengkodean tak valid ditemukan" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:820 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" +"Beberapa berkas memiliki pengkodean yang salah. Namanya kurang lebih seperti:" + +#: ../meld/dirdiff.py:822 +msgid "Files hidden by case insensitive comparison" +msgstr "" +"Berkasn yang disembunyikan oleh perbandingan yang tak membedakan huruf besar " +"kecil" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:824 +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" +msgstr "" +"Anda sedang menjalankan perbandingan tak peka huruf besar kecil pada suatu " +"sistem berkas yang peka huruf besar kecil. Berkas-berkas berikut dalam " +"folder ini tersembunyi:
" + +#: ../meld/dirdiff.py:835 +#, python-format +msgid "'%s' hidden by '%s'" +msgstr "'%s' disembunyikan oleh '%s'" + +#: ../meld/dirdiff.py:860 ../meld/filediff.py:1107 ../meld/filediff.py:1245 +#: ../meld/filediff.py:1416 ../meld/filediff.py:1446 ../meld/filediff.py:1448 +msgid "Hi_de" +msgstr "Sem_bunyikan" + +#: ../meld/dirdiff.py:891 +#, python-format +msgid "" +"'%s' exists.\n" +"Overwrite?" +msgstr "" +"'%s' sudah ada.\n" +"Timpa?" + +#: ../meld/dirdiff.py:899 +msgid "Error copying file" +msgstr "Galat saat menyalin berkas" + +#: ../meld/dirdiff.py:900 +#, python-format +msgid "" +"Couldn't copy %s\n" +"to %s.\n" +"\n" +"%s" +msgstr "" +"Tak bisa menyalin %s\n" +"ke %s.\n" +"\n" +"%s" + +#: ../meld/dirdiff.py:923 +#, python-format +msgid "Error deleting %s" +msgstr "Galat saat menghapus %s" + +#: ../meld/dirdiff.py:1054 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i detik" + +#: ../meld/dirdiff.py:1055 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i menit" + +#: ../meld/dirdiff.py:1056 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i jam" + +#: ../meld/dirdiff.py:1057 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i hari" + +#: ../meld/dirdiff.py:1058 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i minggu" + +#: ../meld/dirdiff.py:1059 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i bulan" + +#: ../meld/dirdiff.py:1060 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i tahun" + +#: ../meld/filediff.py:229 +msgid "Format as Patch..." +msgstr "Format sebagai Patch..." + +#: ../meld/filediff.py:230 +msgid "Create a patch using differences between files" +msgstr "Buat patch memakai perbedaan antar berkas" + +#: ../meld/filediff.py:232 +msgid "Save A_ll" +msgstr "Simpan Semu_a" + +#: ../meld/filediff.py:233 +msgid "Save all files in the current comparison" +msgstr "Simpan semua berkas dalam perbandingan saat ini" + +#: ../meld/filediff.py:236 +msgid "Revert files to their saved versions" +msgstr "Kembalikan berkas ke versi tersimpan" + +#: ../meld/filediff.py:238 +msgid "Add Synchronization Point" +msgstr "Tambahkan Titik Sinkronisasi" + +#: ../meld/filediff.py:239 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Tambahkan satu titik manual untuk sinkronisasi perubahan antar berkas" + +#: ../meld/filediff.py:242 +msgid "Clear Synchronization Points" +msgstr "Bersihkan Titik Sinkronisasi" + +#: ../meld/filediff.py:243 +msgid "Clear manual change sychronization points" +msgstr "Bersihkan perubahan manual titik-titik sinkronisasi" + +#: ../meld/filediff.py:245 +msgid "Previous Conflict" +msgstr "Konflik Sebelumnya" + +#: ../meld/filediff.py:246 +msgid "Go to the previous conflict" +msgstr "Pindah ke konflik sebelumnya" + +#: ../meld/filediff.py:248 +msgid "Next Conflict" +msgstr "Konflik Selanjutnya" + +#: ../meld/filediff.py:249 +msgid "Go to the next conflict" +msgstr "Pindah ke konflik selanjutnya" + +#: ../meld/filediff.py:251 +msgid "Push to Left" +msgstr "Push ke Kiri" + +#: ../meld/filediff.py:252 +msgid "Push current change to the left" +msgstr "Push perubahan saat ini ke kiri" + +#: ../meld/filediff.py:255 +msgid "Push to Right" +msgstr "Push ke Kanan" + +#: ../meld/filediff.py:256 +msgid "Push current change to the right" +msgstr "Push perubahan saat ini ke kanan" + +#: ../meld/filediff.py:260 +msgid "Pull from Left" +msgstr "Pull dari Kiri" + +#: ../meld/filediff.py:261 +msgid "Pull change from the left" +msgstr "Pull perubahan dari kiri" + +#: ../meld/filediff.py:264 +msgid "Pull from Right" +msgstr "Pull dari Kanan" + +#: ../meld/filediff.py:265 +msgid "Pull change from the right" +msgstr "Pull perubahan dari kanan" + +#: ../meld/filediff.py:267 +msgid "Copy Above Left" +msgstr "Salin Di Atas Kiri" + +#: ../meld/filediff.py:268 +msgid "Copy change above the left chunk" +msgstr "Salin perubahan di atas chunk kiri" + +#: ../meld/filediff.py:270 +msgid "Copy Below Left" +msgstr "Salin Di Bawah Kiri" + +#: ../meld/filediff.py:271 +msgid "Copy change below the left chunk" +msgstr "Salin perubahan di bawah chunk kiri" + +#: ../meld/filediff.py:273 +msgid "Copy Above Right" +msgstr "Salin Di Atas Kanan" + +#: ../meld/filediff.py:274 +msgid "Copy change above the right chunk" +msgstr "Salin perubahan di atas chunk kanan" + +#: ../meld/filediff.py:276 +msgid "Copy Below Right" +msgstr "Salin Di Bawah Kanan" + +#: ../meld/filediff.py:277 +msgid "Copy change below the right chunk" +msgstr "Salin perubahan di bawah chunk kanan" + +#: ../meld/filediff.py:279 +msgid "Delete" +msgstr "Hapus" + +#: ../meld/filediff.py:280 +msgid "Delete change" +msgstr "Hapus perubahan" + +#: ../meld/filediff.py:282 +msgid "Merge All from Left" +msgstr "Merge Semua dari Kiri" + +#: ../meld/filediff.py:283 +msgid "Merge all non-conflicting changes from the left" +msgstr "Merge semua perubahan yang tak konflik dari kiri" + +#: ../meld/filediff.py:285 +msgid "Merge All from Right" +msgstr "Merge Semua dari Kanan" + +#: ../meld/filediff.py:286 +msgid "Merge all non-conflicting changes from the right" +msgstr "Merge semua perubahan yang tak konflik dari kanan" + +#: ../meld/filediff.py:288 +msgid "Merge All" +msgstr "Merge Semua" + +#: ../meld/filediff.py:289 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "Merge semua perubahan yang tak konflik dari panel kiri dan kanan" + +#: ../meld/filediff.py:293 +msgid "Cycle Through Documents" +msgstr "Berpindah Antar Dokumen" + +#: ../meld/filediff.py:294 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "" +"Pindahkan fokus papan tik ke dokumen selanjutnya dalam perbandingan ini" + +#: ../meld/filediff.py:300 +msgid "Lock Scrolling" +msgstr "Kunci Pengguliran" + +#: ../meld/filediff.py:301 +msgid "Lock scrolling of all panes" +msgstr "Kunci pengguliran semua panel" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:486 +msgid "INS" +msgstr "INS" + +#: ../meld/filediff.py:486 +msgid "OVR" +msgstr "OVR" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:488 +#, python-format +msgid "Ln %i, Col %i" +msgstr "Brs %i, Kol %i" + +#: ../meld/filediff.py:825 +#, python-format +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" +"Penyaring '%s' mengubah cacah baris dalam berkas. Perbandingan akan salah. " +"Lihat manual pengguna untuk rincian lebih lanjut." + +#: ../meld/filediff.py:1095 +#, python-format +msgid "[%s] Set num panes" +msgstr "[%s] Tata cacah panel" + +#: ../meld/filediff.py:1101 +#, python-format +msgid "[%s] Opening files" +msgstr "[%s] Membuka berkas" + +#: ../meld/filediff.py:1124 ../meld/filediff.py:1134 ../meld/filediff.py:1147 +#: ../meld/filediff.py:1153 +msgid "Could not read file" +msgstr "Tak bisa baca berkas" + +#: ../meld/filediff.py:1125 +#, python-format +msgid "[%s] Reading files" +msgstr "[%s] Membaca berkas" + +#: ../meld/filediff.py:1135 +#, python-format +msgid "%s appears to be a binary file." +msgstr "%s nampaknya berkas biner." + +#: ../meld/filediff.py:1148 +#, python-format +msgid "%s is not in encodings: %s" +msgstr "%s tidak dalam pengkodean: %s" + +#: ../meld/filediff.py:1183 +#, python-format +msgid "[%s] Computing differences" +msgstr "[%s] Menghitung perbedaan" + +#: ../meld/filediff.py:1240 +#, python-format +msgid "File %s has changed on disk" +msgstr "Berkas %s telah berubah pada disk" + +#: ../meld/filediff.py:1241 +msgid "Do you want to reload the file?" +msgstr "Apakah Anda ingin memuat ulang berkas?" + +#: ../meld/filediff.py:1244 +msgid "_Reload" +msgstr "Muat _Ulang" + +#: ../meld/filediff.py:1405 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Penyaring teks sedang dipakai, dan mungkin menutupi perbedaan antara berkas. " +"Apakah Anda ingin membandingkan berkas-berkas yang tak tersaring?" + +#: ../meld/filediff.py:1411 +msgid "Files are identical" +msgstr "Berkas identik" + +#: ../meld/filediff.py:1419 +msgid "Show without filters" +msgstr "Tampilkan tanpa penyaring" + +#: ../meld/filediff.py:1441 +msgid "Change highlighting incomplete" +msgstr "Penyorotan perubahan tak lengkap" + +#: ../meld/filediff.py:1442 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Beberapa perubahan tak disorot karena terlalu besar. Anda dapat memaksa Meld " +"untuk lebih panjanga sehingga menyorot perubahan yang lebih besar, walaupun " +"ini mungkin lambat." + +#: ../meld/filediff.py:1450 +msgid "Keep highlighting" +msgstr "Tetap menyorot" + +#: ../meld/filediff.py:1452 +msgid "_Keep highlighting" +msgstr "_Tetap menyorot" + +#: ../meld/filediff.py:1583 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" +msgstr "" +"\"%s\" sudah ada!\n" +"Timpa?" + +#: ../meld/filediff.py:1596 +#, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "" +"Galat saat menulis ke %s\n" +"\n" +"%s." + +#: ../meld/filediff.py:1607 +msgid "Save Left Pane As" +msgstr "Simpan Panel Kiri Sebagai" + +#: ../meld/filediff.py:1609 +msgid "Save Middle Pane As" +msgstr "Simpan Panel Tengah Sebagai" + +#: ../meld/filediff.py:1611 +msgid "Save Right Pane As" +msgstr "Simpan Panel Kanan Sebagai" + +#: ../meld/filediff.py:1622 +#, python-format +msgid "File %s has changed on disk since it was opened" +msgstr "Berkas %s telah berubah pada disk sejak dibuka" + +#: ../meld/filediff.py:1624 +msgid "If you save it, any external changes will be lost." +msgstr "Bila Anda menyimpannya, perubahan eksternal akan hilang." + +#: ../meld/filediff.py:1627 +msgid "Save Anyway" +msgstr "Simpan Saja" + +#: ../meld/filediff.py:1628 +msgid "Don't Save" +msgstr "Jangan Simpan" + +#: ../meld/filediff.py:1652 +#, python-format +msgid "" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" +msgstr "" +"Berkas '%s' memuat beberapa macam akhir baris.\n" +"\n" +"Format mana yang ingin Anda pakai?" + +#: ../meld/filediff.py:1668 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" +msgstr "" +"'%s' memuat karakter yang tak bisa dienkode dengan '%s'\n" +"Apakah Anda ingin menyimpan sebagai UTF-8?" + +#: ../meld/filediff.py:2032 +msgid "Live comparison updating disabled" +msgstr "Pemutakhiran perbandingan live dinonaktifkan" + +#: ../meld/filediff.py:2033 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" +"Pemutakhiran perbandingan secara live dinonaktifkan ketika titik " +"penyelarasan aktif. Anda masih dapat secara manual menyegarkan perbandingan, " +"dan pemutakhiran secara live akan dilanjutkan ketika titik penyelarasan " +"dibersihkan." + +#: ../meld/filemerge.py:51 +#, python-format +msgid "[%s] Merging files" +msgstr "[%s] Sedang merge berkas" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _up" +msgstr "Salin _naik" + +#: ../meld/gutterrendererchunk.py:93 +msgid "Copy _down" +msgstr "Salin _turun" + +#: ../meld/meldapp.py:134 +msgid "wrong number of arguments supplied to --diff" +msgstr "banyaknya argumen yang diberikan ke --diff salah" + +#: ../meld/meldapp.py:139 +msgid "Start with an empty window" +msgstr "Mulai dengan jendela kosong" + +#: ../meld/meldapp.py:140 ../meld/meldapp.py:142 +msgid "file" +msgstr "berkas" + +#: ../meld/meldapp.py:140 ../meld/meldapp.py:144 +msgid "dir" +msgstr "dir" + +#: ../meld/meldapp.py:141 +msgid "Start a version control comparison" +msgstr "Mulai suatu perbandingan kendali versi" + +#: ../meld/meldapp.py:143 +msgid "Start a 2- or 3-way file comparison" +msgstr "Mulai perbandingan berkas 2 atau 3 pihak" + +#: ../meld/meldapp.py:145 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Mulai perbandingan direktori 2 atau 3 pihak" + +#: ../meld/meldapp.py:153 +msgid "Meld is a file and directory comparison tool." +msgstr "Meld adalah alat perbandingan berkas dan direktori." + +#: ../meld/meldapp.py:156 +msgid "Set label to use instead of file name" +msgstr "Tata label yang akan dipakai sebagai ganti nama berkas" + +#: ../meld/meldapp.py:158 +msgid "Open a new tab in an already running instance" +msgstr "Buka tab baru pada instansi yang sedang berjalan" + +#: ../meld/meldapp.py:161 +msgid "Automatically compare all differing files on startup" +msgstr "Otomatis membandingkan semua berkas yang berbeda saat awal mula" + +#: ../meld/meldapp.py:163 +msgid "Ignored for compatibility" +msgstr "Diabaikan untuk kompatibilitas" + +#: ../meld/meldapp.py:166 +msgid "Set the target file for saving a merge result" +msgstr "Tata berkas target untuk menyimpan hasil merge" + +#: ../meld/meldapp.py:168 +msgid "Automatically merge files" +msgstr "Otomatis me-merge berkas" + +#: ../meld/meldapp.py:171 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Muat perbandingan yang disimpan dari suatu berkas perbandingan Meld" + +#: ../meld/meldapp.py:174 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Buat suatu tab diff bagi berkas atau folder yang diberikan" + +#: ../meld/meldapp.py:177 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "terlalu banyak argumen (diinginkan 0-3, diperoleh %d)" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge less than 3 files" +msgstr "tak bisa merge otomatis kurang dari 3 berkas" + +#: ../meld/meldapp.py:182 +msgid "can't auto-merge directories" +msgstr "tak bisa merge otomatis direktori" + +#: ../meld/meldapp.py:192 +msgid "Error reading saved comparison file" +msgstr "Galat saat membaca berkas perbandingan yang disimpan" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:107 +msgid "" +msgstr "" + +#: ../meld/melddoc.py:77 ../meld/melddoc.py:78 +msgid "untitled" +msgstr "tanpa judul" + +#: ../meld/meldwindow.py:51 +msgid "_File" +msgstr "_Berkas" + +#: ../meld/meldwindow.py:52 +msgid "_New Comparison..." +msgstr "Perba_ndingan Baru..." + +#: ../meld/meldwindow.py:53 +msgid "Start a new comparison" +msgstr "Mulai suatu perbandingan baru" + +#: ../meld/meldwindow.py:56 +msgid "Save the current file" +msgstr "Simpan berkas saat ini" + +#: ../meld/meldwindow.py:58 +msgid "Save As..." +msgstr "Simpan Sebagai..." + +#: ../meld/meldwindow.py:59 +msgid "Save the current file with a different name" +msgstr "Simpan berkas saat ini dengan nama lain" + +#: ../meld/meldwindow.py:62 +msgid "Close the current file" +msgstr "Tutup berkas saat ini" + +#: ../meld/meldwindow.py:65 +msgid "_Edit" +msgstr "_Sunting" + +#: ../meld/meldwindow.py:67 +msgid "Undo the last action" +msgstr "Batalkan aksi terakhir" + +#: ../meld/meldwindow.py:70 +msgid "Redo the last undone action" +msgstr "Jadikan lagi aksi terakhir yang dibatalkan" + +#: ../meld/meldwindow.py:72 +msgid "Cut the selection" +msgstr "Potong yang dipilih" + +#: ../meld/meldwindow.py:74 +msgid "Copy the selection" +msgstr "Salin yang dipilih" + +#: ../meld/meldwindow.py:76 +msgid "Paste the clipboard" +msgstr "Tempel yang dipilih" + +#: ../meld/meldwindow.py:78 +msgid "Find..." +msgstr "Cari..." + +#: ../meld/meldwindow.py:78 +msgid "Search for text" +msgstr "Mencari teks" + +#: ../meld/meldwindow.py:80 +msgid "Find Ne_xt" +msgstr "Cari Sela_njutnya" + +#: ../meld/meldwindow.py:81 +msgid "Search forwards for the same text" +msgstr "Cari terus teks yang sama" + +#: ../meld/meldwindow.py:83 +msgid "Find _Previous" +msgstr "Cari Se_belumnya" + +#: ../meld/meldwindow.py:84 +msgid "Search backwards for the same text" +msgstr "Cari mundur teks yang sama" + +#: ../meld/meldwindow.py:87 +msgid "_Replace..." +msgstr "_Gantikan..." + +#: ../meld/meldwindow.py:88 +msgid "Find and replace text" +msgstr "Cari dan gantikan teks" + +#: ../meld/meldwindow.py:91 +msgid "_Changes" +msgstr "_Perubahan" + +#: ../meld/meldwindow.py:92 +msgid "Next Change" +msgstr "Perubahan Selanjutnya" + +#: ../meld/meldwindow.py:93 +msgid "Go to the next change" +msgstr "Pergi ke perubahan selanjutnya" + +#: ../meld/meldwindow.py:95 +msgid "Previous Change" +msgstr "Perubahan Sebelumnya" + +#: ../meld/meldwindow.py:96 +msgid "Go to the previous change" +msgstr "Pergi ke perubahan sebelumnya" + +#: ../meld/meldwindow.py:98 +msgid "Open Externally" +msgstr "Buka Secara Eksternal" + +#: ../meld/meldwindow.py:99 +msgid "Open selected file or directory in the default external application" +msgstr "Buka berkas atau direktori yang dipilih dalam aplikasi eksternal baku" + +#: ../meld/meldwindow.py:103 +msgid "_View" +msgstr "_Tilik" + +#: ../meld/meldwindow.py:104 +msgid "File Status" +msgstr "Status Berkas" + +#: ../meld/meldwindow.py:105 +msgid "Version Status" +msgstr "Status Versi" + +#: ../meld/meldwindow.py:108 +msgid "Stop the current action" +msgstr "Hentikan aksi saat ini" + +#: ../meld/meldwindow.py:111 +msgid "Refresh the view" +msgstr "Segarkan tilikan" + +#: ../meld/meldwindow.py:114 +msgid "_Tabs" +msgstr "_Tab" + +#: ../meld/meldwindow.py:115 +msgid "_Previous Tab" +msgstr "Tab Se_belumnya" + +#: ../meld/meldwindow.py:116 +msgid "Activate previous tab" +msgstr "Aktifkan tab sebelumnya" + +#: ../meld/meldwindow.py:118 +msgid "_Next Tab" +msgstr "Tab Sela_njutnya" + +#: ../meld/meldwindow.py:119 +msgid "Activate next tab" +msgstr "Aktifkan tab selanjutnya" + +#: ../meld/meldwindow.py:122 +msgid "Move Tab _Left" +msgstr "Pindahkan Tab Ke K_iri" + +#: ../meld/meldwindow.py:123 +msgid "Move current tab to left" +msgstr "Pindahkan tab saat ini ke kiri" + +#: ../meld/meldwindow.py:126 +msgid "Move Tab _Right" +msgstr "Pindahkan Tab Ke K_anan" + +#: ../meld/meldwindow.py:127 +msgid "Move current tab to right" +msgstr "Pindahkan tab saat ini ke kanan" + +#: ../meld/meldwindow.py:131 +msgid "Fullscreen" +msgstr "Layar Penuh" + +#: ../meld/meldwindow.py:132 +msgid "View the comparison in fullscreen" +msgstr "Tilik perbandingan dalam layar penuh" + +#: ../meld/meldwindow.py:134 +msgid "_Toolbar" +msgstr "Bilah Ala_t" + +#: ../meld/meldwindow.py:135 +msgid "Show or hide the toolbar" +msgstr "Tampilkan atau sembunyikan bilah alat" + +#: ../meld/meldwindow.py:137 +msgid "_Statusbar" +msgstr "Bilah _Status" + +#: ../meld/meldwindow.py:138 +msgid "Show or hide the statusbar" +msgstr "Tampilkan atau sembunyikan bilah status" + +#: ../meld/meldwindow.py:147 +msgid "Open Recent" +msgstr "Buka Terkini" + +#: ../meld/meldwindow.py:148 +msgid "Open recent files" +msgstr "Buka berkas yang baru-baru ini" + +#: ../meld/meldwindow.py:539 +msgid "Switch to this tab" +msgstr "Tukar ke tab ini" + +#: ../meld/meldwindow.py:662 +msgid "Cannot compare a mixture of files and directories" +msgstr "Tak bisa membandingkan campuran berkas dan direktori" + +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:180 +msgid "[None]" +msgstr "[Nihil]" + +#: ../meld/preferences.py:36 +msgid "label" +msgstr "label" + +#: ../meld/preferences.py:36 +msgid "pattern" +msgstr "pola" + +#: ../meld/recent.py:107 +msgid "Version control:" +msgstr "Kendali versi:" + +#: ../meld/ui/findbar.py:143 +msgid "Regular expression error" +msgstr "Galat ekspresi reguler" + +#: ../meld/ui/notebooklabel.py:67 +msgid "Close tab" +msgstr "Tutup tab" + +#: ../meld/ui/vcdialogs.py:63 +msgid "No files will be committed" +msgstr "Tak ada berkas yang akan dikomit" + +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s dalam %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d komit belum di-push" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d branch" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Mode diubah dari %s ke %s" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Di-merge" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Basis" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Lokal" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Remote" + +#: ../meld/vc/_vc.py:65 +msgid "Unversioned" +msgstr "Tanpa versi" + +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Galat" + +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Baru ditambahkan" + +#: ../meld/vc/_vc.py:72 +msgid "Conflict" +msgstr "Konflik" + +#: ../meld/vc/_vc.py:73 +msgid "Removed" +msgstr "Dihapus" + +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Kurang" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Tak ada" + +#: ../meld/vcview.py:218 ../meld/vcview.py:393 +msgid "Location" +msgstr "Lokasi" + +#: ../meld/vcview.py:219 +msgid "Status" +msgstr "Status" + +#: ../meld/vcview.py:220 +msgid "Revision" +msgstr "Revisi" + +#: ../meld/vcview.py:221 +msgid "Options" +msgstr "Opsi" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:304 +#, python-format +msgid "%s not installed" +msgstr "%s tidak terpasang" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:308 +msgid "Invalid repository" +msgstr "Repositori tak valid" + +#: ../meld/vcview.py:317 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: ../meld/vcview.py:319 ../meld/vcview.py:327 +msgid "None" +msgstr "Nihil" + +#: ../meld/vcview.py:338 +msgid "No valid version control system found in this folder" +msgstr "Tak ada sistem kendali versi yang valid dalam folder ini" + +#: ../meld/vcview.py:340 +msgid "Only one version control system found in this folder" +msgstr "Hanya satu sistem kendali versi ditemukan dalam folder ini" + +#: ../meld/vcview.py:342 +msgid "Choose which version control system to use" +msgstr "Pilih sistem kendali mana yang akan dipakai" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:393 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../meld/vcview.py:407 ../meld/vcview.py:415 +#, python-format +msgid "Scanning %s" +msgstr "Memindai %s" + +#: ../meld/vcview.py:449 +msgid "(Empty)" +msgstr "(Kosong)" + +#: ../meld/vcview.py:672 +msgid "Remove folder and all its files?" +msgstr "Hapus folder dan semua berkasnya?" + +#: ../meld/vcview.py:674 +msgid "" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." +msgstr "" +"Ini akan menghapus semua berkas dan folder yang dipilih, dan semua berkas di " +"dalam sebarang folder yang dipilih, dari kendali versi." + +#: ../meld/vcview.py:708 +#, python-format +msgid "Error removing %s" +msgstr "Galat saat menghapus %s" diff -Nru meld-1.5.3/po/it.po meld-3.11.0/po/it.po --- meld-1.5.3/po/it.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/it.po 2014-02-22 03:14:50.000000000 +0000 @@ -1,711 +1,1480 @@ -# Italian translation. -# Copyright (C) 2004-2010 THE meld'S COPYRIGHT HOLDER +# Italian translation of meld +# Copyright (C) 2013, 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the meld package. -# Andrea Zagli , 2004-2009, 2010. +# Milo Casagrande , 2013, 2014. +# msgid "" msgstr "" -"Project-Id-Version: meld-it 1.3\n" +"Project-Id-Version: meld\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=meld&component=general\n" -"POT-Creation-Date: 2010-03-15 01:04+0000\n" -"PO-Revision-Date: 2010-03-15 22:04+0100\n" -"Last-Translator: Andrea Zagli \n" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-02-09 10:46+0000\n" +"PO-Revision-Date: 2014-02-09 16:08+0100\n" +"Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" +"Language: it\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" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" +"X-Generator: Poedit 1.6.4\n" -#: ../bin/meld:77 +#: ../bin/meld:119 msgid "Cannot import: " msgstr "Impossibile importare: " -#: ../bin/meld:80 +#: ../bin/meld:122 #, c-format msgid "Meld requires %s or higher." msgstr "Meld richiede %s o più recente." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Confronta e unisce i propri file" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 -#| msgid "Meld Diff Viewer" msgid "Diff Viewer" msgstr "Visualizzatore di differenze" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.glade.h:20 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Visualizzatore di differenze Meld" -#: ../data/ui/filediff.glade.h:1 +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Confronta e unisce file" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Meld è un visualizzatore grafico di differenze e uno strumento per l'unione " +"di file. Consente di confrontare file, directory e progetti in un sistema di " +"controllo della versione. Fornisce confronti a due e tre vie sia di file che " +"di directory e supporta diversi sistemi di controllo come Git, Mercurial, " +"Bazaar e Subversion." + +#: ../data/meld.appdata.xml.in.h:2 msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." msgstr "" -"Alcuni file sono stati modificati.\n" -"Quali salvare?" +"Meld aiuta nella revisione delle modifiche al codice, consente di " +"comprendere le patch e rende più facile l'unione di file in presenza di " +"conflitti." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Descrizione confronto Meld" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Dimensione predefinita della finestra" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +msgid "Show toolbar" +msgstr "Mostra barra degli strumenti" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Se VERO, viene visualizzata la barra degli strumenti." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +msgid "Show statusbar" +msgstr "Mostra barra di stato" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Se VERO, viene visualizzata la barra di stato." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +msgid "Automatically detected text encodings" +msgstr "Codifica automatica del testo" -#: ../data/ui/filediff.glade.h:3 -msgid "Copy to Clipboard" -msgstr "Copia negli appunti" +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Queste codifiche di testo verranno utilizzate automaticamente, e in ordine, " +"per decodificare i file di testo caricati." -#: ../data/ui/filediff.glade.h:4 ../meld/filediff.py:177 -msgid "Create Patch" -msgstr "Crea patch" - -#: ../data/ui/filediff.glade.h:5 -msgid "Save modified files?" -msgstr "Salvare i file modificati?" - -#: ../data/ui/filediff.glade.h:6 -msgid "_Discard Changes" -msgstr "_Scarta cambiamenti" - -#: ../data/ui/filediff.glade.h:7 -msgid "_Save Selected" -msgstr "_Salva selezionati" - -#: ../data/ui/findbar.glade.h:1 -msgid "Regular E_xpression" -msgstr "E_spressione regolare" +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Larghezza di un passa di rientro" -#: ../data/ui/findbar.glade.h:2 -msgid "Replace _All" -msgstr "Sostituisci _tutte" +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "Il numero di spazi da usare per un singolo passo d'indentazione" -#: ../data/ui/findbar.glade.h:3 -msgid "Replace _With" -msgstr "Sostituisci _con" +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "Indica se usare un rientro di spazi o tabulazioni" -#: ../data/ui/findbar.glade.h:4 -msgid "Who_le word" -msgstr "Paro_la intera" +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "Se VERO, un nuovo rientro userà spazi invece di tabulazioni." -#: ../data/ui/findbar.glade.h:5 -msgid "_Match Case" -msgstr "Corrispondenza _maiuscole/minuscole" +#: ../data/org.gnome.meld.gschema.xml.h:12 +msgid "Show line numbers" +msgstr "Mostrare numeri di riga" -#: ../data/ui/findbar.glade.h:6 -msgid "_Next" -msgstr "Successi_vo" +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "Se VERO, verranno mostrati i numeri di riga nel confronto." -#: ../data/ui/findbar.glade.h:7 -msgid "_Previous" -msgstr "Pr_ecedente" +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Evidenzia la sintassi" -#: ../data/ui/findbar.glade.h:8 ../meld/meldapp.py:443 -msgid "_Replace" -msgstr "_Sostituisci" +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Indica se evidenziare la sintassi; dato il colore di evidenziazione di Meld, " +"è disattivato per impostazione predefinita" -#: ../data/ui/findbar.glade.h:9 -msgid "_Search for" -msgstr "_Cerca" +#: ../data/org.gnome.meld.gschema.xml.h:16 +msgid "Displayed whitespace" +msgstr "Spazi bianchi" -#: ../data/ui/meldapp.glade.h:1 -msgid "Edit Menu" -msgstr "Menù «Modifica»" +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Selettore per gli spazi bianchi da visualizzare. I possibili valori sono " +"\"space\", \"tab\", \"newline\" e \"nbsp\"." -#: ../data/ui/meldapp.glade.h:2 -msgid "Font" -msgstr "Tipo di carattere" +#: ../data/org.gnome.meld.gschema.xml.h:18 +msgid "Wrap mode" +msgstr "Modalità a capo" -#: ../data/ui/meldapp.glade.h:3 -msgid "Loading" -msgstr "Caricamento" +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Le righe nel confronto andranno a capo in base a questa impostazione: per " +"niente (\"none\"), a un qualsiasi carattere (\"char\") o solo alla fine di " +"una parola (\"word\")." + +#: ../data/org.gnome.meld.gschema.xml.h:20 +msgid "Highlight current line" +msgstr "Evidenzia la riga corrente" -#: ../data/ui/meldapp.glade.h:4 -msgid "Misc" -msgstr "Varie" +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "Se VERO, la riga con il cursore viene evidenziata nel confronto." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +msgid "Use the system default monospace font" +msgstr "Usa il carattere a spaziatura fissa di sistema" -#: ../data/ui/meldapp.glade.h:5 -msgid "Automatically supply missing newline at end of file" -msgstr "Aggiungere automaticamente una nuova riga alla fine del file" +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Se FALSO, viene usato il carattere indicato al posto di quello di sistema." -#: ../data/ui/meldapp.glade.h:6 -msgid "Choose Files" -msgstr "Scegli i file" +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Carattere personalizzato" -#: ../data/ui/meldapp.glade.h:7 -msgid "Copyright © 2002-2009 Stephen Kennedy" -msgstr "Copyright © 2002-2009 Stephen Kennedy" +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"Il carattere personalizzato da usare, salvato come stringa e analizzato da " +"Pango" -#: ../data/ui/meldapp.glade.h:8 -msgid "Custom command" -msgstr "Comando personalizzato" +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Ignora le righe vuote nei confronti" -#: ../data/ui/meldapp.glade.h:9 -msgid "Directory" -msgstr "Directory" +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Se VERO, le righe vuote non verranno considerate nell'evidenziare le " +"modifiche tra i file." -#: ../data/ui/meldapp.glade.h:10 -msgid "Edit files with:" -msgstr "Modifica file con:" +#: ../data/org.gnome.meld.gschema.xml.h:28 +msgid "Use the system default editor" +msgstr "Usa l'editor predefinito di sistema" -#: ../data/ui/meldapp.glade.h:11 -msgid "Editor" -msgstr "Editor" +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Se FALSO, viene usato l'editor indicato al posto di quello di sistema per " +"aprire i file esternamente." -#: ../data/ui/meldapp.glade.h:12 -msgid "Encoding" -msgstr "Codifica" +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "Il comando per lanciare l'editor personalizzato" -#: ../data/ui/meldapp.glade.h:13 -msgid "File Filters" -msgstr "Filtri dei file" +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"Il comando usato per lanciare l'editor personalizzato. È supportata una " +"forma basilare di modelli: \"{file}\" e \"{line}\" sono token riconosciuti." -#: ../data/ui/meldapp.glade.h:14 -msgid "Gnome default editor" -msgstr "Editor predefinito di GNOME" +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Colonne da visualizzare" -#: ../data/ui/meldapp.glade.h:15 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Ignorare cambiamenti che inseriscono o eliminano righe vuote" +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" +"Elenco di nomi di colonne nel confronto tra directory e se debbano essere " +"visualizzate." -#: ../data/ui/meldapp.glade.h:16 +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 msgid "Ignore symbolic links" msgstr "Ignorare collegamenti simbolici" -#: ../data/ui/meldapp.glade.h:17 -msgid "Insert spaces instead of tabs" -msgstr "Inserire spazi al posto di tabulazioni" - -#: ../data/ui/meldapp.glade.h:18 -msgid "Internal editor" -msgstr "Editor interno" - -#: ../data/ui/meldapp.glade.h:19 -msgid "Line Wrapping " -msgstr "A capo automatico " - -#: ../data/ui/meldapp.glade.h:21 -msgid "Mine" -msgstr "Proprio" - -#: ../data/ui/meldapp.glade.h:22 -msgid "Original" -msgstr "Originale" - -#: ../data/ui/meldapp.glade.h:23 -msgid "Other" -msgstr "Altro" - -#: ../data/ui/meldapp.glade.h:24 -msgid "Preferences : Meld" -msgstr "Preferenze : Meld" +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Se VERO, il confronto tra directory non segue i collegamenti simbolici." -#: ../data/ui/meldapp.glade.h:25 -msgid "Show line numbers" -msgstr "Mostrare i numeri di riga" +#: ../data/org.gnome.meld.gschema.xml.h:36 +msgid "Use shallow comparison" +msgstr "Usa confronto superficiale" -#: ../data/ui/meldapp.glade.h:26 -msgid "Tab width" -msgstr "Ampiezza tabulazione" +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Se VERO, il confronto tra directory confronta i file solamente su dimensione " +"e mtime, considerando solo i file con stessa dimensione e mtime come uguali." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +msgid "File timestamp resolution" +msgstr "Risoluzione marcatura temporale del file" -#: ../data/ui/meldapp.glade.h:27 -msgid "Text Filters" -msgstr "Filtri del testo" +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" +"Quando il confronto è fatto su mtime, questa è la differenza minima in " +"nanosecondi tra due file per poter essere considerati diversi. Utile per il " +"confronto di file provenienti da file system con risoluzioni temporali " +"differenti." + +#: ../data/org.gnome.meld.gschema.xml.h:40 +msgid "File status filters" +msgstr "Filtri sullo stato dei file" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "Elenco di stati usati per filtrare i file nel confronto tra directory." + +#: ../data/org.gnome.meld.gschema.xml.h:42 +msgid "Show the version control console output" +msgstr "Mostra l'output del sistema di controllo della versione" -#: ../data/ui/meldapp.glade.h:28 -msgid "Three way directory" -msgstr "Confronto a tre directory" +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" +"Se VERO, viene mostrato l'output della console nella vista del controllo " +"della versione, con i comandi eseguiti." -#: ../data/ui/meldapp.glade.h:29 -msgid "Three way file" -msgstr "Confronto a tre file" +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Version control pane position" +msgstr "Posizione riquadro controllo versione" -#: ../data/ui/meldapp.glade.h:30 -msgid "Two way directory" -msgstr "Confronto a due directory" +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"This is the height of the main version control tree when the console pane is " +"shown." +msgstr "" +"Questa è l'altezza dell'albero principale del controllo versione quando il " +"riquadro della console è mostrato." -#: ../data/ui/meldapp.glade.h:31 -msgid "Two way file" -msgstr "Confronto a due file" +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Present version comparisons as left-local/right-remote" +msgstr "Confronto come sinistra-locale/destra-remoto" -#: ../data/ui/meldapp.glade.h:32 -msgid "Use GNOME monospace font" -msgstr "Usare il carattere a spaziatura fissa di GNOME" +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" +"Se VERO, il confronto con sistemi di controllo della versione usa uno schema " +"sinistra-locale destra-remoto per determinare l'ordine con cui mostrare i " +"file. Altrimenti viene usato lo schema sinistra-altri destra-personale." + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Show margin in commit message editor" +msgstr "Mostra i margini nell'editor del messaggio di commit" -#: ../data/ui/meldapp.glade.h:33 -msgid "Use custom font" -msgstr "Usare il carattere personalizzato" +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" +"Se VERO, viene visualizzata una guida per mostrare il margine nell'editor " +"del messaggio di commit." -#: ../data/ui/meldapp.glade.h:34 -msgid "Use syntax highlighting" -msgstr "Usare evidenziazione della sintassi" +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Margin column in commit message editor" +msgstr "Colonna nell'editor del messaggio di commit" -#: ../data/ui/meldapp.glade.h:35 -msgid "Version control view" -msgstr "Vista di controllo versione" +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "Il margine del messaggio di commit." -#: ../data/ui/meldapp.glade.h:36 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" -"Al caricamento dei file, provare queste codifiche in ordine. (es. utf8, " -"iso8859)" +#: ../data/org.gnome.meld.gschema.xml.h:52 +msgid "Automatically hard-wrap commit messages" +msgstr "A capo automatico nei messaggi di commit" -#: ../data/ui/meldapp.glade.h:37 +#: ../data/org.gnome.meld.gschema.xml.h:53 msgid "" -"When performing directory comparisons, you may filter out files and " -"directories by name. Each pattern is a list of shell style wildcards " -"separated by spaces." +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." msgstr "" -"Quando si esegue il confronto tra directory, si possono filtrare i file e le " -"directory per nome. Ogni modello è una lista di nomi che possono contenere " -"caratteri jolly, analogamente alla shell, separati da spazi." +"Se VERO, l'editor del messaggio di commit andrà a capo al margine " +"predefinito prima di eseguire il commit." -#: ../data/ui/meldapp.glade.h:38 +#: ../data/org.gnome.meld.gschema.xml.h:54 +msgid "Version control status filters" +msgstr "Filtri sullo stato del sistema di controllo della versione" + +#: ../data/org.gnome.meld.gschema.xml.h:55 msgid "" -"When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching " -"text with the empty string before comparison is performed. If the expression " -"contains groups, only the groups are replaced. See the user manual for more " -"details." +"List of statuses used to filter visible files in version control comparison." msgstr "" -"Quando si esegue il confronto tra file, si possono ignorare certi tipi di " -"modifiche. Ogni modello è una espressione regolare python che sostituirà il " -"testo corrispondente con la stringa vuota prima che sia effettuata la " -"comparazione. Se l'espressione contiene gruppi, solamente i gruppi saranno " -"sostituiti. Vedere il manuale utente per maggiori dettagli." +"Elenco di stati usati per filtrare i file visualizzati nel confronto per i " +"sistemi di controllo della versione." -#: ../data/ui/meldapp.glade.h:39 -msgid "_Character" -msgstr "_Carattere" - -#: ../data/ui/meldapp.glade.h:40 -msgid "_Directory Comparison" -msgstr "Confronta _directory" - -#: ../data/ui/meldapp.glade.h:41 -msgid "_File Comparison" -msgstr "Confronta _file" - -#: ../data/ui/meldapp.glade.h:42 -msgid "_None" -msgstr "_Nessuno" - -#: ../data/ui/meldapp.glade.h:43 -msgid "_Three Way Compare" -msgstr "Confronto a _tre" - -#: ../data/ui/meldapp.glade.h:44 -msgid "_Version Control Browser" -msgstr "Browser di controllo _versione" - -#: ../data/ui/meldapp.glade.h:45 -msgid "_Word" -msgstr "_Parola" +#: ../data/org.gnome.meld.gschema.xml.h:56 +msgid "Filename-based filters" +msgstr "Filtri sui nomi dei file" -#: ../data/ui/vcview.glade.h:1 -msgid "Commit Files" -msgstr "Commit file" +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" +"Elenco di filtri basati sui nomi dei file che, se attivi, rimuovono i file " +"dal confronto in un confronto tra directory." -#: ../data/ui/vcview.glade.h:2 -msgid "Compare Options" -msgstr "Opzioni di confronto" +#: ../data/org.gnome.meld.gschema.xml.h:58 +msgid "Text-based filters" +msgstr "Filtri di testo" -#: ../data/ui/vcview.glade.h:3 -msgid "Date" -msgstr "Data" +#: ../data/org.gnome.meld.gschema.xml.h:59 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" +"Elenco di filtri di testo che, se attivi, rimuovono il testo usato per " +"confrontare i file. Il testo verrà visualizzato, ma non farà parte dal " +"confronto in sé." + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "Informazioni su Meld" -#: ../data/ui/vcview.glade.h:4 -msgid "Local copy against other remote revision" -msgstr "Copia locale con un'altra revisione in remoto" +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" -#: ../data/ui/vcview.glade.h:5 -msgid "Local copy against same remote revision" -msgstr "Copia locale con la stessa revisione in remoto" +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Sito web" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "Milo Casagrande , 2013" -#: ../data/ui/vcview.glade.h:6 -msgid "Log Message" -msgstr "Messaggio di registro" +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "Preferen_ze" -#: ../data/ui/vcview.glade.h:7 -msgid "Previous Logs" -msgstr "Registri precedenti" - -#: ../data/ui/vcview.glade.h:8 ../meld/vcview.py:183 -msgid "Tag" -msgstr "Etichetta" - -#: ../data/ui/vcview.glade.h:9 -msgid "VC Log" -msgstr "Registro del VC" +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "A_iuto" -#: ../meld/dirdiff.py:184 ../meld/vcview.py:125 +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "I_nformazioni" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Chiudi" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 msgid "_Compare" -msgstr "_Confronta" +msgstr "C_onfronta" -#: ../meld/dirdiff.py:184 ../meld/vcview.py:125 -msgid "Compare selected" -msgstr "Confronta i selezionati" - -#: ../meld/dirdiff.py:185 -msgid "Left" -msgstr "Sinistra" +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Confronta i file selezionati" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Copia a _sinistra" -#: ../meld/dirdiff.py:185 ../meld/filediff.py:184 -msgid "Copy To Left" +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" msgstr "Copia a sinistra" -#: ../meld/dirdiff.py:186 -msgid "Right" -msgstr "Destra" +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Copia a _destra" -#: ../meld/dirdiff.py:186 ../meld/filediff.py:185 -msgid "Copy To Right" +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" msgstr "Copia a destra" -#: ../meld/dirdiff.py:187 +#: ../data/ui/dirdiff.ui.h:7 msgid "Delete selected" -msgstr "Elimina selezionati" +msgstr "Elimina selezione" -#: ../meld/dirdiff.py:188 ../meld/filediff.py:762 +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1409 msgid "Hide" msgstr "Nascondi" -#: ../meld/dirdiff.py:188 +# (ndt) suggerimento, messo 'riquadro' +#: ../data/ui/dirdiff.ui.h:9 msgid "Hide selected" -msgstr "Nasconde i selezionati" - -#: ../meld/dirdiff.py:190 ../meld/filediff.py:176 ../meld/vcview.py:126 -msgid "Open selected" -msgstr "Apre i selezionati" +msgstr "Nasconde la selezione" -#: ../meld/dirdiff.py:194 -msgid "Case" -msgstr "Maiuscole/Minuscole" +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Ignora maiuscole/minuscole nel nome del file" -#: ../meld/dirdiff.py:194 -msgid "Ignore case of entries" -msgstr "Ignora maiuscole/minuscole" +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Considera identici i nomi dei file la cui differenza è tra maiuscole e " +"minuscole" -#: ../meld/dirdiff.py:195 +#: ../data/ui/dirdiff.ui.h:12 msgid "Same" msgstr "Identici" -#: ../meld/dirdiff.py:195 +#: ../data/ui/dirdiff.ui.h:13 msgid "Show identical" msgstr "Mostra identici" -#: ../meld/dirdiff.py:196 +#: ../data/ui/dirdiff.ui.h:14 msgid "New" msgstr "Nuovi" -#: ../meld/dirdiff.py:196 +#: ../data/ui/dirdiff.ui.h:15 msgid "Show new" -msgstr "Mostra i nuovi" +msgstr "Mostra nuovi" -#: ../meld/dirdiff.py:197 +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 msgid "Modified" msgstr "Modificati" -#: ../meld/dirdiff.py:197 ../meld/vcview.py:139 +#: ../data/ui/dirdiff.ui.h:17 msgid "Show modified" -msgstr "Mostra i modificati" +msgstr "Mostra modificati" -#: ../meld/dirdiff.py:199 +#: ../data/ui/dirdiff.ui.h:18 msgid "Filters" msgstr "Filtri" -#: ../meld/dirdiff.py:199 +#: ../data/ui/dirdiff.ui.h:19 msgid "Set active filters" msgstr "Imposta i filtri attivi" -#: ../meld/dirdiff.py:252 ../meld/dirdiff.py:298 -#, python-format -msgid "Error converting pattern '%s' to regular expression" +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Elenco modificabile" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Attivo" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column Name" +msgstr "Nome colonna" + +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "A_ggiungi" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:672 +msgid "_Remove" +msgstr "_Rimuovi" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Sposta elemento in su" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "Sposta _su" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "Sposta elemento in giù" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Sposta _giù" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:355 +#: ../meld/vcview.py:185 +msgid "Name" +msgstr "Nome" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Modello" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Aggiungi nuovo filtro" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Rimuove il filtro selezionato" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Salvare le modifiche ai documenti prima di chiudere?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Se non si salva, tutte le modifiche andranno perse per sempre." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Chiudi senza sal_vare" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "A_nnulla" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "_Salva" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." msgstr "" -"Errore durante la conversione del modello «%s» in un'espressione regolare" +"Impossibile scrivere su questo file. È possibile fare clic qui per " +"sbloccarlo e apportare le modifiche: tali modifiche devono però essere " +"salvata su un nuovo file." + +# (ndt) l'azione annulla effettivamente le modifiche che non sono state salvate. +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Annullare le modifiche non salvate dei documenti?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "" +"Le modifiche apportate ai seguenti documenti andranno perse per sempre:\n" + +#: ../data/ui/findbar.ui.h:1 +msgid "_Replace" +msgstr "Sostit_uisci" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Sostituisci _tutti" -#: ../meld/dirdiff.py:309 +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Precedente" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Successiva" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Trova:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "S_ostituisci con:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match case" +msgstr "_Maiuscole/Minuscole" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Paro_la intera" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular e_xpression" +msgstr "Espressione _regolare" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "A capo" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Format as Patch" +msgstr "Formatta come patch" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Use differences between:" +msgstr "Usare differenze tra:" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Left and middle panes" +msgstr "Riquadri sinistro e centrale" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Middle and right panes" +msgstr "Riquadri centrale e destro" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "Inve_rti direzione patch" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Copia negli appunti" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:119 +msgid "Save Patch" +msgstr "Salva patch" + +#: ../data/ui/preferences.ui.h:1 +msgid "Left is remote, right is local" +msgstr "Sinistra è remoto, destra è locale" + +#: ../data/ui/preferences.ui.h:2 +msgid "Left is local, right is remote" +msgstr "Sinistra è locale, destra è remoto" + +#: ../data/ui/preferences.ui.h:3 +msgid "1ns (ext4)" +msgstr "1ns (ext4)" + +#: ../data/ui/preferences.ui.h:4 +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" + +#: ../data/ui/preferences.ui.h:5 +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" + +#: ../data/ui/preferences.ui.h:6 +msgid "2s (VFAT)" +msgstr "2s (VFAT)" + +#: ../data/ui/preferences.ui.h:7 +msgid "Meld Preferences" +msgstr "Preferenze di Meld" + +#: ../data/ui/preferences.ui.h:8 +msgid "Font" +msgstr "Carattere" + +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "_Usare il carattere a spaziatura fissa di sistema" + +#: ../data/ui/preferences.ui.h:10 +msgid "_Editor font:" +msgstr "_Carattere dell'editor:" + +#: ../data/ui/preferences.ui.h:11 +msgid "Display" +msgstr "Visualizzazione" + +#: ../data/ui/preferences.ui.h:12 +msgid "_Tab width:" +msgstr "Ampiezza _tabulazione:" + +#: ../data/ui/preferences.ui.h:13 +msgid "_Insert spaces instead of tabs" +msgstr "Inserire _spazi invece di tabulazioni" + +#: ../data/ui/preferences.ui.h:14 +msgid "Enable text _wrapping" +msgstr "_Attivare a capo automatico" + +#: ../data/ui/preferences.ui.h:15 +msgid "Do not _split words over two lines" +msgstr "Non _dividere le parole su due righe" + +#: ../data/ui/preferences.ui.h:16 +msgid "Highlight _current line" +msgstr "Evidenziare la ri_ga corrente" + +#: ../data/ui/preferences.ui.h:17 +msgid "Show _line numbers" +msgstr "Mostrare i _numeri di riga" + +#: ../data/ui/preferences.ui.h:18 +msgid "Show w_hitespace" +msgstr "Mostrare gli spazi _bianchi" + +#: ../data/ui/preferences.ui.h:19 +msgid "Use s_yntax highlighting" +msgstr "Usare _evidenziazione sintassi" + +#: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Editor esterno" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "Usare editor _predefinito di sistema" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Comando dell'edito_r:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Editor" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Confronto superficiale" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "Confrontare i file solo su _dimensione e marcatura temporale" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "Risoluzione marcatura _temporale:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Collegamenti simbolici" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Colonne visibili" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Confronto cartelle" + +# (ndt) oppure "Salva e comprimi" ? +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Confronto versione" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "Quando _vengono confrontate le revisioni dei file:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Messaggio di commit" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Mostrare _il margine destro a:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Spe_zzare le righe sul margine destro nel commit" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Controllo della versione" + +#: ../data/ui/preferences.ui.h:37 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Quando si esegue il confronto tra directory, si possono filtrare i file e le " +"directory per nome. Ogni modello è una lista di nomi che possono contenere " +"caratteri jolly, analogamente alla shell, separati da spazi." + +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:104 +msgid "File Filters" +msgstr "Filtri dei file" + +#: ../data/ui/preferences.ui.h:39 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Quando si esegue il confronto tra file, si possono ignorare certi tipi di " +"modifiche. Ogni modello è una espressione regolare python che sostituirà il " +"testo corrispondente con la stringa vuota prima che sia effettuata la " +"comparazione. Se l'espressione contiene gruppi, solamente i gruppi saranno " +"sostituiti. Vedere il manuale utente per maggiori dettagli." + +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Ignorare modifiche che inseriscono o eliminano righe vuote" + +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Filtri di testo" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:582 +msgid "New comparison" +msgstr "Nuovo confronto" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Confronto di file" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Confronto di directory" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Vista controllo versione" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Confronto a 3-_vie" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Seleziona terzo file" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Seleziona secondo file" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Seleziona primo file" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Seleziona prima cartella" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Seleziona seconda cartella" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Seleziona terza cartella" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Seleziona cartella con controllo versione" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "Confronta spazi _bianchi" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "C_onfronta" + +#: ../data/ui/vcview.ui.h:3 +msgid "Co_mmit..." +msgstr "Co_mmit..." + +#: ../data/ui/vcview.ui.h:4 +msgid "Commit changes to version control" +msgstr "Esegue il commit delle modifiche" + +#: ../data/ui/vcview.ui.h:5 +msgid "_Update" +msgstr "A_ggiorna" + +#: ../data/ui/vcview.ui.h:6 +msgid "Update working copy from version control" +msgstr "Aggiorna la copia di lavoro dal sistema di controllo della versione" + +#: ../data/ui/vcview.ui.h:7 +msgid "_Push" +msgstr "_Push" + +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Invia le modifiche locali in remoto" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Aggiunge al controllo di versione" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Rimuove dal controllo di versione" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Marca _risolto" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Marca come risolto nel controllo di versione" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "_Ripristina" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Riporta la copia di lavoro allo stato originale" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Elimina dalla copia di lavoro" + +#: ../data/ui/vcview.ui.h:18 +msgid "Console" +msgstr "Console" + +#: ../data/ui/vcview.ui.h:19 +msgid "Show or hide the version control console output pane" +msgstr "" +"Mostra o nasconde il riquadro dell'output del sistema di controllo della " +"versione" + +#: ../data/ui/vcview.ui.h:20 +msgid "_Flatten" +msgstr "_Appiattisci" + +#: ../data/ui/vcview.ui.h:21 +msgid "Flatten directories" +msgstr "Appiattisce le directory" + +#: ../data/ui/vcview.ui.h:22 +msgid "_Modified" +msgstr "_Modificati" + +#: ../data/ui/vcview.ui.h:23 +msgid "Show modified files" +msgstr "Mostra i file modificati" + +#: ../data/ui/vcview.ui.h:24 +msgid "_Normal" +msgstr "_Normali" + +#: ../data/ui/vcview.ui.h:25 +msgid "Show normal files" +msgstr "Mostra i file normali" + +#: ../data/ui/vcview.ui.h:26 +msgid "Un_versioned" +msgstr "Non _monitorati" + +#: ../data/ui/vcview.ui.h:27 +msgid "Show unversioned files" +msgstr "Mostra file non monitorati" + +#: ../data/ui/vcview.ui.h:28 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Ignorati" + +#: ../data/ui/vcview.ui.h:29 +msgid "Show ignored files" +msgstr "Mostra file ignorati" + +#: ../data/ui/vcview.ui.h:30 +msgid "Commit" +msgstr "Commit" + +#: ../data/ui/vcview.ui.h:31 +msgid "Commit Files" +msgstr "Commit dei file" + +#: ../data/ui/vcview.ui.h:32 +msgid "Log Message" +msgstr "Messaggio di registro" + +#: ../data/ui/vcview.ui.h:33 +msgid "Previous logs:" +msgstr "Registri precedenti:" + +#: ../data/ui/vcview.ui.h:34 +msgid "Co_mmit" +msgstr "Co_mmit" + +#: ../data/ui/vcview.ui.h:35 +msgid "Console output" +msgstr "Output della console" + +#: ../data/ui/vcview.ui.h:36 +msgid "Push local commits to remote?" +msgstr "Inviare i commit locali in remoto?" + +#: ../data/ui/vcview.ui.h:37 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"I commit da inviare sono determinati dal sistema di controllo della versione." + +#: ../data/ui/vcview.ui.h:38 +msgid "_Push commits" +msgstr "_Push dei commit" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:373 +msgid "Size" +msgstr "Dimensione" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:381 +msgid "Modification time" +msgstr "Data e ora di modifica" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:389 +msgid "Permissions" +msgstr "Permessi" + +#: ../meld/dirdiff.py:548 #, python-format msgid "Hide %s" msgstr "Nascondi %s" -#: ../meld/dirdiff.py:394 ../meld/dirdiff.py:404 ../meld/vcview.py:272 -#: ../meld/vcview.py:300 +#: ../meld/dirdiff.py:677 ../meld/dirdiff.py:699 #, python-format msgid "[%s] Scanning %s" -msgstr "[%s] Scansione di %s" +msgstr "[%s] Analisi di %s" -#: ../meld/dirdiff.py:433 +#: ../meld/dirdiff.py:828 #, python-format -msgid "'%s' hidden by '%s'" -msgstr "«%s» è nascosto da «%s»" +msgid "[%s] Done" +msgstr "[%s] Fatto" -#: ../meld/dirdiff.py:439 -#, python-format +#: ../meld/dirdiff.py:835 +msgid "Multiple errors occurred while scanning this folder" +msgstr "" +"Si sono verificati molteplici errore durante l'analisi di questa cartella" + +#: ../meld/dirdiff.py:836 +msgid "Files with invalid encodings found" +msgstr "Trovati file con codifiche non valide" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:838 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "Alcuni file presentano delle codifiche non corrette. I nomi sono:" + +#: ../meld/dirdiff.py:840 +msgid "Files hidden by case insensitive comparison" +msgstr "File nascosti dal confronto senza distinzione maiuscole/minuscole" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:842 msgid "" "You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" +"filesystem. The following files in this folder are hidden:" msgstr "" -"Si sta eseguendo un confronto non sensibile alle maiuscole in un file system " -"sensibile alle maiuscole. Alcuni file non sono visibili:\n" -"%s" +"Confronto eseguito senza distinzione tra maiuscole/minuscole su un file " +"system che applica tale distinzione. Alcuni file sono nascosti:" -#: ../meld/dirdiff.py:516 +#: ../meld/dirdiff.py:853 #, python-format -msgid "[%s] Done" -msgstr "[%s] Fatto" +msgid "'%s' hidden by '%s'" +msgstr "«%s» è nascosto da «%s»" -#: ../meld/dirdiff.py:562 +#: ../meld/dirdiff.py:878 ../meld/filediff.py:1102 ../meld/filediff.py:1240 +#: ../meld/filediff.py:1411 ../meld/filediff.py:1441 ../meld/filediff.py:1443 +msgid "Hi_de" +msgstr "Nascon_di" + +#: ../meld/dirdiff.py:909 #, python-format msgid "" "'%s' exists.\n" "Overwrite?" msgstr "" -"«%s» esiste.\n" +"«%s» esiste già.\n" "Sovrascrivere?" -#: ../meld/dirdiff.py:569 -#, python-format -msgid "" -"Error copying '%s' to '%s'\n" -"\n" -"%s." -msgstr "" -"Errore durante la copia di «%s» in «%s»\n" -"\n" -"%s." - -#: ../meld/dirdiff.py:587 ../meld/vcview.py:459 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"«%s» è una directory.\n" -"Rimuovere ricorsivamente?" +#: ../meld/dirdiff.py:917 +msgid "Error copying file" +msgstr "Errore nel copiare il file" -#: ../meld/dirdiff.py:594 ../meld/vcview.py:464 +#: ../meld/dirdiff.py:918 #, python-format msgid "" -"Error removing %s\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Errore durante la rimozione di «%s»\n" +"Impossibile copiare %s\n" +"in %s.\n" "\n" "%s." -#: ../meld/dirdiff.py:606 +#: ../meld/dirdiff.py:941 #, python-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "%i secondo" -msgstr[1] "%i secondi" +msgid "Error deleting %s" +msgstr "Errore nell'eliminare %s" -#: ../meld/dirdiff.py:607 -#, python-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "%i minuto" -msgstr[1] "%i minuti" +#: ../meld/filediff.py:231 +msgid "Format as Patch..." +msgstr "Formatta come patch..." + +#: ../meld/filediff.py:232 +msgid "Create a patch using differences between files" +msgstr "Crea una patch utilizzando le differenze tra i file" + +#: ../meld/filediff.py:234 +msgid "Save A_ll" +msgstr "Sal_va tutti" + +#: ../meld/filediff.py:235 +msgid "Save all files in the current comparison" +msgstr "Salva tutti i file nel confronto attuale" + +#: ../meld/filediff.py:238 +msgid "Revert files to their saved versions" +msgstr "Ripristina i file alla loro versione salvata" + +#: ../meld/filediff.py:240 +msgid "Add Synchronization Point" +msgstr "Aggiungi punto sincronizzazione" + +#: ../meld/filediff.py:241 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Aggiunge un punto manuale per sincronizzare le modifiche tra i file" + +#: ../meld/filediff.py:244 +msgid "Clear Synchronization Points" +msgstr "Pulisci punti sincronizzazione" + +#: ../meld/filediff.py:245 +msgid "Clear manual change sychronization points" +msgstr "Pulisce i punti manuali di sincronizzazione delle modifiche" + +#: ../meld/filediff.py:247 +msgid "Previous Conflict" +msgstr "Conflitto precedente" + +#: ../meld/filediff.py:248 +msgid "Go to the previous conflict" +msgstr "Va al conflitto precedente" + +#: ../meld/filediff.py:250 +msgid "Next Conflict" +msgstr "Conflitto successivo" + +#: ../meld/filediff.py:251 +msgid "Go to the next conflict" +msgstr "Va al conflitto successivo" + +#: ../meld/filediff.py:253 +msgid "Push to Left" +msgstr "Invia a sinistra" -#: ../meld/dirdiff.py:608 -#, python-format -msgid "%i hour" -msgid_plural "%i hours" -msgstr[0] "%i ora" -msgstr[1] "%i ore" +#: ../meld/filediff.py:254 +msgid "Push current change to the left" +msgstr "Invia la modifica corrente a sinistra" -#: ../meld/dirdiff.py:609 -#, python-format -msgid "%i day" -msgid_plural "%i days" -msgstr[0] "%i giorno" -msgstr[1] "%i giorni" +#: ../meld/filediff.py:257 +msgid "Push to Right" +msgstr "Invia a destra" -#: ../meld/dirdiff.py:610 -#, python-format -msgid "%i week" -msgid_plural "%i weeks" -msgstr[0] "%i settimana" -msgstr[1] "%i settimane" +#: ../meld/filediff.py:258 +msgid "Push current change to the right" +msgstr "Invia la modifica corrente a destra" -#: ../meld/dirdiff.py:611 -#, python-format -msgid "%i month" -msgid_plural "%i months" -msgstr[0] "%i mese" -msgstr[1] "%i mesi" +#: ../meld/filediff.py:262 +msgid "Pull from Left" +msgstr "Prendi da sinistra" -#: ../meld/dirdiff.py:612 -#, python-format -msgid "%i year" -msgid_plural "%i years" -msgstr[0] "%i anno" -msgstr[1] "%i anni" +#: ../meld/filediff.py:263 +msgid "Pull change from the left" +msgstr "Prende la modifica da sinistra" -#: ../meld/filediff.py:177 -msgid "Create a patch" -msgstr "Crea una patch" +#: ../meld/filediff.py:266 +msgid "Pull from Right" +msgstr "Prendi da destra" -#: ../meld/filediff.py:178 -#, fuzzy -#| msgid "Path to file" -msgid "Push to left" -msgstr "Percorso al file" +#: ../meld/filediff.py:267 +msgid "Pull change from the right" +msgstr "Prende la modifica da destra" -#: ../meld/filediff.py:178 -msgid "Push current change to the left" -msgstr "" +#: ../meld/filediff.py:269 +msgid "Copy Above Left" +msgstr "Copia a sinistra sopra" -#: ../meld/filediff.py:179 -msgid "Push to right" -msgstr "" +#: ../meld/filediff.py:270 +msgid "Copy change above the left chunk" +msgstr "Copia la modifica sopra al pezzo a sinistra" -#: ../meld/filediff.py:179 -msgid "Push current change to the right" -msgstr "" +#: ../meld/filediff.py:272 +msgid "Copy Below Left" +msgstr "Copia a sinistra sotto" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:181 -msgid "Pull from left" -msgstr "" +#: ../meld/filediff.py:273 +msgid "Copy change below the left chunk" +msgstr "Copia la modifica sotto al pezzo a sinistra" -#: ../meld/filediff.py:181 -#, fuzzy -#| msgid "Copy all changes from right pane to left pane" -msgid "Pull change from the left" -msgstr "Copia tutte le modifiche dal riquadro destro al riquadro sinistro" +#: ../meld/filediff.py:275 +msgid "Copy Above Right" +msgstr "Copia a destra sopra" -#: ../meld/filediff.py:182 -msgid "Pull from right" -msgstr "" +#: ../meld/filediff.py:276 +msgid "Copy change above the right chunk" +msgstr "Copia la modifica sopra al pezzo a destra" -#: ../meld/filediff.py:182 -#, fuzzy -#| msgid "Copy all changes from left pane to right pane" -msgid "Pull change from the right" -msgstr "Copia tutte le modifiche dal riquadro sinistro al riquadro destro" +#: ../meld/filediff.py:278 +msgid "Copy Below Right" +msgstr "Copia a destra sotto" -#: ../meld/filediff.py:183 -#, fuzzy -#| msgid "Date" +#: ../meld/filediff.py:279 +msgid "Copy change below the right chunk" +msgstr "Copia la modifica sotto al pezzo a destra" + +#: ../meld/filediff.py:281 msgid "Delete" -msgstr "Data" +msgstr "Elimina" -#: ../meld/filediff.py:183 -#, fuzzy -#| msgid "Delete locally" +#: ../meld/filediff.py:282 msgid "Delete change" -msgstr "Elimina localmente" +msgstr "Elimina la modifica" + +#: ../meld/filediff.py:284 +msgid "Merge All from Left" +msgstr "Unisci tutte da sinistra" + +#: ../meld/filediff.py:285 +msgid "Merge all non-conflicting changes from the left" +msgstr "Unisce tutte le modifiche senza conflitti da sinistra" -#: ../meld/filediff.py:184 -msgid "Copy all changes from right pane to left pane" -msgstr "Copia tutte le modifiche dal riquadro destro al riquadro sinistro" - -#: ../meld/filediff.py:185 -msgid "Copy all changes from left pane to right pane" -msgstr "Copia tutte le modifiche dal riquadro sinistro al riquadro destro" +#: ../meld/filediff.py:287 +msgid "Merge All from Right" +msgstr "Unisci tutte da destra" + +#: ../meld/filediff.py:288 +msgid "Merge all non-conflicting changes from the right" +msgstr "Unisce tutte le modifiche senza conflitti da destra" + +#: ../meld/filediff.py:290 +msgid "Merge All" +msgstr "Unisci tutte" + +#: ../meld/filediff.py:291 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "" +"Unisce tutte le modifiche senza conflitti dai riquadri destro e sinistro" + +#: ../meld/filediff.py:295 +msgid "Cycle Through Documents" +msgstr "Passa tra i documenti" + +#: ../meld/filediff.py:296 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "" +"Sposta il focus della tastiera al documento successivo in questo confronto" + +#: ../meld/filediff.py:302 +msgid "Lock Scrolling" +msgstr "Blocca scorrimento" + +#: ../meld/filediff.py:303 +msgid "Lock scrolling of all panes" +msgstr "Blocca lo scorrimento di tutti i riquadri" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:252 -#| msgid "INS,OVR" +#: ../meld/filediff.py:490 msgid "INS" msgstr "INS" -#: ../meld/filediff.py:252 -#| msgid "INS,OVR" +#: ../meld/filediff.py:490 msgid "OVR" msgstr "SSC" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:254 +#: ../meld/filediff.py:492 #, python-format msgid "Ln %i, Col %i" -msgstr "Rg %i, Col %i" +msgstr "Rg %i, Col %d" -#: ../meld/filediff.py:389 +#: ../meld/filediff.py:829 #, python-format msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." msgstr "" -"L'espressione regolare «%s» ha cambiato il numero di righe nel file. Il " -"confronto non sarà corretto. Vedere il manuale utente per maggiori dettagli." +"Il filtro «%s» ha modificato il numero di righe nel file: il confronto non " +"sarà corretto. Consultare il manuale per maggiori informazioni." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:486 -msgid "" -msgstr "" - -#: ../meld/filediff.py:667 +#: ../meld/filediff.py:1090 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Impostazione del numero dei pannelli" -#: ../meld/filediff.py:673 +#: ../meld/filediff.py:1096 #, python-format msgid "[%s] Opening files" msgstr "[%s] Apertura dei file" -#: ../meld/filediff.py:679 ../meld/filediff.py:766 -msgid "Hi_de" -msgstr "Nascon_di" - -#: ../meld/filediff.py:700 ../meld/filediff.py:711 ../meld/filediff.py:724 -#: ../meld/filediff.py:730 +#: ../meld/filediff.py:1119 ../meld/filediff.py:1129 ../meld/filediff.py:1142 +#: ../meld/filediff.py:1148 msgid "Could not read file" msgstr "Impossibile leggere il file" -#: ../meld/filediff.py:703 +#: ../meld/filediff.py:1120 #, python-format msgid "[%s] Reading files" msgstr "[%s] Lettura dei file" -#: ../meld/filediff.py:712 +#: ../meld/filediff.py:1130 #, python-format msgid "%s appears to be a binary file." msgstr "«%s» sembra essere un file binario." -#: ../meld/filediff.py:725 +#: ../meld/filediff.py:1143 #, python-format msgid "%s is not in encodings: %s" -msgstr "%s non è nelle codifiche: %s" +msgstr "%s non è presente nelle codifiche: %s" -#: ../meld/filediff.py:750 +#: ../meld/filediff.py:1178 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Calcolo delle differenze" -#: ../meld/filediff.py:761 +#: ../meld/filediff.py:1235 +#, python-format +msgid "File %s has changed on disk" +msgstr "Il file «%s» è stato modificato" + +#: ../meld/filediff.py:1236 +msgid "Do you want to reload the file?" +msgstr "Ricaricare il file?" + +#: ../meld/filediff.py:1239 +msgid "_Reload" +msgstr "_Ricarica" + +#: ../meld/filediff.py:1400 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Sono in uso filtri sul testo e potrebbero nascondere differenze tra i file. " +"Confrontare i file senza i filtri?" + +#: ../meld/filediff.py:1406 msgid "Files are identical" msgstr "I file sono identici" -#: ../meld/filediff.py:914 +#: ../meld/filediff.py:1414 +msgid "Show without filters" +msgstr "Mostra senza filtri" + +#: ../meld/filediff.py:1436 +msgid "Change highlighting incomplete" +msgstr "Evidenziazione modifica incompleta" + +# (ndt) un po' libera... +#: ../meld/filediff.py:1437 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Alcune modifiche non sono state evidenziate poiché troppo grandi. È " +"possibile fare in modo che anche le modifiche di grandi dimensioni vengano " +"evidenziate, ma potrebbe rallentare il programma." + +#: ../meld/filediff.py:1445 +msgid "Keep highlighting" +msgstr "Continua a evidenziare" + +#: ../meld/filediff.py:1447 +msgid "_Keep highlighting" +msgstr "Continua _evidenziazione" + +#: ../meld/filediff.py:1578 #, python-format msgid "" "\"%s\" exists!\n" "Overwrite?" msgstr "" -"«%s» esiste.\n" +"«%s» esiste già.\n" "Sovrascrivere?" -#: ../meld/filediff.py:927 +#: ../meld/filediff.py:1591 #, python-format msgid "" "Error writing to %s\n" "\n" "%s." msgstr "" -"Errore durante la scrittura di «%s»\n" +"Errore nello scrivere su %s\n" "\n" "%s." -#: ../meld/filediff.py:936 +#: ../meld/filediff.py:1602 +msgid "Save Left Pane As" +msgstr "Salva riquadro sinistro come" + +#: ../meld/filediff.py:1604 +msgid "Save Middle Pane As" +msgstr "Salva riquadro centrale come" + +#: ../meld/filediff.py:1606 +msgid "Save Right Pane As" +msgstr "Salva riquadro destro come" + +#: ../meld/filediff.py:1617 #, python-format -msgid "Choose a name for buffer %i." -msgstr "Scegliere un nome per il buffer %i." +msgid "File %s has changed on disk since it was opened" +msgstr "Il file «%s» è stato modificato" -#: ../meld/filediff.py:950 +#: ../meld/filediff.py:1619 +msgid "If you save it, any external changes will be lost." +msgstr "Salvare il file può comportare la perdita delle modifiche esterne." + +#: ../meld/filediff.py:1622 +msgid "Save Anyway" +msgstr "Salva comunque" + +#: ../meld/filediff.py:1623 +msgid "Don't Save" +msgstr "Non salvare" + +#: ../meld/filediff.py:1647 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -716,7 +1485,7 @@ "\n" "Quale formato utilizzare?" -#: ../meld/filediff.py:966 +#: ../meld/filediff.py:1663 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -725,583 +1494,506 @@ "«%s» contiene caratteri non codificabili con «%s»\n" "Salvare in UTF-8?" -#. save as -#: ../meld/filediff.py:1004 -msgid "Save patch as..." -msgstr "Salva patch come..." +#: ../meld/filediff.py:2022 +msgid "Live comparison updating disabled" +msgstr "Aggiornamento automatico dei confronti disabilitato" -#: ../meld/filediff.py:1062 -#, python-format +#: ../meld/filediff.py:2023 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." msgstr "" -"Il ricaricamento scarterà le modifiche in:\n" -"%s\n" -"\n" -"Non si può annullare questa operazione." +"L'aggiornamento automatico dei confronti è disabilitato quando sono attivi i " +"punti di sincronizzazione. È comunque possibile aggiornare il confronto " +"manualmente, quello automatico verrà ripristinato quando tutti i punti di " +"sincronizzazione saranno rimossi." -#: ../meld/meldapp.py:151 -msgid "label" -msgstr "etichetta" +#: ../meld/filemerge.py:49 +#, python-format +msgid "[%s] Merging files" +msgstr "[%s] Unione dei file" + +#: ../meld/gutterrendererchunk.py:91 +msgid "Copy _up" +msgstr "Copia _su" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _down" +msgstr "Copia _giù" + +#: ../meld/meldapp.py:132 +msgid "wrong number of arguments supplied to --diff" +msgstr "numero errato di argomenti forniti per --diff" + +#: ../meld/meldapp.py:137 +msgid "Start with an empty window" +msgstr "Parte con una finestra vuota" + +#: ../meld/meldapp.py:138 ../meld/meldapp.py:140 +msgid "file" +msgstr "file" + +#: ../meld/meldapp.py:138 ../meld/meldapp.py:142 +msgid "dir" +msgstr "dir" + +#: ../meld/meldapp.py:139 +msgid "Start a version control comparison" +msgstr "Inizia una comparazione da controllo di versione" + +#: ../meld/meldapp.py:141 +msgid "Start a 2- or 3-way file comparison" +msgstr "Inizia una comparazione a 2 o a 3 file" + +#: ../meld/meldapp.py:143 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Inizia una comparazione a 2 o a 3 directory" #: ../meld/meldapp.py:151 -msgid "pattern" -msgstr "modello" +msgid "Meld is a file and directory comparison tool." +msgstr "Meld è uno strumento per confrontare file e directory." -#: ../meld/meldapp.py:219 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Disponibile solo se gnome-python-desktop è installato" - -#. file filters -#. text filters -#: ../meld/meldapp.py:229 ../meld/meldapp.py:234 ../meld/vcview.py:163 -msgid "Name" -msgstr "Nome" +#: ../meld/meldapp.py:154 +msgid "Set label to use instead of file name" +msgstr "Imposta l'etichetta da utilizzare al posto del nome del file" -#: ../meld/meldapp.py:229 ../meld/meldapp.py:234 -msgid "Active" -msgstr "Attivo" +#: ../meld/meldapp.py:156 +msgid "Open a new tab in an already running instance" +msgstr "Apre una nuova scheda in un'istanza già in esecuzione" -#: ../meld/meldapp.py:229 -msgid "Pattern" -msgstr "Modello" +#: ../meld/meldapp.py:159 +msgid "Automatically compare all differing files on startup" +msgstr "Confronta automaticamente all'avvio tutti i file diversi" + +#: ../meld/meldapp.py:161 +msgid "Ignored for compatibility" +msgstr "Ignorato per compatibilità" + +#: ../meld/meldapp.py:164 +msgid "Set the target file for saving a merge result" +msgstr "Imposta il file destinazione per salvare il risultato dell'unione" + +#: ../meld/meldapp.py:166 +msgid "Automatically merge files" +msgstr "Unisce automaticamente i file" + +#: ../meld/meldapp.py:169 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Carica un confronto salvato da un file Meld" + +#: ../meld/meldapp.py:172 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Crea una scheda con le differenze per i file o le cartelle forniti" + +#: ../meld/meldapp.py:175 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "troppi argomenti (ne servono da 0 a 3, forniti %d)" + +#: ../meld/meldapp.py:178 +msgid "can't auto-merge less than 3 files" +msgstr "impossibile eseguire l'unione automatica con meno di 3 file" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge directories" +msgstr "impossibile eseguire l'unione automatica di directory" + +#: ../meld/meldapp.py:190 +msgid "Error reading saved comparison file" +msgstr "Errore nel leggere il file di confronto salvato" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:125 +msgid "" +msgstr "" -#: ../meld/meldapp.py:234 -msgid "Regex" -msgstr "Regex" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:341 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Backup\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:343 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Controllo di versione\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:345 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binari\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:347 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:349 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "Parole chiave CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:351 -msgid "C++ comment\t0\t//.*\n" -msgstr "Commento C++\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:353 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "Commento C\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:355 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Tutti gli spazi\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:357 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Spazi iniziali\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/meldapp.py:359 -msgid "Script comment\t0\t#.*" -msgstr "Commento script\t0\t#.*" +#: ../meld/melddoc.py:75 ../meld/melddoc.py:76 +msgid "untitled" +msgstr "senza nome" -#: ../meld/meldapp.py:428 +#: ../meld/meldwindow.py:49 msgid "_File" msgstr "_File" -#: ../meld/meldapp.py:429 -msgid "_New..." -msgstr "_Nuovo..." +#: ../meld/meldwindow.py:50 +msgid "_New Comparison..." +msgstr "N_uovo confronto..." -#: ../meld/meldapp.py:429 +#: ../meld/meldwindow.py:51 msgid "Start a new comparison" -msgstr "Inizia una nuova comparazione" +msgstr "Avvia un nuovo confronto" -#: ../meld/meldapp.py:430 +#: ../meld/meldwindow.py:54 msgid "Save the current file" msgstr "Salva il file corrente" -#: ../meld/meldapp.py:432 +#: ../meld/meldwindow.py:56 +msgid "Save As..." +msgstr "Salva come..." + +#: ../meld/meldwindow.py:57 +msgid "Save the current file with a different name" +msgstr "Salva il file corrente con un nome diverso" + +#: ../meld/meldwindow.py:60 msgid "Close the current file" msgstr "Chiude il file corrente" -#: ../meld/meldapp.py:433 -msgid "Quit the program" -msgstr "Esce dal programma" - -#: ../meld/meldapp.py:435 +#: ../meld/meldwindow.py:63 msgid "_Edit" msgstr "_Modifica" -#: ../meld/meldapp.py:436 +#: ../meld/meldwindow.py:65 msgid "Undo the last action" msgstr "Annulla l'ultima azione" -#: ../meld/meldapp.py:437 +#: ../meld/meldwindow.py:68 msgid "Redo the last undone action" msgstr "Ripete l'ultima azione annullata" -#: ../meld/meldapp.py:438 +#: ../meld/meldwindow.py:70 msgid "Cut the selection" msgstr "Taglia la selezione" -#: ../meld/meldapp.py:439 +#: ../meld/meldwindow.py:72 msgid "Copy the selection" msgstr "Copia la selezione" -#: ../meld/meldapp.py:440 +#: ../meld/meldwindow.py:74 msgid "Paste the clipboard" -msgstr "Incolla gli appunti" +msgstr "Incolla dagli appunti" -#: ../meld/meldapp.py:441 +#: ../meld/meldwindow.py:76 +msgid "Find..." +msgstr "Trova..." + +#: ../meld/meldwindow.py:76 msgid "Search for text" -msgstr "Cerca il testo" +msgstr "Cerca una stringa di testo" -#: ../meld/meldapp.py:442 +#: ../meld/meldwindow.py:78 msgid "Find Ne_xt" msgstr "Trova successi_vo" -#: ../meld/meldapp.py:442 +#: ../meld/meldwindow.py:79 msgid "Search forwards for the same text" -msgstr "Cerca in avanti lo stesso testo" +msgstr "Cerca lo stesso testo in avanti" + +#: ../meld/meldwindow.py:81 +msgid "Find _Previous" +msgstr "Trova pr_ecedente" + +#: ../meld/meldwindow.py:82 +msgid "Search backwards for the same text" +msgstr "Cerca lo stesso testo all'indietro" + +#: ../meld/meldwindow.py:85 +msgid "_Replace..." +msgstr "Sostit_uisci..." -#: ../meld/meldapp.py:443 +#: ../meld/meldwindow.py:86 msgid "Find and replace text" -msgstr "Trova e sostituisce del testo" +msgstr "Trova e sostituisce testo" -#: ../meld/meldapp.py:444 -msgid "Go to the next difference" -msgstr "Va alla differenza successiva" - -#: ../meld/meldapp.py:445 -msgid "Go to the previous difference" -msgstr "Va alla differenza precedente" +#: ../meld/meldwindow.py:89 +msgid "_Changes" +msgstr "_Modifiche" -#: ../meld/meldapp.py:446 -msgid "Prefere_nces" -msgstr "Preferen_ze" +#: ../meld/meldwindow.py:90 +msgid "Next Change" +msgstr "Modifica successiva" + +#: ../meld/meldwindow.py:91 +msgid "Go to the next change" +msgstr "Va alla modifica successiva" + +#: ../meld/meldwindow.py:93 +msgid "Previous Change" +msgstr "Modifica precedente" + +#: ../meld/meldwindow.py:94 +msgid "Go to the previous change" +msgstr "Va alla modifica precedente" -#: ../meld/meldapp.py:446 -msgid "Configure the application" -msgstr "Configura l'applicazione" +#: ../meld/meldwindow.py:96 +msgid "Open Externally" +msgstr "Apri esternamente" -#: ../meld/meldapp.py:448 +#: ../meld/meldwindow.py:97 +msgid "Open selected file or directory in the default external application" +msgstr "" +"Apre il file o la directory selezionata nell'applicazione esterna predefinita" + +#: ../meld/meldwindow.py:101 msgid "_View" msgstr "_Visualizza" -#: ../meld/meldapp.py:449 -msgid "File status" +#: ../meld/meldwindow.py:102 +msgid "File Status" msgstr "Stato del file" -#: ../meld/meldapp.py:450 -msgid "Version status" -msgstr "Stato della versione" +#: ../meld/meldwindow.py:103 +msgid "Version Status" +msgstr "Stato versione" -#: ../meld/meldapp.py:451 -msgid "File filters" -msgstr "Filtri dei file" - -#: ../meld/meldapp.py:452 +#: ../meld/meldwindow.py:106 msgid "Stop the current action" msgstr "Ferma l'azione corrente" -#: ../meld/meldapp.py:453 +#: ../meld/meldwindow.py:109 msgid "Refresh the view" msgstr "Aggiorna la vista" -#: ../meld/meldapp.py:454 -msgid "Reload" -msgstr "Ricarica" - -#: ../meld/meldapp.py:454 -msgid "Reload the comparison" -msgstr "Ricarica la comparazione" - -#: ../meld/meldapp.py:456 -msgid "_Help" -msgstr "A_iuto" - -#: ../meld/meldapp.py:457 -msgid "_Contents" -msgstr "_Sommario" - -#: ../meld/meldapp.py:457 -msgid "Open the Meld manual" -msgstr "Apre il manuale di Meld" - -#: ../meld/meldapp.py:458 -msgid "Report _Bug" -msgstr "Segnala _errore" - -#: ../meld/meldapp.py:458 -msgid "Report a bug in Meld" -msgstr "Riporta un errore in Meld" - -#: ../meld/meldapp.py:459 -msgid "About this program" -msgstr "Informazioni sul programma" +#: ../meld/meldwindow.py:112 +msgid "_Tabs" +msgstr "_Schede" + +#: ../meld/meldwindow.py:113 +msgid "_Previous Tab" +msgstr "Scheda _precedente" + +#: ../meld/meldwindow.py:114 +msgid "Activate previous tab" +msgstr "Attiva la scheda precedente" + +#: ../meld/meldwindow.py:116 +msgid "_Next Tab" +msgstr "Scheda _successiva" + +#: ../meld/meldwindow.py:117 +msgid "Activate next tab" +msgstr "Attiva la scheda successiva" + +#: ../meld/meldwindow.py:120 +msgid "Move Tab _Left" +msgstr "Sposta scheda a _sinistra" + +#: ../meld/meldwindow.py:121 +msgid "Move current tab to left" +msgstr "Sposta la scheda corrente a sinistra" + +#: ../meld/meldwindow.py:124 +msgid "Move Tab _Right" +msgstr "Sposta scheda a _destra" + +#: ../meld/meldwindow.py:125 +msgid "Move current tab to right" +msgstr "Sposta la scheda corrente a destra" -#: ../meld/meldapp.py:462 -msgid "Full Screen" +#: ../meld/meldwindow.py:129 +msgid "Fullscreen" msgstr "Schermo intero" -#: ../meld/meldapp.py:462 -msgid "View the comparison in full screen" -msgstr "Visualizza a schermo intero la comparazione" +# (ndt) suggerimento +#: ../meld/meldwindow.py:130 +msgid "View the comparison in fullscreen" +msgstr "Visualizza a schermo intero" -#: ../meld/meldapp.py:463 +#: ../meld/meldwindow.py:132 msgid "_Toolbar" -msgstr "Barra degli _strumenti" +msgstr "Barra degli s_trumenti" -#: ../meld/meldapp.py:463 +#: ../meld/meldwindow.py:133 msgid "Show or hide the toolbar" msgstr "Mostra o nasconde la barra degli strumenti" -#: ../meld/meldapp.py:464 -msgid "_Statusbar" -msgstr "Barra di _stato" - -#: ../meld/meldapp.py:464 -msgid "Show or hide the statusbar" -msgstr "Mostra o nasconde la barra di stato" - -#. exit at first non found directory + file -#: ../meld/meldapp.py:816 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Non è possibile confrontare sia file che directory.\n" - -#: ../meld/meldapp.py:870 -msgid "wrong number of arguments supplied to --diff" -msgstr "numero errato di argomenti forniti per --diff" - -#: ../meld/meldapp.py:874 -msgid "Start with an empty window" -msgstr "Parte con una finestra vuota" - -#: ../meld/meldapp.py:875 ../meld/meldapp.py:876 ../meld/meldapp.py:878 -msgid "file" -msgstr "file" - -#: ../meld/meldapp.py:875 ../meld/meldapp.py:877 ../meld/meldapp.py:878 -msgid "dir" -msgstr "directory" - -#: ../meld/meldapp.py:875 -msgid "Start a version control comparison" -msgstr "Inizia una comparazione da controllo di versione" - -#: ../meld/meldapp.py:876 -msgid "Start a 2- or 3-way file comparison" -msgstr "Inizia una comparazione a 2 o a 3 file" - -#: ../meld/meldapp.py:877 -msgid "Start a 2- or 3-way directory comparison" -msgstr "Inizia una comparazione a 2 o a 3 directory" - -#: ../meld/meldapp.py:878 -msgid "Start a comparison between file and dir/file" -msgstr "Inizia una comparazione tra file e file/directory" - -#: ../meld/meldapp.py:884 -msgid "Meld is a file and directory comparison tool." -msgstr "Meld è uno strumento di comparazione di file e directory." - -#: ../meld/meldapp.py:887 -msgid "Set label to use instead of file name" -msgstr "Imposta l'etichetta da utilizzare al posto del nome del file" - -#: ../meld/meldapp.py:889 -msgid "Automatically compare all differing files on startup" -msgstr "Confronta automaticamente all'avvio tutti i file diversi" - -#: ../meld/meldapp.py:890 ../meld/meldapp.py:891 ../meld/meldapp.py:892 -#: ../meld/meldapp.py:893 -msgid "Ignored for compatibility" -msgstr "Ignorato per compatibilità" - -#: ../meld/meldapp.py:896 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "Crea una scheda diff con fino a 3 file o directory forniti." - -#: ../meld/meldapp.py:899 -#, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "troppi argomenti (ne servono da 0 a 4, forniti %d)" - -#: ../meld/melddoc.py:48 -msgid "untitled" -msgstr "senza titolo" +#: ../meld/meldwindow.py:142 +msgid "Open Recent" +msgstr "Apri recenti" + +#: ../meld/meldwindow.py:143 +msgid "Open recent files" +msgstr "Apre i file recenti" + +#: ../meld/meldwindow.py:505 +msgid "Switch to this tab" +msgstr "Passa a questa scheda" + +#: ../meld/meldwindow.py:626 +msgid "Cannot compare a mixture of files and directories" +msgstr "Non è possibile confrontare sia file che directory" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:189 +#: ../meld/misc.py:178 msgid "[None]" msgstr "[Nessuno]" -#: ../meld/vcview.py:127 -msgid "_Commit" -msgstr "_Commit" +#: ../meld/preferences.py:34 +msgid "label" +msgstr "etichetta" -#: ../meld/vcview.py:127 -msgid "Commit" -msgstr "Commit" +#: ../meld/preferences.py:34 +msgid "pattern" +msgstr "modello" -#. FIXME: popup used to use gtk.STOCK_GO_BACK -#: ../meld/vcview.py:128 -msgid "_Update" -msgstr "_Aggiorna" +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Controllo della versione:" + +#: ../meld/ui/findbar.py:141 +msgid "Regular expression error" +msgstr "Errore nell'espressione regolare" -#: ../meld/vcview.py:128 -msgid "Update" -msgstr "Aggiorna" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Chiudi scheda" -#. FIXME: popup used to use gtk.STOCK_GO_FORWARD -#: ../meld/vcview.py:129 -msgid "_Add" -msgstr "_Aggiungi" +#: ../meld/ui/vcdialogs.py:61 +msgid "No files will be committed" +msgstr "Non verrà eseguito il commit di alcun file" -#: ../meld/vcview.py:129 -msgid "Add to VC" -msgstr "Aggiunge al controllo di versione" +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s su %s" -#. FIXME: popup used to use gtk.STOCK_ADD -#: ../meld/vcview.py:130 -msgid "Add _Binary" -msgstr "Aggiungi _binario" - -#: ../meld/vcview.py:130 -msgid "Add binary to VC" -msgstr "Aggiunge un binario al controllo di versione" +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d commit non inviato" +msgstr[1] "%d commit non inviati" -#. FIXME: stock is inconsistent with other VC actions -#: ../meld/vcview.py:131 -msgid "_Remove" -msgstr "_Elimina" +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d ramo" +msgstr[1] "%d rami" -#: ../meld/vcview.py:131 -msgid "Remove from VC" -msgstr "Rimuove dal controllo di versione" +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Modalità cambiata da %s a %s" -#. FIXME: popup used to use gtk.STOCK_REMOVE -#: ../meld/vcview.py:132 -msgid "_Resolved" -msgstr "_Risolto" - -#: ../meld/vcview.py:132 -msgid "Mark as resolved for VC" -msgstr "Marca come risolto per il controllo di versione" - -#: ../meld/vcview.py:133 -msgid "Revert to original" -msgstr "Riporta all'originale" - -#: ../meld/vcview.py:134 -msgid "Delete locally" -msgstr "Elimina localmente" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Unito" -#: ../meld/vcview.py:138 -msgid "_Flatten" -msgstr "_Appiattisci" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Base" -#: ../meld/vcview.py:138 -msgid "Flatten directories" -msgstr "Appiattisce le directory" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Locale" -#: ../meld/vcview.py:139 -msgid "_Modified" -msgstr "_Modificati" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Remoto" -#: ../meld/vcview.py:140 -msgid "_Normal" -msgstr "_Normale" +#: ../meld/vc/_vc.py:65 +msgid "Unversioned" +msgstr "Non monitorato" -#: ../meld/vcview.py:140 -msgid "Show normal" -msgstr "Mostra normale" +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Errore" -#: ../meld/vcview.py:141 -msgid "Non _VC" -msgstr "Non _VC" +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Aggiunto di recente" -#: ../meld/vcview.py:141 -msgid "Show unversioned files" -msgstr "Mostra file non versionati" +#: ../meld/vc/_vc.py:72 +msgid "Conflict" +msgstr "Conflitto" -#: ../meld/vcview.py:142 -msgid "Ignored" -msgstr "Ignorato" +#: ../meld/vc/_vc.py:73 +msgid "Removed" +msgstr "Rimosso" -#: ../meld/vcview.py:142 -msgid "Show ignored files" -msgstr "Mostra file ignorati" +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Mancante" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Non presente" -#: ../meld/vcview.py:180 +#: ../meld/vcview.py:215 ../meld/vcview.py:387 msgid "Location" msgstr "Posizione" -#: ../meld/vcview.py:181 +#: ../meld/vcview.py:216 msgid "Status" msgstr "Stato" -#: ../meld/vcview.py:182 -msgid "Rev" -msgstr "Rev" +#: ../meld/vcview.py:217 +msgid "Revision" +msgstr "Revisione" -#: ../meld/vcview.py:184 +#: ../meld/vcview.py:218 msgid "Options" msgstr "Opzioni" -#: ../meld/vcview.py:230 -msgid "Choose one Version Control" -msgstr "Scegliere un controllo di versione" - -#: ../meld/vcview.py:231 -msgid "Only one Version Control in this directory" -msgstr "Solo un controllo di versione in questa directory" +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:298 +#, python-format +msgid "%s not installed" +msgstr "%s non è installato" -#: ../meld/vcview.py:316 -msgid "(Empty)" -msgstr "(Vuoto)" +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:302 +msgid "Invalid repository" +msgstr "Repository non valido" -#: ../meld/vcview.py:349 +#: ../meld/vcview.py:311 #, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Recupero delle differenze" +msgid "%s (%s)" +msgstr "%s (%s)" -#: ../meld/vcview.py:356 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Applicazione della patch" +#: ../meld/vcview.py:313 ../meld/vcview.py:321 +msgid "None" +msgstr "Nessuno" -#: ../meld/vcview.py:360 -msgid "No differences found." -msgstr "Nessuna differenza trovata." +#: ../meld/vcview.py:332 +msgid "No valid version control system found in this folder" +msgstr "" +"Nessun sistema di controllo della versione valido trovato in questa cartella" + +#: ../meld/vcview.py:334 +msgid "Only one version control system found in this folder" +msgstr "Solo un sistema di controllo della versione trovato in questa cartella" -#: ../meld/vcview.py:434 -msgid "Select some files first." -msgstr "Selezionare prima alcuni file." +#: ../meld/vcview.py:336 +msgid "Choose which version control system to use" +msgstr "Scegliere il sistema di controllo della versione da usare" -#: ../meld/vcview.py:500 +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:387 #, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" Invocazione di «patch» fallita.\n" -" \n" -" Può essere che non si abbia «GNU patch» installato,\n" -" oppure si sta utilizzando una versione non testata di «%" -"s».\n" -" \n" -" Inviare una email con una notifica di errore a:\n" -" meld-list@gnome.org\n" -" \n" -" Contenente le seguenti informazioni:\n" -" \n" -" - la versione di meld: «%s»\n" -" - il tipo di software di controllo sorgenti: «%s»\n" -" - la versione del software di controllo sorgenti: «X.Y.Z»\n" -" - l'uscita di «%s qualchefile.txt»\n" -" - il comando path: «%s»\n" -" (non occorre eseguirlo, basta fornire la\n" -" riga di comando) \n" -" \n" -" Sostituire «X.Y.Z» con la versione corrente del\n" -" software di controllo sorgenti utilizzata.\n" -" " - -#: ../meld/ui/findbar.py:119 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Errore nell'espressione regolare\n" -"«%s»" - -#: ../meld/ui/historyentry.py:248 -msgid "_Browse..." -msgstr "_Sfoglia..." - -#: ../meld/ui/historyentry.py:256 -msgid "Path" -msgstr "Percorso" - -#: ../meld/ui/historyentry.py:257 -msgid "Path to file" -msgstr "Percorso al file" - -#: ../meld/ui/historyentry.py:258 -msgid "Pop up a file selector to choose a file" -msgstr "Fa comparire un selettore di file per scegliere un file" - -#: ../meld/ui/historyentry.py:379 -msgid "Select directory" -msgstr "Seleziona directory" - -#: ../meld/ui/historyentry.py:383 -msgid "Select file" -msgstr "Seleziona file" +msgid "%s: %s" +msgstr "%s: %s" -#: ../meld/ui/notebooklabel.py:61 -msgid "Close tab" -msgstr "Chiudi scheda" +#: ../meld/vcview.py:401 ../meld/vcview.py:409 +#, python-format +msgid "Scanning %s" +msgstr "Analisi di %s" + +#: ../meld/vcview.py:443 +msgid "(Empty)" +msgstr "(vuoto)" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 +#: ../meld/vcview.py:666 +msgid "Remove folder and all its files?" +msgstr "Rimuovere la cartella e tutti i suoi file?" + +#: ../meld/vcview.py:668 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" -"Missing" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"Ignorato:Non versionato:::Errore::Aggiunto recentemente:Modificato:" -"Conflitto:Rimosso:Mancante" +"Verranno rimossi dal controllo di versione tutti i file selezionati, le " +"cartelle selezionate e tutti i file al loro interno." -#: ../meld/vc/cvs.py:151 +#: ../meld/vcview.py:702 #, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Errore durante la conversione in un'espressione regolare\n" -"Il modello era «%s»\n" -"L'errore era «%s»" +msgid "Error removing %s" +msgstr "Errore nel rimuovere %s" diff -Nru meld-1.5.3/po/ja.po meld-3.11.0/po/ja.po --- meld-1.5.3/po/ja.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/ja.po 2014-02-08 21:03:00.000000000 +0000 @@ -1,15 +1,16 @@ # meld ja.po. -# Copyright (C) 2003-2011 Free Software Foundation, Inc. +# Copyright (C) 2003-2012 Free Software Foundation, Inc. # Takeshi AIHANA , 2003-2011. +# Toshiharu Kudoh , 2012. # msgid "" msgstr "" "Project-Id-Version: meld master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2012-01-10 20:26+0000\n" -"PO-Revision-Date: 2012-01-01 19:55+0900\n" -"Last-Translator: Jiro Matsuzawa \n" +"POT-Creation-Date: 2012-02-04 12:15+0000\n" +"PO-Revision-Date: 2012-02-05 00:23+0900\n" +"Last-Translator: Toshiharu Kudoh \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,11 +19,11 @@ "Generated-By: pygettext.py 1.5\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../bin/meld:96 +#: ../bin/meld:97 msgid "Cannot import: " msgstr "インポートできません:" -#: ../bin/meld:99 +#: ../bin/meld:100 #, c-format msgid "Meld requires %s or higher." msgstr "Meld には %s 以上が必要です。" @@ -152,16 +153,12 @@ msgstr "ファイルの選択" #: ../data/ui/meldapp.ui.h:2 -#, fuzzy -#| msgid "" -#| "Copyright © 2002-2009 Stephen Kennedy\n" -#| "Copyright © 2009-2010 Kai Willadsen" msgid "" "Copyright © 2002-2009 Stephen Kennedy\n" "Copyright © 2009-2011 Kai Willadsen" msgstr "" "Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" +"Copyright © 2009-2011 Kai Willadsen" #: ../data/ui/meldapp.ui.h:4 msgid "Directory" @@ -196,7 +193,7 @@ #: ../data/ui/meldapp.ui.h:15 msgid "_Three Way Compare" -msgstr "3つの間で比較する(_T)" +msgstr "3つの間で比較する(_T)" #: ../data/ui/meldapp.ui.h:16 msgid "_Version Control Browser" @@ -240,11 +237,11 @@ #: ../data/ui/preferences.ui.h:2 msgid "Do not _split words over two lines" -msgstr "単語が二行にまたがないようにする(_S)" +msgstr "単語が二行にまたがらないようにする(_S)" #: ../data/ui/preferences.ui.h:3 msgid "Edito_r command:" -msgstr "その他のエディター(_R)" +msgstr "エディターをコマンドで指定する(_R):" #: ../data/ui/preferences.ui.h:4 msgid "Editor" @@ -304,12 +301,12 @@ #: ../data/ui/preferences.ui.h:18 msgid "Use s_yntax highlighting" -msgstr "文法を強調表示する(_Y)" +msgstr "シンタックスハイライトを有効にする(_Y)" #: ../data/ui/preferences.ui.h:19 msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" msgstr "" -"ファイルを読む込む際に、次の順番でエンコーディングを試行します (例: utf8 " +"ファイルを読み込む際に、次の順番でエンコーディングを試行します (例: utf8, " "iso8859)" #: ../data/ui/preferences.ui.h:20 @@ -447,7 +444,7 @@ #: ../meld/dirdiff.py:362 #, python-format msgid "Hide %s" -msgstr "%sの表示を切り替えます" +msgstr "%s の表示を切り替えます" #: ../meld/dirdiff.py:465 ../meld/dirdiff.py:478 ../meld/vcview.py:322 #: ../meld/vcview.py:346 @@ -486,8 +483,7 @@ "filesystem. The following files in this folder are hidden:" msgstr "" "大/小文字を区別するファイルシステム上で大/小文字を無視した比較を行っていま" -"す。このフォルダーでは次のファイルは表示されません:\n" -"%s" +"す。このフォルダーでは次のファイルは表示されません:" #: ../meld/dirdiff.py:599 #, python-format @@ -889,11 +885,11 @@ #: ../meld/meldapp.py:158 msgid "Start a 2- or 3-way file comparison" -msgstr "2ないし3個のファイルを比較するモードで起動する" +msgstr "2ないし3個のファイルを比較するモードで起動する" #: ../meld/meldapp.py:159 msgid "Start a 2- or 3-way directory comparison" -msgstr "2ないし3個のフォルダーを比較するモードで起動する" +msgstr "2ないし3個のフォルダーを比較するモードで起動する" #: ../meld/meldapp.py:160 msgid "Start a comparison between file and dir/file" @@ -921,7 +917,7 @@ #: ../meld/meldapp.py:179 msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "指定した最大3つのファイルまたはフォルダーに対する差分をタブで表示する" +msgstr "指定した最大3つのファイルまたはフォルダーに対する差分をタブで表示する" #: ../meld/meldapp.py:182 #, python-format @@ -930,7 +926,7 @@ #: ../meld/meldapp.py:184 ../meld/meldapp.py:188 msgid "can't compare more than three directories" -msgstr "3つ以上のフォルダーの間での比較はできません" +msgstr "3つ以上のフォルダーの間での比較はできません" #: ../meld/melddoc.py:56 ../meld/melddoc.py:57 msgid "untitled" @@ -1122,7 +1118,7 @@ #: ../meld/meldwindow.py:164 msgid "Open the Meld manual" -msgstr "Meld マニュアル開きます" +msgstr "Meld のマニュアルを開きます" #: ../meld/meldwindow.py:165 msgid "Report _Bug" @@ -1176,7 +1172,7 @@ #: ../meld/patchdialog.py:122 msgid "Save Patch As..." -msgstr "別名でパッチの保存..." +msgstr "名前を付けてパッチを保存..." #: ../meld/preferences.py:37 msgid "label" @@ -1203,6 +1199,8 @@ "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " "Desktop.ini\n" msgstr "" +"OS 特有のメタデータ\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact #: ../meld/preferences.py:238 @@ -1356,11 +1354,11 @@ #: ../meld/vcview.py:249 msgid "Choose one Version Control" -msgstr "1バージョン・コントロールの選択" +msgstr "1バージョン・コントロールの選択" #: ../meld/vcview.py:250 msgid "Only one Version Control in this directory" -msgstr "このフォルダーの1バージョン・コントロールだけ" +msgstr "このフォルダーの1バージョン・コントロールだけ" #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found diff -Nru meld-1.5.3/po/LINGUAS meld-3.11.0/po/LINGUAS --- meld-1.5.3/po/LINGUAS 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/LINGUAS 2014-02-16 20:23:22.000000000 +0000 @@ -9,11 +9,14 @@ el en_CA en_GB +eo es +eu fi fr gl hu +id it ja ko @@ -25,6 +28,7 @@ pl pt pt_BR +ro ru rw sl @@ -32,6 +36,7 @@ sr sr@latin sv +tr vi zh_CN zh_TW diff -Nru meld-1.5.3/po/Makefile meld-3.11.0/po/Makefile --- meld-1.5.3/po/Makefile 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ - -.SUFFIXES: - -include ../INSTALL - -PO:=$(wildcard *.po) -MO:=$(PO:.po=/LC_MESSAGES/meld.mo) -INST_MO:=$(addprefix $(DESTDIR)$(localedir)/,$(MO)) - -.PHONY : all -all : $(MO) - -.PHONY : install -install : $(INST_MO) - -.PHONY : uninstall -uninstall : - rm -rf $(INST_MO) - -.PHONY : clean -clean : - rm -rf $(PO:.po=) - -.PHONY : meld.pot -meld.pot: - intltool-update --pot - -## Update .po files -#%.po: meld.pot -# intltool-update $* - -$(DESTDIR)$(localedir)/%/LC_MESSAGES/meld.mo : %/LC_MESSAGES/meld.mo - mkdir -m 755 -p $(dir $@) && install -m 644 $< $@ - -%/LC_MESSAGES/meld.mo : %.po - mkdir -m 755 -p $(dir $@) && msgfmt -c -o $@ $< - diff -Nru meld-1.5.3/po/Makevars meld-3.11.0/po/Makevars --- meld-1.5.3/po/Makevars 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/Makevars 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -# Usually the message domain is the same as the package name. -DOMAIN = meld - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -# These options get passed to xgettext. -XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --keyword=N_ngettext:1,2 - -# This is the copyright holder that gets inserted into the header of the -# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -# package. (Note that the msgstr strings, extracted from the package's -# sources, belong to the copyright holder of the package.) Translators are -# expected to transfer the copyright for their translations to this person -# or entity, or to disclaim their copyright. The empty string stands for -# the public domain; in this case the translators are expected to disclaim -# their copyright. -COPYRIGHT_HOLDER = Stephen Kennedy - -# This is the email address or URL to which the translators shall report -# bugs in the untranslated strings: -# - Strings which are not entire sentences, see the maintainer guidelines -# in the GNU gettext documentation, section 'Preparing Strings'. -# - Strings which use unclear terms or require additional context to be -# understood. -# - Strings which make invalid assumptions about notation of date, time or -# money. -# - Pluralisation problems. -# - Incorrect English spelling. -# - Incorrect formatting. -# It can be your email address, or a mailing list address where translators -# can write to without being subscribed, or the URL of a web page through -# which the translators can contact you. -MSGID_BUGS_ADDRESS = Stephen Kennedy - -# This is the list of locale categories, beyond LC_MESSAGES, for which the -# message catalogs shall be used. It is usually empty. -EXTRA_LOCALE_CATEGORIES = diff -Nru meld-1.5.3/po/nb.po meld-3.11.0/po/nb.po --- meld-1.5.3/po/nb.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/nb.po 2013-12-07 19:30:09.000000000 +0000 @@ -1,1217 +1,1471 @@ -# Norwegian Bokmål translation of meld. +# Norwegian bokmål translation of meld. # Copyright (C) 2001 Free Software Foundation, Inc. -# Kjartan Maraas , 2001-2008. +# Kjartan Maraas , 2001-2012. # msgid "" msgstr "" "Project-Id-Version: meld\n" "Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2008-10-08 20:06+0200\n" -"PO-Revision-Date: 2008-10-08 20:10+0200\n" +"POT-Creation-Date: 2012-02-04 13:06+0100\n" +"PO-Revision-Date: 2012-02-04 13:15+0100\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian/Bokmaal \n" +"Language: \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" -#: ../dirdiff.py:252 ../dirdiff.py:267 -#, python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "" +#: ../bin/meld:97 +msgid "Cannot import: " +msgstr "Kan ikke importere: " -#: ../dirdiff.py:283 -#, python-format -msgid "Hide %s" -msgstr "Skjul %s" +#: ../bin/meld:100 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld krever %s eller høyere." -#: ../dirdiff.py:364 ../dirdiff.py:374 ../vcview.py:213 ../vcview.py:241 -#, python-format -msgid "[%s] Scanning %s" -msgstr "" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" -#: ../dirdiff.py:407 -#, python-format -msgid "'%s' hidden by '%s'" -msgstr "" +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Vis forskjeller" -#: ../dirdiff.py:413 -#, python-format +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Meld visning av forskjeller" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Sammenligne og flett sammen dine filer" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "Redigerbar liste" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Aktiv" + +#: ../data/ui/EditableList.ui.h:3 ../meld/vcview.py:166 +msgid "Name" +msgstr "Navn" + +#: ../data/ui/EditableList.ui.h:4 +msgid "Pattern" +msgstr "Mønster" + +#: ../data/ui/EditableList.ui.h:5 +msgid "Add new filter" +msgstr "Legg til nytt filter" + +#: ../data/ui/EditableList.ui.h:6 ../meld/vcview.py:130 +msgid "_Add" +msgstr "_Legg til" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Remove selected filter" +msgstr "Fjern valgt filter" + +#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:132 +msgid "_Remove" +msgstr "Fje_rn" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move item up" +msgstr "Flytt oppføring opp" + +#: ../data/ui/EditableList.ui.h:10 +msgid "Move _Up" +msgstr "Flytt _opp" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Move item down" +msgstr "Flytt oppføring ned" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Move _Down" +msgstr "Flytt ne_d" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save modified files?" +msgstr "Lagre endrede filer?" + +#: ../data/ui/filediff.ui.h:2 msgid "" -"You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" +"Some files have been modified.\n" +"Which ones would you like to save?" msgstr "" -#: ../dirdiff.py:487 -#, python-format -msgid "[%s] Done" +#: ../data/ui/filediff.ui.h:4 +msgid "_Discard Changes" msgstr "" -#: ../dirdiff.py:533 -#, python-format -msgid "" -"'%s' exists.\n" -"Overwrite?" -msgstr "" +#: ../data/ui/filediff.ui.h:5 +msgid "_Save Selected" +msgstr "_Lagre valgt" -#: ../dirdiff.py:540 -#, python-format -msgid "" -"Error copying '%s' to '%s'\n" -"\n" -"%s." +#: ../data/ui/findbar.ui.h:1 ../meld/meldwindow.py:141 +msgid "_Replace" +msgstr "E_rstatt" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Erstatt _alle" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Forrige" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Neste" + +#: ../data/ui/findbar.ui.h:5 +msgid "_Search for" +msgstr "_Søk etter" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _With" +msgstr "Erstatt _med" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match Case" msgstr "" -#: ../dirdiff.py:558 ../vcview.py:405 -#, python-format +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "He_le ord" + +#: ../data/ui/findbar.ui.h:9 +#, fuzzy +msgid "Regular E_xpression" +msgstr "Vanlig uttrykk" + +#: ../data/ui/meldapp.ui.h:2 msgid "" -"'%s' is a directory.\n" -"Remove recusively?" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2011 Kai Willadsen" msgstr "" -#: ../dirdiff.py:565 ../vcview.py:410 -#, fuzzy, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "Feil under skriving til: %s." +#: ../data/ui/meldapp.ui.h:4 +msgid "translator-credits" +msgstr "Kjartan Maraas " -#: ../dirdiff.py:576 -#, python-format -msgid "%i second" -msgid_plural "%i seconds" -msgstr[0] "" -msgstr[1] "" +#: ../data/ui/meldapp.ui.h:5 +msgid "Choose Files" +msgstr "Velg filer" -#: ../dirdiff.py:577 -#, python-format -msgid "%i minute" -msgid_plural "%i minutes" -msgstr[0] "" -msgstr[1] "" +#: ../data/ui/meldapp.ui.h:6 +msgid "_Three Way Compare" +msgstr "_Treveis sammenligning" -#: ../dirdiff.py:578 -#, python-format -msgid "%i hour" -msgid_plural "%i hours" -msgstr[0] "" -msgstr[1] "" +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:8 +msgid "Mine" +msgstr "Min" -#: ../dirdiff.py:579 -#, python-format -msgid "%i day" -msgid_plural "%i days" -msgstr[0] "" -msgstr[1] "" +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:10 +msgid "Original" +msgstr "Opprinnelig" -#: ../dirdiff.py:580 -#, python-format -msgid "%i week" -msgid_plural "%i weeks" -msgstr[0] "" -msgstr[1] "" +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:12 +msgid "Other" +msgstr "Andre" -#: ../dirdiff.py:581 -#, python-format -msgid "%i month" -msgid_plural "%i months" -msgstr[0] "" -msgstr[1] "" +#: ../data/ui/meldapp.ui.h:13 +msgid "_File Comparison" +msgstr "_Filsammenligning" -#: ../dirdiff.py:582 -#, python-format -msgid "%i year" -msgid_plural "%i years" -msgstr[0] "" -msgstr[1] "" +#: ../data/ui/meldapp.ui.h:14 +msgid "_Directory Comparison" +msgstr "_Katalogsammenligning" + +#: ../data/ui/meldapp.ui.h:15 +msgid "Select VC Directory" +msgstr "Velg katalog under versjonskontroll" + +#: ../data/ui/meldapp.ui.h:16 +msgid "Directory" +msgstr "Katalog" -#. Abbreviation for insert,overwrite so that it will fit in the status bar -#: ../filediff.py:201 +#: ../data/ui/meldapp.ui.h:17 #, fuzzy -msgid "INS,OVR" -msgstr "OVER" +msgid "_Version Control Browser" +msgstr "Git versjonskontroll" -#. Abbreviation for line, column so that it will fit in the status bar -#: ../filediff.py:203 -#, python-format -msgid "Ln %i, Col %i" -msgstr "" +#: ../data/ui/patch-dialog.ui.h:1 +#, fuzzy +msgid "Create Patch" +msgstr "Opprett" -#: ../filediff.py:261 -#, python-format -msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." -msgstr "" +#: ../data/ui/patch-dialog.ui.h:2 +#, fuzzy +msgid "Create a patch" +msgstr "Opprett" -#: ../filediff.py:504 -#, fuzzy, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "Vanlig uttrykk" +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Use differences between:" +msgstr "" -#: ../filediff.py:516 -#, python-format -msgid "The regular expression '%s' was not found." +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Left and middle panes" msgstr "" -#: ../filediff.py:518 -#, python-format -msgid "The text '%s' was not found." +#: ../data/ui/patch-dialog.ui.h:5 +msgid "Middle and right panes" msgstr "" -#: ../filediff.py:571 -#, python-format -msgid "[%s] Set num panes" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "_Reverse patch direction" msgstr "" -#: ../filediff.py:578 -#, fuzzy, python-format -msgid "[%s] Opening files" -msgstr "Åpne fil" +#: ../data/ui/patch-dialog.ui.h:7 +msgid "Copy to Clipboard" +msgstr "Kopier til utklippstavlen" -#: ../filediff.py:595 ../filediff.py:609 ../filediff.py:625 ../filediff.py:632 -#, fuzzy, python-format -msgid "Could not read from '%s'" -msgstr "Kunne ikke åpne %s" +#: ../data/ui/preferences.ui.h:1 +msgid "Meld Preferences" +msgstr "Brukervalg for Meld" -#: ../filediff.py:596 ../filediff.py:633 -#, fuzzy -msgid "The error was:" -msgstr "feil: " +#: ../data/ui/preferences.ui.h:2 +msgid "Font" +msgstr "Skrift" -#: ../filediff.py:601 -#, fuzzy, python-format -msgid "[%s] Reading files" -msgstr "Mangler filen %s" +#: ../data/ui/preferences.ui.h:3 +msgid "_Use the system fixed width font" +msgstr "Br_uk systemets skrift med fast bredde" -#: ../filediff.py:610 -msgid "" -"It contains ascii nulls.\n" -"Perhaps it is a binary file." -msgstr "" +#: ../data/ui/preferences.ui.h:4 +msgid "_Editor font:" +msgstr "Skrift for r_edigering:" -#: ../filediff.py:626 -#, python-format -msgid "I tried encodings %s." -msgstr "" +#: ../data/ui/preferences.ui.h:5 +msgid "Display" +msgstr "Visning" -#: ../filediff.py:655 -#, python-format -msgid "[%s] Computing differences" -msgstr "" +#: ../data/ui/preferences.ui.h:6 +msgid "_Tab width:" +msgstr "_Tabulatorbredde:" -#: ../filediff.py:760 -#, python-format +#: ../data/ui/preferences.ui.h:7 +msgid "_Insert spaces instead of tabs" +msgstr "Sett _inn mellomrom i stedet for tabulator" + +#: ../data/ui/preferences.ui.h:8 +msgid "Enable text _wrapping" +msgstr "Slå på tekst_bryting" + +#: ../data/ui/preferences.ui.h:9 +msgid "Do not _split words over two lines" +msgstr "Ikke _del ord over to linjer" + +#: ../data/ui/preferences.ui.h:10 +msgid "Show _line numbers" +msgstr "Vis _linjenummer" + +#: ../data/ui/preferences.ui.h:11 +msgid "Show w_hitespace" +msgstr "Vis _tomrom" + +#: ../data/ui/preferences.ui.h:12 +msgid "Use s_yntax highlighting" +msgstr "Slå på utheving av s_yntaks" + +#: ../data/ui/preferences.ui.h:13 +msgid "External editor" +msgstr "Eksternt redigeringsprogram" + +#: ../data/ui/preferences.ui.h:14 +msgid "Use _default system editor" +msgstr "Bruk systemets _forvalgte redigeringsprogram" + +#: ../data/ui/preferences.ui.h:15 +msgid "Edito_r command:" +msgstr "_Redigeringskommando:" + +#: ../data/ui/preferences.ui.h:16 +msgid "Editor" +msgstr "Editor" + +#: ../data/ui/preferences.ui.h:17 msgid "" -"\"%s\" exists!\n" -"Overwrite?" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." msgstr "" -#: ../filediff.py:773 -#, fuzzy, python-format -msgid "" -"Error writing to %s\n" -"\n" -"%s." -msgstr "Feil under skriving til: %s." +#: ../data/ui/preferences.ui.h:18 +msgid "Ignore symbolic links" +msgstr "Ignorer symbolske lenker" -#: ../filediff.py:782 -#, python-format -msgid "Choose a name for buffer %i." -msgstr "" +#: ../data/ui/preferences.ui.h:19 +msgid "File Filters" +msgstr "Filfilter" -#: ../filediff.py:795 -#, python-format +#: ../data/ui/preferences.ui.h:20 msgid "" -"This file '%s' contains a mixture of line endings.\n" -"\n" -"Which format would you like to use?" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." msgstr "" -#: ../filediff.py:811 -#, python-format -msgid "" -"'%s' contains characters not encodable with '%s'\n" -"Would you like to save as UTF-8?" +#: ../data/ui/preferences.ui.h:21 +msgid "Ignore changes which insert or delete blank lines" msgstr "" -#. save as -#: ../filediff.py:862 -#, fuzzy -msgid "Save patch as..." -msgstr "Lagrer prosjekt...\n" +#: ../data/ui/preferences.ui.h:22 +msgid "Text Filters" +msgstr "Tekstfiltre" -#: ../filediff.py:916 -#, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +#: ../data/ui/preferences.ui.h:23 +msgid "Loading" +msgstr "Laster" + +#: ../data/ui/preferences.ui.h:24 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" msgstr "" -#: ../glade2/dirdiff.glade.h:1 +#: ../data/ui/preferences.ui.h:25 +msgid "Encoding" +msgstr "Koder" + +#: ../data/ui/vcview.ui.h:1 #, fuzzy -msgid "Case" -msgstr "Lukk" +msgid "VC Log" +msgstr "Vis logg" -#: ../glade2/dirdiff.glade.h:2 -msgid "Compare" -msgstr "Sammenligne" +#: ../data/ui/vcview.ui.h:2 +#, fuzzy +msgid "Commit Files" +msgstr "Ko_mpiler fil" -#: ../glade2/dirdiff.glade.h:3 ../glade2/vcview.glade.h:6 +#: ../data/ui/vcview.ui.h:3 +#, fuzzy +msgid "Previous Logs" +msgstr "Forrige hjelp" + +#: ../data/ui/vcview.ui.h:4 +msgid "Log Message" +msgstr "Loggmelding" + +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 +msgid "_Compare" +msgstr "_Sammenligne" + +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 #, fuzzy msgid "Compare selected" msgstr "Fullført" -#: ../glade2/dirdiff.glade.h:4 -msgid "Copy To Left" +#: ../meld/dirdiff.py:233 +msgid "Copy _Left" msgstr "" -#: ../glade2/dirdiff.glade.h:5 -msgid "Copy To Right" +#: ../meld/dirdiff.py:233 +msgid "Copy to left" msgstr "" -#: ../glade2/dirdiff.glade.h:6 +#: ../meld/dirdiff.py:234 #, fuzzy +msgid "Copy _Right" +msgstr "Høyre" + +#: ../meld/dirdiff.py:234 +msgid "Copy to right" +msgstr "" + +#: ../meld/dirdiff.py:235 msgid "Delete selected" -msgstr "Slettet" +msgstr "Slett valgte" -#: ../glade2/dirdiff.glade.h:7 ../glade2/filediff.glade.h:7 -msgid "Edit" -msgstr "Rediger" +#: ../meld/dirdiff.py:236 ../meld/filediff.py:1157 +msgid "Hide" +msgstr "Skjul" -#: ../glade2/dirdiff.glade.h:8 -#, fuzzy +#: ../meld/dirdiff.py:236 msgid "Hide selected" -msgstr "Vennligst oppgi et filnavn!" +msgstr "Skjul valgte" -#: ../glade2/dirdiff.glade.h:9 -msgid "Hide..." -msgstr "Skjul ..." +#: ../meld/dirdiff.py:240 +#, fuzzy +msgid "Case" +msgstr "Lukk" -#: ../glade2/dirdiff.glade.h:10 +#: ../meld/dirdiff.py:240 #, fuzzy msgid "Ignore case of entries" msgstr "Ignorer kataloger:" -#: ../glade2/dirdiff.glade.h:11 -msgid "Left" -msgstr "Venstre" +#: ../meld/dirdiff.py:241 +msgid "Same" +msgstr "Samme" -#: ../glade2/dirdiff.glade.h:12 -msgid "Modified" -msgstr "Endret" +#: ../meld/dirdiff.py:241 +#, fuzzy +msgid "Show identical" +msgstr "Vis signaler fra kjernen" -#: ../glade2/dirdiff.glade.h:13 ../glade2/meldapp.glade.h:50 +#: ../meld/dirdiff.py:242 msgid "New" msgstr "Ny" -#: ../glade2/dirdiff.glade.h:14 -msgid "Right" -msgstr "Høyre" +#: ../meld/dirdiff.py:242 +#, fuzzy +msgid "Show new" +msgstr "Vis" + +#: ../meld/dirdiff.py:243 +msgid "Modified" +msgstr "Endret" + +#: ../meld/dirdiff.py:243 ../meld/vcview.py:140 +msgid "Show modified" +msgstr "Vis endret" + +#: ../meld/dirdiff.py:245 +msgid "Filters" +msgstr "Filtre" + +#: ../meld/dirdiff.py:245 +msgid "Set active filters" +msgstr "Sett aktive filtre" + +#: ../meld/dirdiff.py:362 +#, python-format +msgid "Hide %s" +msgstr "Skjul %s" + +#: ../meld/dirdiff.py:465 ../meld/dirdiff.py:478 ../meld/vcview.py:322 +#: ../meld/vcview.py:346 +#, python-format +msgid "[%s] Scanning %s" +msgstr "" + +#: ../meld/dirdiff.py:577 +#, python-format +msgid "[%s] Done" +msgstr "" + +#: ../meld/dirdiff.py:581 +msgid "Multiple errors occurred while scanning this folder" +msgstr "" + +#: ../meld/dirdiff.py:582 +msgid "Files with invalid encodings found" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:584 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" + +#: ../meld/dirdiff.py:586 +msgid "Files hidden by case insensitive comparison" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:588 +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" +msgstr "" + +#: ../meld/dirdiff.py:599 +#, python-format +msgid "'%s' hidden by '%s'" +msgstr "" + +#: ../meld/dirdiff.py:624 ../meld/filediff.py:1008 ../meld/filediff.py:1161 +msgid "Hi_de" +msgstr "" + +#: ../meld/dirdiff.py:674 +#, python-format +msgid "" +"'%s' exists.\n" +"Overwrite?" +msgstr "" + +#: ../meld/dirdiff.py:681 +#, python-format +msgid "" +"Error copying '%s' to '%s'\n" +"\n" +"%s." +msgstr "" + +#: ../meld/dirdiff.py:699 ../meld/vcview.py:526 +#, python-format +msgid "" +"'%s' is a directory.\n" +"Remove recursively?" +msgstr "" + +#: ../meld/dirdiff.py:706 ../meld/vcview.py:531 +#, fuzzy, python-format +msgid "" +"Error removing %s\n" +"\n" +"%s." +msgstr "Feil under skriving til: %s." + +#: ../meld/dirdiff.py:731 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "" +msgstr[1] "" -#: ../glade2/dirdiff.glade.h:15 -msgid "Same" -msgstr "Samme" +#: ../meld/dirdiff.py:732 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "" +msgstr[1] "" -#: ../glade2/dirdiff.glade.h:16 -#, fuzzy -msgid "Show identical" -msgstr "Vis signaler fra kjernen" +#: ../meld/dirdiff.py:733 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "" +msgstr[1] "" -#: ../glade2/dirdiff.glade.h:17 ../glade2/vcview.glade.h:20 -#, fuzzy -msgid "Show modified" -msgstr "Endret" +#: ../meld/dirdiff.py:734 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "" +msgstr[1] "" -#: ../glade2/dirdiff.glade.h:18 -#, fuzzy -msgid "Show new" -msgstr "Vis" +#: ../meld/dirdiff.py:735 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "" +msgstr[1] "" -#: ../glade2/dirdiff.glade.h:19 ../glade2/meldapp.glade.h:89 -#: ../glade2/vcview.glade.h:28 -#, fuzzy -msgid "_Compare" -msgstr "_Kompiler" +#: ../meld/dirdiff.py:736 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "" +msgstr[1] "" -#: ../glade2/dirdiff.glade.h:20 -#, fuzzy -msgid "_Delete Selected" -msgstr "Slettet" +#: ../meld/dirdiff.py:737 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "" +msgstr[1] "" -#: ../glade2/filediff.glade.h:1 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" +#: ../meld/filediff.py:294 +msgid "Format as patch..." msgstr "" -#: ../glade2/filediff.glade.h:3 -msgid "Copy All To _Left" +#: ../meld/filediff.py:294 +msgid "Create a patch using differences between files" msgstr "" -#: ../glade2/filediff.glade.h:4 -msgid "Copy All To _Right" +#: ../meld/filediff.py:295 +msgid "Previous conflict" +msgstr "Forrige konflikt" + +#: ../meld/filediff.py:295 +msgid "Go to the previous conflict" msgstr "" -#: ../glade2/filediff.glade.h:5 -msgid "Copy to Clipboard" +#: ../meld/filediff.py:296 +msgid "Next conflict" +msgstr "Neste konflikt" + +#: ../meld/filediff.py:296 +msgid "Go to the next conflict" msgstr "" -#: ../glade2/filediff.glade.h:6 -#, fuzzy -msgid "Create Patch" -msgstr "Opprett" +#: ../meld/filediff.py:297 +msgid "Push to left" +msgstr "" -#: ../glade2/filediff.glade.h:8 -msgid "Find" -msgstr "Finn" +#: ../meld/filediff.py:297 +msgid "Push current change to the left" +msgstr "" -#: ../glade2/filediff.glade.h:9 -msgid "Match _entire word only" +#: ../meld/filediff.py:298 +msgid "Push to right" msgstr "" -#: ../glade2/filediff.glade.h:10 -#, fuzzy -msgid "Regular e_xpression" -msgstr "Vanlig uttrykk" +#: ../meld/filediff.py:298 +msgid "Push current change to the right" +msgstr "" -#: ../glade2/filediff.glade.h:11 -#, fuzzy -msgid "Save modified files?" -msgstr "Lagre alle filer" +#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse +#: ../meld/filediff.py:300 +msgid "Pull from left" +msgstr "" -#: ../glade2/filediff.glade.h:12 -#, fuzzy -msgid "Search for:" -msgstr "Søk i:" +#: ../meld/filediff.py:300 +msgid "Pull change from the left" +msgstr "" -#: ../glade2/filediff.glade.h:13 -msgid "_Match case" +#: ../meld/filediff.py:301 +msgid "Pull from right" msgstr "" -#: ../glade2/filediff.glade.h:14 -msgid "_Wrap around" +#: ../meld/filediff.py:301 +msgid "Pull change from the right" msgstr "" -#: ../glade2/meldapp.glade.h:1 -msgid "(gnome-default-editor)" +#: ../meld/filediff.py:302 +msgid "Copy above left" msgstr "" -#: ../glade2/meldapp.glade.h:2 -#, fuzzy -msgid "Drawing Style" -msgstr "Alternativer for utskrift" +#: ../meld/filediff.py:302 +msgid "Copy change above the left chunk" +msgstr "" -#: ../glade2/meldapp.glade.h:3 -#, fuzzy -msgid "Edit Menu" -msgstr "Faner for redigering" +#: ../meld/filediff.py:303 +msgid "Copy below left" +msgstr "" -#: ../glade2/meldapp.glade.h:4 -#, fuzzy -msgid "Font" -msgstr "Skrift:" +#: ../meld/filediff.py:303 +msgid "Copy change below the left chunk" +msgstr "" -#: ../glade2/meldapp.glade.h:5 -#, fuzzy -msgid "Global options" -msgstr "Alternativer for terminal" +#: ../meld/filediff.py:304 +msgid "Copy above right" +msgstr "" -#: ../glade2/meldapp.glade.h:6 -#, fuzzy -msgid "Loading" -msgstr "Kodebretting" +#: ../meld/filediff.py:304 +msgid "Copy change above the right chunk" +msgstr "" -#: ../glade2/meldapp.glade.h:7 -#, fuzzy -msgid "Misc" -msgstr "Forskjellige alternativer" +#: ../meld/filediff.py:305 +msgid "Copy below right" +msgstr "" -#: ../glade2/meldapp.glade.h:8 -#, fuzzy -msgid "Saving" -msgstr "Sesjon" +#: ../meld/filediff.py:305 +msgid "Copy change below the right chunk" +msgstr "" -#: ../glade2/meldapp.glade.h:9 -#, fuzzy -msgid "Toolbar Appearance" -msgstr "Utseende" +#: ../meld/filediff.py:306 +msgid "Delete" +msgstr "Slett" -#: ../glade2/meldapp.glade.h:10 -#, fuzzy -msgid "Update Options" -msgstr "Alternativer" +#: ../meld/filediff.py:306 +msgid "Delete change" +msgstr "Slett endring" -#: ../glade2/meldapp.glade.h:11 -#, fuzzy -msgid "Whitespace" -msgstr "Filter" +#: ../meld/filediff.py:307 +msgid "Merge all changes from left" +msgstr "" -#: ../glade2/meldapp.glade.h:12 -msgid "CVS" +#: ../meld/filediff.py:307 +msgid "Merge all non-conflicting changes from the left" msgstr "" -#: ../glade2/meldapp.glade.h:13 -msgid "Compare" +#: ../meld/filediff.py:308 +msgid "Merge all changes from right" msgstr "" -#: ../glade2/meldapp.glade.h:14 -msgid "Display" +#: ../meld/filediff.py:308 +msgid "Merge all non-conflicting changes from the right" msgstr "" -#: ../glade2/meldapp.glade.h:15 -msgid "Editor" +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting" msgstr "" -#: ../glade2/meldapp.glade.h:16 -msgid "Encoding" +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting changes from left and right panes" msgstr "" -#: ../glade2/meldapp.glade.h:17 -msgid "File Filters" +#: ../meld/filediff.py:310 +msgid "Cycle through documents" msgstr "" -#: ../glade2/meldapp.glade.h:18 -msgid "Text Filters" +#: ../meld/filediff.py:310 +msgid "Move keyboard focus to the next document in this comparison" msgstr "" -#: ../glade2/meldapp.glade.h:19 -msgid "Automatically supply missing newline at end of file" +#: ../meld/filediff.py:314 +msgid "Lock scrolling" msgstr "" -#: ../glade2/meldapp.glade.h:20 -msgid "CVS" -msgstr "CVS" +#: ../meld/filediff.py:315 +msgid "Lock scrolling of all panes" +msgstr "" -#: ../glade2/meldapp.glade.h:21 -#, fuzzy -msgid "CVS binary" -msgstr "Tillegg for CVS" +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:396 +msgid "INS" +msgstr "INS" -#: ../glade2/meldapp.glade.h:22 -#, fuzzy -msgid "Choose Files" -msgstr "Velg filer:" +#: ../meld/filediff.py:396 +msgid "OVR" +msgstr "OVR" -#: ../glade2/meldapp.glade.h:23 -msgid "" -"Choose how the central bar of the diff viewer is drawn. You may wish to " -"choose a simpler mode if you find scrolling is slow." +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:398 +#, python-format +msgid "Ln %i, Col %i" msgstr "" -#: ../glade2/meldapp.glade.h:24 -msgid "Copyright (C) 2002-2006 Stephen Kennedy" +#: ../meld/filediff.py:722 +#, python-format +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." msgstr "" -#: ../glade2/meldapp.glade.h:25 -#, fuzzy -msgid "Create missing directories (-d)" -msgstr "Opprett nye kataloger" +#. TRANSLATORS: this is the name of a new file which has not yet been saved +#: ../meld/filediff.py:809 +msgid "" +msgstr "" -#: ../glade2/meldapp.glade.h:26 -msgid "Curved: Filled Curves" +#: ../meld/filediff.py:996 +#, python-format +msgid "[%s] Set num panes" msgstr "" -#: ../glade2/meldapp.glade.h:27 -#, fuzzy -msgid "Custom command" -msgstr "Kommando" +#: ../meld/filediff.py:1002 +#, python-format +msgid "[%s] Opening files" +msgstr "[%s] Åpner filer" -#: ../glade2/meldapp.glade.h:28 -msgid "Directory" -msgstr "Katalog" +#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 +#: ../meld/filediff.py:1053 +msgid "Could not read file" +msgstr "Kunne ikke lese fil" -#: ../glade2/meldapp.glade.h:29 -#, fuzzy -msgid "Display" -msgstr "Hjelpvisning" +#: ../meld/filediff.py:1027 +#, python-format +msgid "[%s] Reading files" +msgstr "[%s] Leser filer" -#: ../glade2/meldapp.glade.h:30 -msgid "Down" +#: ../meld/filediff.py:1036 +#, python-format +msgid "%s appears to be a binary file." msgstr "" -#: ../glade2/meldapp.glade.h:31 -#, fuzzy -msgid "Edit files with:" -msgstr "Rediger regler" - -#: ../glade2/meldapp.glade.h:32 -msgid "Editor" -msgstr "Editor" +#: ../meld/filediff.py:1048 +#, python-format +msgid "%s is not in encodings: %s" +msgstr "" -#: ../glade2/meldapp.glade.h:33 -msgid "Encoding" +#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#, python-format +msgid "[%s] Computing differences" msgstr "" -#: ../glade2/meldapp.glade.h:34 -#, fuzzy -msgid "File Filters" -msgstr "Filfilter" +#: ../meld/filediff.py:1148 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" -#: ../glade2/meldapp.glade.h:35 -#, fuzzy -msgid "Find Ne_xt" -msgstr "Finn _neste" +#: ../meld/filediff.py:1154 +msgid "Files are identical" +msgstr "Filene er identiske" -#: ../glade2/meldapp.glade.h:36 -#, fuzzy -msgid "Gnome Default" -msgstr "Forvalgt" +#: ../meld/filediff.py:1164 +msgid "Show without filters" +msgstr "Vis uten filtre" -#: ../glade2/meldapp.glade.h:37 -msgid "Gnome default editor" +#: ../meld/filediff.py:1354 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" msgstr "" +"«%s» eksisterer!\n" +"Overskriv?" -#: ../glade2/meldapp.glade.h:38 -#, fuzzy -msgid "Icons Only" -msgstr "Ikonfil:" - -#: ../glade2/meldapp.glade.h:39 -#, fuzzy -msgid "Ignore .cvsrc (-f)" -msgstr "Overse .cvsrc-filen (anbefalt)" +#: ../meld/filediff.py:1367 +#, fuzzy, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "Feil under skriving til: %s." -#: ../glade2/meldapp.glade.h:40 -msgid "Ignore changes in amount of white space" +#: ../meld/filediff.py:1376 +#, python-format +msgid "Choose a name for buffer %i." msgstr "" -#: ../glade2/meldapp.glade.h:41 +#: ../meld/filediff.py:1391 +#, python-format msgid "" -"Ignore changes in case; consider upper and lower-case letters equivalent" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" msgstr "" -#: ../glade2/meldapp.glade.h:42 -msgid "Ignore changes that just insert or delete blank lines" +#: ../meld/filediff.py:1407 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" msgstr "" -#: ../glade2/meldapp.glade.h:43 -msgid "Ignore changes which insert or delete blank lines" +#: ../meld/filediff.py:1466 +#, python-format +msgid "" +"Reloading will discard changes in:\n" +"%s\n" +"\n" +"You cannot undo this operation." msgstr "" -#: ../glade2/meldapp.glade.h:44 -#, fuzzy -msgid "Ignore symbolic links" -msgstr "Ignorer filer:" +#: ../meld/filemerge.py:82 +#, fuzzy, python-format +msgid "[%s] Merging files" +msgstr "Åpne fil" -#: ../glade2/meldapp.glade.h:45 -msgid "Internal editor" +#: ../meld/meldapp.py:152 +msgid "wrong number of arguments supplied to --diff" msgstr "" -#: ../glade2/meldapp.glade.h:46 -#, fuzzy -msgid "Line Wrapping " -msgstr "Linje_bryting" - -#: ../glade2/meldapp.glade.h:47 -msgid "Mailing _List" +#: ../meld/meldapp.py:156 +msgid "Start with an empty window" msgstr "" -#: ../glade2/meldapp.glade.h:48 -#, fuzzy -msgid "Meld" -msgstr "Gjenles" - -#: ../glade2/meldapp.glade.h:49 -#, fuzzy -msgid "Mine" -msgstr "Linje" - -#: ../glade2/meldapp.glade.h:51 -#, fuzzy -msgid "Original" -msgstr "Signal" - -#: ../glade2/meldapp.glade.h:52 -msgid "Other" -msgstr "Andre" - -#: ../glade2/meldapp.glade.h:53 -#, fuzzy -msgid "Preferences : Meld" -msgstr "_Brukervalg" +#: ../meld/meldapp.py:157 ../meld/meldapp.py:158 ../meld/meldapp.py:160 +msgid "file" +msgstr "fil" -#: ../glade2/meldapp.glade.h:54 -#, fuzzy -msgid "Prune empty directories (-P)" -msgstr "Slett tomme kataloger" +#: ../meld/meldapp.py:157 ../meld/meldapp.py:159 ../meld/meldapp.py:160 +msgid "dir" +msgstr "katalog" -#: ../glade2/meldapp.glade.h:55 -msgid "Quiet mode (-q)" +#: ../meld/meldapp.py:157 +msgid "Start a version control comparison" msgstr "" -#: ../glade2/meldapp.glade.h:56 -#, fuzzy -msgid "Redo" -msgstr "_Gjenopprett" - -#: ../glade2/meldapp.glade.h:57 -msgid "Refresh" -msgstr "Oppdater" - -#: ../glade2/meldapp.glade.h:58 -msgid "Reload" -msgstr "Gjenles" - -#: ../glade2/meldapp.glade.h:59 -msgid "Report _Bug" +#: ../meld/meldapp.py:158 +msgid "Start a 2- or 3-way file comparison" msgstr "" -#: ../glade2/meldapp.glade.h:60 -msgid "Save" -msgstr "Lagre" - -#: ../glade2/meldapp.glade.h:61 -#, fuzzy -msgid "Save _As" -msgstr "L_agre som..." - -#: ../glade2/meldapp.glade.h:62 -msgid "Save in UTF-8 encoding" +#: ../meld/meldapp.py:159 +msgid "Start a 2- or 3-way directory comparison" msgstr "" -#: ../glade2/meldapp.glade.h:63 -#, fuzzy -msgid "Save in the files original encoding" -msgstr "Kunne ikke åpne fil for skriving" - -#: ../glade2/meldapp.glade.h:64 -msgid "Show line numbers" -msgstr "Vis linjenummer" - -#: ../glade2/meldapp.glade.h:65 -msgid "Simple: Lines only" +#: ../meld/meldapp.py:160 +msgid "Start a comparison between file and dir/file" msgstr "" -#: ../glade2/meldapp.glade.h:66 -msgid "Solid: Filled Quadilaterals" +#: ../meld/meldapp.py:166 +msgid "Meld is a file and directory comparison tool." msgstr "" -#: ../glade2/meldapp.glade.h:67 -msgid "Stop" -msgstr "Stopp" - -#: ../glade2/meldapp.glade.h:68 -msgid "Tab width" +#: ../meld/meldapp.py:169 +msgid "Set label to use instead of file name" msgstr "" -#: ../glade2/meldapp.glade.h:69 -msgid "Text Beside Icons" +#: ../meld/meldapp.py:171 +msgid "Automatically compare all differing files on startup" msgstr "" -#: ../glade2/meldapp.glade.h:70 -#, fuzzy -msgid "Text Filters" -msgstr "Tekst som skal rendres" - -#: ../glade2/meldapp.glade.h:71 -#, fuzzy -msgid "Text Only" -msgstr "Tekst" - -#: ../glade2/meldapp.glade.h:72 -#, fuzzy -msgid "Text Under Icons" -msgstr "Tekst som skal rendres" - -#: ../glade2/meldapp.glade.h:73 -#, fuzzy -msgid "Three way directory" -msgstr "Velg katalog" - -#: ../glade2/meldapp.glade.h:74 -msgid "Three way file" +#: ../meld/meldapp.py:173 +msgid "Ignored for compatibility" msgstr "" -#: ../glade2/meldapp.glade.h:75 -#, fuzzy -msgid "Two way directory" -msgstr "Velg katalog" - -#: ../glade2/meldapp.glade.h:76 -#, fuzzy -msgid "Two way file" -msgstr "Ny tom fil" - -#: ../glade2/meldapp.glade.h:77 -#, fuzzy -msgid "Undo" -msgstr "A_ngre" - -#: ../glade2/meldapp.glade.h:78 -msgid "Up" +#: ../meld/meldapp.py:176 +msgid "Set the target file for saving a merge result" msgstr "" -#: ../glade2/meldapp.glade.h:79 -#, fuzzy -msgid "Use Compression (-z)" -msgstr "Bruk revisjon: " +#: ../meld/meldapp.py:179 +msgid "Creates a diff tab for up to 3 supplied files or directories." +msgstr "" -#: ../glade2/meldapp.glade.h:80 -msgid "Use GNOME monospace font" +#: ../meld/meldapp.py:182 +#, python-format +msgid "too many arguments (wanted 0-4, got %d)" msgstr "" -#: ../glade2/meldapp.glade.h:81 +#: ../meld/meldapp.py:184 ../meld/meldapp.py:188 #, fuzzy -msgid "Use custom font" -msgstr "Bruk skrift fra tema" +msgid "can't compare more than three directories" +msgstr "Opprett nye kataloger" -#: ../glade2/meldapp.glade.h:82 -#, fuzzy -msgid "Use syntax highlighting" -msgstr "Slå av utheving av syntaks" +#: ../meld/melddoc.py:56 ../meld/melddoc.py:57 +msgid "untitled" +msgstr "uten navn" -#: ../glade2/meldapp.glade.h:83 -#, fuzzy -msgid "Version control view" -msgstr "Git versjonskontroll" +#: ../meld/meldwindow.py:125 +msgid "_File" +msgstr "_Fil" -#: ../glade2/meldapp.glade.h:84 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" +#: ../meld/meldwindow.py:126 +msgid "_New..." +msgstr "_Ny …" -#: ../glade2/meldapp.glade.h:85 -msgid "" -"When performing directory comparisons, you may filter out files and " -"directories by name. Each pattern is a list of shell style wildcards " -"separated by spaces." +#: ../meld/meldwindow.py:126 +msgid "Start a new comparison" msgstr "" -#: ../glade2/meldapp.glade.h:86 -msgid "" -"When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching " -"text with the empty string before comparison is performed. If the expression " -"contains groups, only the groups are replaced. See the user manual for more " -"details." +#: ../meld/meldwindow.py:127 +msgid "Save the current file" msgstr "" -#: ../glade2/meldapp.glade.h:87 -msgid "Whitespace is significant" +#: ../meld/meldwindow.py:129 +msgid "Close the current file" msgstr "" -#: ../glade2/meldapp.glade.h:88 -msgid "Yes" -msgstr "Ja" - -#: ../glade2/meldapp.glade.h:90 -#, fuzzy -msgid "_Contents" -msgstr "Kjør/_Fortsett" - -#: ../glade2/meldapp.glade.h:91 -#, fuzzy -msgid "_Directory Comparison" -msgstr "Katalog" - -#: ../glade2/meldapp.glade.h:92 -msgid "_Down" +#: ../meld/meldwindow.py:130 +msgid "Quit the program" msgstr "" -#: ../glade2/meldapp.glade.h:93 ../glade2/vcview.glade.h:29 +#: ../meld/meldwindow.py:132 msgid "_Edit" msgstr "R_ediger" -#: ../glade2/meldapp.glade.h:94 -msgid "_File" -msgstr "_Fil" - -#: ../glade2/meldapp.glade.h:95 -msgid "_File Comparison" +#: ../meld/meldwindow.py:133 +msgid "Undo the last action" msgstr "" -#: ../glade2/meldapp.glade.h:96 -msgid "_Help" -msgstr "_Hjelp" - -#: ../glade2/meldapp.glade.h:97 -#, fuzzy -msgid "_Logo" -msgstr "_Gå til" - -#: ../glade2/meldapp.glade.h:98 -#, fuzzy -msgid "_New..." -msgstr "_Ny" +#: ../meld/meldwindow.py:134 +msgid "Redo the last undone action" +msgstr "" -#: ../glade2/meldapp.glade.h:99 -msgid "_Save" -msgstr "_Lagre" +#: ../meld/meldwindow.py:135 +msgid "Cut the selection" +msgstr "Klipp ut utvalg" -#: ../glade2/meldapp.glade.h:100 -#, fuzzy -msgid "_Stop" -msgstr "Stopp" +#: ../meld/meldwindow.py:136 +msgid "Copy the selection" +msgstr "Kopier utvalg" -#: ../glade2/meldapp.glade.h:101 -msgid "_Three Way Compare" +#: ../meld/meldwindow.py:137 +msgid "Paste the clipboard" msgstr "" -#: ../glade2/meldapp.glade.h:102 -#, fuzzy -msgid "_Up" -msgstr "_Oppdater" +#: ../meld/meldwindow.py:138 +msgid "Search for text" +msgstr "Søk etter tekst" -#: ../glade2/meldapp.glade.h:103 -#, fuzzy -msgid "_Version Control Browser" -msgstr "Git versjonskontroll" +#: ../meld/meldwindow.py:139 +msgid "Find Ne_xt" +msgstr "Finn ne_ste" -#: ../glade2/meldapp.glade.h:104 -msgid "_View" -msgstr "_Visning" +#: ../meld/meldwindow.py:139 +msgid "Search forwards for the same text" +msgstr "" -#: ../glade2/vcview.glade.h:1 -#, fuzzy -msgid "Add _Binary" -msgstr "Legg _til mål" +#: ../meld/meldwindow.py:140 +msgid "Find _Previous" +msgstr "Finn _forrige" -#: ../glade2/vcview.glade.h:2 -#, fuzzy -msgid "Add to VC" -msgstr "Legg til i prosjekt" +#: ../meld/meldwindow.py:140 +msgid "Search backwards for the same text" +msgstr "" -#: ../glade2/vcview.glade.h:3 -#, fuzzy -msgid "Commit" -msgstr "_Sjekk inn" +#: ../meld/meldwindow.py:141 +msgid "Find and replace text" +msgstr "" -#: ../glade2/vcview.glade.h:4 -#, fuzzy -msgid "Commit Files" -msgstr "Ko_mpiler fil" +#: ../meld/meldwindow.py:142 +msgid "Prefere_nces" +msgstr "_Brukervalg" -#: ../glade2/vcview.glade.h:5 -#, fuzzy -msgid "Compare Options" -msgstr "Konfigurer alternativer:" +#: ../meld/meldwindow.py:142 +msgid "Configure the application" +msgstr "" -#: ../glade2/vcview.glade.h:7 -#, fuzzy -msgid "Date" -msgstr "Ingen dato" +#: ../meld/meldwindow.py:144 +msgid "_Changes" +msgstr "" -#: ../glade2/vcview.glade.h:8 -#, fuzzy -msgid "Delete locally" -msgstr "Slett" +#: ../meld/meldwindow.py:145 +msgid "Next change" +msgstr "Neste endring" -#: ../glade2/vcview.glade.h:9 -#, fuzzy -msgid "Flatten directories" -msgstr "Opprett nye kataloger" +#: ../meld/meldwindow.py:145 +msgid "Go to the next change" +msgstr "" -#: ../glade2/vcview.glade.h:10 +#: ../meld/meldwindow.py:146 #, fuzzy -msgid "Ignored" -msgstr "Fje_rn ..." +msgid "Previous change" +msgstr "Forrige hjelp" -#: ../glade2/vcview.glade.h:11 -msgid "Local copy against other remote revision" +#: ../meld/meldwindow.py:146 +msgid "Go to the previous change" msgstr "" -#: ../glade2/vcview.glade.h:12 -msgid "Local copy against same remote revision" +#: ../meld/meldwindow.py:147 +msgid "Open externally" +msgstr "Åpne eksternt" + +#: ../meld/meldwindow.py:147 +msgid "Open selected file or directory in the default external application" msgstr "" -#: ../glade2/vcview.glade.h:13 -#, fuzzy -msgid "Log Message" -msgstr "Loggmelding:" +#: ../meld/meldwindow.py:149 +msgid "_View" +msgstr "_Visning" -#: ../glade2/vcview.glade.h:14 -msgid "Non _VC" +#: ../meld/meldwindow.py:150 +msgid "File status" +msgstr "Filstatus" + +#: ../meld/meldwindow.py:151 +msgid "Version status" msgstr "" -#: ../glade2/vcview.glade.h:15 +#: ../meld/meldwindow.py:152 #, fuzzy -msgid "Previous Logs" -msgstr "Forrige hjelp" +msgid "File filters" +msgstr "Filfilter" -#: ../glade2/vcview.glade.h:16 -#, fuzzy -msgid "Remove _Locally" -msgstr "Fjern alle" +#: ../meld/meldwindow.py:153 +msgid "Stop the current action" +msgstr "" -#: ../glade2/vcview.glade.h:17 +#: ../meld/meldwindow.py:154 #, fuzzy -msgid "Remove from VC" -msgstr "Fjern fra prosjekt" +msgid "Refresh the view" +msgstr "Oppdater" -#: ../glade2/vcview.glade.h:18 -msgid "Revert to original" +#: ../meld/meldwindow.py:155 +msgid "Reload" +msgstr "Gjenles" + +#: ../meld/meldwindow.py:155 +msgid "Reload the comparison" msgstr "" -#: ../glade2/vcview.glade.h:19 -#, fuzzy -msgid "Show ignored files" -msgstr "Ignorer filer:" +#: ../meld/meldwindow.py:157 +msgid "_Tabs" +msgstr "_Faner" -#: ../glade2/vcview.glade.h:21 -#, fuzzy -msgid "Show normal" -msgstr "Vis merker" +#: ../meld/meldwindow.py:158 +msgid "_Previous Tab" +msgstr "_Forrige fane" -#: ../glade2/vcview.glade.h:22 -#, fuzzy -msgid "Show unversioned files" -msgstr "Vis signaler fra kjernen" +#: ../meld/meldwindow.py:158 +msgid "Activate previous tab" +msgstr "" -#: ../glade2/vcview.glade.h:23 ../vcview.py:173 -msgid "Tag" +#: ../meld/meldwindow.py:159 +msgid "_Next Tab" +msgstr "_Neste fane" + +#: ../meld/meldwindow.py:159 +msgid "Activate next tab" msgstr "" -#: ../glade2/vcview.glade.h:24 -msgid "Update" -msgstr "Oppdater" +#: ../meld/meldwindow.py:160 +msgid "Move Tab _Left" +msgstr "" -#: ../glade2/vcview.glade.h:25 -#, fuzzy -msgid "VC Log" -msgstr "Vis logg" +#: ../meld/meldwindow.py:160 +msgid "Move current tab to left" +msgstr "" -#: ../glade2/vcview.glade.h:26 -msgid "_Add" -msgstr "_Legg til" +#: ../meld/meldwindow.py:161 +msgid "Move Tab _Right" +msgstr "" -#: ../glade2/vcview.glade.h:27 -msgid "_Commit" -msgstr "_Sjekk inn" +#: ../meld/meldwindow.py:161 +msgid "Move current tab to right" +msgstr "" -#: ../glade2/vcview.glade.h:30 -#, fuzzy -msgid "_Flatten" -msgstr "_Fil" +#: ../meld/meldwindow.py:163 +msgid "_Help" +msgstr "_Hjelp" -#: ../glade2/vcview.glade.h:31 +#: ../meld/meldwindow.py:164 #, fuzzy -msgid "_Modified" -msgstr "Endret" +msgid "_Contents" +msgstr "Kjør/_Fortsett" -#: ../glade2/vcview.glade.h:32 -msgid "_Normal" +#: ../meld/meldwindow.py:164 +msgid "Open the Meld manual" msgstr "" -#: ../glade2/vcview.glade.h:33 -msgid "_Remove" -msgstr "Fje_rn" +#: ../meld/meldwindow.py:165 +msgid "Report _Bug" +msgstr "" -#: ../glade2/vcview.glade.h:34 -msgid "_Update" -msgstr "_Oppdater" +#: ../meld/meldwindow.py:165 +msgid "Report a bug in Meld" +msgstr "" -#: ../meld:60 ../meld:70 ../meld:80 -#, c-format -msgid "Meld requires %s or higher." +#: ../meld/meldwindow.py:166 +msgid "About this program" msgstr "" -#: ../meld:81 -msgid "" -"Due to incompatible API changes some functions may not operate as expected." +#: ../meld/meldwindow.py:169 +msgid "Full Screen" msgstr "" -#: ../meld.desktop.in.h:1 -msgid "Compare and merge your files." +#: ../meld/meldwindow.py:169 +msgid "View the comparison in full screen" msgstr "" -#: ../meld.desktop.in.h:2 -msgid "Meld Diff Viewer" +#: ../meld/meldwindow.py:170 +msgid "_Toolbar" msgstr "" -#: ../meldapp.py:147 -msgid "label" -msgstr "etikett" +#: ../meld/meldwindow.py:170 +msgid "Show or hide the toolbar" +msgstr "" -#: ../meldapp.py:148 +#: ../meld/meldwindow.py:171 #, fuzzy -msgid "pattern" -msgstr "Oppdater" +msgid "_Statusbar" +msgstr "Tilstand" -#. file filters -#. text filters -#: ../meldapp.py:249 ../meldapp.py:254 ../vcview.py:153 -msgid "Name" -msgstr "Navn" +#: ../meld/meldwindow.py:171 +msgid "Show or hide the statusbar" +msgstr "" -#: ../meldapp.py:249 ../meldapp.py:254 -msgid "Active" -msgstr "Aktiv" +#: ../meld/meldwindow.py:538 +msgid "Switch to this tab" +msgstr "" -#: ../meldapp.py:249 +#. exit at first non found directory + file +#: ../meld/meldwindow.py:629 #, fuzzy -msgid "Pattern" -msgstr "Palett" +msgid "Cannot compare a mixture of files and directories.\n" +msgstr "Opprett nye kataloger" -#: ../meldapp.py:254 +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:174 #, fuzzy -msgid "Regex" -msgstr "Register" +msgid "[None]" +msgstr "Ingen" -#: ../meldapp.py:296 -msgid "" -"Line numbers are only available if you have gnome-python-desktop installed." -msgstr "" +#: ../meld/patchdialog.py:122 +#, fuzzy +msgid "Save Patch As..." +msgstr "Lagrer prosjekt...\n" -#: ../meldapp.py:300 -msgid "" -"Syntax highlighting is only available if you have gnome-python-desktop " -"installed." +#: ../meld/preferences.py:37 +msgid "label" +msgstr "etikett" + +#: ../meld/preferences.py:37 +#, fuzzy +msgid "pattern" +msgstr "Oppdater" + +#: ../meld/preferences.py:111 +msgid "Only available if you have gnome-python-desktop installed" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:444 +#: ../meld/preferences.py:234 msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:446 +#: ../meld/preferences.py:236 msgid "" -"Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory RCS\n" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:448 +#: ../meld/preferences.py:238 +#, fuzzy, python-format +msgid "Version Control\t1\t%s\n" +msgstr "Git versjonskontroll" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:240 msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:450 +#: ../meld/preferences.py:242 msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:452 +#: ../meld/preferences.py:244 msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:454 +#: ../meld/preferences.py:246 msgid "C++ comment\t0\t//.*\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:456 +#: ../meld/preferences.py:248 msgid "C comment\t0\t/\\*.*?\\*/\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:458 +#: ../meld/preferences.py:250 msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:460 +#: ../meld/preferences.py:252 msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" msgstr "" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meldapp.py:462 +#: ../meld/preferences.py:254 msgid "Script comment\t0\t#.*" msgstr "" -#: ../meldapp.py:781 +#: ../meld/vcview.py:128 #, fuzzy -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Opprett nye kataloger" +msgid "Co_mmit" +msgstr "_Sjekk inn" -#. ############################################################################### -#. -#. usage -#. -#. ############################################################################### -#: ../meldapp.py:829 -#, python-format -msgid "" -"Meld %s\n" -"Written by Stephen Kennedy " +#: ../meld/vcview.py:128 +#, fuzzy +msgid "Commit" +msgstr "_Sjekk inn" + +#: ../meld/vcview.py:129 +msgid "_Update" +msgstr "_Oppdater" + +#: ../meld/vcview.py:129 +msgid "Update" +msgstr "Oppdater" + +#: ../meld/vcview.py:130 +#, fuzzy +msgid "Add to VC" +msgstr "Legg til i prosjekt" + +#: ../meld/vcview.py:131 +#, fuzzy +msgid "Add _Binary" +msgstr "Legg _til mål" + +#: ../meld/vcview.py:131 +#, fuzzy +msgid "Add binary to VC" +msgstr "Legg til i prosjekt" + +#: ../meld/vcview.py:132 +#, fuzzy +msgid "Remove from VC" +msgstr "Fjern fra prosjekt" + +#: ../meld/vcview.py:133 +msgid "_Resolved" msgstr "" -#: ../meldapp.py:858 -msgid "Set label to use instead of file name" +#: ../meld/vcview.py:133 +msgid "Mark as resolved for VC" msgstr "" -#: ../meldapp.py:859 ../meldapp.py:860 ../meldapp.py:861 ../meldapp.py:862 -msgid "Ignored for compatibility" +#: ../meld/vcview.py:134 +msgid "Revert to original" msgstr "" -#: ../meldapp.py:888 -#, python-format -msgid "Wrong number of arguments (Got %i)" +#: ../meld/vcview.py:135 +#, fuzzy +msgid "Delete locally" +msgstr "Slett" + +#: ../meld/vcview.py:139 +#, fuzzy +msgid "_Flatten" +msgstr "_Fil" + +#: ../meld/vcview.py:139 +#, fuzzy +msgid "Flatten directories" +msgstr "Opprett nye kataloger" + +#: ../meld/vcview.py:140 +#, fuzzy +msgid "_Modified" +msgstr "Endret" + +#: ../meld/vcview.py:141 +msgid "_Normal" msgstr "" -#: ../melddoc.py:45 -msgid "untitled" +#: ../meld/vcview.py:141 +#, fuzzy +msgid "Show normal" +msgstr "Vis merker" + +#: ../meld/vcview.py:142 +msgid "Non _VC" msgstr "" -#. no common path. empty names get changed to "[None]" -#: ../misc.py:118 +#: ../meld/vcview.py:142 #, fuzzy -msgid "[None]" -msgstr "Ingen" +msgid "Show unversioned files" +msgstr "Vis signaler fra kjernen" + +#: ../meld/vcview.py:143 +#, fuzzy +msgid "Ignored" +msgstr "Fje_rn ..." + +#: ../meld/vcview.py:143 +#, fuzzy +msgid "Show ignored files" +msgstr "Ignorer filer:" -#: ../vcview.py:170 +#: ../meld/vcview.py:186 ../meld/vcview.py:318 msgid "Location" msgstr "Lokasjon" -#: ../vcview.py:171 +#: ../meld/vcview.py:187 #, fuzzy msgid "Status" msgstr "Tilstand" -#: ../vcview.py:172 +#: ../meld/vcview.py:188 #, fuzzy msgid "Rev" msgstr "Fjern" -#: ../vcview.py:174 +#: ../meld/vcview.py:189 +msgid "Tag" +msgstr "" + +#: ../meld/vcview.py:190 msgid "Options" msgstr "Alternativer" -#: ../vcview.py:257 +#: ../meld/vcview.py:249 +#, fuzzy +msgid "Choose one Version Control" +msgstr "Git versjonskontroll" + +#: ../meld/vcview.py:250 +msgid "Only one Version Control in this directory" +msgstr "" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:263 +#, python-format +msgid "%s Not Installed" +msgstr "" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:267 +msgid "Invalid Repository" +msgstr "" + +#: ../meld/vcview.py:276 +#, python-format +msgid "%s (%s)" +msgstr "" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:318 +#, python-format +msgid "%s: %s" +msgstr "" + +#: ../meld/vcview.py:362 msgid "(Empty)" msgstr "" -#: ../vcview.py:294 +#: ../meld/vcview.py:400 #, python-format msgid "[%s] Fetching differences" msgstr "" -#: ../vcview.py:301 +#: ../meld/vcview.py:408 #, python-format msgid "[%s] Applying patch" msgstr "" -#: ../vcview.py:305 -msgid "No differences found." +#: ../meld/vcview.py:501 +#, fuzzy +msgid "Select some files first." +msgstr "Velg header-fil" + +#: ../meld/vcview.py:574 +#, python-format +msgid "" +"\n" +" Invoking 'patch' failed.\n" +" \n" +" Maybe you don't have 'GNU patch' installed,\n" +" or you use an untested version of %s.\n" +" \n" +" Please send email bug report to:\n" +" meld-list@gnome.org\n" +" \n" +" Containing the following information:\n" +" \n" +" - meld version: '%s'\n" +" - source control software type: '%s'\n" +" - source control software version: 'X.Y.Z'\n" +" - the output of '%s somefile.txt'\n" +" - patch command: '%s'\n" +" (no need to actually run it, just provide\n" +" the command line) \n" +" \n" +" Replace 'X.Y.Z' by the actual version for the\n" +" source control software you use.\n" +" " +msgstr "" + +#: ../meld/ui/findbar.py:127 +#, fuzzy, python-format +msgid "" +"Regular expression error\n" +"'%s'" +msgstr "Vanlig uttrykk" + +#: ../meld/ui/historyentry.py:293 +msgid "_Browse..." +msgstr "" + +#: ../meld/ui/historyentry.py:301 +msgid "Path" +msgstr "" + +#: ../meld/ui/historyentry.py:302 +msgid "Path to file" +msgstr "" + +#: ../meld/ui/historyentry.py:303 +msgid "Pop up a file selector to choose a file" msgstr "" -#: ../vcview.py:382 +#: ../meld/ui/historyentry.py:441 #, fuzzy -msgid "Select some files first." +msgid "Select directory" +msgstr "Velg katalog" + +#: ../meld/ui/historyentry.py:445 +#, fuzzy +msgid "Select file" msgstr "Velg header-fil" -#: ../vcview.py:446 -msgid "Invoking patch failed, you need GNU patch." +#: ../meld/ui/notebooklabel.py:60 +msgid "Close tab" msgstr "" #. These are the possible states of files. Be sure to get the colons correct. -#: ../vc/_vc.py:39 +#: ../meld/vc/_vc.py:40 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" -"Missing" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" msgstr "" -#: ../vc/cvs.py:153 +#: ../meld/vc/cvs.py:163 #, python-format msgid "" "Error converting to a regular expression\n" "The pattern was '%s'\n" "The error was '%s'" msgstr "" - diff -Nru meld-1.5.3/po/pl.po meld-3.11.0/po/pl.po --- meld-1.5.3/po/pl.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/pl.po 2014-02-16 20:23:22.000000000 +0000 @@ -4,12 +4,15 @@ # pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas: # gnomepl@aviary.pl # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +# Marcin Floryan , 2011. +# Piotr Drąg , 2011-2013. +# Aviary.pl , 2011-2013. msgid "" msgstr "" "Project-Id-Version: meld\n" "Report-Msgid-Bugs-To: Stephen Kennedy \n" -"POT-Creation-Date: 2011-12-03 15:56+0100\n" -"PO-Revision-Date: 2011-12-03 15:57+0100\n" +"POT-Creation-Date: 2013-10-01 17:31+0200\n" +"PO-Revision-Date: 2013-10-01 17:33+0200\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" @@ -21,299 +24,453 @@ "X-Poedit-Language: Polish\n" "X-Poedit-Country: Poland\n" -#: ../bin/meld:96 +#: ../bin/meld:121 msgid "Cannot import: " msgstr "Nie można zaimportować: " -#: ../bin/meld:99 +#: ../bin/meld:124 #, c-format msgid "Meld requires %s or higher." msgstr "Program Meld wymaga wersji %s lub nowszej." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Porównywanie i scalanie plików" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Przeglądarka różnic" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Przeglądarka różnic Meld" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Porównywanie i scalanie plików" + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Opis porównywania programu Meld" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "P_orównaj" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Porównuje zaznaczone pliki" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Kopiuj w _lewo" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Kopiuje element na lewo" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Kopiuj w p_rawo" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Kopiuje element na prawo" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Usuwa zaznaczone" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1379 +msgid "Hide" +msgstr "Ukryj" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Ukrywa zaznaczone" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Ignorowanie wielkości liter w nazwach plików" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "Traktuje nazwy plików z literami różnej wielkości jako takie same" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Takie same" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Wyświetla identyczne" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Nowe" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Wyświetla nowe" + +#: ../data/ui/dirdiff.ui.h:16 +msgid "Modified" +msgstr "Zmodyfikowane" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Wyświetla zmodyfikowane" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Filtry" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Pozwala wybrać aktywne filtry" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Aktywne" +msgid "Editable List" +msgstr "Modyfikowalna lista" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Dodaje nowy filtr" +msgid "Active" +msgstr "Aktywne" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Modyfikowalna lista" +msgid "Column Name" +msgstr "Nazwa kolumny" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "Przesuń w _dół" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Dodaj" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:644 +msgid "_Remove" +msgstr "U_suń" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Przesuwa element do góry" + +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "Przesuń do gó_ry" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" msgstr "Przesuwa element w dół" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Przesuwa element do góry" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Przesuń w _dół" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:156 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:324 +#: ../meld/vcview.py:174 msgid "Name" msgstr "Nazwa" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Wzorzec" -#: ../data/ui/EditableList.ui.h:10 +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Dodaje nowy filtr" + +#: ../data/ui/EditableList.ui.h:13 msgid "Remove selected filter" msgstr "Usuwa zaznaczony filtr" -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:121 -msgid "_Add" -msgstr "Dod_aj" - -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:123 -msgid "_Remove" -msgstr "U_suń" - #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Zapisać zmodyfikowany plik?" +msgid "Save changes to documents before closing?" +msgstr "Zapisać zmiany dokumentów przed zamknięciem?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" +msgid "If you don't save, changes will be permanently lost." msgstr "" -"Niektóre pliki zostały zmodyfikowane.\n" -"Które pliki zapisać?" +"Jeżeli dokumenty nie zostaną zapisane, zmiany zostaną bezpowrotnie utracone." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Zamknij _bez zapisywania" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "O_drzuć Zmiany" +msgid "_Cancel" +msgstr "_Anuluj" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "_Zapisz zaznaczone" +msgid "_Save" +msgstr "Zapi_sz" + +#: ../data/ui/filediff.ui.h:6 +msgid "Revert unsaved changes to documents?" +msgstr "Przywrócić niezapisane zmiany w dokumentach?" + +#: ../data/ui/filediff.ui.h:7 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "" +"Zmiany naniesione do poniższych dokumentów zostaną bezpowrotnie utracone:\n" + +#: ../data/ui/filediff.ui.h:9 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Do tego pliku nie można zapisać. Można kliknąć tutaj, aby go odblokować i " +"wprowadzić zmiany mimo to, ale muszę być one zapisane do nowego pliku." + +#: ../data/ui/filediff.ui.h:10 ../meld/filediff.py:299 +msgid "Lock scrolling of all panes" +msgstr "Synchronizuje przewijanie wszystkich paneli" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "Wyrażenie r_egularne" +msgid "_Replace" +msgstr "Z_amień" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "Zamień _wszystkie" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Zamień _na" +msgid "_Previous" +msgstr "_Poprzednie" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "_Cały wyraz" +msgid "_Next" +msgstr "_Następne" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "_Rozróżnianie małych i wielkich liter" +msgid "Find:" +msgstr "Wyszukiwanie:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Następne" +msgid "Replace _with:" +msgstr "Zmiana _na:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Poprzednie" +msgid "_Match case" +msgstr "_Rozróżnianie małych i wielkich liter" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "Z_amień" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "_Cały wyraz" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Znajdź" +msgid "Regular e_xpression" +msgstr "Wyrażenie r_egularne" -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Wybór elementów do porównania" +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Automatyczny powrót do początku" #: ../data/ui/meldapp.ui.h:2 msgid "" "Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" +"Copyright © 2009-2013 Kai Willadsen" msgstr "" "Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" +"Copyright © 2009-2013 Kai Willadsen" #: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Katalog" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Mój" +msgid "" +"Meld 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.\n" +"\n" +"Meld 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. \n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" +"Program Meld jest wolnym oprogramowaniem; można go rozprowadzać dalej i/lub " +"modyfikować na warunkach Powszechnej Licencji Publicznej GNU, wydanej przez " +"Fundację Wolnego Oprogramowania (Free Software Foundation) - według wersji " +"drugiej tej Licencji lub którejś z późniejszych wersji.\n" +"\n" +"Program Meld rozpowszechniany jest z nadzieją, iż będzie on użyteczny - " +"jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI " +"HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania " +"bliższych informacji należy zapoznać się z Powszechną Licencją Publiczną " +"GNU.\n" +"\n" +"Z pewnością wraz z niniejszym programem dostarczono także egzemplarz " +"Powszechnej Licencji Publicznej GNU (GNU General Public License); jeśli nie " +"- proszę odwiedzić stronę internetową ." -#. Refers to version of the file being compared #: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Oryginał" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Inny" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Wybierz katalog objęty systemem kontroli wersji" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Porównywanie _katalogów" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "_Porównywanie plików" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "Porównywanie _trzech elementów" - -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "Przeglądanie systemu kontroli _wersji" - -#: ../data/ui/meldapp.ui.h:17 msgid "translator-credits" msgstr "" -"Aviary.pl , 2011\n" -"Marcin Floryan , 2011" +"Marcin Floryan , 2011\n" +"Piotr Drąg , 2011-2013\n" +"Aviary.pl , 2011-2013" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Skopiuj do schowka" +msgid "Format as Patch" +msgstr "Sformatowanie jako poprawka" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Nowa poprawka" +msgid "Use differences between:" +msgstr "Użycie różnic między:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Tworzenie poprawki" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Lewym i środkowym panelem" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Środkowym i prawym panelem" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Użycie różnic między:" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "Przeciwny kie_runek porównania" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Skopiuj do schowka" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:124 +msgid "Save Patch" +msgstr "Zapisz poprawkę" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Wyświetlanie" +msgid "Left is remote, right is local" +msgstr "Zdalne po lewej, lokalne po prawej" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Bez _dzielenia wyrazów między wierszami" +msgid "Left is local, right is remote" +msgstr "Lokalne po lewej, zdalne po prawej" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Polecenie uruchamiające edyto_r:" +msgid "Meld Preferences" +msgstr "Preferencje programu Meld" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Edytor" +msgid "Font" +msgstr "Czcionka" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Zawijanie _wierszy" +msgid "_Use the system fixed width font" +msgstr "Systemowa o stałej s_zerokości" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Kodowanie znaków" +msgid "_Editor font:" +msgstr "Czcionka _edytora:" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Zewnętrzny edytor" +msgid "Display" +msgstr "Wyświetlanie" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filtry plików" +msgid "_Tab width:" +msgstr "Szerokość _tabulacji:" #: ../data/ui/preferences.ui.h:9 -msgid "Font" -msgstr "Czcionka" +msgid "_Insert spaces instead of tabs" +msgstr "_Spacje zamiast tabulacji" #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Ignorowanie zmian, które dodają lub usuwają puste wiersze" +msgid "Enable text _wrapping" +msgstr "Zawijanie _wierszy" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Ignorowanie dowiązań symbolicznych" +msgid "Do not _split words over two lines" +msgstr "Bez _dzielenia wyrazów między wierszami" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Wczytywanie" +msgid "Highlight _current line" +msgstr "Wyróż_nianie bieżącego wiersza" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Preferencje programu Meld" - -#: ../data/ui/preferences.ui.h:14 msgid "Show _line numbers" msgstr "_Numery wierszy" -#: ../data/ui/preferences.ui.h:15 +#: ../data/ui/preferences.ui.h:14 msgid "Show w_hitespace" msgstr "_Białe znaki" +#: ../data/ui/preferences.ui.h:15 +msgid "Use s_yntax highlighting" +msgstr "Wyróżnianie elementów s_kładni" + #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filtry plików tekstowych" +msgid "External Editor" +msgstr "Zewnętrzny edytor" #: ../data/ui/preferences.ui.h:17 msgid "Use _default system editor" msgstr "_Domyślny edytor systemowy" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Wyróżnianie elementów s_kładni" +msgid "Edito_r command:" +msgstr "Polecenie uruchamiające edyto_r:" #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "" -"Wczytując plik, próbuje użyć kodowanie w podanej kolejności (np.: utf8, " -"iso8859)" +msgid "Editor" +msgstr "Edytor" #: ../data/ui/preferences.ui.h:20 +msgid "Shallow Comparison" +msgstr "Płytkie porównanie" + +#: ../data/ui/preferences.ui.h:21 +msgid "C_ompare files based only on size and timestamp" +msgstr "P_orównywanie plików w oparciu tylko o rozmiar i czas modyfikacji" + +#: ../data/ui/preferences.ui.h:22 +msgid "_Timestamp resolution:" +msgstr "Rozwiązywanie _czasu modyfikacji:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Symbolic Links" +msgstr "Dowiązania symboliczne" + +#: ../data/ui/preferences.ui.h:24 +msgid "Ignore symbolic links" +msgstr "Ignorowanie dowiązań symbolicznych" + +#: ../data/ui/preferences.ui.h:25 +msgid "Visible Columns" +msgstr "Widoczne kolumny" + +#: ../data/ui/preferences.ui.h:26 +msgid "Folder Comparisons" +msgstr "Porównywanie katalogów" + +#: ../data/ui/preferences.ui.h:27 +msgid "Version Comparisons" +msgstr "Porównywanie wersji" + +#: ../data/ui/preferences.ui.h:28 +msgid "_When comparing file revisions:" +msgstr "_Podczas porównywania wersji plików:" + +#: ../data/ui/preferences.ui.h:29 +msgid "Commit Messages" +msgstr "Opisy zatwierdzeń" + +#: ../data/ui/preferences.ui.h:30 +msgid "Show _right margin at:" +msgstr "Wyświetlanie p_rawego marginesu w kolumnie:" + +#: ../data/ui/preferences.ui.h:31 +msgid "Automatically _break lines at right margin on commit" +msgstr "" +"Automatyczne łamanie _wierszy na prawym marginesie podczas zatwierdzania" + +#: ../data/ui/preferences.ui.h:32 +msgid "Version Control" +msgstr "System kontroli wersji" + +#: ../data/ui/preferences.ui.h:33 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " @@ -323,7 +480,11 @@ "podstawie nazwy. Każdy wzorzec jest listą symboli wieloznacznych powłoki " "rozdzieloną spacjami." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:34 ../meld/meldwindow.py:122 +msgid "File Filters" +msgstr "Filtry plików" + +#: ../data/ui/preferences.ui.h:35 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -337,170 +498,258 @@ "zawiera grupy, tylko grupy są zamieniane. Więcej informacji dostępne jest w " "podręczniku użytkownika." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "Czcionka _edytora:" +#: ../data/ui/preferences.ui.h:36 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Ignorowanie zmian, które dodają lub usuwają puste wiersze" -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "_Spacje zamiast tabulacji" +#: ../data/ui/preferences.ui.h:37 +msgid "Text Filters" +msgstr "Filtry plików tekstowych" -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "Szerokość _tabulacji:" +#: ../data/ui/preferences.ui.h:38 +msgid "Loading" +msgstr "Wczytywanie" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "Systemowa o stałej s_zerokości" +#: ../data/ui/preferences.ui.h:39 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" +"Wczytując plik, próbuje użyć kodowanie w podanej kolejności (np.: utf8, " +"iso8859)" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Zatwierdź pliki" +#: ../data/ui/preferences.ui.h:40 +msgid "Encoding" +msgstr "Kodowanie znaków" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:681 +msgid "New comparison" +msgstr "Nowe porównanie" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Porównanie plików" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Porównanie katalogów" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Widok kontroli wersji" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Porównanie _3 plików" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Wybierz trzeci plik" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Wybierz drugi plik" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Wybierz pierwszy plik" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Wybierz pierwszy katalog" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Wybierz drugi katalog" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Wybierz trzeci katalog" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Wybierz katalog z kontrolą wersji" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Puste porównanie" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Opcje porównania" +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "P_orównaj" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Data" +msgid "Co_mmit..." +msgstr "_Zatwierdź..." #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Lokalna kopia względem innej zdalnej wersji" +msgid "Commit changes to version control" +msgstr "Zatwierdza zmiany w systemie kontroli wersji" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Lokalna kopia względem tej samej zdalnej wersji" +msgid "_Update" +msgstr "Zaktualiz_uj" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Opis zmiany" +msgid "Update working copy from version control" +msgstr "Aktualizuje kopię roboczą z systemu kontroli wersji" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Wcześniejsze zmiany" +msgid "_Push" +msgstr "_Wyślij" -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:179 -msgid "Tag" -msgstr "Etykieta" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "Dziennik zmian" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Wysyła lokalne zmiany do zdalnego repozytorium" -#: ../meld/dirdiff.py:226 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "P_orównaj" +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Dodaje do systemu kontroli wersji" -#: ../meld/dirdiff.py:226 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Porównuje wybrane elementy" +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Usuwa z systemu kontroli wersji" -#: ../meld/dirdiff.py:227 -msgid "Copy _Left" -msgstr "Kopiuj w _lewo" +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Oznacz jako _rozwiązane" -#: ../meld/dirdiff.py:227 -msgid "Copy to left" -msgstr "Kopiuje element na lewo" +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Oznacza konflikt jako rozwiązany w systemie kontroli wersji" -#: ../meld/dirdiff.py:228 -msgid "Copy _Right" -msgstr "Kopiuj w p_rawo" +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Przy_wróć" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Przywraca kopię roboczą do pierwotnego stanu" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Usuwa z kopii roboczej" -#: ../meld/dirdiff.py:228 -msgid "Copy to right" -msgstr "Kopiuje element na prawo" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "U_prość" -#: ../meld/dirdiff.py:229 -msgid "Delete selected" -msgstr "Usuwa zaznaczone" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Upraszcza wyświetlaną strukturę katalogów" -#: ../meld/dirdiff.py:230 ../meld/filediff.py:1157 -msgid "Hide" -msgstr "Ukryj" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "Z_modyfikowane" -#: ../meld/dirdiff.py:230 -msgid "Hide selected" -msgstr "Ukrywa zaznaczone" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Wyświetla zmodyfikowane pliki" -#: ../meld/dirdiff.py:234 -msgid "Case" -msgstr "Wielkość liter" - -#: ../meld/dirdiff.py:234 -msgid "Ignore case of entries" -msgstr "Ignoruje wielkość liter" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Zwykłe" -#: ../meld/dirdiff.py:235 -msgid "Same" -msgstr "Takie same" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Wyświetla zwykłe pliki" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "Poza systemem kontroli _wersji" -#: ../meld/dirdiff.py:235 -msgid "Show identical" -msgstr "Wyświetla identyczne" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Wyświetla pliki poza systemem kontroli wersji" -#: ../meld/dirdiff.py:236 -msgid "New" -msgstr "Nowe" +#: ../data/ui/vcview.ui.h:26 +msgid "Ignored" +msgstr "Zignorowane" -#: ../meld/dirdiff.py:236 -msgid "Show new" -msgstr "Wyświetla nowe" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Wyświetla zignorowane pliki" -#: ../meld/dirdiff.py:237 -msgid "Modified" -msgstr "Zmodyfikowane" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Zatwierdź" -#: ../meld/dirdiff.py:237 ../meld/vcview.py:131 -msgid "Show modified" -msgstr "Wyświetla zmodyfikowane" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Zatwierdź pliki" -#: ../meld/dirdiff.py:239 -msgid "Filters" -msgstr "Filtry" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Opis zmiany" -#: ../meld/dirdiff.py:239 -msgid "Set active filters" -msgstr "Pozwala wybrać aktywne filtry" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Wcześniejsze zmiany:" + +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "_Zatwierdź" -#: ../meld/dirdiff.py:355 +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Wysyłać lokalne zatwierdzenia do zdalnego repozytorium?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "Zatwierdzenia do wysłania są ustalane przez system kontroli wersji." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Wyślij zatwierdzenia" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:342 +msgid "Size" +msgstr "Rozmiar" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:350 +msgid "Modification time" +msgstr "Czas modyfikacji" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:358 +msgid "Permissions" +msgstr "Uprawnienia" + +#: ../meld/dirdiff.py:492 #, python-format msgid "Hide %s" msgstr "Ukryj %s" -#: ../meld/dirdiff.py:458 ../meld/dirdiff.py:471 ../meld/vcview.py:304 -#: ../meld/vcview.py:332 +#: ../meld/dirdiff.py:618 ../meld/dirdiff.py:637 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Skanowanie %s" -#: ../meld/dirdiff.py:570 +#: ../meld/dirdiff.py:737 #, python-format msgid "[%s] Done" msgstr "[%s] Ukończono" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:743 msgid "Multiple errors occurred while scanning this folder" msgstr "Wystąpiło wiele błędów podczas skanowania tego katalogu" -#: ../meld/dirdiff.py:575 +#: ../meld/dirdiff.py:744 msgid "Files with invalid encodings found" msgstr "Odnaleziono pliki z nieprawidłowym kodowaniem znaków" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:577 +#: ../meld/dirdiff.py:746 msgid "Some files were in an incorrect encoding. The names are something like:" msgstr "" "Niektóre pliki mają nieprawidłowe kodowanie znaków. Nazwy tych plików to:" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:748 msgid "Files hidden by case insensitive comparison" msgstr "Pliku ukryte przez porównywanie bez uwzględniania wielkości liter" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:750 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -509,16 +758,17 @@ "systemie plików, który rozróżnia wielkość liter. Następujące pliki w tym " "katalogu zostały ukryte:" -#: ../meld/dirdiff.py:592 +#: ../meld/dirdiff.py:761 #, python-format msgid "'%s' hidden by '%s'" msgstr "\"%s\" ukryty przez \"%s\"" -#: ../meld/dirdiff.py:617 ../meld/filediff.py:1008 ../meld/filediff.py:1161 +#: ../meld/dirdiff.py:786 ../meld/filediff.py:1095 ../meld/filediff.py:1381 +#: ../meld/filediff.py:1411 ../meld/filediff.py:1413 msgid "Hi_de" msgstr "_Ukryj" -#: ../meld/dirdiff.py:667 +#: ../meld/dirdiff.py:817 #, python-format msgid "" "'%s' exists.\n" @@ -527,38 +777,29 @@ "\"%s\" istnieje.\n" "Zastąpić ten plik?" -#: ../meld/dirdiff.py:674 +#: ../meld/dirdiff.py:825 +msgid "Error copying file" +msgstr "Błąd podczas kopiowania pliku" + +#: ../meld/dirdiff.py:826 #, python-format msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Błąd podczas kopiowania \"%s\" do \"%s\"\n" +"Nie można skopiować %s\n" +"do %s.\n" "\n" -"%s." - -#: ../meld/dirdiff.py:692 ../meld/vcview.py:504 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"\"%s\" jest katalogiem.\n" -"Usunąć łącznie z katalogami podrzędnymi?" +"%s" -#: ../meld/dirdiff.py:699 ../meld/vcview.py:509 +#: ../meld/dirdiff.py:849 #, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Błąd podczas usuwania %s\n" -"\n" -"%s." +msgid "Error deleting %s" +msgstr "Błąd podczas usuwania %s" -#: ../meld/dirdiff.py:711 +#: ../meld/dirdiff.py:980 #, python-format msgid "%i second" msgid_plural "%i seconds" @@ -566,7 +807,7 @@ msgstr[1] "%i sekundy" msgstr[2] "%i sekund" -#: ../meld/dirdiff.py:712 +#: ../meld/dirdiff.py:981 #, python-format msgid "%i minute" msgid_plural "%i minutes" @@ -574,7 +815,7 @@ msgstr[1] "%i minuty" msgstr[2] "%i minut" -#: ../meld/dirdiff.py:713 +#: ../meld/dirdiff.py:982 #, python-format msgid "%i hour" msgid_plural "%i hours" @@ -582,7 +823,7 @@ msgstr[1] "%i godziny" msgstr[2] "%i godzin" -#: ../meld/dirdiff.py:714 +#: ../meld/dirdiff.py:983 #, python-format msgid "%i day" msgid_plural "%i days" @@ -590,7 +831,7 @@ msgstr[1] "%i dni" msgstr[2] "%i dni" -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:984 #, python-format msgid "%i week" msgid_plural "%i weeks" @@ -598,7 +839,7 @@ msgstr[1] "%i tygodnie" msgstr[2] "%i tygodni" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:985 #, python-format msgid "%i month" msgid_plural "%i months" @@ -606,7 +847,7 @@ msgstr[1] "%i miesiące" msgstr[2] "%i miesięcy" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:986 #, python-format msgid "%i year" msgid_plural "%i years" @@ -614,159 +855,182 @@ msgstr[1] "%i lata" msgstr[2] "%i lat" -#: ../meld/filediff.py:294 -msgid "Format as patch..." +#: ../meld/filediff.py:227 +msgid "Format as Patch..." msgstr "Utwórz poprawkę..." -#: ../meld/filediff.py:294 +#: ../meld/filediff.py:228 msgid "Create a patch using differences between files" msgstr "Tworzy plik poprawki (patch) na podstawie różnic między plikami" -#: ../meld/filediff.py:295 -msgid "Previous conflict" +#: ../meld/filediff.py:230 +msgid "Save A_ll" +msgstr "_Zapisz wszystkie" + +#: ../meld/filediff.py:231 +msgid "Save all files in the current comparison" +msgstr "Zapisuje wszystkie pliki w bieżącym porównaniu" + +#: ../meld/filediff.py:234 +msgid "Revert files to their saved versions" +msgstr "Przywraca pliki do ich zapisanych wersji" + +#: ../meld/filediff.py:236 +msgid "Add Synchronization Point" +msgstr "Dodaj punkt synchronizacji" + +#: ../meld/filediff.py:237 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Dodaje ręczny punkt do synchronizacji zmian między plikami" + +#: ../meld/filediff.py:240 +msgid "Clear Synchronization Points" +msgstr "Wyczyść punkty synchronizacji" + +#: ../meld/filediff.py:241 +msgid "Clear manual change sychronization points" +msgstr "Czyści ręczne punkty synchronizacji zmian" + +#: ../meld/filediff.py:243 +msgid "Previous Conflict" msgstr "Poprzedni konflikt" -#: ../meld/filediff.py:295 +#: ../meld/filediff.py:244 msgid "Go to the previous conflict" msgstr "Przechodzi do poprzedniego konfliktu" -#: ../meld/filediff.py:296 -msgid "Next conflict" +#: ../meld/filediff.py:246 +msgid "Next Conflict" msgstr "Następny konflikt" -#: ../meld/filediff.py:296 +#: ../meld/filediff.py:247 msgid "Go to the next conflict" msgstr "Przechodzi do następnego konfliktu" -#: ../meld/filediff.py:297 -msgid "Push to left" +#: ../meld/filediff.py:249 +msgid "Push to Left" msgstr "Przenieś w lewo" -#: ../meld/filediff.py:297 +#: ../meld/filediff.py:250 msgid "Push current change to the left" msgstr "Przenosi bieżącą zmianę na lewo" -#: ../meld/filediff.py:298 -msgid "Push to right" +#: ../meld/filediff.py:253 +msgid "Push to Right" msgstr "Przenieś w prawo" -#: ../meld/filediff.py:298 +#: ../meld/filediff.py:254 msgid "Push current change to the right" msgstr "Przenosi bieżącą zmianę na prawo" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:300 -msgid "Pull from left" +#: ../meld/filediff.py:258 +msgid "Pull from Left" msgstr "Wprowadź z lewej" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:259 msgid "Pull change from the left" msgstr "Wprowadza zmianę z lewej" -#: ../meld/filediff.py:301 -msgid "Pull from right" +#: ../meld/filediff.py:262 +msgid "Pull from Right" msgstr "Wprowadź z prawej" -#: ../meld/filediff.py:301 +#: ../meld/filediff.py:263 msgid "Pull change from the right" msgstr "Wprowadza zmianę z prawej" -#: ../meld/filediff.py:302 -msgid "Copy above left" +#: ../meld/filediff.py:265 +msgid "Copy Above Left" msgstr "Skopiuj powyżej lewej" -#: ../meld/filediff.py:302 +#: ../meld/filediff.py:266 msgid "Copy change above the left chunk" msgstr "Kopiuje zmianę powyżej fragmentu po lewej" -#: ../meld/filediff.py:303 -msgid "Copy below left" +#: ../meld/filediff.py:268 +msgid "Copy Below Left" msgstr "Skopiuj poniżej lewej" -#: ../meld/filediff.py:303 +#: ../meld/filediff.py:269 msgid "Copy change below the left chunk" msgstr "Kopiuje zmianę poniżej fragmentu po lewej" -#: ../meld/filediff.py:304 -msgid "Copy above right" +#: ../meld/filediff.py:271 +msgid "Copy Above Right" msgstr "Skopiuj powyżej prawej" -#: ../meld/filediff.py:304 +#: ../meld/filediff.py:272 msgid "Copy change above the right chunk" msgstr "Kopiuje zmianę powyżej fragmentu po prawej" -#: ../meld/filediff.py:305 -msgid "Copy below right" +#: ../meld/filediff.py:274 +msgid "Copy Below Right" msgstr "Skopiuj poniżej prawej" -#: ../meld/filediff.py:305 +#: ../meld/filediff.py:275 msgid "Copy change below the right chunk" msgstr "Kopiuje zmianę poniżej fragmentu po prawej" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:277 msgid "Delete" msgstr "Usuń" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:278 msgid "Delete change" msgstr "Usuwa zmianę" -#: ../meld/filediff.py:307 -msgid "Merge all changes from left" -msgstr "Scal wszystkie zmiany z lewej" +#: ../meld/filediff.py:280 +msgid "Merge All from Left" +msgstr "Scal wszystkie z lewej" -#: ../meld/filediff.py:307 +#: ../meld/filediff.py:281 msgid "Merge all non-conflicting changes from the left" msgstr "Scala wszystkie zmiany bez konfliktów z lewej" -#: ../meld/filediff.py:308 -msgid "Merge all changes from right" -msgstr "Scal wszystkie zmiany z prawej" +#: ../meld/filediff.py:283 +msgid "Merge All from Right" +msgstr "Scal wszystkie z prawej" -#: ../meld/filediff.py:308 +#: ../meld/filediff.py:284 msgid "Merge all non-conflicting changes from the right" msgstr "Scala wszystkie zmiany bez konfliktów z prawej" -#: ../meld/filediff.py:309 -msgid "Merge all non-conflicting" -msgstr "Scal wszystkie bez konfliktów" +#: ../meld/filediff.py:286 +msgid "Merge All" +msgstr "Scal wszystkie" -#: ../meld/filediff.py:309 +#: ../meld/filediff.py:287 msgid "Merge all non-conflicting changes from left and right panes" msgstr "Scala wszystkie zmiany bez konfliktów z lewej oraz z prawej strony" -#: ../meld/filediff.py:310 -msgid "Cycle through documents" +#: ../meld/filediff.py:291 +msgid "Cycle Through Documents" msgstr "Następny dokument" -#: ../meld/filediff.py:310 +#: ../meld/filediff.py:292 msgid "Move keyboard focus to the next document in this comparison" msgstr "Przechodzi do następnego dokumentu w porównywanym zestawie" -#: ../meld/filediff.py:314 -msgid "Lock scrolling" +#: ../meld/filediff.py:298 +msgid "Lock Scrolling" msgstr "Synchronizuj przewijanie" -#: ../meld/filediff.py:315 -msgid "Lock scrolling of all panes" -msgstr "Synchronizuje przewijanie wszystkich paneli" - #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:420 msgid "INS" msgstr "WST" -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:420 msgid "OVR" msgstr "ZAS" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:398 +#: ../meld/filediff.py:422 #, python-format msgid "Ln %i, Col %i" msgstr "Wrsz %i, kol %i" -#: ../meld/filediff.py:722 +#: ../meld/filediff.py:757 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " @@ -775,47 +1039,42 @@ "Filtr \"%s\" zmienił liczbę wierszy w pliku. Porównanie będzie niepoprawne. " "Więcej informacji można znaleźć w podręczniku użytkownika." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:809 -msgid "" -msgstr "" - -#: ../meld/filediff.py:996 +#: ../meld/filediff.py:1083 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Ustawianie liczby paneli" -#: ../meld/filediff.py:1002 +#: ../meld/filediff.py:1089 #, python-format msgid "[%s] Opening files" msgstr "[%s] Otwieranie plików" -#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 -#: ../meld/filediff.py:1053 +#: ../meld/filediff.py:1112 ../meld/filediff.py:1122 ../meld/filediff.py:1135 +#: ../meld/filediff.py:1141 msgid "Could not read file" msgstr "Nie można odczytać pliku" -#: ../meld/filediff.py:1027 +#: ../meld/filediff.py:1113 #, python-format msgid "[%s] Reading files" msgstr "[%s] Odczytywanie plików" -#: ../meld/filediff.py:1036 +#: ../meld/filediff.py:1123 #, python-format msgid "%s appears to be a binary file." msgstr "%s wygląda na plik binarny." -#: ../meld/filediff.py:1048 +#: ../meld/filediff.py:1136 #, python-format msgid "%s is not in encodings: %s" msgstr "%s nie jest zakodowany z użyciem: %s" -#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1170 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Analizowanie różnic" -#: ../meld/filediff.py:1148 +#: ../meld/filediff.py:1370 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" @@ -823,15 +1082,35 @@ "Filtry tekstowe są aktywne i mogą ukrywać różnice między plikami. Porównać " "pliki bez uwzględniania filtrów?" -#: ../meld/filediff.py:1154 +#: ../meld/filediff.py:1376 msgid "Files are identical" msgstr "Pliki są identyczne" -#: ../meld/filediff.py:1164 +#: ../meld/filediff.py:1384 msgid "Show without filters" msgstr "Wyświetl bez filtrów" -#: ../meld/filediff.py:1354 +#: ../meld/filediff.py:1406 +msgid "Change highlighting incomplete" +msgstr "Wyróżnianie zmian jest niepełne" + +#: ../meld/filediff.py:1407 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Niektóre zmiany nie zostały wyróżnione, ponieważ były za duże. Można " +"wymusić, aby program Meld wyróżnił większe zmiany, ale może to być wolne." + +#: ../meld/filediff.py:1415 +msgid "Keep highlighting" +msgstr "Wyróżniaj dalej" + +#: ../meld/filediff.py:1417 +msgid "_Keep highlighting" +msgstr "_Wyróżniaj dalej" + +#: ../meld/filediff.py:1549 #, python-format msgid "" "\"%s\" exists!\n" @@ -840,7 +1119,7 @@ "\"%s\" istnieje.\n" "Zastąpić?" -#: ../meld/filediff.py:1367 +#: ../meld/filediff.py:1562 #, python-format msgid "" "Error writing to %s\n" @@ -851,12 +1130,19 @@ "\n" "%s." -#: ../meld/filediff.py:1376 -#, python-format -msgid "Choose a name for buffer %i." -msgstr "Proszę wybrać nazwę dla bufora %i." +#: ../meld/filediff.py:1573 +msgid "Save Left Pane As" +msgstr "Zapis lewego panelu jako" + +#: ../meld/filediff.py:1575 +msgid "Save Middle Pane As" +msgstr "Zapis środkowego panelu jako" + +#: ../meld/filediff.py:1577 +msgid "Save Right Pane As" +msgstr "Zapis prawego panelu jako" -#: ../meld/filediff.py:1391 +#: ../meld/filediff.py:1598 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -867,7 +1153,7 @@ "\n" "Który format ma zostać użyty?" -#: ../meld/filediff.py:1407 +#: ../meld/filediff.py:1614 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -876,355 +1162,393 @@ "\"%s\" zawiera znaki, których nie można zakodować przy pomocy \"%s\"\n" "Zapisać używając kodowania UTF-8?" -#: ../meld/filediff.py:1466 -#, python-format +#: ../meld/filediff.py:1982 +msgid "Live comparison updating disabled" +msgstr "Wyłączono aktualizowanie porównań na żywo" + +#: ../meld/filediff.py:1983 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." msgstr "" -"Ponowne wczytanie spowoduje odrzucenie zmian w:\n" -"%s\n" -"\n" -"Tego działania nie będzie można cofnąć." +"Aktualizowanie porównań na żywo jest wyłączone, kiedy punkty synchronizacji " +"są aktywne. Można ręcznie odświeżać porównanie, a aktualizowanie na żywo " +"zostanie wznowione po wyczyszczeniu punktów synchronizacji." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:51 #, python-format msgid "[%s] Merging files" msgstr "[%s] Scalanie plików" -#: ../meld/meldapp.py:149 +#: ../meld/meldapp.py:95 msgid "wrong number of arguments supplied to --diff" msgstr "błędna liczba parametrów dla opcji --diff" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:99 msgid "Start with an empty window" msgstr "Rozpoczyna z pustym oknem" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:100 ../meld/meldapp.py:102 ../meld/meldapp.py:106 msgid "file" msgstr "plik" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:100 ../meld/meldapp.py:104 ../meld/meldapp.py:106 msgid "dir" msgstr "katalog" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:101 msgid "Start a version control comparison" msgstr "Rozpoczyna porównanie systemu kontroli wersji" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:103 msgid "Start a 2- or 3-way file comparison" msgstr "Rozpoczyna porównanie 2 lub 3 plików" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:105 msgid "Start a 2- or 3-way directory comparison" msgstr "Rozpoczyna porównanie 2 lub 3 katalogów" -#: ../meld/meldapp.py:157 +#: ../meld/meldapp.py:107 msgid "Start a comparison between file and dir/file" msgstr "Rozpoczyna porównanie między plikiem a katalogiem/plikiem" -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:114 msgid "Meld is a file and directory comparison tool." msgstr "Program Meld jest narzędziem do porównywania plików i katalogów." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:117 msgid "Set label to use instead of file name" msgstr "Ustawia etykietę, która ma być użyta zamiast nazwy pliku" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:119 +msgid "Open a new tab in an already running instance" +msgstr "Otwiera nową kartę w już uruchomionej kopii" + +#: ../meld/meldapp.py:122 msgid "Automatically compare all differing files on startup" msgstr "" "Automatycznie porównuje wszystkie różniące się pliki podczas uruchamiania" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:124 msgid "Ignored for compatibility" msgstr "Ignorowane - dla zachowania zgodności" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:127 msgid "Set the target file for saving a merge result" msgstr "Ustawia nazwę pliku, w którym zapisany zostanie wynik scalenia" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "Tworzy kartę dla co najwyżej 3 podanych plików lub katalogów." +#: ../meld/meldapp.py:129 +msgid "Automatically merge files" +msgstr "Automatycznie scala pliki" + +#: ../meld/meldapp.py:132 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Wczytuje zapisane porównanie z pliku porównania programu Meld" + +#: ../meld/meldapp.py:135 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Tworzy kartę różnicy dla podanych plików lub katalogów" + +#: ../meld/meldapp.py:138 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "za dużo parametrów (powinno być 0-3, jest %d)" + +#: ../meld/meldapp.py:141 +msgid "can't auto-merge less than 3 files" +msgstr "nie można automatycznie scalić mniej niż 3 plików" + +#: ../meld/meldapp.py:143 +msgid "can't auto-merge directories" +msgstr "nie można automatycznie scalić katalogów" -#: ../meld/meldapp.py:179 -#, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "zbyt wiele parametrów (powinno być 0-4, jest %d)" +#: ../meld/meldapp.py:149 +msgid "D-Bus error; comparisons will open in a new window." +msgstr "Błąd usługi D-Bus; porównanie zostanie otwarte w nowym oknie." + +#: ../meld/meldapp.py:167 +msgid "Error reading saved comparison file" +msgstr "Błąd podczas odczytywania zapisanego pliku porównania" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "porównanie więcej niż trzech katalogów nie jest możliwe" +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:89 +msgid "" +msgstr "" -#: ../meld/melddoc.py:49 ../meld/melddoc.py:50 +#: ../meld/melddoc.py:58 ../meld/melddoc.py:59 msgid "untitled" msgstr "bez nazwy" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:61 msgid "_File" msgstr "_Plik" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Nowe..." +#: ../meld/meldwindow.py:62 +msgid "_New Comparison..." +msgstr "_Nowe porównanie..." -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:63 msgid "Start a new comparison" -msgstr "Rozpoczyna nowe porównywanie" +msgstr "Rozpoczyna nowe porównanie" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:66 msgid "Save the current file" msgstr "Zapisuje bieżący plik" -#: ../meld/meldwindow.py:129 +#: ../meld/meldwindow.py:68 +msgid "Save As..." +msgstr "Zapisz jako..." + +#: ../meld/meldwindow.py:69 +msgid "Save the current file with a different name" +msgstr "Zapisuje bieżący plik pod inną nazwą" + +#: ../meld/meldwindow.py:72 msgid "Close the current file" msgstr "Zamyka bieżący plik" -#: ../meld/meldwindow.py:130 +#: ../meld/meldwindow.py:75 msgid "Quit the program" msgstr "Kończy działanie programu" -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:78 msgid "_Edit" msgstr "_Edycja" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:80 msgid "Undo the last action" msgstr "Wycofuje ostatnią czynność" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:83 msgid "Redo the last undone action" msgstr "Ponownie wykonuje ostatnio wycofaną czynność" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:85 msgid "Cut the selection" msgstr "Wycina zaznaczone" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:87 msgid "Copy the selection" msgstr "Kopiuje zaznaczone" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:89 msgid "Paste the clipboard" msgstr "Wklej zawartość schowka" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:91 +msgid "Find..." +msgstr "Wyszukiwanie..." + +#: ../meld/meldwindow.py:91 msgid "Search for text" msgstr "Znajdź tekst" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:93 msgid "Find Ne_xt" msgstr "Znajdź _następny" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:94 msgid "Search forwards for the same text" msgstr "Szuka w przód tego samego tekstu" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:96 msgid "Find _Previous" msgstr "Znajdź p_oprzedni" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:97 msgid "Search backwards for the same text" msgstr "Szuka wstecz tego samego tekstu" -#: ../meld/meldwindow.py:141 +#: ../meld/meldwindow.py:100 +msgid "_Replace..." +msgstr "Z_amień..." + +#: ../meld/meldwindow.py:101 msgid "Find and replace text" msgstr "Wyszukiwanie i zastępowanie testu" -#: ../meld/meldwindow.py:142 +#: ../meld/meldwindow.py:103 msgid "Prefere_nces" msgstr "_Preferencje" -#: ../meld/meldwindow.py:142 +#: ../meld/meldwindow.py:104 msgid "Configure the application" msgstr "Konfiguruje program" -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:107 msgid "_Changes" msgstr "_Zmiany" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:108 +msgid "Next Change" msgstr "Następna zmiana" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:109 msgid "Go to the next change" msgstr "Przechodzi do następnej zmiany" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:111 +msgid "Previous Change" msgstr "Poprzednia zmiana" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:112 msgid "Go to the previous change" msgstr "Przechodzi do poprzedniej zmiany" -#: ../meld/meldwindow.py:147 -msgid "Open externally" +#: ../meld/meldwindow.py:114 +msgid "Open Externally" msgstr "Otwórz zewnętrznie" -#: ../meld/meldwindow.py:147 +#: ../meld/meldwindow.py:115 msgid "Open selected file or directory in the default external application" msgstr "Otwiera wybrany plik lub katalog w domyślnym programie" -#: ../meld/meldwindow.py:149 +#: ../meld/meldwindow.py:119 msgid "_View" msgstr "_Widok" -#: ../meld/meldwindow.py:150 -msgid "File status" +#: ../meld/meldwindow.py:120 +msgid "File Status" msgstr "Stan pliku" -#: ../meld/meldwindow.py:151 -msgid "Version status" +#: ../meld/meldwindow.py:121 +msgid "Version Status" msgstr "Stan wersji" -#: ../meld/meldwindow.py:152 -msgid "File filters" -msgstr "Filtry plików" - -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:124 msgid "Stop the current action" msgstr "Przerywa bieżące działanie" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:127 msgid "Refresh the view" msgstr "Odświeża widok" -#: ../meld/meldwindow.py:155 -msgid "Reload" -msgstr "Odśwież" - -#: ../meld/meldwindow.py:155 -msgid "Reload the comparison" -msgstr "Odświeża porównanie" - -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:130 msgid "_Tabs" msgstr "_Karty" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:131 msgid "_Previous Tab" msgstr "_Poprzednia karta" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:132 msgid "Activate previous tab" msgstr "Przechodzi do poprzedniej karty" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:134 msgid "_Next Tab" msgstr "_Następna karta" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:135 msgid "Activate next tab" msgstr "Przechodzi do następnej karty" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:138 msgid "Move Tab _Left" msgstr "Przesuń kartę w _lewo" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:139 msgid "Move current tab to left" msgstr "Przesuwa bieżącą kartę w lewo" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:142 msgid "Move Tab _Right" msgstr "Przesuń kartę w p_rawo" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:143 msgid "Move current tab to right" msgstr "Przesuwa bieżącą kartę w prawo" -#: ../meld/meldwindow.py:163 +#: ../meld/meldwindow.py:146 msgid "_Help" msgstr "Pomo_c" -#: ../meld/meldwindow.py:164 +#: ../meld/meldwindow.py:147 msgid "_Contents" msgstr "_Spis treści" -#: ../meld/meldwindow.py:164 +#: ../meld/meldwindow.py:148 msgid "Open the Meld manual" msgstr "Otwiera podręcznik programu Meld" -#: ../meld/meldwindow.py:165 +#: ../meld/meldwindow.py:149 msgid "Report _Bug" msgstr "Zgłoś _błąd" -#: ../meld/meldwindow.py:165 +#: ../meld/meldwindow.py:150 msgid "Report a bug in Meld" msgstr "Zgłoszenie błędu w programie Meld" -#: ../meld/meldwindow.py:166 +#: ../meld/meldwindow.py:153 msgid "About this program" msgstr "Informacje o programie" -#: ../meld/meldwindow.py:169 -msgid "Full Screen" +#: ../meld/meldwindow.py:157 +msgid "Fullscreen" msgstr "Pełny ekran" -#: ../meld/meldwindow.py:169 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:158 +msgid "View the comparison in fullscreen" msgstr "Wyświetla porównanie na pełnym ekranie" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:160 msgid "_Toolbar" msgstr "Pasek _narzędziowy" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:161 msgid "Show or hide the toolbar" msgstr "Wyświetla/ukrywa pasek narzędziowy" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:163 msgid "_Statusbar" msgstr "Pasek _stanu" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:164 msgid "Show or hide the statusbar" msgstr "Wyświetla/ukrywa pasek stanu" -#: ../meld/meldwindow.py:538 +#: ../meld/meldwindow.py:173 +msgid "Open Recent" +msgstr "Otwórz ostatnie" + +#: ../meld/meldwindow.py:174 +msgid "Open recent files" +msgstr "Otwiera ostatnie pliki" + +#: ../meld/meldwindow.py:601 msgid "Switch to this tab" msgstr "Przechodzi do tej karty" #. exit at first non found directory + file -#: ../meld/meldwindow.py:629 +#: ../meld/meldwindow.py:734 msgid "Cannot compare a mixture of files and directories.\n" msgstr "Jednoczesne porównanie plików i katalogów nie jest możliwe.\n" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:189 msgid "[None]" msgstr "[Brak]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Zapisz poprawkę jako..." - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:49 msgid "label" msgstr "etykieta" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:49 msgid "pattern" msgstr "wzorzec" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Dostępne jedynie, gdy pakiet gnome-python-desktop jest zainstalowany" +#: ../meld/preferences.py:168 ../meld/preferences.py:240 +msgid "Only available if you have PyGtkSourceView 2 installed" +msgstr "Dostępne jedynie, gdy PyGtkSourceView 2 jest zainstalowane" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 +#: ../meld/preferences.py:356 msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" msgstr "Kopie zapasowe\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 +#: ../meld/preferences.py:358 msgid "" "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " "Desktop.ini\n" @@ -1233,301 +1557,225 @@ "V100 .Trashes Thumbs.db Desktop.ini\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 +#: ../meld/preferences.py:360 #, python-format msgid "Version Control\t1\t%s\n" msgstr "Kontrola wersji\t1\t%s\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Pliki binarne\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +#: ../meld/preferences.py:362 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +msgstr "Pliki binarne\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Multimedia\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +#: ../meld/preferences.py:364 +msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +msgstr "Multimedia\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 +#: ../meld/preferences.py:366 msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" msgstr "Słowa kluczowe CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 +#: ../meld/preferences.py:368 msgid "C++ comment\t0\t//.*\n" msgstr "Komentarze języka C++\t0\t//.*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 +#: ../meld/preferences.py:370 msgid "C comment\t0\t/\\*.*?\\*/\n" msgstr "Komentarze języka C\t0\t/\\*.*?\\*/\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 +#: ../meld/preferences.py:372 msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" msgstr "Wszystkie białe znaki\t0\t[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 +#: ../meld/preferences.py:374 msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" msgstr "Początkowe białe znaki\t0\t^[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:253 +#: ../meld/preferences.py:376 msgid "Script comment\t0\t#.*" msgstr "Komentarze w skryptach\t0\t#.*" -#: ../meld/vcview.py:119 -msgid "Co_mmit" -msgstr "Zatwierdź" - -#: ../meld/vcview.py:119 -msgid "Commit" -msgstr "Zatwierdź" - -#: ../meld/vcview.py:120 -msgid "_Update" -msgstr "Zaktualiz_uj" - -#: ../meld/vcview.py:120 -msgid "Update" -msgstr "Zaktualizuj" - -#: ../meld/vcview.py:121 -msgid "Add to VC" -msgstr "Dodaje do systemu kontroli wersji" - -#: ../meld/vcview.py:122 -msgid "Add _Binary" -msgstr "Dodaj plik _binarny" - -#: ../meld/vcview.py:122 -msgid "Add binary to VC" -msgstr "Dodaje plik binarny do systemu kontroli wersji" - -#: ../meld/vcview.py:123 -msgid "Remove from VC" -msgstr "Usuwa z systemu kontroli wersji" - -#: ../meld/vcview.py:124 -msgid "_Resolved" -msgstr "_Rozwiązane" - -#: ../meld/vcview.py:124 -msgid "Mark as resolved for VC" -msgstr "Oznacza konflikt jako rozwiązany w systemie kontroli wersji" - -#: ../meld/vcview.py:125 -msgid "Revert to original" -msgstr "Przywróć wersję pierwotną" - -#: ../meld/vcview.py:126 -msgid "Delete locally" -msgstr "Usuwa plik lokalnie" - -#: ../meld/vcview.py:130 -msgid "_Flatten" -msgstr "U_prość" - -#: ../meld/vcview.py:130 -msgid "Flatten directories" -msgstr "Upraszcza wyświetlaną strukturę katalogów" - -#: ../meld/vcview.py:131 -msgid "_Modified" -msgstr "Z_modyfikowane" - -#: ../meld/vcview.py:132 -msgid "_Normal" -msgstr "_Zwykłe" - -#: ../meld/vcview.py:132 -msgid "Show normal" -msgstr "Wyświetla zwykłe" - -#: ../meld/vcview.py:133 -msgid "Non _VC" -msgstr "_Poza systemem kontroli wersji" - -#: ../meld/vcview.py:133 -msgid "Show unversioned files" -msgstr "Wyświetla pliki poza systemem kontroli wersji" - -#: ../meld/vcview.py:134 -msgid "Ignored" -msgstr "Z_ignorowane" +#: ../meld/recent.py:104 +msgid "Version control:" +msgstr "System kontroli wersji:" -#: ../meld/vcview.py:134 -msgid "Show ignored files" -msgstr "Wyświetla zignorowane pliki" - -#: ../meld/vcview.py:176 ../meld/vcview.py:300 +#: ../meld/vcview.py:205 ../meld/vcview.py:363 msgid "Location" msgstr "Położenie" -#: ../meld/vcview.py:177 +#: ../meld/vcview.py:206 msgid "Status" msgstr "Stan" -#: ../meld/vcview.py:178 -msgid "Rev" +#: ../meld/vcview.py:207 +msgid "Revision" msgstr "Wersja" -#: ../meld/vcview.py:180 +#: ../meld/vcview.py:208 msgid "Options" msgstr "Opcje" -#: ../meld/vcview.py:232 -msgid "Choose one Version Control" -msgstr "Proszę wybrać jeden system kontroli wersji" - -#: ../meld/vcview.py:233 -msgid "Only one Version Control in this directory" -msgstr "W tym katalogu może być użyty tylko jeden system kontroli wersji" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:246 +#: ../meld/vcview.py:273 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "Program %s nie jest zainstalowany" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:250 -msgid "Invalid Repository" +#: ../meld/vcview.py:277 +msgid "Invalid repository" msgstr "Nieprawidłowe repozytorium" -#: ../meld/vcview.py:259 +#: ../meld/vcview.py:286 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:288 ../meld/vcview.py:296 +msgid "None" +msgstr "Brak" + +#: ../meld/vcview.py:307 +msgid "No valid version control system found in this folder" +msgstr "" +"W tym katalogu nie odnaleziono żadnego prawidłowego systemu kontroli wersji" + +#: ../meld/vcview.py:309 +msgid "Only one version control system found in this folder" +msgstr "W tym katalogu odnaleziono tylko jeden system kontroli wersji" + +#: ../meld/vcview.py:311 +msgid "Choose which version control system to use" +msgstr "Proszę wybrać system kontroli wersji do użycia" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:300 +#: ../meld/vcview.py:363 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:348 -msgid "(Empty)" -msgstr "(Pusty)" - -#: ../meld/vcview.py:386 +#: ../meld/vcview.py:377 ../meld/vcview.py:385 #, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Pobieranie różnic" +msgid "Scanning %s" +msgstr "Skanowanie %s" -#: ../meld/vcview.py:394 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Wprowadzanie poprawki" +#: ../meld/vcview.py:418 +msgid "(Empty)" +msgstr "(Pusty)" -#: ../meld/vcview.py:479 -msgid "Select some files first." -msgstr "Należy wybrać najpierw jakieś pliki." +#: ../meld/vcview.py:638 +msgid "Remove folder and all its files?" +msgstr "Usunąć katalog i wszystkie zawarte w nim pliki?" -#: ../meld/vcview.py:552 -#, python-format +#: ../meld/vcview.py:640 msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"\n" -" Uruchomienie programu \"patch\" nie powiodło się.\n" -" \n" -" Być może program \"GNU patch\" nie jest zainstalowany,\n" -" lub dostępna jest nieprzetestowana wersja %s.\n" -" \n" -" Proszę wysłać e-mail z informacją o błędzie na adres:\n" -" meld-list@gnome.org\n" -" \n" -" Proszę dołączyć następujące informacje:\n" -" \n" -" - wersja programu meld: \"%s\"\n" -" - rodzaj systemu kontroli wersji: \"%s\"\n" -" - wersja systemu kontroli wersji: \"X.Y.Z\"\n" -" - wynik wywołania \"%s somefile.txt\"\n" -" - polecenie patch: \"%s\"\n" -" (nie należy jej uruchamiać, wystarczy podać\n" -" wiersz poleceń) \n" -" \n" -" Należy zastąpić \"X.Y.Z\" aktualną wersją \n" -" używanego systemu kontroli wersji.\n" -" " - -#: ../meld/ui/findbar.py:127 +"Spowoduje to usunięcie z systemu kontroli wersji wszystkich zaznaczonych " +"plików i katalogów, a także wszystkich plików w zaznaczonych katalogach." + +#: ../meld/vcview.py:674 #, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Błąd w wyrażeniu regularnym\n" -"\"%s\"" +msgid "Error removing %s" +msgstr "Błąd podczas usuwania %s" + +#: ../meld/ui/findbar.py:143 +msgid "Regular expression error" +msgstr "Błąd w wyrażeniu regularnym" -#: ../meld/ui/historyentry.py:293 +#: ../meld/ui/historyentry.py:381 msgid "_Browse..." msgstr "_Przeglądaj..." -#: ../meld/ui/historyentry.py:301 +#: ../meld/ui/historyentry.py:389 msgid "Path" msgstr "Ścieżka" -#: ../meld/ui/historyentry.py:302 +#: ../meld/ui/historyentry.py:390 msgid "Path to file" msgstr "Ścieżka do pliku" -#: ../meld/ui/historyentry.py:303 +#: ../meld/ui/historyentry.py:391 msgid "Pop up a file selector to choose a file" msgstr "Można użyć okna wyboru plików, aby wybrać plik" -#: ../meld/ui/historyentry.py:441 +#: ../meld/ui/historyentry.py:529 msgid "Select directory" msgstr "Wybierz katalog" -#: ../meld/ui/historyentry.py:445 +#: ../meld/ui/historyentry.py:533 msgid "Select file" msgstr "Wybierz plik" -#: ../meld/ui/notebooklabel.py:60 +#: ../meld/ui/notebooklabel.py:63 msgid "Close tab" msgstr "Zamknij kartę" +#: ../meld/ui/vcdialogs.py:57 +msgid "No files will be committed" +msgstr "Żadne pliki nie zostaną zatwierdzone" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Scalone" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Podstawa" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Lokalne" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Zdalne" + #. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 +#: ../meld/vc/_vc.py:62 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" msgstr "" -"Zignorowany:Bez wersji:::Błąd::Nowy:Zmodyfikowany:Konflikt:Usunięty:Brakujący" +"Zignorowany:Bez wersji:::Błąd::Nowo dodany:Zmodyfikowany:Konflikt:Usunięty:" +"Brakujący:Nieobecny" -#: ../meld/vc/cvs.py:163 +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 #, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Błąd podczas zamiany na wyrażenie regularne\n" -"Użyty wzorzec: \"%s\"\n" -"Błąd: \"%s\"" +msgid "%s in %s" +msgstr "%s w %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d niewysłane zatwierdzenie" +msgstr[1] "%d niewysłane zatwierdzenia" +msgstr[2] "%d niewysłanych zatwierdzeń" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d gałęzi" +msgstr[1] "%d gałęziach" +msgstr[2] "%d gałęziach" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Zmieniono tryb z %s na %s" diff -Nru meld-1.5.3/po/POTFILES.in meld-3.11.0/po/POTFILES.in --- meld-1.5.3/po/POTFILES.in 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/POTFILES.in 2014-02-16 20:23:22.000000000 +0000 @@ -1,5 +1,9 @@ bin/meld data/meld.desktop.in +[type: gettext/xml]data/meld.appdata.xml.in +[type: gettext/xml]data/mime/meld.xml.in +data/org.gnome.meld.gschema.xml +[type: gettext/glade]data/ui/application.ui [type: gettext/glade]data/ui/dirdiff.ui [type: gettext/glade]data/ui/EditableList.ui [type: gettext/glade]data/ui/filediff.ui @@ -7,19 +11,25 @@ [type: gettext/glade]data/ui/meldapp.ui [type: gettext/glade]data/ui/patch-dialog.ui [type: gettext/glade]data/ui/preferences.ui +[type: gettext/glade]data/ui/tab-placeholder.ui [type: gettext/glade]data/ui/vcview.ui meld/dirdiff.py meld/filediff.py meld/filemerge.py +meld/gutterrendererchunk.py meld/meldapp.py +meld/meldbuffer.py meld/melddoc.py meld/meldwindow.py meld/misc.py meld/patchdialog.py meld/preferences.py -meld/vcview.py +meld/recent.py meld/ui/findbar.py meld/ui/historyentry.py meld/ui/notebooklabel.py +meld/ui/vcdialogs.py +meld/vc/git.py +meld/vc/_null.py meld/vc/_vc.py -meld/vc/cvs.py +meld/vcview.py diff -Nru meld-1.5.3/po/pt_BR.po meld-3.11.0/po/pt_BR.po --- meld-1.5.3/po/pt_BR.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/pt_BR.po 2014-02-16 20:23:22.000000000 +0000 @@ -1,5 +1,5 @@ # Brazilian Portuguese translation of meld. -# Copyright (C) 2004 Free Software Foundation, Inc. +# Copyright (C) 2013 Free Software Foundation, Inc. # This file is distributed under the same license as the meld package. # Raphael Higino , 2004. # Djavan Fagundes , 2008, 2009. @@ -7,318 +7,477 @@ # Fabrício Godoy , 2008. # Leonardo Ferreira Fontenelle , 2008. # Gabriel Speckhahn , 2011. +# Florêncio Neves , 2012. +# Enrico Nicoletto , 2013. +# Rafael Ferreira , 2013. +# msgid "" msgstr "" "Project-Id-Version: meld\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-07-24 04:25+0000\n" -"PO-Revision-Date: 2011-07-25 10:01-0200\n" -"Last-Translator: Gabriel Speckhahn \n" +"POT-Creation-Date: 2013-10-23 22:09+0000\n" +"PO-Revision-Date: 2013-10-24 11:31-0300\n" +"Last-Translator: Enrico Nicoletto \n" "Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Virtaal 0.7.0\n" +"X-Generator: Poedit 1.5.7\n" "X-Project-Style: gnome\n" -#: ../bin/meld:96 +#: ../bin/meld:107 msgid "Cannot import: " msgstr "Não foi possível importar: " -#: ../bin/meld:99 +#: ../bin/meld:110 #, c-format msgid "Meld requires %s or higher." msgstr "O Meld requer %s ou superior." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Compare e mescle seus arquivos" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Visualizador de diff" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Visualizador de diff Meld" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Compare e mescle seus arquivos" + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Descrição da comparação do Meld" + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "Sobre o Meld" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "http://meldmerge.org/" +msgstr "http://meldmerge.org/" + +#: ../data/ui/application.ui.h:5 +msgid "Website" +msgstr "Site da web" + +#: ../data/ui/application.ui.h:6 +msgid "translator-credits" +msgstr "" +"Raphael Higino \n" +"Djavan Fagundes \n" +"César Veiga \n" +"Fabrício Godoy \n" +"Leonardo Ferreira Fontenelle \n" +"Gabriel Speckhahn \n" +"Florêncio Neves \n" +"Enrico Nicoletto \n" +"Rafael Ferreira " + +#: ../data/ui/application.ui.h:7 +msgid "_Preferences" +msgstr "Preferê_ncias" + +#: ../data/ui/application.ui.h:8 +msgid "_Help" +msgstr "Aj_uda" + +#: ../data/ui/application.ui.h:9 +msgid "_About Meld" +msgstr "_Sobre o Meld" + +#: ../data/ui/application.ui.h:10 +msgid "_Quit" +msgstr "_Sair" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Comparar" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Compara os arquivos selecionados" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Copiar para a _esquerda" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Copia para a esquerda" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Copiar para a _direita" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Copia para a direita" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Exclui os selecionados" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1387 +msgid "Hide" +msgstr "Ocultar" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Oculta os selecionados" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Ignorar maiúsculas/minúsculas em nomes de arquivos" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "Não distingue nomes de arquivo que diferem apenas pela maiusculização" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Iguais" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Mostra os iguais" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Novos" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Mostra os novos" + +#: ../data/ui/dirdiff.ui.h:16 +msgid "Modified" +msgstr "Modificados" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Mostra os modificados" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Filtros" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Definir filtros ativos" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Ativo" +msgid "Editable List" +msgstr "Lista editável" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Adicionar novo filtro" +msgid "Active" +msgstr "Ativo" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Lista editável" +msgid "Column Name" +msgstr "Nome da coluna" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "Mover para _baixo" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Adicionar" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:647 +msgid "_Remove" +msgstr "_Remover" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Move o item para cima" + +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "Mover para _cima" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" msgstr "Move o item para baixo" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Move o item para cima" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Mover para _baixo" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:157 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:323 +#: ../meld/vcview.py:176 msgid "Name" msgstr "Nome" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Padrão" -#: ../data/ui/EditableList.ui.h:10 +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Adicionar novo filtro" + +#: ../data/ui/EditableList.ui.h:13 msgid "Remove selected filter" msgstr "Remove o filtro selecionado" -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:122 -msgid "_Add" -msgstr "_Adicionar" - -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:124 -msgid "_Remove" -msgstr "_Remover" - #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Salvar arquivos modificados?" +msgid "Save changes to documents before closing?" +msgstr "Salvar mudanças em documentos antes de fechar?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Alguns arquivos foram modificados.\n" -"Quais deles você gostaria de salvar?" +msgid "If you don't save, changes will be permanently lost." +msgstr "Se você não salvar, as mudanças serão perdidas permanentemente." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "_Fechar sem salvar" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Descartar alterações" +msgid "_Cancel" +msgstr "_Cancelar" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "S_alvar selecionados" +msgid "_Save" +msgstr "_Salvar" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Esse arquivo não pode ser escrito. Você pode clicar aqui para desbloquear " +"esse arquivo e fazer as mudanças de qualquer forma, mas elas devem ser " +"salvas em um novo arquivo." + +#: ../data/ui/filediff.ui.h:7 ../meld/filediff.py:294 +msgid "Lock scrolling of all panes" +msgstr "Bloqueia a rolagem de todos os painéis" + +#: ../data/ui/filediff.ui.h:8 +msgid "Revert unsaved changes to documents?" +msgstr "Reverter mudanças em documentos?" + +#: ../data/ui/filediff.ui.h:9 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "" +"Mudanças feitas nos seguintes documentos serão perdidas permanentemente:\n" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "E_xpressão regular" +msgid "_Replace" +msgstr "_Substituir" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" -msgstr "Substituir _Todos" +msgstr "Substituir _todos" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Substituir _por" +msgid "_Previous" +msgstr "_Anterior" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "Pa_lavra inteira" +msgid "_Next" +msgstr "_Próximo" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "Diferenciar _maiúsculas de minúsculas" +msgid "Find:" +msgstr "Localizar:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Próximo" +msgid "Replace _with:" +msgstr "Substituir _por:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Anterior" +msgid "_Match case" +msgstr "Diferenciar _maiúsculas de minúsculas" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "_Substituir" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Pa_lavra inteira" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "Pesqui_sar por" - -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Escolher arquivos" - -#: ../data/ui/meldapp.ui.h:2 -msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" -msgstr "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" - -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Diretório" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Meu" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Original" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Outro" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Selecionar diretório do controle de versão" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Comparação de _diretórios" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "Comparação de _arquivos" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "Comparação de _três vias" - -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "Navegador do controle de _versões" - -#: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "Raphael Higino \n" -"Djavan Fagundes \n" -"César Veiga \n" -"Fabrício Godoy \n" -"Leonardo Ferreira Fontenelle \n" -"Gabriel Speckhahn " +msgid "Regular e_xpression" +msgstr "E_xpressão regular" +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Voltou ao início" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Copiar para a área de transferência" +msgid "Format as Patch" +msgstr "Formatar como patch" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Criar patch" +msgid "Use differences between:" +msgstr "Usar as diferenças entre:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Cria um patch" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" -msgstr "Painéis esquerdo e direito" +msgstr "Painéis esquerdo e central" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Painéis central e direito" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Usar as diferenças entre:" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "_Reverter direção do patch" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Copiar para a área de transferência" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:123 +msgid "Save Patch" +msgstr "Salvar patch" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Exibir" +msgid "Left is remote, right is local" +msgstr "Esquerda é remoto, direita é local" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Não _dividir uma palavra em duas linhas" +msgid "Left is local, right is remote" +msgstr "Esquerda é local, direita é remoto" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Comando do edito_r:" +msgid "Meld Preferences" +msgstr "Preferências do Meld" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Editor" +msgid "Font" +msgstr "Fonte" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Habilitar _quebra de texto" +msgid "_Use the system fixed width font" +msgstr "_Usar a fonte de largura fixa do sistema" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Codificação" +msgid "_Editor font:" +msgstr "_Fonte do editor:" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Editor externo" +msgid "Display" +msgstr "Exibir" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filtros de arquivos" +msgid "_Tab width:" +msgstr "_Largura da tabulação:" #: ../data/ui/preferences.ui.h:9 -msgid "Font" -msgstr "Fonte" +msgid "_Insert spaces instead of tabs" +msgstr "_Inserir espaços em vez de tabulações" #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Ignorar as alterações que inserem ou excluem linhas vazias" +msgid "Enable text _wrapping" +msgstr "Habilitar _quebra de texto" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Ignorar ligações simbólicas" +msgid "Do not _split words over two lines" +msgstr "Não _dividir uma palavra em duas linhas" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Carregando" +msgid "Highlight _current line" +msgstr "Desta_car a linha atual" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Preferências do Meld" - -#: ../data/ui/preferences.ui.h:14 msgid "Show _line numbers" msgstr "Mostrar números de _linhas" -#: ../data/ui/preferences.ui.h:15 +#: ../data/ui/preferences.ui.h:14 msgid "Show w_hitespace" msgstr "Mostrar _espaço em branco" +#: ../data/ui/preferences.ui.h:15 +msgid "Use s_yntax highlighting" +msgstr "Usar de_staque de sintaxe" + #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filtros de texto" +msgid "External Editor" +msgstr "Editor externo" #: ../data/ui/preferences.ui.h:17 msgid "Use _default system editor" msgstr "Usar o e_ditor padrão do sistema" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Usar de_staque de sintaxe" +msgid "Edito_r command:" +msgstr "Comando do edito_r:" #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Ao carregar, tenta esses codecs, na ordem. (p.ex. utf8, iso8859)" +msgid "Editor" +msgstr "Editor" #: ../data/ui/preferences.ui.h:20 +msgid "Shallow Comparison" +msgstr "Comparação superficial" + +#: ../data/ui/preferences.ui.h:21 +msgid "C_ompare files based only on size and timestamp" +msgstr "C_omparar arquivos baseando-se apenas no tamanho e marca de tempo" + +#: ../data/ui/preferences.ui.h:22 +msgid "_Timestamp resolution:" +msgstr "Resolução da marca de _tempo:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Symbolic Links" +msgstr "Ligações simbólicas" + +#: ../data/ui/preferences.ui.h:24 +msgid "Ignore symbolic links" +msgstr "Ignorar ligações simbólicas" + +#: ../data/ui/preferences.ui.h:25 +msgid "Visible Columns" +msgstr "Colunas visíveis" + +#: ../data/ui/preferences.ui.h:26 +msgid "Folder Comparisons" +msgstr "Comparação de pastas" + +#: ../data/ui/preferences.ui.h:27 +msgid "Version Comparisons" +msgstr "Comparação de versões" + +#: ../data/ui/preferences.ui.h:28 +msgid "_When comparing file revisions:" +msgstr "_Ao comparar revisões de arquivo:" + +#: ../data/ui/preferences.ui.h:29 +msgid "Commit Messages" +msgstr "Mensagens de commit" + +#: ../data/ui/preferences.ui.h:30 +msgid "Show _right margin at:" +msgstr "Mostrar ma_rgem esquerda em:" + +#: ../data/ui/preferences.ui.h:31 +msgid "Automatically _break lines at right margin on commit" +msgstr "Que_brar linhas automaticamente na margem esquerda no commit" + +#: ../data/ui/preferences.ui.h:32 +msgid "Version Control" +msgstr "Controle de versões" + +#: ../data/ui/preferences.ui.h:33 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " @@ -328,7 +487,11 @@ "arquivos e diretórios por nome. Cada padrão é um lista com caracteres " "curingas (* ou ?) separados por espaços." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:34 ../meld/meldwindow.py:104 +msgid "File Filters" +msgstr "Filtros de arquivos" + +#: ../data/ui/preferences.ui.h:35 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -342,175 +505,259 @@ "da comparação. Se a expressão contém grupos, somente os grupos são " "substituídos. Veja o manual do usuário para maiores detalhes." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "_Fonte do editor:" +#: ../data/ui/preferences.ui.h:36 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Ignorar alterações que inserem ou excluem linhas vazias" -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "_Inserir espaços em vez de tabulações" +#: ../data/ui/preferences.ui.h:37 +msgid "Text Filters" +msgstr "Filtros de texto" -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "_Largura da tabulação:" +#: ../data/ui/preferences.ui.h:38 +msgid "Loading" +msgstr "Carregando" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "_Usar a fonte de largura fixa do sistema" +#: ../data/ui/preferences.ui.h:39 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "Ao carregar, tentar esses codecs, em ordem. (p.ex. utf8, iso8859)" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Fazer commit de arquivos" +#: ../data/ui/preferences.ui.h:40 +msgid "Encoding" +msgstr "Codificação" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Opções de comparação" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:616 +msgid "New comparison" +msgstr "Nova comparação" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Comparação de arquivos" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Comparação de diretórios" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Visão de controle de versões" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Comparação em _3 modos" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Selecione o terceiro arquivo" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Selecione o segundo arquivo" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Selecione o primeiro arquivo" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Selecione a primeira pasta" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Selecione a segunda pasta" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Selecione a terceira pasta" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Selecione uma pasta com controle de versões" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Limpar comparação" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Comparar" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Data" +msgid "Co_mmit..." +msgstr "Sub_meter..." #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Cópia local contra outra revisão remota" +msgid "Commit changes to version control" +msgstr "Submete alterações para um controle de versões" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Cópia local contra a mesma revisão remota" +msgid "_Update" +msgstr "At_ualizar" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Mensagens de log" +msgid "Update working copy from version control" +msgstr "Atualiza a cópia de trabalho do controle de versões" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Logs anteriores" - -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:180 -msgid "Tag" -msgstr "Marca" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "Log do controle de versão" - -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "_Comparar" +msgid "_Push" +msgstr "_Enviar" -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Compara os selecionados" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Envia as alterações locais para remoto" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Adiciona a um controle de versões" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Remover de um controle de versões" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Ma_rcar como resolvido" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Marca como resolvido no controle de versões" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Re_verter" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Reverte uma cópia de trabalho para o estado original" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Exclui da cópia de trabalho" -#: ../meld/dirdiff.py:228 -msgid "Copy _Left" -msgstr "Copiar para a _esquerda" - -#: ../meld/dirdiff.py:228 -msgid "Copy to left" -msgstr "Copia para a esquerda" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "Ac_hatar" -#: ../meld/dirdiff.py:229 -msgid "Copy _Right" -msgstr "Copiar para a _direita" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Achata diretórios" -#: ../meld/dirdiff.py:229 -msgid "Copy to right" -msgstr "Copia para a direita" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "_Modificado" -#: ../meld/dirdiff.py:230 -msgid "Delete selected" -msgstr "Exclui os selecionados" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Mostra arquivos modificados" -#: ../meld/dirdiff.py:231 ../meld/filediff.py:1137 -msgid "Hide" -msgstr "Ocultar" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Normal" -#: ../meld/dirdiff.py:231 -msgid "Hide selected" -msgstr "Oculta os selecionados" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Mostra os arquivos normais" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "Sem controle de versão" -#: ../meld/dirdiff.py:233 ../meld/filediff.py:287 ../meld/vcview.py:119 -msgid "Open selected" -msgstr "Abre os selecionados" - -#: ../meld/dirdiff.py:237 -msgid "Case" -msgstr "Maiusculização" - -#: ../meld/dirdiff.py:237 -msgid "Ignore case of entries" -msgstr "Ignora maiúsc./minúsc. das entradas" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Mostra os arquivos sem controle de versão" -#: ../meld/dirdiff.py:238 -msgid "Same" -msgstr "Iguais" +#: ../data/ui/vcview.ui.h:26 +msgid "Ignored" +msgstr "Ignorado" -#: ../meld/dirdiff.py:238 -msgid "Show identical" -msgstr "Mostra os iguais" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Mostra os arquivos ignorados" -#: ../meld/dirdiff.py:239 -msgid "New" -msgstr "Novos" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Submete" -#: ../meld/dirdiff.py:239 -msgid "Show new" -msgstr "Mostra os novos" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Fazer commit de arquivos" -#: ../meld/dirdiff.py:240 -msgid "Modified" -msgstr "Modificados" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Mensagens de log" -#: ../meld/dirdiff.py:240 ../meld/vcview.py:132 -msgid "Show modified" -msgstr "Mostrar os modificados" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Logs anteriores:" -#: ../meld/dirdiff.py:242 -msgid "Filters" -msgstr "Filtros" +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "Sub_meter" -#: ../meld/dirdiff.py:242 -msgid "Set active filters" -msgstr "Definir filtros ativos" +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Levar as alterações locais para remoto?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"Os commits para serem enviados são determinados pelo seu sistema de controle " +"de versão." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "En_viar commits (push)" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:341 +msgid "Size" +msgstr "Tamanho" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:349 +msgid "Modification time" +msgstr "Hora da modificação" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:357 +msgid "Permissions" +msgstr "Permissões" -#: ../meld/dirdiff.py:359 +#: ../meld/dirdiff.py:496 #, python-format msgid "Hide %s" msgstr "Ocultar %s" -#: ../meld/dirdiff.py:462 ../meld/dirdiff.py:475 ../meld/vcview.py:305 -#: ../meld/vcview.py:333 +#: ../meld/dirdiff.py:623 ../meld/dirdiff.py:645 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Varrendo %s" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:745 #, python-format msgid "[%s] Done" msgstr "[%s] Concluído" -#: ../meld/dirdiff.py:578 +#: ../meld/dirdiff.py:751 msgid "Multiple errors occurred while scanning this folder" msgstr "Ocorreram vários erros ao varrer este diretório" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:752 msgid "Files with invalid encodings found" msgstr "Arquivos com codificações inválidas encontrados" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:754 msgid "Some files were in an incorrect encoding. The names are something like:" msgstr "" "Alguns arquivos estavam com uma codificação incorreta. Os nomes são algo " "como:" -#: ../meld/dirdiff.py:583 +#: ../meld/dirdiff.py:756 msgid "Files hidden by case insensitive comparison" msgstr "Arquivos ocultos pela comparação não sensível a maiusculização" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:585 +#: ../meld/dirdiff.py:758 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -519,16 +766,17 @@ "minúsculas em um sistema de arquivos que diferencia. Os seguintes arquivos " "neste diretório ficam ocultos:" -#: ../meld/dirdiff.py:596 +#: ../meld/dirdiff.py:769 #, python-format msgid "'%s' hidden by '%s'" msgstr "\"%s\" ocultado por \"%s\"" -#: ../meld/dirdiff.py:621 ../meld/filediff.py:1001 ../meld/filediff.py:1141 +#: ../meld/dirdiff.py:794 ../meld/filediff.py:1103 ../meld/filediff.py:1389 +#: ../meld/filediff.py:1419 ../meld/filediff.py:1421 msgid "Hi_de" msgstr "Ocu_ltar" -#: ../meld/dirdiff.py:671 +#: ../meld/dirdiff.py:825 #, python-format msgid "" "'%s' exists.\n" @@ -537,240 +785,255 @@ "\"%s\" já existe.\n" "Sobrescrevê-lo?" -#: ../meld/dirdiff.py:678 +#: ../meld/dirdiff.py:833 +msgid "Error copying file" +msgstr "Erro ao copiar arquivo" + +#: ../meld/dirdiff.py:834 #, python-format msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Erro ao copiar \"%s\" para \"%s\"\n" +"Não foi possível copiar %s\n" +"para %s.\n" "\n" -"%s." +"%s" -#: ../meld/dirdiff.py:696 ../meld/vcview.py:505 +#: ../meld/dirdiff.py:857 #, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"\"%s\" é um diretório.\n" -"Remover recursivamente?" - -#: ../meld/dirdiff.py:703 ../meld/vcview.py:510 -#, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Erro ao remover %s\n" -"\n" -"%s." +msgid "Error deleting %s" +msgstr "Erro ao excluir %s" -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:988 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i segundo" msgstr[1] "%i segundos" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:989 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i minuto" msgstr[1] "%i minutos" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:990 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i hora" msgstr[1] "%i horas" -#: ../meld/dirdiff.py:718 +#: ../meld/dirdiff.py:991 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i dia" msgstr[1] "%i dias" -#: ../meld/dirdiff.py:719 +#: ../meld/dirdiff.py:992 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i semana" msgstr[1] "%i semanas" -#: ../meld/dirdiff.py:720 +#: ../meld/dirdiff.py:993 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i mês" msgstr[1] "%i meses" -#: ../meld/dirdiff.py:721 +#: ../meld/dirdiff.py:994 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i ano" msgstr[1] "%i anos" -#: ../meld/filediff.py:288 -msgid "Format as patch..." +#: ../meld/filediff.py:222 +msgid "Format as Patch..." msgstr "Formatar como patch..." -#: ../meld/filediff.py:288 +#: ../meld/filediff.py:223 msgid "Create a patch using differences between files" msgstr "Cria um patch usando as diferenças entre os arquivos" -#: ../meld/filediff.py:289 -msgid "Previous conflict" +#: ../meld/filediff.py:225 +msgid "Save A_ll" +msgstr "Salvar _todos" + +#: ../meld/filediff.py:226 +msgid "Save all files in the current comparison" +msgstr "Salva todos os arquivos na comparação atual" + +#: ../meld/filediff.py:229 +msgid "Revert files to their saved versions" +msgstr "Reverte arquivos para suas versões salvas" + +#: ../meld/filediff.py:231 +msgid "Add Synchronization Point" +msgstr "Adicionar ponto de sincronização" + +#: ../meld/filediff.py:232 +msgid "Add a manual point for synchronization of changes between files" +msgstr "" +"Adiciona um ponto manual para sincronização de alterações entre arquivos" + +#: ../meld/filediff.py:235 +msgid "Clear Synchronization Points" +msgstr "Limpar pontos de sincronização" + +#: ../meld/filediff.py:236 +msgid "Clear manual change sychronization points" +msgstr "Limpa alterações manuais de pontos de sincronização" + +#: ../meld/filediff.py:238 +msgid "Previous Conflict" msgstr "Conflito anterior" -#: ../meld/filediff.py:289 +#: ../meld/filediff.py:239 msgid "Go to the previous conflict" msgstr "Vai ao conflito anterior" -#: ../meld/filediff.py:290 -msgid "Next conflict" +#: ../meld/filediff.py:241 +msgid "Next Conflict" msgstr "Próximo conflito" -#: ../meld/filediff.py:290 +#: ../meld/filediff.py:242 msgid "Go to the next conflict" msgstr "Vai ao próximo conflito" -#: ../meld/filediff.py:291 -msgid "Push to left" +#: ../meld/filediff.py:244 +msgid "Push to Left" msgstr "Levar para a esquerda" -#: ../meld/filediff.py:291 +#: ../meld/filediff.py:245 msgid "Push current change to the left" msgstr "Leva a alteração atual para a esquerda" -#: ../meld/filediff.py:292 -msgid "Push to right" +#: ../meld/filediff.py:248 +msgid "Push to Right" msgstr "Levar para a direita" -#: ../meld/filediff.py:292 +#: ../meld/filediff.py:249 msgid "Push current change to the right" msgstr "Leva a alteração atual para a direita" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:294 -msgid "Pull from left" +#: ../meld/filediff.py:253 +msgid "Pull from Left" msgstr "Puxar da esquerda" -#: ../meld/filediff.py:294 +#: ../meld/filediff.py:254 msgid "Pull change from the left" msgstr "Puxa a alteração da esquerda" -#: ../meld/filediff.py:295 -msgid "Pull from right" +#: ../meld/filediff.py:257 +msgid "Pull from Right" msgstr "Puxar da direita" -#: ../meld/filediff.py:295 +#: ../meld/filediff.py:258 msgid "Pull change from the right" msgstr "Puxa a alteração da direita" -#: ../meld/filediff.py:296 -msgid "Copy above left" +#: ../meld/filediff.py:260 +msgid "Copy Above Left" msgstr "Copiar acima da esquerda" -#: ../meld/filediff.py:296 +#: ../meld/filediff.py:261 msgid "Copy change above the left chunk" msgstr "Copia a alteração acima do trecho à esquerda" -#: ../meld/filediff.py:297 -msgid "Copy below left" +#: ../meld/filediff.py:263 +msgid "Copy Below Left" msgstr "Copiar abaixo da esquerda" -#: ../meld/filediff.py:297 +#: ../meld/filediff.py:264 msgid "Copy change below the left chunk" msgstr "Copia a alteração abaixo do trecho à esquerda" -#: ../meld/filediff.py:298 -msgid "Copy above right" +#: ../meld/filediff.py:266 +msgid "Copy Above Right" msgstr "Copiar acima da direita" -#: ../meld/filediff.py:298 +#: ../meld/filediff.py:267 msgid "Copy change above the right chunk" msgstr "Copia a alteração acima do trecho à direita" -#: ../meld/filediff.py:299 -msgid "Copy below right" +#: ../meld/filediff.py:269 +msgid "Copy Below Right" msgstr "Copiar abaixo da direita" -#: ../meld/filediff.py:299 +#: ../meld/filediff.py:270 msgid "Copy change below the right chunk" msgstr "Copia a alteração abaixo do trecho à direita" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:272 msgid "Delete" msgstr "Excluir" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:273 msgid "Delete change" msgstr "Exclui a alteração" -#: ../meld/filediff.py:301 -msgid "Merge all changes from left" -msgstr "Mesclar todas as alterações da esquerda" +#: ../meld/filediff.py:275 +msgid "Merge All from Left" +msgstr "Mesclar todas da esquerda" -#: ../meld/filediff.py:301 +#: ../meld/filediff.py:276 msgid "Merge all non-conflicting changes from the left" msgstr "Mescla todas as alterações não conflitantes da esquerda" -#: ../meld/filediff.py:302 -msgid "Merge all changes from right" -msgstr "Mesclar todas as alterações da direita" +#: ../meld/filediff.py:278 +msgid "Merge All from Right" +msgstr "Mesclar todas da direita" -#: ../meld/filediff.py:302 +#: ../meld/filediff.py:279 msgid "Merge all non-conflicting changes from the right" msgstr "Mescla todas as alterações não conflitantes da direita" -#: ../meld/filediff.py:303 -msgid "Merge all non-conflicting" -msgstr "Mesclar todas não conflitantes" +#: ../meld/filediff.py:281 +msgid "Merge All" +msgstr "Mesclar todas" -#: ../meld/filediff.py:303 +#: ../meld/filediff.py:282 msgid "Merge all non-conflicting changes from left and right panes" msgstr "" "Mescla todas as alterações não conflitantes dos painéis esquerdo e direito" -#: ../meld/filediff.py:304 -msgid "Cycle through documents" +#: ../meld/filediff.py:286 +msgid "Cycle Through Documents" msgstr "Fazer ciclo através dos documentos" -#: ../meld/filediff.py:304 +#: ../meld/filediff.py:287 msgid "Move keyboard focus to the next document in this comparison" msgstr "Move o foco do teclado ao próximo documento nesta comparação" -#: ../meld/filediff.py:308 -msgid "Lock scrolling" -msgstr "Sincronizar rolagem" - -#: ../meld/filediff.py:309 -msgid "Lock scrolling of all panes" -msgstr "Sincroniza a rolagem de todos os painéis" +#: ../meld/filediff.py:293 +msgid "Lock Scrolling" +msgstr "Bloquear rolagem" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:401 +#: ../meld/filediff.py:438 msgid "INS" msgstr "INS" -#: ../meld/filediff.py:401 +#: ../meld/filediff.py:438 msgid "OVR" msgstr "SBR" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:403 +#: ../meld/filediff.py:440 #, python-format msgid "Ln %i, Col %i" msgstr "Lin %i, Col %i" -#: ../meld/filediff.py:713 +#: ../meld/filediff.py:777 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " @@ -779,47 +1042,42 @@ "O filtro \"%s\" alterou o número de linhas no arquivo. A comparação ficará " "incorreta. Veja o manual do usuário para mais detalhes." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:800 -msgid "" -msgstr "" - -#: ../meld/filediff.py:989 +#: ../meld/filediff.py:1091 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Definir quantidade de painéis" -#: ../meld/filediff.py:995 +#: ../meld/filediff.py:1097 #, python-format msgid "[%s] Opening files" msgstr "[%s] Abrindo arquivos" -#: ../meld/filediff.py:1019 ../meld/filediff.py:1028 ../meld/filediff.py:1040 -#: ../meld/filediff.py:1046 +#: ../meld/filediff.py:1120 ../meld/filediff.py:1130 ../meld/filediff.py:1143 +#: ../meld/filediff.py:1149 msgid "Could not read file" msgstr "Não foi possível ler o arquivo" -#: ../meld/filediff.py:1020 +#: ../meld/filediff.py:1121 #, python-format msgid "[%s] Reading files" msgstr "[%s] Lendo arquivos" -#: ../meld/filediff.py:1029 +#: ../meld/filediff.py:1131 #, python-format msgid "%s appears to be a binary file." msgstr "%s parece ser um arquivo binário." -#: ../meld/filediff.py:1041 +#: ../meld/filediff.py:1144 #, python-format msgid "%s is not in encodings: %s" msgstr "%s não está nas codificações: %s" -#: ../meld/filediff.py:1071 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1178 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Analisando diferenças" -#: ../meld/filediff.py:1128 +#: ../meld/filediff.py:1378 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" @@ -827,24 +1085,45 @@ "Filtros de texto estão sendo usados e podem estar escondendo diferenças " "entre os arquivos. Você gostaria de comparar os arquivos sem filtro?" -#: ../meld/filediff.py:1134 +#: ../meld/filediff.py:1384 msgid "Files are identical" msgstr "Os arquivos são idênticos" -#: ../meld/filediff.py:1144 +#: ../meld/filediff.py:1392 msgid "Show without filters" msgstr "Mostrar sem filtros" -#: ../meld/filediff.py:1298 +#: ../meld/filediff.py:1414 +msgid "Change highlighting incomplete" +msgstr "Alteração de destaque incompleta" + +#: ../meld/filediff.py:1415 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Algumas alterações não puderam ser destacadas porque elas eram muito " +"grandes. Você pode forçar o Meld a levar mais tempo para destacar alterações " +"longas, porém isso pode ser bem lento." + +#: ../meld/filediff.py:1423 +msgid "Keep highlighting" +msgstr "Mantém destaque" + +#: ../meld/filediff.py:1425 +msgid "_Keep highlighting" +msgstr "_Manter destaque" + +#: ../meld/filediff.py:1556 #, python-format msgid "" "\"%s\" exists!\n" "Overwrite?" msgstr "" -"\"%s\" existe!\n" -"Sobrescrever?" +"\"%s\" já existe!\n" +"Sobrescrevê-lo?" -#: ../meld/filediff.py:1311 +#: ../meld/filediff.py:1569 #, python-format msgid "" "Error writing to %s\n" @@ -855,12 +1134,19 @@ "\n" "%s." -#: ../meld/filediff.py:1320 -#, python-format -msgid "Choose a name for buffer %i." -msgstr "Escolha um nome para o buffer %i." +#: ../meld/filediff.py:1580 +msgid "Save Left Pane As" +msgstr "Salvar o painel esquerdo como" + +#: ../meld/filediff.py:1582 +msgid "Save Middle Pane As" +msgstr "Salvar o painel do meio como" + +#: ../meld/filediff.py:1584 +msgid "Save Right Pane As" +msgstr "Salvar o painel direito como" -#: ../meld/filediff.py:1335 +#: ../meld/filediff.py:1604 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -871,7 +1157,7 @@ "\n" "Que formato você gostaria de usar?" -#: ../meld/filediff.py:1351 +#: ../meld/filediff.py:1620 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -880,644 +1166,863 @@ "\"%s\" contém caracteres não codificáveis com \"%s\"\n" "Você gostaria de salvar como UTF-8?" -#: ../meld/filediff.py:1410 -#, python-format -msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." -msgstr "" -"Recarregar irá descartar as alterações em:\n" -"%s\n" -"\n" -"Você não pode desfazer essa operação." +#: ../meld/filediff.py:1990 +msgid "Live comparison updating disabled" +msgstr "Atualização em tempo real de comparação desabilitada" + +#: ../meld/filediff.py:1991 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" +"Atualização em tempo real de comparações é desabilitada quando pontos de " +"sincronização estão ativos. Você ainda pode renovar manualmente a comparação " +"e atualizações em tempo real serão resumidas quando os pontos de " +"sincronização estiverem limpos." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:51 #, python-format msgid "[%s] Merging files" msgstr "[%s] Mesclando arquivos" -#: ../meld/meldapp.py:149 +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _up" +msgstr "Copiar para ci_ma" + +#: ../meld/gutterrendererchunk.py:93 +msgid "Copy _down" +msgstr "Copiar para bai_xo" + +#: ../meld/meldapp.py:169 msgid "wrong number of arguments supplied to --diff" msgstr "número incorreto de argumentos fornecidos para --diff" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:174 msgid "Start with an empty window" msgstr "Iniciar com a janela vazia" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:175 ../meld/meldapp.py:177 msgid "file" msgstr "arquivo" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:175 ../meld/meldapp.py:179 msgid "dir" msgstr "dir" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:176 msgid "Start a version control comparison" -msgstr "Inicia uma comparação de controle de versão" +msgstr "Inicia uma comparação de controle de versões" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:178 msgid "Start a 2- or 3-way file comparison" msgstr "Inicia uma comparação de arquivo em 2 ou 3 vias" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:180 msgid "Start a 2- or 3-way directory comparison" msgstr "Inicia uma comparação de diretório em 2 ou 3 vias" -#: ../meld/meldapp.py:157 -msgid "Start a comparison between file and dir/file" -msgstr "Iniciar uma comparação entre arquivo e diretório/arquivo" - -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:188 msgid "Meld is a file and directory comparison tool." msgstr "O Meld é uma ferramenta de comparação de arquivos e diretórios." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:191 msgid "Set label to use instead of file name" msgstr "Definir rótulo para usar no lugar do nome do arquivo" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:193 +msgid "Open a new tab in an already running instance" +msgstr "Abrir em uma nova aba de uma instância existente" + +#: ../meld/meldapp.py:196 msgid "Automatically compare all differing files on startup" msgstr "Compara automaticamente todos os arquivos diferentes na inicialização" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:198 msgid "Ignored for compatibility" msgstr "Ignorado por questão de compatibilidade" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:201 msgid "Set the target file for saving a merge result" msgstr "Define o arquivo destino para salvar um resultado de mesclagem" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "Cria uma aba de diff para até 3 arquivos ou diretórios fornecidos." +#: ../meld/meldapp.py:203 +msgid "Automatically merge files" +msgstr "Mesclar arquivos automaticamente" + +#: ../meld/meldapp.py:206 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Carrega uma comparação salva de um arquivo de comparação" -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:209 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Cria uma aba de diff para os arquivos e pastas fornecidos" + +#: ../meld/meldapp.py:212 #, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "muitos argumentos (desejado 0-4, dados %d)" +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "muitos argumentos (esperava 0-3, obteve %d)" + +#: ../meld/meldapp.py:215 +msgid "can't auto-merge less than 3 files" +msgstr "não é possível mesclar automaticamente menos que 3 arquivos" + +#: ../meld/meldapp.py:217 +msgid "can't auto-merge directories" +msgstr "não é possível mesclar diretórios automaticamente" + +#: ../meld/meldapp.py:227 +msgid "Error reading saved comparison file" +msgstr "Erro ao ler arquivo de comparação salvo" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "não é possível comparar mais de três diretórios" +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:89 +msgid "" +msgstr "" -#: ../meld/melddoc.py:51 ../meld/melddoc.py:52 +#: ../meld/melddoc.py:59 ../meld/melddoc.py:60 msgid "untitled" -msgstr "sem-título" +msgstr "sem título" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:49 msgid "_File" msgstr "_Arquivo" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Novo..." +#: ../meld/meldwindow.py:50 +msgid "_New Comparison..." +msgstr "_Nova comparação..." -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:51 msgid "Start a new comparison" msgstr "Inicia uma nova comparação" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:54 msgid "Save the current file" msgstr "Salvar o arquivo atual" -#: ../meld/meldwindow.py:129 +#: ../meld/meldwindow.py:56 +msgid "Save As..." +msgstr "Salvar como..." + +#: ../meld/meldwindow.py:57 +msgid "Save the current file with a different name" +msgstr "Salva o arquivo atual com um nome diferente" + +#: ../meld/meldwindow.py:60 msgid "Close the current file" msgstr "Fecha o arquivo atual" -#: ../meld/meldwindow.py:130 -msgid "Quit the program" -msgstr "Sai do programa" - -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:63 msgid "_Edit" msgstr "_Editar" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:65 msgid "Undo the last action" msgstr "Desfaz a última ação" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:68 msgid "Redo the last undone action" msgstr "Refaz a última ação desfeita" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:70 msgid "Cut the selection" msgstr "Recortar a seleção" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:72 msgid "Copy the selection" msgstr "Copiar a seleção" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:74 msgid "Paste the clipboard" -msgstr "Colar da área de transferência" +msgstr "Cola da área de transferência" + +#: ../meld/meldwindow.py:76 +msgid "Find..." +msgstr "Localizar..." -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:76 msgid "Search for text" msgstr "Pesquisa por texto" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:78 msgid "Find Ne_xt" msgstr "Localizar pró_ximo" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:79 msgid "Search forwards for the same text" msgstr "Pesquisa pelo mesmo texto em frente" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:81 msgid "Find _Previous" msgstr "Localizar _anterior" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:82 msgid "Search backwards for the same text" msgstr "Pesquisa o mesmo texto para trás" -#: ../meld/meldwindow.py:141 -msgid "Find and replace text" -msgstr "Localizar e substituir texto" - -#: ../meld/meldwindow.py:142 -msgid "Prefere_nces" -msgstr "Preferê_ncias" +#: ../meld/meldwindow.py:85 +msgid "_Replace..." +msgstr "_Substituir..." -#: ../meld/meldwindow.py:142 -msgid "Configure the application" -msgstr "Configura o aplicativo" +#: ../meld/meldwindow.py:86 +msgid "Find and replace text" +msgstr "Localiza e substitui texto" -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:89 msgid "_Changes" msgstr "_Alterações" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:90 +msgid "Next Change" msgstr "Próxima alteração" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:91 msgid "Go to the next change" msgstr "Vai à próxima alteração" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:93 +msgid "Previous Change" msgstr "Alteração anterior" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:94 msgid "Go to the previous change" msgstr "Vai à alteração anterior" -#: ../meld/meldwindow.py:148 +#: ../meld/meldwindow.py:96 +msgid "Open Externally" +msgstr "Abrir externamente" + +#: ../meld/meldwindow.py:97 +msgid "Open selected file or directory in the default external application" +msgstr "" +"Abre o arquivo ou diretório selecionado com o aplicativo externo padrão" + +#: ../meld/meldwindow.py:101 msgid "_View" msgstr "E_xibir" -#: ../meld/meldwindow.py:149 -msgid "File status" +#: ../meld/meldwindow.py:102 +msgid "File Status" msgstr "Status do arquivo" -#: ../meld/meldwindow.py:150 -msgid "Version status" +#: ../meld/meldwindow.py:103 +msgid "Version Status" msgstr "Status da versão" -#: ../meld/meldwindow.py:151 -msgid "File filters" -msgstr "Filtros de arquivos" - -#: ../meld/meldwindow.py:152 +#: ../meld/meldwindow.py:106 msgid "Stop the current action" -msgstr "Pára a ação atual" +msgstr "Interrompe a ação atual" -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:109 msgid "Refresh the view" msgstr "Atualiza a visão" -#: ../meld/meldwindow.py:154 -msgid "Reload" -msgstr "Recarregar" - -#: ../meld/meldwindow.py:154 -msgid "Reload the comparison" -msgstr "Recarrega a comparação" - -#: ../meld/meldwindow.py:156 +#: ../meld/meldwindow.py:112 msgid "_Tabs" msgstr "A_bas" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:113 msgid "_Previous Tab" msgstr "Aba _anterior" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:114 msgid "Activate previous tab" msgstr "Ativa a aba anterior" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:116 msgid "_Next Tab" msgstr "Aba _seguinte" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:117 msgid "Activate next tab" msgstr "Ativa a aba seguinte" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:120 msgid "Move Tab _Left" msgstr "Mover aba para a _esquerda" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:121 msgid "Move current tab to left" msgstr "Move a aba atual para a esquerda" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:124 msgid "Move Tab _Right" msgstr "Mover aba para a _direita" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:125 msgid "Move current tab to right" msgstr "Move a aba atual para a direita" -#: ../meld/meldwindow.py:162 -msgid "_Help" -msgstr "Aj_uda" - -#: ../meld/meldwindow.py:163 -msgid "_Contents" -msgstr "S_umário" - -#: ../meld/meldwindow.py:163 -msgid "Open the Meld manual" -msgstr "Abre o manual do Meld" - -#: ../meld/meldwindow.py:164 -msgid "Report _Bug" -msgstr "Relatar _erro" - -#: ../meld/meldwindow.py:164 -msgid "Report a bug in Meld" -msgstr "Relata um erro no Meld" - -#: ../meld/meldwindow.py:165 -msgid "About this program" -msgstr "Sobre este programa" - -#: ../meld/meldwindow.py:168 -msgid "Full Screen" +#: ../meld/meldwindow.py:129 +msgid "Fullscreen" msgstr "Tela cheia" -#: ../meld/meldwindow.py:168 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:130 +msgid "View the comparison in fullscreen" msgstr "Visualiza a comparação em tela cheia" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:132 msgid "_Toolbar" msgstr "Barra de _ferramentas" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:133 msgid "Show or hide the toolbar" msgstr "Mostra ou oculta a barra de ferramentas" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:135 msgid "_Statusbar" msgstr "Barra de _status" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:136 msgid "Show or hide the statusbar" msgstr "Mostra ou oculta a barra de status" -#: ../meld/meldwindow.py:534 +#: ../meld/meldwindow.py:145 +msgid "Open Recent" +msgstr "Abrir recente" + +#: ../meld/meldwindow.py:146 +msgid "Open recent files" +msgstr "Abre arquivos recentes" + +#: ../meld/meldwindow.py:537 msgid "Switch to this tab" -msgstr "Alternar para esta aba" +msgstr "Alterna para esta aba" -#. exit at first non found directory + file -#: ../meld/meldwindow.py:625 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Não foi possível comparar uma mistura de arquivos e diretórios.\n" +#: ../meld/meldwindow.py:660 +msgid "Cannot compare a mixture of files and directories" +msgstr "Não foi possível comparar uma mistura de arquivos e diretórios." #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:180 msgid "[None]" msgstr "[Nenhum]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Salvar patch como..." - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:46 msgid "label" msgstr "rótulo" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:46 msgid "pattern" msgstr "padrão" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Somente está disponível se você tiver o gnome-python-desktop instalado" - #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 +#: ../meld/preferences.py:338 msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" msgstr "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 +#: ../meld/preferences.py:340 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" +"Metadados específicos do SO\t0\t.DS_Store ._* .Spotlight-V100 .Trashes " +"Thumbs.db Desktop.ini\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:342 #, python-format msgid "Version Control\t1\t%s\n" -msgstr "Controle de versão\t1\t%s\n" +msgstr "Controle de versões\t1\t%s\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binários\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +#: ../meld/preferences.py:344 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +msgstr "Binários\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Mídia\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +#: ../meld/preferences.py:346 +msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +msgstr "Mídia\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 +#: ../meld/preferences.py:348 msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" msgstr "Palavras-chave do CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 +#: ../meld/preferences.py:350 msgid "C++ comment\t0\t//.*\n" msgstr "Comentário C++\t0\t//.*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 +#: ../meld/preferences.py:352 msgid "C comment\t0\t/\\*.*?\\*/\n" msgstr "Comentário C\t0\t/\\*.*?\\*/\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 +#: ../meld/preferences.py:354 msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" msgstr "Todo espaço em branco\t0\t[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 +#: ../meld/preferences.py:356 msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" msgstr "Espaço em branco no começo\t0\t^[ \\t\\r\\f\\v]*\n" #. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 +#: ../meld/preferences.py:358 msgid "Script comment\t0\t#.*" msgstr "Comentário de script\t0\t#.*" -#: ../meld/vcview.py:120 -msgid "Co_mmit" -msgstr "Sub_meter" +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Controle de versões:" + +#: ../meld/ui/findbar.py:142 +msgid "Regular expression error" +msgstr "Erro na expressão regular" -#: ../meld/vcview.py:120 -msgid "Commit" -msgstr "Submete" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Fechar aba" -#: ../meld/vcview.py:121 -msgid "_Update" -msgstr "At_ualizar" +#: ../meld/ui/vcdialogs.py:55 +msgid "No files will be committed" +msgstr "Nenhuma arquivo para submeter (commit)" -#: ../meld/vcview.py:121 -msgid "Update" -msgstr "Atualiza" - -#: ../meld/vcview.py:122 -msgid "Add to VC" -msgstr "Adiciona ao controle de versão" - -#: ../meld/vcview.py:123 -msgid "Add _Binary" -msgstr "Adicionar _binário" - -#: ../meld/vcview.py:123 -msgid "Add binary to VC" -msgstr "Adiciona binário ao controle de versão" - -#: ../meld/vcview.py:124 -msgid "Remove from VC" -msgstr "Remove do controle de versão" - -#: ../meld/vcview.py:125 -msgid "_Resolved" -msgstr "_Resolvido" - -#: ../meld/vcview.py:125 -msgid "Mark as resolved for VC" -msgstr "Marcar como resolvido para o controle de versão" - -#: ../meld/vcview.py:126 -msgid "Revert to original" -msgstr "Reverte para o original" - -#: ../meld/vcview.py:127 -msgid "Delete locally" -msgstr "Exclui localmente" +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s em %s" -#: ../meld/vcview.py:131 -msgid "_Flatten" -msgstr "Ac_hatar" +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d commit não enviado (push)" +msgstr[1] "%d commits não enviados (push)" -#: ../meld/vcview.py:131 -msgid "Flatten directories" -msgstr "Achatar diretórios" +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d ramo" +msgstr[1] "%d ramos" -#: ../meld/vcview.py:132 -msgid "_Modified" -msgstr "_Modificado" +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Modo modificado de %s para %s" -#: ../meld/vcview.py:133 -msgid "_Normal" -msgstr "_Normal" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Mesclado" -#: ../meld/vcview.py:133 -msgid "Show normal" -msgstr "Mostra o normal" - -#: ../meld/vcview.py:134 -msgid "Non _VC" -msgstr "Sem controle de _versão" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Base" -#: ../meld/vcview.py:134 -msgid "Show unversioned files" -msgstr "Mostra os arquivos sem controle de versão" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Local" -#: ../meld/vcview.py:135 -msgid "Ignored" -msgstr "Ignorado" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Remoto" -#: ../meld/vcview.py:135 -msgid "Show ignored files" -msgstr "Mostra os arquivos ignorados" +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:62 +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" +msgstr "" +"Ignorado:Sem controle de versões:::Erro::Adicionado recentemente:Modificado:" +"Conflito:Removido:Faltando:Não presente" -#: ../meld/vcview.py:177 ../meld/vcview.py:301 +#: ../meld/vcview.py:206 ../meld/vcview.py:363 msgid "Location" msgstr "Localização" -#: ../meld/vcview.py:178 +#: ../meld/vcview.py:207 msgid "Status" msgstr "Status" -#: ../meld/vcview.py:179 -msgid "Rev" -msgstr "Rev" +#: ../meld/vcview.py:208 +msgid "Revision" +msgstr "Revisão" -#: ../meld/vcview.py:181 +#: ../meld/vcview.py:209 msgid "Options" msgstr "Opções" -#: ../meld/vcview.py:233 -msgid "Choose one Version Control" -msgstr "Selecione um controle de versões" - -#: ../meld/vcview.py:234 -msgid "Only one Version Control in this directory" -msgstr "Somente um controle de versões neste diretório" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:247 +#: ../meld/vcview.py:274 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "%s não instalado" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:251 -msgid "Invalid Repository" +#: ../meld/vcview.py:278 +msgid "Invalid repository" msgstr "Repositório inválido" -#: ../meld/vcview.py:260 +#: ../meld/vcview.py:287 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:289 ../meld/vcview.py:297 +msgid "None" +msgstr "Nenhum" + +#: ../meld/vcview.py:308 +msgid "No valid version control system found in this folder" +msgstr "Nenhuma sistema de controle de versão válido localizado nesta pasta" + +#: ../meld/vcview.py:310 +msgid "Only one version control system found in this folder" +msgstr "Apenas um sistema de controle de versões foi localizado nesta pasta" + +#: ../meld/vcview.py:312 +msgid "Choose which version control system to use" +msgstr "Escolha qual sistema de controle de versões a ser usado" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:301 +#: ../meld/vcview.py:363 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:349 -msgid "(Empty)" -msgstr "(Vazio)" - -#: ../meld/vcview.py:387 +#: ../meld/vcview.py:377 ../meld/vcview.py:385 #, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Buscando diferenças" +msgid "Scanning %s" +msgstr "Varrendo %s" -#: ../meld/vcview.py:395 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Aplicando patch" +#: ../meld/vcview.py:418 +msgid "(Empty)" +msgstr "(Vazio)" -#: ../meld/vcview.py:480 -msgid "Select some files first." -msgstr "Selecione primeiro alguns arquivos." +#: ../meld/vcview.py:641 +msgid "Remove folder and all its files?" +msgstr "Remover pasta e todos seus arquivos?" -#: ../meld/vcview.py:553 -#, python-format +#: ../meld/vcview.py:643 msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"\n" -" Invocar 'patch' falhou.\n" -" \n" -" Talvez você não tenha o 'GNU patch' instalado,\n" -" ou você use uma versão não-testada de %s.\n" -" \n" -" Por favor, envie um relatório de erro por email para:\n" -" meld-list@gnome.org\n" -" \n" -" Contendo as seguintes informações:\n" -" \n" -" - versão do meld: '%s'\n" -" - tipo de aplicativo de controle de versão: '%s'\n" -" - versão do aplicativo de controle de versão: 'X.Y.Z'\n" -" - a saída do '%s somefile.txt'\n" -" - comando de patch: '%s'\n" -" (não é necessário rodá-lo, apenas enviar\n" -" a linha de comando) \n" -" \n" -" Substitua 'X.Y.Z' pela versão atual do\n" -" aplicativo de controle de versão que você usa.\n" -" " +"Isso vai remover todos os arquivos e pastas selecionados, e todos arquivos " +"dentro de quaisquer pastas selecionadas, do controle de versão." -#: ../meld/ui/findbar.py:127 +#: ../meld/vcview.py:677 #, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Erro na expressão regular\n" -"\"%s\"" +msgid "Error removing %s" +msgstr "Erro ao remover %s" -#: ../meld/ui/historyentry.py:293 -msgid "_Browse..." -msgstr "_Navegar..." +#~ msgid "" +#~ "Meld 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.\n" +#~ "\n" +#~ "Meld 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. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see ." +#~ msgstr "" +#~ "Meld é software livre; você pode redistribuí-lo e/ou modificá-lo sob os " +#~ "termos da Licença Pública Geral da GNU (GPL), conforme publicada pela " +#~ "Free Software Foundation; quer a versão 2 da Licença, ou (se você " +#~ "preferir) qualquer versão posterior.\n" +#~ "\n" +#~ "Meld é distribuído com esperanças de que seja útil, porém SEM NENHUMA " +#~ "GARANTIA; nem mesmo garantia implícitas de MERCANTIBILIDADE ou SERVENTIA " +#~ "PARA UM PROPÓSITO PARTICULAR. Veja a Licença Pública Geral da GNU para " +#~ "maiores detalhes.\n" +#~ "\n" +#~ "Você deve ter recebido uma cópia da Licença Pública Geral da GNU junto " +#~ "este programa; se não, veja ." -#: ../meld/ui/historyentry.py:301 -msgid "Path" -msgstr "Caminho" +#~ msgid "Start a comparison between file and dir/file" +#~ msgstr "Iniciar uma comparação entre arquivo e diretório/arquivo" -#: ../meld/ui/historyentry.py:302 -msgid "Path to file" -msgstr "Caminho para o arquivo" +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "Erro D-Bus; comparações irão abrir em nova janela." -#: ../meld/ui/historyentry.py:303 -msgid "Pop up a file selector to choose a file" -msgstr "Exibir um seletor de arquivo para escolher um" +#~ msgid "Quit the program" +#~ msgstr "Sai do programa" -#: ../meld/ui/historyentry.py:441 -msgid "Select directory" -msgstr "Selecionar diretório" +#~ msgid "Configure the application" +#~ msgstr "Configura o aplicativo" -#: ../meld/ui/historyentry.py:445 -msgid "Select file" -msgstr "Selecionar arquivo" +#~ msgid "_Contents" +#~ msgstr "S_umário" -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Fechar aba" +#~ msgid "Open the Meld manual" +#~ msgstr "Abre o manual do Meld" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" -msgstr "" -"Ignorado:Sem controle de versão:::Erro::Adicionado recentemente:Modificado:" -"Conflito:Removido:Faltando" +#~ msgid "Report _Bug" +#~ msgstr "Relatar _erro" -#: ../meld/vc/cvs.py:163 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Erro ao converter para uma expressão regular\n" -"O padrão foi \"%s\"\n" -"O erro foi \"%s\"" +#~ msgid "Report a bug in Meld" +#~ msgstr "Relate um erro no Meld" + +#~ msgid "About this program" +#~ msgstr "Sobre este programa" + +#~ msgid "Only available if you have PyGtkSourceView 2 installed" +#~ msgstr "Disponível apenas se você tiver PyGtkSourceView 2 instalado" + +#~ msgid "_Browse..." +#~ msgstr "_Navegar..." + +#~ msgid "Path" +#~ msgstr "Caminho" + +#~ msgid "Path to file" +#~ msgstr "Caminho para o arquivo" + +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "Exibir um seletor de arquivo para escolher um" + +#~ msgid "Select directory" +#~ msgstr "Selecionar diretório" + +#~ msgid "Select file" +#~ msgstr "Selecionar arquivo" + +#~ msgid "Compare selected" +#~ msgstr "Compara os selecionados" + +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "\"%s\" é um diretório.\n" +#~ "Remover recursivamente?" + +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "Erro ao converter para uma expressão regular\n" +#~ "O padrão foi \"%s\"\n" +#~ "O erro foi \"%s\"" + +#~ msgid "Merge All Non-conflicting" +#~ msgstr "Mesclar todas não conflitantes" + +#~ msgid "Tag" +#~ msgstr "Marca" + +#~ msgid "[%s] Fetching differences" +#~ msgstr "[%s] Buscando diferenças" + +#~ msgid "[%s] Applying patch" +#~ msgstr "[%s] Aplicando patch" + +#~ msgid "Patch tool not found" +#~ msgstr "Ferramenta de patch não encontrada" + +#~ msgid "" +#~ "Meld needs the patch tool to be installed to perform comparisons " +#~ "in %s repositories. Please install patch and try again." +#~ msgstr "" +#~ "Meld precisa da ferramenta patch instalada para executar " +#~ "comparações em %s repositórios. Por favor instale patch e tente " +#~ "novamente." + +#~ msgid "Error fetching original comparison file" +#~ msgstr "Erro ao obter arquivo de comparação original" + +#~ msgid "" +#~ "Meld couldn't obtain the original version of your comparison file. If you " +#~ "are using the most recent version of Meld, please report a bug, including " +#~ "as many details as possible." +#~ msgstr "" +#~ "Meld não pôde obter a versão original de seu arquivo de comparação. Se " +#~ "você está usando a versão mais recente de Meld, por favor relate um erro, " +#~ "incluindo o maior número possível de detalhes." + +#~ msgid "Report a bug" +#~ msgstr "Relatar erro" + +#~ msgid "Create Patch" +#~ msgstr "Criar patch" + +#~ msgid "Create a patch" +#~ msgstr "Cria um patch" + +#~ msgid "Choose a name for buffer %i." +#~ msgstr "Escolha um nome para o buffer %i." + +#~ msgid "Save changes to documents before reloading?" +#~ msgstr "Salvar as mudanças a documentos antes de recarregar?" + +#~ msgid "Reload" +#~ msgstr "Recarregar" + +#~ msgid "Reload the comparison" +#~ msgstr "Recarrega a comparação" + +#~ msgid "Show normal" +#~ msgstr "Mostra o normal" + +#~ msgid "VC Log" +#~ msgstr "Log do controle de versão" + +#~ msgid "Update" +#~ msgstr "Atualiza" + +#~ msgid "Add to VC" +#~ msgstr "Adiciona ao controle de versão" + +#~ msgid "Remove from VC" +#~ msgstr "Remove do controle de versão" + +#~ msgid "Delete locally" +#~ msgstr "Exclui localmente" + +#~ msgid "Non _VC" +#~ msgstr "Sem controle de _versão" + +#~ msgid "Rev" +#~ msgstr "Rev" + +#~ msgid "File filters" +#~ msgstr "Filtros de arquivos" + +#~ msgid "Choose Files" +#~ msgstr "Escolher arquivos" + +#~ msgid "_Three Way Compare" +#~ msgstr "Comparação de _três vias" + +#~ msgid "Mine" +#~ msgstr "Meu" + +#~ msgid "Original" +#~ msgstr "Original" + +#~ msgid "Other" +#~ msgstr "Outro" + +#~ msgid "Select VC Directory" +#~ msgstr "Selecionar diretório do controle de versão" + +#~ msgid "Directory" +#~ msgstr "Diretório" + +#~ msgid "_New..." +#~ msgstr "_Novo..." + +#~ msgid "" +#~ "Some files have been modified.\n" +#~ "Which ones would you like to save?" +#~ msgstr "" +#~ "Alguns arquivos foram modificados.\n" +#~ "Quais deles você gostaria de salvar?" + +#~ msgid "_Discard Changes" +#~ msgstr "_Descartar alterações" + +#~ msgid "_Save Selected" +#~ msgstr "S_alvar selecionados" + +#~ msgid "" +#~ "Reloading will discard changes in:\n" +#~ "%s\n" +#~ "\n" +#~ "You cannot undo this operation." +#~ msgstr "" +#~ "Recarregar irá descartar as alterações em:\n" +#~ "%s\n" +#~ "\n" +#~ "Você não pode desfazer essa operação." + +#~ msgid "Select some files first." +#~ msgstr "Selecione primeiro alguns arquivos." + +#~ msgid "_Search for" +#~ msgstr "Pesqui_sar por" + +#~ msgid "Compare Options" +#~ msgstr "Opções de comparação" + +#~ msgid "Date" +#~ msgstr "Data" + +#~ msgid "Local copy against other remote revision" +#~ msgstr "Cópia local contra outra revisão remota" + +#~ msgid "Local copy against same remote revision" +#~ msgstr "Cópia local contra a mesma revisão remota" + +#~ msgid "Case" +#~ msgstr "Maiusculização" + +#~ msgid "Ignore case of entries" +#~ msgstr "Ignora maiúsc./minúsc. das entradas" + +#~ msgid "can't compare more than three directories" +#~ msgstr "não é possível comparar mais de três diretórios" + +#~ msgid "Add _Binary" +#~ msgstr "Adicionar _binário" + +#~ msgid "Add binary to VC" +#~ msgstr "Adiciona binário ao controle de versão" + +#~ msgid "" +#~ "\n" +#~ " Invoking 'patch' failed.\n" +#~ " \n" +#~ " Maybe you don't have 'GNU patch' installed,\n" +#~ " or you use an untested version of %s.\n" +#~ " \n" +#~ " Please send email bug report to:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " Containing the following information:\n" +#~ " \n" +#~ " - meld version: '%s'\n" +#~ " - source control software type: '%s'\n" +#~ " - source control software version: 'X.Y.Z'\n" +#~ " - the output of '%s somefile.txt'\n" +#~ " - patch command: '%s'\n" +#~ " (no need to actually run it, just provide\n" +#~ " the command line) \n" +#~ " \n" +#~ " Replace 'X.Y.Z' by the actual version for the\n" +#~ " source control software you use.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " Invocar 'patch' falhou.\n" +#~ " \n" +#~ " Talvez você não tenha o 'GNU patch' instalado,\n" +#~ " ou você use uma versão não-testada de %s.\n" +#~ " \n" +#~ " Por favor, envie um relatório de erro por email " +#~ "para:\n" +#~ " meld-list@gnome.org\n" +#~ " \n" +#~ " Contendo as seguintes informações:\n" +#~ " \n" +#~ " - versão do meld: '%s'\n" +#~ " - tipo de aplicativo de controle de versão: '%s'\n" +#~ " - versão do aplicativo de controle de versão: 'X.Y." +#~ "Z'\n" +#~ " - a saída do '%s somefile.txt'\n" +#~ " - comando de patch: '%s'\n" +#~ " (não é necessário rodá-lo, apenas enviar\n" +#~ " a linha de comando) \n" +#~ " \n" +#~ " Substitua 'X.Y.Z' pela versão atual do\n" +#~ " aplicativo de controle de versão que você usa.\n" +#~ " " #~ msgid "Edit Menu" #~ msgstr "Menu de edição" @@ -1558,15 +2063,9 @@ #~ msgid "Use custom font" #~ msgstr "Usar uma fonte personalizada" -#~ msgid "Version control view" -#~ msgstr "Visão de controle de versões" - #~ msgid "_Character" #~ msgstr "_Caractere" -#~ msgid "_None" -#~ msgstr "_Nenhum" - #~ msgid "_Word" #~ msgstr "_Palavra" @@ -1585,9 +2084,6 @@ #~ msgid "_Commit" #~ msgstr "_Commit" -#~ msgid "Save the current file with a different name" -#~ msgstr "Salvar o arquivo atual com um nome diferente" - #~ msgid "The regular expression '%s' was not found." #~ msgstr "A expressão regular \"%s\" não foi localizada." @@ -1604,9 +2100,6 @@ #~ "Isto contém ascii nulos.\n" #~ "Talvez seja um arquivo binário." -#~ msgid "Find" -#~ msgstr "Localizar" - #~ msgid "Match _entire word only" #~ msgstr "Coincidir ap_enas a palavra inteira" @@ -1914,15 +2407,9 @@ #~ msgid "_SVN Browser" #~ msgstr "Navegador de _SVN" -#~ msgid "_Save" -#~ msgstr "_Salvar" - #~ msgid "_Up" #~ msgstr "Para _cima" -#~ msgid "http://meld.sourceforge.net" -#~ msgstr "http://meld.sourceforge.net" - #~ msgid "utf8 iso8859" #~ msgstr "utf8 iso8859" diff -Nru meld-1.5.3/po/pt.po meld-3.11.0/po/pt.po --- meld-1.5.3/po/pt.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/pt.po 2014-02-08 21:03:00.000000000 +0000 @@ -34,7 +34,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. ############################################################################### #. #. Local Functions @@ -166,7 +167,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. ############################################################################### #. #. Differ @@ -194,7 +196,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. ############################################################################### #. #. Local Functions @@ -355,7 +358,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. ############################################################################### #. #. FileDiff @@ -548,7 +552,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. system #. gnome #. project @@ -776,7 +781,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. Use these to ensure consistent return values. #: melddoc.py:44 msgid "untitled" @@ -793,7 +799,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. remove common prefix #. split on / #. no common path. empty names get changed to "[None]" @@ -817,7 +824,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. maybe fall back to ConfigParser if gconf is unavailable. #. types of values allowed #. LIST = "list" @@ -837,7 +845,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. m.add_task(h) #. m.add_task(h) #. s.add_task( sayhello(40).next ) @@ -867,7 +876,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. ignored, new, normal, ignored changes, #. error, placeholder, cvs added #. cvs modified, cvs conflict, cvs removed @@ -905,7 +915,8 @@ #. ## 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 +#. ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +#. ## USA. #. collapse #. #. * Translatable strings file generated by Glade. diff -Nru meld-1.5.3/po/ro.po meld-3.11.0/po/ro.po --- meld-1.5.3/po/ro.po 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/po/ro.po 2013-12-07 19:30:09.000000000 +0000 @@ -0,0 +1,1595 @@ +# Romanian translation for meld. +# Copyright (C) 2010 meld's COPYRIGHT HOLDER +# This file is distributed under the same license as the meld package. +# Cosmin Clapon , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: meld master\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2012-04-03 07:51+0000\n" +"PO-Revision-Date: 2011-01-02 15:31+0200\n" +"Last-Translator: Cosmin Clapon \n" +"Language-Team: Romanian \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" + +#: ../bin/meld:97 +msgid "Cannot import: " +msgstr "Nu se poate importa:" + +#: ../bin/meld:100 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld necesită %s sau superior." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Vizualizator de diferențe" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Vizualizatorul de diferențe Meld" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Comparați-vă și combinati-vă fișierele" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Activ" + +#: ../data/ui/EditableList.ui.h:3 ../meld/vcview.py:166 +msgid "Name" +msgstr "Nume" + +#: ../data/ui/EditableList.ui.h:4 +msgid "Pattern" +msgstr "Tipar" + +#: ../data/ui/EditableList.ui.h:5 +#, fuzzy +#| msgid "File filters" +msgid "Add new filter" +msgstr "Filtre de fișier" + +#: ../data/ui/EditableList.ui.h:6 ../meld/vcview.py:130 +msgid "_Add" +msgstr "_Adaugă" + +#: ../data/ui/EditableList.ui.h:7 +#, fuzzy +#| msgid "Select file" +msgid "Remove selected filter" +msgstr "Selectați fișierul" + +#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:132 +msgid "_Remove" +msgstr "_Elimină" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move item up" +msgstr "" + +#: ../data/ui/EditableList.ui.h:10 +msgid "Move _Up" +msgstr "" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Move item down" +msgstr "" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Move _Down" +msgstr "" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save modified files?" +msgstr "Salvați fișierele modificate?" + +#: ../data/ui/filediff.ui.h:2 +msgid "" +"Some files have been modified.\n" +"Which ones would you like to save?" +msgstr "" +"Unele fișiere au fost modificate.\n" +"Pe care dintre ele doriți să le salvați?" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Discard Changes" +msgstr "Anulează mo_dificările" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save Selected" +msgstr "_Salvează fișierul" + +#: ../data/ui/findbar.ui.h:1 ../meld/meldwindow.py:141 +msgid "_Replace" +msgstr "În_locuiește" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Înlocuiește _totul" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "Îna_poi" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "Î_nainte" + +#: ../data/ui/findbar.ui.h:5 +msgid "_Search for" +msgstr "_Caută după" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _With" +msgstr "Înlocuiește _cu" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match Case" +msgstr "_Potrivește majuscule" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Întregu_l cuvânt" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular E_xpression" +msgstr "E_xpresie regulată" + +#: ../data/ui/meldapp.ui.h:2 +#, fuzzy +#| msgid "" +#| "Copyright © 2002-2009 Stephen Kennedy\n" +#| "Copyright © 2009-2010 Kai Willadsen" +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2012 Kai Willadsen" +msgstr "" +"Drepturi de autor © 2002-2009 Stephen Kennedy\n" +"Drepturi de autor © 2009-2010 Kai Willadsen" + +#: ../data/ui/meldapp.ui.h:4 +msgid "translator-credits" +msgstr "Cosmin Clapon , 2010" + +#: ../data/ui/meldapp.ui.h:5 +msgid "Choose Files" +msgstr "Alege fișierele" + +#: ../data/ui/meldapp.ui.h:6 +msgid "_Three Way Compare" +msgstr "Comparație _triplă" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:8 +msgid "Mine" +msgstr "Al meu" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:10 +msgid "Original" +msgstr "Originalul" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:12 +msgid "Other" +msgstr "Altul" + +#: ../data/ui/meldapp.ui.h:13 +msgid "_File Comparison" +msgstr "Comparație _fișier" + +#: ../data/ui/meldapp.ui.h:14 +msgid "_Directory Comparison" +msgstr "Comparație _director" + +#: ../data/ui/meldapp.ui.h:15 +msgid "Select VC Directory" +msgstr "Selectați directorul de control al versiunilor" + +#: ../data/ui/meldapp.ui.h:16 +msgid "Directory" +msgstr "Director" + +#: ../data/ui/meldapp.ui.h:17 +msgid "_Version Control Browser" +msgstr "Navigator de control al _versiunilor" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Create Patch" +msgstr "Creează petic" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Create a patch" +msgstr "Creează un petic" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Use differences between:" +msgstr "Folosește diferențele dintre:" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Left and middle panes" +msgstr "Panouri la stânga și la mijloc" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "Middle and right panes" +msgstr "Panouri la mijloc și la dreapta" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "_Reverse patch direction" +msgstr "Inve_rsează direcția peticului" + +#: ../data/ui/patch-dialog.ui.h:7 +msgid "Copy to Clipboard" +msgstr "Copiază în clipboard" + +#: ../data/ui/preferences.ui.h:1 +msgid "Meld Preferences" +msgstr "Preferințe Meld" + +#: ../data/ui/preferences.ui.h:2 +msgid "Font" +msgstr "Font" + +#: ../data/ui/preferences.ui.h:3 +msgid "_Use the system fixed width font" +msgstr "_Folosește mărimea fontului fixată de sistem" + +#: ../data/ui/preferences.ui.h:4 +msgid "_Editor font:" +msgstr "Font _editor:" + +#: ../data/ui/preferences.ui.h:5 +msgid "Display" +msgstr "Ecran" + +#: ../data/ui/preferences.ui.h:6 +msgid "_Tab width:" +msgstr "Lățime _tab:" + +#: ../data/ui/preferences.ui.h:7 +msgid "_Insert spaces instead of tabs" +msgstr "_Inserează spații în loc de taburi" + +#: ../data/ui/preferences.ui.h:8 +msgid "Enable text _wrapping" +msgstr "_Activează despărțirea în linii automată" + +#: ../data/ui/preferences.ui.h:9 +msgid "Do not _split words over two lines" +msgstr "Nu impărți cuvintele pe _două linii" + +#: ../data/ui/preferences.ui.h:10 +msgid "Show _line numbers" +msgstr "Afișează numărul de _linii" + +#: ../data/ui/preferences.ui.h:11 +msgid "Show w_hitespace" +msgstr "Afișează _spațiile goale" + +#: ../data/ui/preferences.ui.h:12 +msgid "Use s_yntax highlighting" +msgstr "Folosește _evidențierea sintaxei" + +#: ../data/ui/preferences.ui.h:13 +msgid "External editor" +msgstr "Editor extern" + +#: ../data/ui/preferences.ui.h:14 +msgid "Use _default system editor" +msgstr "Folosește editorul implicit _de sistem" + +#: ../data/ui/preferences.ui.h:15 +msgid "Edito_r command:" +msgstr "Comandă de editor:" + +#: ../data/ui/preferences.ui.h:16 +msgid "Editor" +msgstr "Editor" + +#: ../data/ui/preferences.ui.h:17 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Când comparați directoare, ar trebui să sortați fișierele și directoarele " +"după nume. Fiecare tipar este o listă de metacaractere de tip shell separate " +"prin spații." + +#: ../data/ui/preferences.ui.h:18 +msgid "Ignore symbolic links" +msgstr "Ignoră legaturile simbolice" + +#: ../data/ui/preferences.ui.h:19 +msgid "File Filters" +msgstr "Filtre de fișiere" + +#: ../data/ui/preferences.ui.h:20 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Cand comparați fișiere, ar trebui să ignorați diferite tipuri de modificări. " +"Fiecare tipar este o expresie regulată python care înlocuiește textul găsit " +"cu un șir gol înainte de a se face comparația. Dacă expresia conține " +"grupuri, atunci doar grupurile vor fi înlocuite. Pentru mai multe detalii " +"consultați manualul." + +#: ../data/ui/preferences.ui.h:21 +msgid "Ignore changes which insert or delete blank lines" +msgstr "" +"Ignoră modificările care implică adăugarea sau ștergerea de linii goale" + +#: ../data/ui/preferences.ui.h:22 +msgid "Text Filters" +msgstr "Filtre de text" + +#: ../data/ui/preferences.ui.h:23 +msgid "Loading" +msgstr "Se încarcă" + +#: ../data/ui/preferences.ui.h:24 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" +"Cand se încarcă, încercați aceste codecuri în ordine. (ex. utf8, iso8859)" + +#: ../data/ui/preferences.ui.h:25 +msgid "Encoding" +msgstr "Codare" + +#: ../data/ui/vcview.ui.h:1 +msgid "VC Log" +msgstr "Înregistrare control de versiuni" + +#: ../data/ui/vcview.ui.h:2 +msgid "Commit Files" +msgstr "Validează fișierele" + +#: ../data/ui/vcview.ui.h:3 +msgid "Previous Logs" +msgstr "Înregistrări precedente" + +#: ../data/ui/vcview.ui.h:4 +msgid "Log Message" +msgstr "Mesaj de înregistrare" + +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 +msgid "_Compare" +msgstr "_Compară" + +#: ../meld/dirdiff.py:232 ../meld/vcview.py:127 +msgid "Compare selected" +msgstr "Compară obiectul selectat" + +#: ../meld/dirdiff.py:233 +#, fuzzy +#| msgid "Copy To Left" +msgid "Copy _Left" +msgstr "Copiază la stânga" + +#: ../meld/dirdiff.py:233 +#, fuzzy +#| msgid "Copy To Left" +msgid "Copy to left" +msgstr "Copiază la stânga" + +#: ../meld/dirdiff.py:234 +#, fuzzy +#| msgid "Copy To Right" +msgid "Copy _Right" +msgstr "Copiază la dreapta" + +#: ../meld/dirdiff.py:234 +#, fuzzy +#| msgid "Copy To Right" +msgid "Copy to right" +msgstr "Copiază la dreapta" + +#: ../meld/dirdiff.py:235 +msgid "Delete selected" +msgstr "Șterge obiectul selectat" + +#: ../meld/dirdiff.py:236 ../meld/filediff.py:1165 +msgid "Hide" +msgstr "Ascunde" + +#: ../meld/dirdiff.py:236 +msgid "Hide selected" +msgstr "Ascunde obiectul selectat" + +#: ../meld/dirdiff.py:240 +msgid "Case" +msgstr "Majusculă" + +#: ../meld/dirdiff.py:240 +msgid "Ignore case of entries" +msgstr "Ignoră majusculele intrărilor" + +#: ../meld/dirdiff.py:241 +msgid "Same" +msgstr "Același" + +#: ../meld/dirdiff.py:241 +msgid "Show identical" +msgstr "Afișează fișierele identice" + +#: ../meld/dirdiff.py:242 +msgid "New" +msgstr "Nou" + +#: ../meld/dirdiff.py:242 +msgid "Show new" +msgstr "Afișează fișierele noi" + +#: ../meld/dirdiff.py:243 +msgid "Modified" +msgstr "Modificări" + +#: ../meld/dirdiff.py:243 ../meld/vcview.py:140 +msgid "Show modified" +msgstr "Afișează obiectele modificate" + +#: ../meld/dirdiff.py:245 +msgid "Filters" +msgstr "Filtre" + +#: ../meld/dirdiff.py:245 +msgid "Set active filters" +msgstr "Definește filtrele active" + +#: ../meld/dirdiff.py:362 +#, python-format +msgid "Hide %s" +msgstr "Ascunde %s" + +#: ../meld/dirdiff.py:466 ../meld/dirdiff.py:479 ../meld/vcview.py:323 +#: ../meld/vcview.py:347 +#, python-format +msgid "[%s] Scanning %s" +msgstr "[%s] Se analizează %s" + +#: ../meld/dirdiff.py:578 +#, python-format +msgid "[%s] Done" +msgstr "[%s] Terminat" + +#: ../meld/dirdiff.py:582 +msgid "Multiple errors occurred while scanning this folder" +msgstr "" + +#: ../meld/dirdiff.py:583 +#, fuzzy +#| msgid "%s is not in encodings: %s" +msgid "Files with invalid encodings found" +msgstr "%s nu se află în codări: %s" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:585 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" + +#: ../meld/dirdiff.py:587 +msgid "Files hidden by case insensitive comparison" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:589 +#, fuzzy +#| msgid "" +#| "You are running a case insensitive comparison on a case sensitive " +#| "filesystem. Some files are not visible:\n" +#| "%s" +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" +msgstr "" +"Efectuați o comparație insensibilă la majuscule pe un sistem de fișiere " +"sensibil la majuscule. Anumite fișiere nu sunt vizibile:\n" +"%s" + +#: ../meld/dirdiff.py:600 +#, python-format +msgid "'%s' hidden by '%s'" +msgstr "„%s” ascuns de „%s”" + +#: ../meld/dirdiff.py:625 ../meld/filediff.py:1008 ../meld/filediff.py:1169 +msgid "Hi_de" +msgstr "Ascun_de" + +#: ../meld/dirdiff.py:675 +#, python-format +msgid "" +"'%s' exists.\n" +"Overwrite?" +msgstr "" +"„%s” există deja.\n" +"Suprascrieți?" + +#: ../meld/dirdiff.py:682 +#, python-format +msgid "" +"Error copying '%s' to '%s'\n" +"\n" +"%s." +msgstr "" +"Eroare la copierea „%s” în „%s”\n" +"\n" +"%s." + +#: ../meld/dirdiff.py:700 ../meld/vcview.py:536 +#, python-format +msgid "" +"'%s' is a directory.\n" +"Remove recursively?" +msgstr "" +"„%s” este un director.\n" +"Eliminați recursiv?" + +#: ../meld/dirdiff.py:707 ../meld/vcview.py:541 +#, python-format +msgid "" +"Error removing %s\n" +"\n" +"%s." +msgstr "" +"Eroare la ștergerea %s\n" +"\n" +"%s." + +#: ../meld/dirdiff.py:741 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i secundă" +msgstr[1] "%i secunde" + +#: ../meld/dirdiff.py:742 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i minut" +msgstr[1] "%i minute" + +#: ../meld/dirdiff.py:743 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i oră" +msgstr[1] "%i ore" + +#: ../meld/dirdiff.py:744 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i zi" +msgstr[1] "%i zile" + +#: ../meld/dirdiff.py:745 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i saptamână" +msgstr[1] "%i săptămâni" + +#: ../meld/dirdiff.py:746 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i lună" +msgstr[1] "%i luni" + +#: ../meld/dirdiff.py:747 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i an" +msgstr[1] "%i ani" + +#: ../meld/filediff.py:294 +msgid "Format as patch..." +msgstr "Formatează ca petic..." + +#: ../meld/filediff.py:294 +msgid "Create a patch using differences between files" +msgstr "Creează un petic folosind diferențe între fișiere" + +#: ../meld/filediff.py:295 +msgid "Previous conflict" +msgstr "Conflict precedent" + +#: ../meld/filediff.py:295 +msgid "Go to the previous conflict" +msgstr "Mergi la conflictul precedent" + +#: ../meld/filediff.py:296 +msgid "Next conflict" +msgstr "Următorul conflict" + +#: ../meld/filediff.py:296 +msgid "Go to the next conflict" +msgstr "Mergi la următorul conflict" + +#: ../meld/filediff.py:297 +#, fuzzy +msgid "Push to left" +msgstr "Împinge la stânga" + +#: ../meld/filediff.py:297 +#, fuzzy +msgid "Push current change to the left" +msgstr "Împinge modificarea curentă la stânga" + +#: ../meld/filediff.py:298 +#, fuzzy +msgid "Push to right" +msgstr "Împinge la dreapta" + +#: ../meld/filediff.py:298 +#, fuzzy +msgid "Push current change to the right" +msgstr "Împinge modificarea curentă la dreapta" + +#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse +#: ../meld/filediff.py:300 +msgid "Pull from left" +msgstr "Trage de la stânga" + +#: ../meld/filediff.py:300 +msgid "Pull change from the left" +msgstr "Trage modificarea de la stânga" + +#: ../meld/filediff.py:301 +msgid "Pull from right" +msgstr "Trage de la dreapta" + +#: ../meld/filediff.py:301 +msgid "Pull change from the right" +msgstr "Trage modificarea de la dreapta" + +#: ../meld/filediff.py:302 +msgid "Copy above left" +msgstr "Copiază deasupra la stânga" + +#: ../meld/filediff.py:302 +msgid "Copy change above the left chunk" +msgstr "Copiază modificarea deasupra segmentului stâng" + +#: ../meld/filediff.py:303 +msgid "Copy below left" +msgstr "Copiază dedesubt la stânga" + +#: ../meld/filediff.py:303 +msgid "Copy change below the left chunk" +msgstr "Copiază modificarea sub segmentul stâng" + +#: ../meld/filediff.py:304 +msgid "Copy above right" +msgstr "Copiază deasupra la dreapta" + +#: ../meld/filediff.py:304 +msgid "Copy change above the right chunk" +msgstr "Copiază modificarea deasupra segmentului drept" + +#: ../meld/filediff.py:305 +msgid "Copy below right" +msgstr "Copiază dedesubt la dreapta" + +#: ../meld/filediff.py:305 +msgid "Copy change below the right chunk" +msgstr "Copiază modificarea sub segmentul drept" + +#: ../meld/filediff.py:306 +msgid "Delete" +msgstr "Șterge" + +#: ../meld/filediff.py:306 +msgid "Delete change" +msgstr "Șterge modificarea" + +#: ../meld/filediff.py:307 +msgid "Merge all changes from left" +msgstr "Combină toate modificările din stânga" + +#: ../meld/filediff.py:307 +msgid "Merge all non-conflicting changes from the left" +msgstr "Combină toate modificările non-conflictuale din stânga" + +#: ../meld/filediff.py:308 +msgid "Merge all changes from right" +msgstr "Combină toate modificările din dreapta" + +#: ../meld/filediff.py:308 +msgid "Merge all non-conflicting changes from the right" +msgstr "Combină toate modificările non-conflictuale din dreapta" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting" +msgstr "Combină toate modificările non-conflictuale" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "Combină toate modificările non-conflictuale din panoul stâng și drept" + +#: ../meld/filediff.py:310 +msgid "Cycle through documents" +msgstr "" + +#: ../meld/filediff.py:310 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "" + +#: ../meld/filediff.py:314 +msgid "Lock scrolling" +msgstr "" + +#: ../meld/filediff.py:315 +msgid "Lock scrolling of all panes" +msgstr "" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:396 +msgid "INS" +msgstr "INS" + +#: ../meld/filediff.py:396 +msgid "OVR" +msgstr "SPR" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:398 +#, python-format +msgid "Ln %i, Col %i" +msgstr "Ln %i, Col %i" + +#: ../meld/filediff.py:722 +#, fuzzy, python-format +#| msgid "" +#| "Regular expression '%s' changed the number of lines in the file. " +#| "Comparison will be incorrect. See the user manual for more details." +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" +"Expresia regulată „%s” a modificat numărul de linii din fișier. Comparația " +"va fi incorectă. Pentru mai multe detalii consultați manualul utilizatorului." + +#. TRANSLATORS: this is the name of a new file which has not yet been saved +#: ../meld/filediff.py:809 +msgid "" +msgstr "" + +#: ../meld/filediff.py:996 +#, python-format +msgid "[%s] Set num panes" +msgstr "[%s] Definește numărul de panouri" + +#: ../meld/filediff.py:1002 +#, python-format +msgid "[%s] Opening files" +msgstr "[%s] Se deschid fișierele" + +#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 +#: ../meld/filediff.py:1053 +msgid "Could not read file" +msgstr "Nu s-a putut citi fișierul" + +#: ../meld/filediff.py:1027 +#, python-format +msgid "[%s] Reading files" +msgstr "[%s] Se citesc fișierele" + +#: ../meld/filediff.py:1036 +#, python-format +msgid "%s appears to be a binary file." +msgstr "%s apare ca fișier binar." + +#: ../meld/filediff.py:1048 +#, python-format +msgid "%s is not in encodings: %s" +msgstr "%s nu se află în codări: %s" + +#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#, python-format +msgid "[%s] Computing differences" +msgstr "[%s] Se calculează diferențele" + +#: ../meld/filediff.py:1156 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" + +#: ../meld/filediff.py:1162 +msgid "Files are identical" +msgstr "Fișierele sunt identice" + +#: ../meld/filediff.py:1172 +#, fuzzy +#| msgid "Show ignored files" +msgid "Show without filters" +msgstr "Afișează fișierele ignorate" + +#: ../meld/filediff.py:1361 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" +msgstr "" +"„%s” există deja!\n" +"Suprascrieți?" + +#: ../meld/filediff.py:1374 +#, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "" +"Eroare la scrierea în %s\n" +"\n" +"%s." + +#: ../meld/filediff.py:1383 +#, python-format +msgid "Choose a name for buffer %i." +msgstr "Alegeți un nume pentru zona de memorie tampon %i." + +#: ../meld/filediff.py:1398 +#, python-format +msgid "" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" +msgstr "" +"Fișierul „%s” conține un amestec de linii de sfârșit.\n" +"\n" +"Ce format doriți să folosiți?" + +#: ../meld/filediff.py:1414 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" +msgstr "" +"„%s” conține caractere care nu pot fi codificare cu „%s”\n" +"Doriți să salvați ca UTF-8?" + +#: ../meld/filediff.py:1473 +#, python-format +msgid "" +"Reloading will discard changes in:\n" +"%s\n" +"\n" +"You cannot undo this operation." +msgstr "" +"Reîncărcarea va anula modificările în:\n" +"%s\n" +"\n" +"Nu puteți anula această operație." + +#: ../meld/filemerge.py:82 +#, python-format +msgid "[%s] Merging files" +msgstr "[%s] Se combină fișierele" + +#: ../meld/meldapp.py:152 +msgid "wrong number of arguments supplied to --diff" +msgstr "număr de parametri incorect pentru --diff" + +#: ../meld/meldapp.py:156 +msgid "Start with an empty window" +msgstr "Începe cu o fereastră goală" + +#: ../meld/meldapp.py:157 ../meld/meldapp.py:158 ../meld/meldapp.py:160 +msgid "file" +msgstr "fișier" + +#: ../meld/meldapp.py:157 ../meld/meldapp.py:159 ../meld/meldapp.py:160 +msgid "dir" +msgstr "director" + +#: ../meld/meldapp.py:157 +#, fuzzy +msgid "Start a version control comparison" +msgstr "Începe o comparație de control a versiunilor" + +#: ../meld/meldapp.py:158 +msgid "Start a 2- or 3-way file comparison" +msgstr "Începe o comparație de 2 sau 3 fișiere" + +#: ../meld/meldapp.py:159 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Începe o comparație de 2 sau 3 directoare" + +#: ../meld/meldapp.py:160 +msgid "Start a comparison between file and dir/file" +msgstr "Începe o comparație dintre fișier și director/fișier" + +#: ../meld/meldapp.py:166 +msgid "Meld is a file and directory comparison tool." +msgstr "Meld este o unealtă de comparare a fișierelor și directoarelor." + +#: ../meld/meldapp.py:169 +msgid "Set label to use instead of file name" +msgstr "Definiți eticheta care să file folosită în locul numelui de fișier" + +#: ../meld/meldapp.py:171 +msgid "Automatically compare all differing files on startup" +msgstr "Compară automat la pornire toate fișierele care diferă" + +#: ../meld/meldapp.py:173 +msgid "Ignored for compatibility" +msgstr "" + +#: ../meld/meldapp.py:176 +msgid "Set the target file for saving a merge result" +msgstr "Definiți fișierul țintă pentru a salva un rezultat combinat" + +#: ../meld/meldapp.py:179 +msgid "Creates a diff tab for up to 3 supplied files or directories." +msgstr "Creează un tab diferențiat pentru cel mult 3 fișiere sau directoare." + +#: ../meld/meldapp.py:182 +#, python-format +msgid "too many arguments (wanted 0-4, got %d)" +msgstr "prea multe argumente (e nevoie de 0-4, %d obținute)" + +#: ../meld/meldapp.py:184 ../meld/meldapp.py:188 +#, fuzzy +#| msgid "Cannot compare a mixture of files and directories.\n" +msgid "can't compare more than three directories" +msgstr "Nu se poate compara un amestec de fișiere și directoare.\n" + +#: ../meld/melddoc.py:56 ../meld/melddoc.py:57 +msgid "untitled" +msgstr "fără titlu" + +#: ../meld/meldwindow.py:125 +msgid "_File" +msgstr "_Fișier" + +#: ../meld/meldwindow.py:126 +msgid "_New..." +msgstr "_Nou..." + +#: ../meld/meldwindow.py:126 +msgid "Start a new comparison" +msgstr "Începe o nouă comparație" + +#: ../meld/meldwindow.py:127 +msgid "Save the current file" +msgstr "Salvează fișierul curent" + +#: ../meld/meldwindow.py:129 +msgid "Close the current file" +msgstr "Închide fișierul curent" + +#: ../meld/meldwindow.py:130 +msgid "Quit the program" +msgstr "Părăsește programul" + +#: ../meld/meldwindow.py:132 +msgid "_Edit" +msgstr "_Editare" + +#: ../meld/meldwindow.py:133 +msgid "Undo the last action" +msgstr "Anulează ultima acțiune" + +#: ../meld/meldwindow.py:134 +msgid "Redo the last undone action" +msgstr "Refă ultima acțiune neterminată" + +#: ../meld/meldwindow.py:135 +msgid "Cut the selection" +msgstr "Taie selecția" + +#: ../meld/meldwindow.py:136 +msgid "Copy the selection" +msgstr "Copiază selecția" + +#: ../meld/meldwindow.py:137 +msgid "Paste the clipboard" +msgstr "Lipește clipboard-ul" + +#: ../meld/meldwindow.py:138 +msgid "Search for text" +msgstr "Caută după text" + +#: ../meld/meldwindow.py:139 +msgid "Find Ne_xt" +msgstr "Găsește _următorul" + +#: ../meld/meldwindow.py:139 +msgid "Search forwards for the same text" +msgstr "Caută după același text în față" + +#: ../meld/meldwindow.py:140 +#, fuzzy +#| msgid "_Previous" +msgid "Find _Previous" +msgstr "Îna_poi" + +#: ../meld/meldwindow.py:140 +#, fuzzy +#| msgid "Search forwards for the same text" +msgid "Search backwards for the same text" +msgstr "Caută după același text în față" + +#: ../meld/meldwindow.py:141 +msgid "Find and replace text" +msgstr "Caută și înlocuiește un text" + +#: ../meld/meldwindow.py:142 +msgid "Prefere_nces" +msgstr "Preferi_nțe" + +#: ../meld/meldwindow.py:142 +msgid "Configure the application" +msgstr "Configurează aplicația" + +#: ../meld/meldwindow.py:144 +msgid "_Changes" +msgstr "_Modificări" + +#: ../meld/meldwindow.py:145 +msgid "Next change" +msgstr "Următoarea modificare" + +#: ../meld/meldwindow.py:145 +msgid "Go to the next change" +msgstr "Mergi la următoarea modificare" + +#: ../meld/meldwindow.py:146 +msgid "Previous change" +msgstr "Modificarea precedentă" + +#: ../meld/meldwindow.py:146 +msgid "Go to the previous change" +msgstr "Revino la modificarea precedentă" + +#: ../meld/meldwindow.py:147 +msgid "Open externally" +msgstr "" + +#: ../meld/meldwindow.py:147 +msgid "Open selected file or directory in the default external application" +msgstr "" + +#: ../meld/meldwindow.py:149 +msgid "_View" +msgstr "_Vizualizare" + +#: ../meld/meldwindow.py:150 +msgid "File status" +msgstr "Stare fișier" + +#: ../meld/meldwindow.py:151 +msgid "Version status" +msgstr "Stare versiune" + +#: ../meld/meldwindow.py:152 +msgid "File filters" +msgstr "Filtre de fișier" + +#: ../meld/meldwindow.py:153 +msgid "Stop the current action" +msgstr "Întrerupe acțiunea curentă" + +#: ../meld/meldwindow.py:154 +msgid "Refresh the view" +msgstr "Reîmprospătează ecranul" + +#: ../meld/meldwindow.py:155 +msgid "Reload" +msgstr "Reîncarcă" + +#: ../meld/meldwindow.py:155 +msgid "Reload the comparison" +msgstr "Reîncarcă comparația" + +#: ../meld/meldwindow.py:157 +msgid "_Tabs" +msgstr "" + +#: ../meld/meldwindow.py:158 +#, fuzzy +#| msgid "_Previous" +msgid "_Previous Tab" +msgstr "Îna_poi" + +#: ../meld/meldwindow.py:158 +#, fuzzy +#| msgid "Go to the previous change" +msgid "Activate previous tab" +msgstr "Revino la modificarea precedentă" + +#: ../meld/meldwindow.py:159 +#, fuzzy +#| msgid "_Next" +msgid "_Next Tab" +msgstr "Î_nainte" + +#: ../meld/meldwindow.py:159 +msgid "Activate next tab" +msgstr "" + +#: ../meld/meldwindow.py:160 +#, fuzzy +#| msgid "Copy To Left" +msgid "Move Tab _Left" +msgstr "Copiază la stânga" + +#: ../meld/meldwindow.py:160 +#, fuzzy +msgid "Move current tab to left" +msgstr "Împinge modificarea curentă la stânga" + +#: ../meld/meldwindow.py:161 +#, fuzzy +#| msgid "Copy To Right" +msgid "Move Tab _Right" +msgstr "Copiază la dreapta" + +#: ../meld/meldwindow.py:161 +#, fuzzy +msgid "Move current tab to right" +msgstr "Împinge modificarea curentă la dreapta" + +#: ../meld/meldwindow.py:163 +msgid "_Help" +msgstr "_Ajutor" + +#: ../meld/meldwindow.py:164 +msgid "_Contents" +msgstr "_Sumar" + +#: ../meld/meldwindow.py:164 +msgid "Open the Meld manual" +msgstr "Deschide manulaul Meld" + +#: ../meld/meldwindow.py:165 +msgid "Report _Bug" +msgstr "Raportează _eroare" + +#: ../meld/meldwindow.py:165 +msgid "Report a bug in Meld" +msgstr "Raportează o eroare în Meld" + +#: ../meld/meldwindow.py:166 +msgid "About this program" +msgstr "Despre acest program" + +#: ../meld/meldwindow.py:169 +msgid "Full Screen" +msgstr "Ecran complet" + +#: ../meld/meldwindow.py:169 +msgid "View the comparison in full screen" +msgstr "Vezi comparația pe ecran complet" + +#: ../meld/meldwindow.py:170 +msgid "_Toolbar" +msgstr "_Bară de unelte" + +#: ../meld/meldwindow.py:170 +msgid "Show or hide the toolbar" +msgstr "Arată sau ascunde bara de unelte" + +#: ../meld/meldwindow.py:171 +msgid "_Statusbar" +msgstr "Bară de _stare" + +#: ../meld/meldwindow.py:171 +msgid "Show or hide the statusbar" +msgstr "Arată sau ascunde bara de stare" + +#: ../meld/meldwindow.py:538 +msgid "Switch to this tab" +msgstr "" + +#. exit at first non found directory + file +#: ../meld/meldwindow.py:629 +msgid "Cannot compare a mixture of files and directories.\n" +msgstr "Nu se poate compara un amestec de fișiere și directoare.\n" + +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:174 +msgid "[None]" +msgstr "[Nespecificat]" + +#: ../meld/patchdialog.py:122 +msgid "Save Patch As..." +msgstr "Salvează petic ca..." + +#: ../meld/preferences.py:37 +msgid "label" +msgstr "etichetă" + +#: ../meld/preferences.py:37 +msgid "pattern" +msgstr "tipar" + +#: ../meld/preferences.py:111 +msgid "Only available if you have gnome-python-desktop installed" +msgstr "Disponibil doar dacă aveți gnome-python-desktop instalat" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:234 +msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +msgstr "Copii de rezervă\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:236 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:238 +#, python-format +msgid "Version Control\t1\t%s\n" +msgstr "Control al versiunilor\t1\t%s\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:240 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +msgstr "Binare\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:242 +msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +msgstr "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:244 +msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +msgstr "Cuvinte cheie CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:246 +msgid "C++ comment\t0\t//.*\n" +msgstr "Comentariu C++\t0\t//.*\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:248 +msgid "C comment\t0\t/\\*.*?\\*/\n" +msgstr "Comentariu C\t0\t/\\*.*?\\*/\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:250 +msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +msgstr "Toate spațiile goalel\t0\t[ \\t\\r\\f\\v]*\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:252 +msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +msgstr "Spațiul gol de la începutul liniei\t0\t^[ \\t\\r\\f\\v]*\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:254 +msgid "Script comment\t0\t#.*" +msgstr "Comentariu script\t0\t#.*" + +#: ../meld/vcview.py:128 +#, fuzzy +#| msgid "Commit" +msgid "Co_mmit" +msgstr "Validează" + +#: ../meld/vcview.py:128 +msgid "Commit" +msgstr "Validează" + +#: ../meld/vcview.py:129 +msgid "_Update" +msgstr "_Actualizează" + +#: ../meld/vcview.py:129 +msgid "Update" +msgstr "Actualizează" + +#: ../meld/vcview.py:130 +#, fuzzy +msgid "Add to VC" +msgstr "Adaugă în panoul de control al versiunilor" + +#: ../meld/vcview.py:131 +#, fuzzy +msgid "Add _Binary" +msgstr "Adaugă _binar" + +#: ../meld/vcview.py:131 +#, fuzzy +msgid "Add binary to VC" +msgstr "Adaugă binar în panoul de control al versiunilor" + +#: ../meld/vcview.py:132 +#, fuzzy +msgid "Remove from VC" +msgstr "Elimină din panoul de control al versiunilor" + +#: ../meld/vcview.py:133 +msgid "_Resolved" +msgstr "_Rezolvat" + +#: ../meld/vcview.py:133 +#, fuzzy +msgid "Mark as resolved for VC" +msgstr "Marcat ca rezolvat pentru panoul de control al versiunilor" + +#: ../meld/vcview.py:134 +msgid "Revert to original" +msgstr "Revino la original" + +#: ../meld/vcview.py:135 +msgid "Delete locally" +msgstr "Șterge local" + +#: ../meld/vcview.py:139 +msgid "_Flatten" +msgstr "_Nivelează" + +#: ../meld/vcview.py:139 +msgid "Flatten directories" +msgstr "Nivelează directoarele" + +#: ../meld/vcview.py:140 +msgid "_Modified" +msgstr "_Modificat" + +#: ../meld/vcview.py:141 +msgid "_Normal" +msgstr "_Normal" + +#: ../meld/vcview.py:141 +msgid "Show normal" +msgstr "Arată normal" + +#: ../meld/vcview.py:142 +#, fuzzy +msgid "Non _VC" +msgstr "Non _versiune" + +#: ../meld/vcview.py:142 +msgid "Show unversioned files" +msgstr "Afișează fișierele care nu au versiune" + +#: ../meld/vcview.py:143 +msgid "Ignored" +msgstr "Ignorat" + +#: ../meld/vcview.py:143 +msgid "Show ignored files" +msgstr "Afișează fișierele ignorate" + +#: ../meld/vcview.py:186 ../meld/vcview.py:319 +msgid "Location" +msgstr "Locație" + +#: ../meld/vcview.py:187 +msgid "Status" +msgstr "Stare" + +#: ../meld/vcview.py:188 +msgid "Rev" +msgstr "Revizie" + +#: ../meld/vcview.py:189 +msgid "Tag" +msgstr "Etichetă" + +#: ../meld/vcview.py:190 +msgid "Options" +msgstr "Opțiuni" + +#: ../meld/vcview.py:249 +#, fuzzy +msgid "Choose one Version Control" +msgstr "Alegeți un panou de control al versiunilor" + +#: ../meld/vcview.py:250 +#, fuzzy +msgid "Only one Version Control in this directory" +msgstr "Doar un panou de control al versiunilor în acest director" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:263 +#, python-format +msgid "%s Not Installed" +msgstr "%s neinstalat" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:267 +msgid "Invalid Repository" +msgstr "Depozit invalid" + +#: ../meld/vcview.py:276 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:319 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../meld/vcview.py:363 +msgid "(Empty)" +msgstr "(gol)" + +#: ../meld/vcview.py:401 +#, python-format +msgid "[%s] Fetching differences" +msgstr "[%s] Se potrivesc diferențele" + +#: ../meld/vcview.py:409 +#, python-format +msgid "[%s] Applying patch" +msgstr "[%s] Se aplică petic" + +#: ../meld/vcview.py:511 +msgid "Select some files first." +msgstr "Selectați niște fișiere mai întâi." + +#: ../meld/vcview.py:584 +#, python-format +msgid "" +"\n" +" Invoking 'patch' failed.\n" +" \n" +" Maybe you don't have 'GNU patch' installed,\n" +" or you use an untested version of %s.\n" +" \n" +" Please send email bug report to:\n" +" meld-list@gnome.org\n" +" \n" +" Containing the following information:\n" +" \n" +" - meld version: '%s'\n" +" - source control software type: '%s'\n" +" - source control software version: 'X.Y.Z'\n" +" - the output of '%s somefile.txt'\n" +" - patch command: '%s'\n" +" (no need to actually run it, just provide\n" +" the command line) \n" +" \n" +" Replace 'X.Y.Z' by the actual version for the\n" +" source control software you use.\n" +" " +msgstr "" +"\n" +" Apelarea „peticului” a eșuat.\n" +" \n" +" Se poate să nu aveți instalat „peticul GNU” instalat,\n" +" sau folosiți o versiune netestată a %s.\n" +" \n" +" Trimiteți un email cu raportul de eroare la:\n" +" meld-list@gnome.org\n" +" \n" +" Care să conțină următoarele informații:\n" +" \n" +" - versiunea meld: „%s”\n" +" - tipul programului de control: „%s”\n" +" - versiunea programului de control: „X.Y.Z”\n" +" - rezultatul fișierului „%s somefile.txt”\n" +" - comandă petic: „%s”\n" +" (nu este nevoie s-o rulați, doar specificați\n" +" linia de comandă) \n" +" \n" +" Înlocuiți „X.Y.Z” cu versiunea actuală a\n" +" programului de control pe care o folosiți.\n" +" " + +#: ../meld/ui/findbar.py:127 +#, python-format +msgid "" +"Regular expression error\n" +"'%s'" +msgstr "" +"Eroare expresie regulată\n" +"„%s”" + +#: ../meld/ui/historyentry.py:293 +msgid "_Browse..." +msgstr "_Navighează..." + +#: ../meld/ui/historyentry.py:301 +msgid "Path" +msgstr "Cale" + +#: ../meld/ui/historyentry.py:302 +msgid "Path to file" +msgstr "Calea către fișier" + +#: ../meld/ui/historyentry.py:303 +msgid "Pop up a file selector to choose a file" +msgstr "Afișează un selector de fișiere pentru a alege un fișier" + +#: ../meld/ui/historyentry.py:441 +msgid "Select directory" +msgstr "Selectați directorul" + +#: ../meld/ui/historyentry.py:445 +msgid "Select file" +msgstr "Selectați fișierul" + +#: ../meld/ui/notebooklabel.py:60 +msgid "Close tab" +msgstr "Închide tabul" + +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:40 +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +msgstr "" +"Ignorat:Fără versiune:::Eroare::Recent adăugat:Modificat:Conflict:Eliminat:" +"Lipsă" + +#: ../meld/vc/cvs.py:163 +#, python-format +msgid "" +"Error converting to a regular expression\n" +"The pattern was '%s'\n" +"The error was '%s'" +msgstr "" +"Eroare la convertirea în expresie regulată\n" +"Tiparul este „%s”\n" +"Eroarea este „%s”" + +#~ msgid "Compare Options" +#~ msgstr "Opțiuni comparare" + +#~ msgid "Date" +#~ msgstr "Dată" + +#, fuzzy +#~ msgid "Local copy against other remote revision" +#~ msgstr "Copie locală comparativ cu altă revizie la distanță" + +#, fuzzy +#~ msgid "Local copy against same remote revision" +#~ msgstr "Copie locală comparativ cu aceeași revizie la distanță" + +#~ msgid "Left" +#~ msgstr "Stânga" + +#~ msgid "Right" +#~ msgstr "Dreapta" + +#~ msgid "Open selected" +#~ msgstr "Deschide obiectul selectat" + +#~ msgid "Error converting pattern '%s' to regular expression" +#~ msgstr "Eroare la convertirea tiparului „%s” în expresie regulată" + +#~ msgid "Regex" +#~ msgstr "Expresie regulată" + +#~ msgid "_Commit" +#~ msgstr "_Validează" + +#~ msgid "No differences found." +#~ msgstr "Nicio diferență găsită." diff -Nru meld-1.5.3/po/sl.po meld-3.11.0/po/sl.po --- meld-1.5.3/po/sl.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/sl.po 2014-02-16 20:23:22.000000000 +0000 @@ -2,513 +2,1067 @@ # Copyright (C) 2009 meld's COPYRIGHT HOLDER # This file is distributed under the same license as the meld package. # -# Matej Urbančič , 2009 - 2011. +# Matej Urbančič , 2009-2014. # msgid "" msgstr "" "Project-Id-Version: meld master\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-12-03 14:57+0000\n" -"PO-Revision-Date: 2011-12-08 21:58+0100\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-01-03 06:48+0000\n" +"PO-Revision-Date: 2014-01-03 22:27+0100\n" "Last-Translator: Matej Urbančič \n" "Language-Team: Slovenian GNOME Translation Team \n" -"Language: \n" +"Language: sl_SI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n" -"X-Poedit-Language: Slovenian\n" -"X-Poedit-Country: SLOVENIA\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: ../bin/meld:96 +#: ../bin/meld:115 msgid "Cannot import: " msgstr "Ni mogoče uvoziti:" -#: ../bin/meld:99 +#: ../bin/meld:118 #, c-format msgid "Meld requires %s or higher." msgstr "Program Meld zahteva najmanj različico %s." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Primerjava in združevanje datotek" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Pregledovalnik sprememb" #: ../data/meld.desktop.in.h:3 -#: ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 msgid "Meld Diff Viewer" msgstr "Meld pregledovalnik različic" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Primerjava in združevanje datotek" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Opis primerjave Meld" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +#, fuzzy +msgid "Default window size" +msgstr "Privzeta vodoravna velikost okna" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +msgid "Show toolbar" +msgstr "Pokaži orodno vrstico" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +#, fuzzy +msgid "If true, the window toolbar is visible." +msgstr "Prav, če je okno lastnosti razpeto." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +msgid "Show statusbar" +msgstr "Pokaži vrstico stanja" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +#, fuzzy +msgid "If true, the window statusbar is visible." +msgstr "Prav, če je okno lastnosti razpeto." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +#, fuzzy +msgid "Automatically detected text encodings" +msgstr "Dovoli samodejno skrčenje besedila ob združevanju" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:8 +#, fuzzy +msgid "Width of an indentation step" +msgstr "V korak z" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +#, fuzzy +msgid "The number of spaces to use for a single indent step" +msgstr "Število presledkov za vsak korak zamika" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:12 +#, fuzzy +msgid "Show line numbers" +msgstr "Pokaži številke vrstic" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:14 +msgid "Highlight syntax" +msgstr "Poudarjanje skladnje" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:16 +#, fuzzy +msgid "Displayed whitespace" +msgstr "Prikazana stran" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:18 +msgid "Wrap mode" +msgstr "Način preloma" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:20 +#, fuzzy +msgid "Highlight current line" +msgstr "Poudari trenutno vrstico" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:22 +#, fuzzy +msgid "Use the system default monospace font" +msgstr "Ali naj se uporabi privzeta sistemska pisava enake širine znakov" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:24 +#, fuzzy +msgid "Custom font" +msgstr "Pisava po meri:" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:28 +#, fuzzy +msgid "Use the system default editor" +msgstr "Uporabi _privzet sistemski urejevalnik besedil." + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:30 +#, fuzzy +msgid "The custom editor launch command" +msgstr "Ukaz za zagon urejevalnika:" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:32 +#, fuzzy +msgid "Columns to display" +msgstr "Število prikazanih stolpcev" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Prezri simbolne povezave" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:36 +#, fuzzy +msgid "Use shallow comparison" +msgstr "Nova primerjava" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:38 +#, fuzzy +msgid "File timestamp resolution" +msgstr "Ploskev žariščne ločljivosti X" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:40 +#, fuzzy +msgid "File status filters" +msgstr "Pokaži stanje datoteke ali mape" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:42 +#, fuzzy +msgid "Show the version control console output" +msgstr "Izbor različice sistema za nadzor različic za uporabo" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:46 +#, fuzzy +msgid "Show margin in commit message editor" +msgstr "Pokaži desni rob v pogledu sporočil uveljavitev" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:48 +#, fuzzy +msgid "Margin column in commit message editor" +msgstr "Pokaži desni rob v pogledu sporočil uveljavitev" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:52 +#, fuzzy +msgid "Version control status filters" +msgstr "Vstavek sistema nadzora različic" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:54 +#, fuzzy +msgid "Filename-based filters" +msgstr "Izvoz Balsinih filtrov" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:56 +#, fuzzy +msgid "Text-based filters" +msgstr "Izvoz Balsinih filtrov" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "O programu" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Avtorske pravice © 2002-2009 Stephen Kennedy\n" +"Avtorske pravice © 2009-2011 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Spletišče" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "Matej Urbančič " + +#: ../data/ui/application.ui.h:6 +msgid "_Preferences" +msgstr "_Možnosti" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "Pomo_č" + +#: ../data/ui/application.ui.h:8 +msgid "_About" +msgstr "_O programu" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Končaj" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Primerjava" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Primerjajo izbrane datoteke" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Kopiraj _levo" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Kopiraj na levo" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Kopiraj _desno" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Kopiraj na desno" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Izbriši izbor" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1414 +msgid "Hide" +msgstr "Skrij" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Skrij izbrano" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Prezri velikost črk imen datotek" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Obravnavaj datoteke, ki imajo v imenu črke različne velikosti, vendar so " +"sicer enake, kot da so enake." + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Enako" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Pokaži enako" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Novo" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Pokaži novejše" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Spremenjeno" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Pokaži spremenjeno" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Filtri" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Določi dejavne filtre" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Dejavno" +msgid "Editable List" +msgstr "Uredljiv seznam" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Dodaj nov filter" +msgid "Active" +msgstr "Dejavno" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Uredljiv seznam" +msgid "Column Name" +msgstr "Ime stolpca" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "Premakni navz_dol" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Dodaj" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:678 +msgid "_Remove" +msgstr "_Odstrani" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Premakni predmet navzgor" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "Premakni _navzgor" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" msgstr "Premakni predmet navzdol" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Premakni predmet navzgor" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Premakni navz_dol" -#: ../data/ui/EditableList.ui.h:8 -#: ../meld/vcview.py:156 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:366 +#: ../meld/vcview.py:188 msgid "Name" msgstr "Ime" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Vzorec" -#: ../data/ui/EditableList.ui.h:10 +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Dodaj nov filter" + +#: ../data/ui/EditableList.ui.h:13 msgid "Remove selected filter" msgstr "Odstrani izbrani filter" -#: ../data/ui/EditableList.ui.h:11 -#: ../meld/vcview.py:121 -msgid "_Add" -msgstr "_Dodaj" - -#: ../data/ui/EditableList.ui.h:12 -#: ../meld/vcview.py:123 -msgid "_Remove" -msgstr "_Odstrani" - #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Ali naj se spremenjene datoteke shranijo?" +msgid "Save changes to documents before closing?" +msgstr "Ali želite shraniti spremembe dokumenta pred zapiranjem?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Nekatere datoteke so bile spremenjene.\n" -"Katere datoteke naj se shranjenijo?" +msgid "If you don't save, changes will be permanently lost." +msgstr "V primeru, da sprememb ne shranite, bodo te trajno izgubljene." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Zapri _brez shranjevanja" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Prezri spremembe" +msgid "_Cancel" +msgstr "_Prekliči" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "_Shrani izbrano" +msgid "_Save" +msgstr "_Shrani" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"V datoteko ni mogoče pisati. S klikom na to mesto lahko odklenete datoteko " +"in vsebino spreminjate, vendar pa je treba spremembe shraniti v datoteko z " +"drugim imenom." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Ali naj se povrnejo neshranjene spremembe dokumentov?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Spremembe navedenih dokumentov bodo trajno izgubljene:\n" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "_Logični izraz" +msgid "_Replace" +msgstr "_Zamenjaj" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "Zamenjaj _vse" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Zamenjaj _z" +msgid "_Previous" +msgstr "_Predhodni" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "Cele _besede" +msgid "_Next" +msgstr "_Naslednji" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "_Upoštevaj velikost črk" +msgid "Find:" +msgstr "Najdi:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "_Naslednji" +msgid "Replace _with:" +msgstr "Zamenjaj _z:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "_Predhodni" +msgid "_Match case" +msgstr "_Upoštevaj velikost črk" #: ../data/ui/findbar.ui.h:8 -#: ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "_Zamenjaj" +msgid "Who_le word" +msgstr "Cele _besede" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Poišči" - -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Izbor datotek" - -#: ../data/ui/meldapp.ui.h:2 -msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2011 Kai Willadsen" -msgstr "" -"Avtorske pravice © 2002-2009 Stephen Kennedy\n" -"Avtorske pravice © 2009-2011 Kai Willadsen" - -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Mapa" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Lastno" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Izvorno" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Drugo" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Izbor VC mape" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "_Primerjava vsebine map" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "_Primerjava datotek" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "_Trojna primerjava" - -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "_Brskalnik po nadzoru različic" +msgid "Regular e_xpression" +msgstr "_Logični izraz" -#: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "Matej Urbančič " +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Prelomljeno" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Kopiraj v odložišče" +msgid "Format as Patch" +msgstr "Oblikuj kot popravek" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Ustvari popravek" +msgid "Use differences between:" +msgstr "Uporabi razlike med:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Ustvari programski popravek" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Levi in srednji pladenj" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Srednji in desni pladenj" -#: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Uporabi razlike med:" - -#: ../data/ui/patch-dialog.ui.h:7 +#: ../data/ui/patch-dialog.ui.h:5 msgid "_Reverse patch direction" msgstr "Obrni smer popravka" +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Kopiraj v odložišče" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:121 +msgid "Save Patch" +msgstr "Shrani popravek" + #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Prikaz" +msgid "Left is remote, right is local" +msgstr "Levo je oddaljeno, desno krajevno" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Ne _deli besed preko dveh vrstic" +msgid "Left is local, right is remote" +msgstr "Levo je krajevno, desno oddaljeno" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Ukaz _urejevalnika:" +msgid "1ns (ext4)" +msgstr "1ns (ext4)" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Urejevalnik" +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Omogoči _prelom besedila" +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Nabor znakov" +msgid "2s (VFAT)" +msgstr "2s (VFAT)" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Zunanji urejevalnik" +msgid "Meld Preferences" +msgstr "Možnosti Meld" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filtri datotek" - -#: ../data/ui/preferences.ui.h:9 msgid "Font" msgstr "Pisava" +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "_Uporabi sistemsko pisavo določene širine" + #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Prezri spremembe, s katerimi se vstavijo ali izbrišejo prazne vrstice" +msgid "_Editor font:" +msgstr "Pisava _urejevalnika:" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Prezri simbolne povezave" +msgid "Display" +msgstr "Prikaz" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Nalaganje" +msgid "_Tab width:" +msgstr "Širina _tabulatorja:" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Možnosti Meld" +msgid "_Insert spaces instead of tabs" +msgstr "Vstavi _presledke namesto tabulatorjev" #: ../data/ui/preferences.ui.h:14 -msgid "Show _line numbers" -msgstr "Pokaži _številke vrstic" +msgid "Enable text _wrapping" +msgstr "Omogoči _prelom besedila" #: ../data/ui/preferences.ui.h:15 -msgid "Show w_hitespace" -msgstr "Pokaži _presledne znake" +msgid "Do not _split words over two lines" +msgstr "Ne _deli besed preko dveh vrstic" #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filtri besedila" +msgid "Highlight _current line" +msgstr "Poudari _trenutno vrstico" #: ../data/ui/preferences.ui.h:17 -msgid "Use _default system editor" -msgstr "Uporabi _privzet sistemski urejevalnik besedil." +msgid "Show _line numbers" +msgstr "Pokaži _številke vrstic" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Uporabi _barvno poudarjanje skladnje" +msgid "Show w_hitespace" +msgstr "Pokaži _presledne znake" #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Med nalaganjem naj bodo preverjeni nabori v vrsti (na primer: utf8, iso1250)" +msgid "Use s_yntax highlighting" +msgstr "Uporabi _barvno poudarjanje skladnje" #: ../data/ui/preferences.ui.h:20 -msgid "When performing directory comparisons, you may filter out files and directories by name. Each pattern is a list of shell style wildcards separated by spaces." -msgstr "Pri primerjavi map je mogoče filtrirati datoteke in mape po imenu. Vsak vzorec na seznamu je zapisan z nadomestnimi znaki (npr: * in ?), ločenimi s presledki." +msgid "External Editor" +msgstr "Zunanji urejevalnik" #: ../data/ui/preferences.ui.h:21 -msgid "When performing file comparisons, you may ignore certain types of changes. Each pattern here is a python regular expression which replaces matching text with the empty string before comparison is performed. If the expression contains groups, only the groups are replaced. See the user manual for more details." -msgstr "Pri primerjavi datotek je mogoče prezreti nekatere vrste sprememb. Vsak vzorec na seznamu je zapisan z logičnimi izrazi, s katerimi se zamenja želeno besedilo s praznim nizom, preden je primerjava izvede. V primeru, da izraz vključuje skupine, so zamenjane le te. Več podrobnosti je zapisanih v priročniku." +msgid "Use _default system editor" +msgstr "Uporabi _privzet sistemski urejevalnik besedil." #: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "Pisava _urejevalnika:" +msgid "Edito_r command:" +msgstr "Ukaz _urejevalnika:" #: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "Vstavi _presledke namesto tabulatorjev" +msgid "Editor" +msgstr "Urejevalnik" #: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "Širina _tabulatorja:" +msgid "Shallow Comparison" +msgstr "Groba primerjava" #: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "_Uporabi sistemsko pisavo določene širine" +msgid "C_ompare files based only on size and timestamp" +msgstr "_Primerjaj datoteke na osnovi velikosti in časovnega žiga" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "Ločljivost časovnega _žiga:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Simbolne povezave" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Vidni stolpci" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Primerjava map" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Primerjave različic" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "_Med primerjavo predelav datotek" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Uveljavi sporočila" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Pokaži _desni rob pri:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Samodejno _prelomi vrstice na desnem robu ob uveljavitvi" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Nadzor različic" + +#: ../data/ui/preferences.ui.h:37 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Pri primerjavi map je mogoče filtrirati datoteke in mape po imenu. Vsak " +"vzorec na seznamu je zapisan z nadomestnimi znaki (npr: * in ?), ločenimi s " +"presledki." + +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:106 +msgid "File Filters" +msgstr "Filtri datotek" + +#: ../data/ui/preferences.ui.h:39 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Pri primerjavi datotek je mogoče prezreti nekatere vrste sprememb. Vsak " +"vzorec na seznamu je zapisan z logičnimi izrazi, s katerimi se zamenja " +"želeno besedilo s praznim nizom, preden je primerjava izvede. V primeru, da " +"izraz vključuje skupine, so zamenjane le te. Več podrobnosti je zapisanih v " +"priročniku." + +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Prezri spremembe, s katerimi se vstavijo ali izbrišejo prazne vrstice" + +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Filtri besedila" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:618 +msgid "New comparison" +msgstr "Nova primerjava" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Primerjava datotek" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Primerjava vsebine map" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Pogled nadzora različic" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_Trojna primerjava" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Uveljavi datoteke" +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Izbor tretje datoteke" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Izbor druge datoteke" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Izbor prve datoteke" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Izbor prve mape" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Izbor druge mape" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Izbor tretje mape" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Izbor mape nadzora različic" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Prazna primerjava" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Možnosti primerjave" +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Primerjava" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Datum" +msgid "Co_mmit..." +msgstr "U_veljavi ..." #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Krajevna različica napram drugi oddaljeni različici" +msgid "Commit changes to version control" +msgstr "Uveljavi spremembe v sistem za nadzor različic" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Krajevna različica napram enaki oddaljeni različici" +msgid "_Update" +msgstr "_Posodobi" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Sporočilo beleženja" +msgid "Update working copy from version control" +msgstr "Posodobi delovno kopijo preko nadzora različic" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Predhodni dnevniki" +msgid "_Push" +msgstr "_Objavi" #: ../data/ui/vcview.ui.h:8 -#: ../meld/vcview.py:179 -msgid "Tag" -msgstr "Oznaka" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "VC dnevnik" +msgid "Push local changes to remote" +msgstr "Objavi spremembe v oddaljeno skladišče" -#: ../meld/dirdiff.py:226 -#: ../meld/vcview.py:118 -msgid "_Compare" -msgstr "_Primerjava" - -#: ../meld/dirdiff.py:226 -#: ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Primerjaj izbrano" - -#: ../meld/dirdiff.py:227 -msgid "Copy _Left" -msgstr "Kopiraj _levo" +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Dodaj v sistem nadzora različic" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Odstrani iz sistema nadzora različic" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Označi kot _razrešeno" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Označi kot razrešeno v sistemu nadzora različic" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "Po&vrni" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Povrni delovno kopijo na izvorno stanje" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Izbriši iz delovne kopije" -#: ../meld/dirdiff.py:227 -msgid "Copy to left" -msgstr "Kopiraj na levo" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Razpni" -#: ../meld/dirdiff.py:228 -msgid "Copy _Right" -msgstr "Kopiraj _desno" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "_Razpni mape" -#: ../meld/dirdiff.py:228 -msgid "Copy to right" -msgstr "Kopiraj na desno" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "_Spremenjeno" -#: ../meld/dirdiff.py:229 -msgid "Delete selected" -msgstr "Izbriši izbor" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Pokaži spremenjene datoteke" -#: ../meld/dirdiff.py:230 -#: ../meld/filediff.py:1157 -msgid "Hide" -msgstr "Skrij" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Običajno" -#: ../meld/dirdiff.py:230 -msgid "Hide selected" -msgstr "Skrij izbrano" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Pokaži običajne datoteke" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "Brez določene _različice" -#: ../meld/dirdiff.py:234 -msgid "Case" -msgstr "Črke" - -#: ../meld/dirdiff.py:234 -msgid "Ignore case of entries" -msgstr "Prezri velikosti črk" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Pokaži datoteke z nedoločenimi različicami" -#: ../meld/dirdiff.py:235 -msgid "Same" -msgstr "Enako" +#: ../data/ui/vcview.ui.h:26 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Prezrto" -#: ../meld/dirdiff.py:235 -msgid "Show identical" -msgstr "Pokaži enako" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Pokaži prezrte datoteke" -#: ../meld/dirdiff.py:236 -msgid "New" -msgstr "Novo" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Uveljavi" -#: ../meld/dirdiff.py:236 -msgid "Show new" -msgstr "Pokaži novejše" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Uveljavi datoteke" -#: ../meld/dirdiff.py:237 -msgid "Modified" -msgstr "Spremenjeno" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Sporočilo beleženja" -#: ../meld/dirdiff.py:237 -#: ../meld/vcview.py:131 -msgid "Show modified" -msgstr "Pokaži spremenjeno" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Predhodni dnevniki:" -#: ../meld/dirdiff.py:239 -msgid "Filters" -msgstr "Filtri" +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "_Uveljavi" -#: ../meld/dirdiff.py:239 -msgid "Set active filters" -msgstr "Določi dejavne filtre" +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Ali naj se objavijo krajevne uveljavitve v oddaljeno skladišče?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "Uveljavitve za objavo določa sistem za nadzor različic." + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Objavi uveljavitve" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:384 +msgid "Size" +msgstr "Velikost" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:392 +msgid "Modification time" +msgstr "Čas spremembe" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:400 +msgid "Permissions" +msgstr "Dovoljenja" -#: ../meld/dirdiff.py:355 +#: ../meld/dirdiff.py:559 #, python-format msgid "Hide %s" msgstr "Skrij %s" -#: ../meld/dirdiff.py:458 -#: ../meld/dirdiff.py:471 -#: ../meld/vcview.py:304 -#: ../meld/vcview.py:332 +#: ../meld/dirdiff.py:688 ../meld/dirdiff.py:710 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] Preiskovanje %s" -#: ../meld/dirdiff.py:570 +#: ../meld/dirdiff.py:810 #, python-format msgid "[%s] Done" msgstr "[%s] končano" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:817 msgid "Multiple errors occurred while scanning this folder" msgstr "Med preiskovanjem mape, je prišlo do več napak." -#: ../meld/dirdiff.py:575 +#: ../meld/dirdiff.py:818 msgid "Files with invalid encodings found" msgstr "Zaznane so datoteke z neveljavnim znakovnim naborom" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:577 +#: ../meld/dirdiff.py:820 msgid "Some files were in an incorrect encoding. The names are something like:" -msgstr "Zaznane so datoteke z neveljavnim znakovnim naborom. Imena so na primer:" +msgstr "" +"Zaznane so datoteke z neveljavnim znakovnim naborom. Imena so na primer:" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:822 msgid "Files hidden by case insensitive comparison" msgstr "Datoteke skrite zaradi primerjave brez upoštevanja velikosti črk" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 -msgid "You are running a case insensitive comparison on a case sensitive filesystem. The following files in this folder are hidden:" +#: ../meld/dirdiff.py:824 +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" msgstr "" -"Zagnan je način primerjave brez upoštevanja velikosti črk na sistemu, ki razlike velikosti upošteva. Nekatere datoteke so skrite:\n" +"Zagnan je način primerjave brez upoštevanja velikosti črk na sistemu, ki " +"razlike velikosti upošteva. Nekatere datoteke so skrite:\n" "%s" -#: ../meld/dirdiff.py:592 +#: ../meld/dirdiff.py:835 #, python-format msgid "'%s' hidden by '%s'" msgstr "'%s' je skrit; '%s'" -#: ../meld/dirdiff.py:617 -#: ../meld/filediff.py:1008 -#: ../meld/filediff.py:1161 +#: ../meld/dirdiff.py:860 ../meld/filediff.py:1107 ../meld/filediff.py:1245 +#: ../meld/filediff.py:1416 ../meld/filediff.py:1446 ../meld/filediff.py:1448 msgid "Hi_de" msgstr "S_krij" -#: ../meld/dirdiff.py:667 +#: ../meld/dirdiff.py:891 #, python-format msgid "" "'%s' exists.\n" @@ -517,40 +1071,29 @@ "'%s' že obstaja.\n" "Ali naj bo prepisana?" -#: ../meld/dirdiff.py:674 +#: ../meld/dirdiff.py:899 +msgid "Error copying file" +msgstr "Napaka kopiranja datoteke" + +#: ../meld/dirdiff.py:900 #, python-format msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Napaka med kopiranjem '%s' v '%s'\n" +"Ni mogoče kopirati %s\n" +"v %s.\n" "\n" -"%s." - -#: ../meld/dirdiff.py:692 -#: ../meld/vcview.py:504 -#, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"'%s' je mapa.\n" -"Ali naj bo odstranjena vsa vsebina?" +"%s" -#: ../meld/dirdiff.py:699 -#: ../meld/vcview.py:509 +#: ../meld/dirdiff.py:923 #, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Napaka med odstranjevanjem %s\n" -"\n" -"%s." +msgid "Error deleting %s" +msgstr "Napaka med brisanjem %s" -#: ../meld/dirdiff.py:711 +#: ../meld/dirdiff.py:1054 #, python-format msgid "%i second" msgid_plural "%i seconds" @@ -559,7 +1102,7 @@ msgstr[2] "%i sekundi" msgstr[3] "%i sekunde" -#: ../meld/dirdiff.py:712 +#: ../meld/dirdiff.py:1055 #, python-format msgid "%i minute" msgid_plural "%i minutes" @@ -568,7 +1111,7 @@ msgstr[2] "%i minuti" msgstr[3] "%i minute" -#: ../meld/dirdiff.py:713 +#: ../meld/dirdiff.py:1056 #, python-format msgid "%i hour" msgid_plural "%i hours" @@ -577,7 +1120,7 @@ msgstr[2] "%i uri" msgstr[3] "%i ure" -#: ../meld/dirdiff.py:714 +#: ../meld/dirdiff.py:1057 #, python-format msgid "%i day" msgid_plural "%i days" @@ -586,7 +1129,7 @@ msgstr[2] "%i dni" msgstr[3] "%i dni" -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:1058 #, python-format msgid "%i week" msgid_plural "%i weeks" @@ -595,7 +1138,7 @@ msgstr[2] "%i tedna" msgstr[3] "%i tedni" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:1059 #, python-format msgid "%i month" msgid_plural "%i months" @@ -604,7 +1147,7 @@ msgstr[2] "%i meseca" msgstr[3] "%i meseci" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:1060 #, python-format msgid "%i year" msgid_plural "%i years" @@ -613,219 +1156,279 @@ msgstr[2] "%i leti" msgstr[3] "%i leta" -#: ../meld/filediff.py:294 -msgid "Format as patch..." +#: ../meld/filediff.py:229 +msgid "Format as Patch..." msgstr "Oblikuj kot popravek ..." -#: ../meld/filediff.py:294 +#: ../meld/filediff.py:230 msgid "Create a patch using differences between files" msgstr "Ustvari popravek z razlikovanjem med datotekami" -#: ../meld/filediff.py:295 -msgid "Previous conflict" +#: ../meld/filediff.py:232 +msgid "Save A_ll" +msgstr "Shrani _vse" + +#: ../meld/filediff.py:233 +msgid "Save all files in the current comparison" +msgstr "Shrani vse datoteke trenutne primerjave" + +#: ../meld/filediff.py:236 +msgid "Revert files to their saved versions" +msgstr "Povrni datoteke na shranjene različice" + +#: ../meld/filediff.py:238 +msgid "Add Synchronization Point" +msgstr "Dodaj točko usklajevanja" + +#: ../meld/filediff.py:239 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Dodaj ročno točko usklajevanja sprememb med datotekami" + +#: ../meld/filediff.py:242 +msgid "Clear Synchronization Points" +msgstr "Počisti točke usklajevanja" + +#: ../meld/filediff.py:243 +msgid "Clear manual change sychronization points" +msgstr "Počisti ročno spremenjene točke usklajevanja" + +#: ../meld/filediff.py:245 +msgid "Previous Conflict" msgstr "Predhodni spor" -#: ../meld/filediff.py:295 +#: ../meld/filediff.py:246 msgid "Go to the previous conflict" msgstr "Skoči na predhodni niz v sporu" -#: ../meld/filediff.py:296 -msgid "Next conflict" +#: ../meld/filediff.py:248 +msgid "Next Conflict" msgstr "Naslednji spor" -#: ../meld/filediff.py:296 +#: ../meld/filediff.py:249 msgid "Go to the next conflict" msgstr "Skoči na naslednji niz v sporu" -#: ../meld/filediff.py:297 -msgid "Push to left" +#: ../meld/filediff.py:251 +msgid "Push to Left" msgstr "Potisni levo" -#: ../meld/filediff.py:297 +#: ../meld/filediff.py:252 msgid "Push current change to the left" msgstr "Potisni trenutne spremembe na levo" -#: ../meld/filediff.py:298 -msgid "Push to right" +#: ../meld/filediff.py:255 +msgid "Push to Right" msgstr "Potisni desno" -#: ../meld/filediff.py:298 +#: ../meld/filediff.py:256 msgid "Push current change to the right" msgstr "Potisni trenutne spremembe na desno" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:300 -msgid "Pull from left" +#: ../meld/filediff.py:260 +msgid "Pull from Left" msgstr "Potegni z leve" -#: ../meld/filediff.py:300 +#: ../meld/filediff.py:261 msgid "Pull change from the left" msgstr "Potegni spremembe z leve" -#: ../meld/filediff.py:301 -msgid "Pull from right" +#: ../meld/filediff.py:264 +msgid "Pull from Right" msgstr "Potegni z desne" -#: ../meld/filediff.py:301 +#: ../meld/filediff.py:265 msgid "Pull change from the right" msgstr "Potegni spremembe z desne" -#: ../meld/filediff.py:302 -msgid "Copy above left" +#: ../meld/filediff.py:267 +msgid "Copy Above Left" msgstr "Kopiraj nad levo" -#: ../meld/filediff.py:302 +#: ../meld/filediff.py:268 msgid "Copy change above the left chunk" msgstr "Kopiraj spremembe nad levi del" -#: ../meld/filediff.py:303 -msgid "Copy below left" +#: ../meld/filediff.py:270 +msgid "Copy Below Left" msgstr "Kopiraj pod levo" -#: ../meld/filediff.py:303 +#: ../meld/filediff.py:271 msgid "Copy change below the left chunk" msgstr "Kopiraj spremembe pod levi del" -#: ../meld/filediff.py:304 -msgid "Copy above right" +#: ../meld/filediff.py:273 +msgid "Copy Above Right" msgstr "Kopiraj nad desno" -#: ../meld/filediff.py:304 +#: ../meld/filediff.py:274 msgid "Copy change above the right chunk" msgstr "Kopiraj spremembe nad desni del" -#: ../meld/filediff.py:305 -msgid "Copy below right" +#: ../meld/filediff.py:276 +msgid "Copy Below Right" msgstr "Kopiraj pod desno" -#: ../meld/filediff.py:305 +#: ../meld/filediff.py:277 msgid "Copy change below the right chunk" msgstr "Kopiraj spremembe pod desni del" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:279 msgid "Delete" msgstr "Izbriši" -#: ../meld/filediff.py:306 +#: ../meld/filediff.py:280 msgid "Delete change" msgstr "Izbriši spremembo" -#: ../meld/filediff.py:307 -msgid "Merge all changes from left" +#: ../meld/filediff.py:282 +msgid "Merge All from Left" msgstr "Združi vse spremembe z leve" -#: ../meld/filediff.py:307 +#: ../meld/filediff.py:283 msgid "Merge all non-conflicting changes from the left" msgstr "Združi vse spremembe brez sporov z leve" -#: ../meld/filediff.py:308 -msgid "Merge all changes from right" +#: ../meld/filediff.py:285 +msgid "Merge All from Right" msgstr "Združi vse spremembe z desne" -#: ../meld/filediff.py:308 +#: ../meld/filediff.py:286 msgid "Merge all non-conflicting changes from the right" msgstr "Združi vse spremembe brez sporov z desne" -#: ../meld/filediff.py:309 -msgid "Merge all non-conflicting" -msgstr "Združi vse spremembe brez sporov" +#: ../meld/filediff.py:288 +msgid "Merge All" +msgstr "Združi vse" -#: ../meld/filediff.py:309 +#: ../meld/filediff.py:289 msgid "Merge all non-conflicting changes from left and right panes" msgstr "Združi vse spremembe brez sporov z leve in z desne" -#: ../meld/filediff.py:310 -msgid "Cycle through documents" +#: ../meld/filediff.py:293 +msgid "Cycle Through Documents" msgstr "Preklopi med dokumenti" -#: ../meld/filediff.py:310 +#: ../meld/filediff.py:294 msgid "Move keyboard focus to the next document in this comparison" msgstr "Premakni dejavnost tipkovnice na naslednji dokument primerjave" -#: ../meld/filediff.py:314 -msgid "Lock scrolling" +#: ../meld/filediff.py:300 +msgid "Lock Scrolling" msgstr "Zakleni drsenje" -#: ../meld/filediff.py:315 +#: ../meld/filediff.py:301 msgid "Lock scrolling of all panes" msgstr "Zakleni drsenje vseh pladnjev" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:486 msgid "INS" msgstr "VST" -#: ../meld/filediff.py:396 +#: ../meld/filediff.py:486 msgid "OVR" msgstr "PRE" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:398 +#: ../meld/filediff.py:488 #, python-format msgid "Ln %i, Col %i" msgstr "Vr. %i, St. %i" -#: ../meld/filediff.py:722 +#: ../meld/filediff.py:825 #, python-format -msgid "Filter '%s' changed the number of lines in the file. Comparison will be incorrect. See the user manual for more details." -msgstr "Po uporabi filtra '%s' se je spremenilo število vrstic v datoteki, zato primerjava ne bo natančna. Za več podrobnosti si oglejte priročnik." - -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:809 -msgid "" -msgstr "" +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" +"Po uporabi filtra '%s' se je spremenilo število vrstic v datoteki, zato " +"primerjava ne bo natančna. Za več podrobnosti si oglejte priročnik." -#: ../meld/filediff.py:996 +#: ../meld/filediff.py:1095 #, python-format msgid "[%s] Set num panes" msgstr "[%s] Določi okna" -#: ../meld/filediff.py:1002 +#: ../meld/filediff.py:1101 #, python-format msgid "[%s] Opening files" msgstr "[%s] Odpiranje datotek" -#: ../meld/filediff.py:1026 -#: ../meld/filediff.py:1035 -#: ../meld/filediff.py:1047 -#: ../meld/filediff.py:1053 +#: ../meld/filediff.py:1124 ../meld/filediff.py:1134 ../meld/filediff.py:1147 +#: ../meld/filediff.py:1153 msgid "Could not read file" msgstr "Ni mogoče prebrati datoteke" -#: ../meld/filediff.py:1027 +#: ../meld/filediff.py:1125 #, python-format msgid "[%s] Reading files" msgstr "[%s] Branje datotek" -#: ../meld/filediff.py:1036 +#: ../meld/filediff.py:1135 #, python-format msgid "%s appears to be a binary file." msgstr "%s je videti kot dvojiška datoteka." -#: ../meld/filediff.py:1048 +#: ../meld/filediff.py:1148 #, python-format msgid "%s is not in encodings: %s" msgstr "%s ni zapisan v naboru: %s" -#: ../meld/filediff.py:1078 -#: ../meld/filemerge.py:67 +#: ../meld/filediff.py:1183 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Računanje razlik" -#: ../meld/filediff.py:1148 -msgid "Text filters are being used, and may be masking differences between files. Would you like to compare the unfiltered files?" -msgstr "Uporabljani so filtri besedila, zato so lahko razlike med datotekami skrite. Ali naj se primerja vsebina brez dejavnih filtrov?" +#: ../meld/filediff.py:1240 +#, python-format +msgid "File %s has changed on disk" +msgstr "Datoteka %s je bila na disku spremenjena." + +#: ../meld/filediff.py:1241 +msgid "Do you want to reload the file?" +msgstr "Ali želite ponovno naložiti datoteko?" + +#: ../meld/filediff.py:1244 +msgid "_Reload" +msgstr "_Ponovno naloži" + +#: ../meld/filediff.py:1405 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Uporabljani so filtri besedila, zato so lahko razlike med datotekami skrite. " +"Ali naj se primerja vsebina brez dejavnih filtrov?" -#: ../meld/filediff.py:1154 +#: ../meld/filediff.py:1411 msgid "Files are identical" msgstr "Datoteki sta enaki" -#: ../meld/filediff.py:1164 +#: ../meld/filediff.py:1419 msgid "Show without filters" msgstr "Pokaži brez filtrov" -#: ../meld/filediff.py:1354 +#: ../meld/filediff.py:1441 +msgid "Change highlighting incomplete" +msgstr "Spremeni označevanje kot nedokončano" + +#: ../meld/filediff.py:1442 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Nekaterih sprememb ni mogoče poudariti, ker so prevelike. Označevanje je " +"mogoče vsiliti, vendar je postopek lahko zelo dolgotrajen." + +#: ../meld/filediff.py:1450 +msgid "Keep highlighting" +msgstr "Poudarjanje skladnje" + +#: ../meld/filediff.py:1452 +msgid "_Keep highlighting" +msgstr "_Poudarjanje skladnje" + +#: ../meld/filediff.py:1583 #, python-format msgid "" "\"%s\" exists!\n" @@ -834,7 +1437,7 @@ "\"%s\" že obstaja!\n" "Ali naj bo datoteka prepisana?" -#: ../meld/filediff.py:1367 +#: ../meld/filediff.py:1596 #, python-format msgid "" "Error writing to %s\n" @@ -845,12 +1448,39 @@ "\n" "%s." -#: ../meld/filediff.py:1376 +#: ../meld/filediff.py:1607 +msgid "Save Left Pane As" +msgstr "Shrani levi pladenj kot" + +#: ../meld/filediff.py:1609 +msgid "Save Middle Pane As" +msgstr "Shrani srednji pladenj kot" + +#: ../meld/filediff.py:1611 +msgid "Save Right Pane As" +msgstr "Shrani desni pladenj kot" + +#: ../meld/filediff.py:1622 #, python-format -msgid "Choose a name for buffer %i." -msgstr "Izbor imena za medpomnilnik %i." +msgid "File %s has changed on disk since it was opened" +msgstr "" + +#: ../meld/filediff.py:1624 +#, fuzzy +msgid "If you save it, any external changes will be lost." +msgstr "" +"V primeru, da datoteko shranite, bodo vse zunanje spremembe izgubljene. Ali " +"jo želite vseeno shraniti?" -#: ../meld/filediff.py:1391 +#: ../meld/filediff.py:1627 +msgid "Save Anyway" +msgstr "Vseeno shrani" + +#: ../meld/filediff.py:1628 +msgid "Don't Save" +msgstr "Ne shrani" + +#: ../meld/filediff.py:1652 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -861,7 +1491,7 @@ "\n" "Kateri zapis želite uporabiti?" -#: ../meld/filediff.py:1407 +#: ../meld/filediff.py:1668 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -870,753 +1500,706 @@ "'%s' vsebuje znake, ki jih ni mogoče kodirati v naboru '%s'\n" "Ali naj se datoteka shrani v naboru UTF-8?" -#: ../meld/filediff.py:1466 -#, python-format +#: ../meld/filediff.py:2032 +msgid "Live comparison updating disabled" +msgstr "Živo posodabljanje ob primerjavi je onemogočeno" + +#: ../meld/filediff.py:2033 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." msgstr "" -"S ponovnim nalaganjem bodo izgubljene spremembe v:\n" -"%s\n" -"\n" -"Dejanja ni mogoče povrniti." +"Živo posodabljanje primerjav je onemogočeno, kadar je dejavno usklajevanje. " +"Še vedno je mogoče ročno osvežiti primerjavo, živo posodabljanje pa bo spet " +"na voljo, ko bo usklajevanje končano." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:51 #, python-format msgid "[%s] Merging files" msgstr "[%s] Združevanje datotek" -#: ../meld/meldapp.py:149 +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _up" +msgstr "Kopiraj _navzgor" + +#: ../meld/gutterrendererchunk.py:93 +msgid "Copy _down" +msgstr "Kopiraj _navzdol" + +#: ../meld/meldapp.py:134 msgid "wrong number of arguments supplied to --diff" msgstr "Neveljavno število argumentov pri ukazu --diff." -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:139 msgid "Start with an empty window" msgstr "Zagon brez odprtih oken" -#: ../meld/meldapp.py:154 -#: ../meld/meldapp.py:155 -#: ../meld/meldapp.py:157 +#: ../meld/meldapp.py:140 ../meld/meldapp.py:142 msgid "file" msgstr "datoteka" -#: ../meld/meldapp.py:154 -#: ../meld/meldapp.py:156 -#: ../meld/meldapp.py:157 +#: ../meld/meldapp.py:140 ../meld/meldapp.py:144 msgid "dir" msgstr "mapa" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:141 msgid "Start a version control comparison" msgstr "Zagon primerjave nadzora različic" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:143 msgid "Start a 2- or 3-way file comparison" msgstr "Zagon z dvojno ali trojno primerjavo datotek" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:145 msgid "Start a 2- or 3-way directory comparison" msgstr "Zagon z dvojno ali trojno primerjavo map" -#: ../meld/meldapp.py:157 -msgid "Start a comparison between file and dir/file" -msgstr "Zagon primerjave med datoteko in mapo/datoteko" - -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:153 msgid "Meld is a file and directory comparison tool." msgstr "Meld je orodje za primerjavo vsebine datotek in map." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:156 msgid "Set label to use instead of file name" msgstr "Določi naslov namesto imena datoteke" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:158 +msgid "Open a new tab in an already running instance" +msgstr "Odpri nov zavihek v že zagnanem programu" + +#: ../meld/meldapp.py:161 msgid "Automatically compare all differing files on startup" msgstr "Ob zagonu samodejno primerjaj vse različne datoteke." -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:163 msgid "Ignored for compatibility" msgstr "Prezrto zaradi skladnosti" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:166 msgid "Set the target file for saving a merge result" msgstr "Določitev ciljne datoteke za shranjevanje rezultatov združevanja." -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "Ustvari zavihke primerjav za do tri datoteke ali mape." - -#: ../meld/meldapp.py:179 -#, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "preveč argumentov (zahtevanih 0-4, prejetih %d)" - -#: ../meld/meldapp.py:181 -#: ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "ni mogoče primerjati več kot treh map" +#: ../meld/meldapp.py:168 +msgid "Automatically merge files" +msgstr "Samodejno združi datoteke" + +#: ../meld/meldapp.py:171 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Naloži shranjeno datoteko primerjav Meld" + +#: ../meld/meldapp.py:174 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Ustvari zavihke primerjav za navedene datoteke ali mape." + +#: ../meld/meldapp.py:177 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "preveč argumentov (zahtevanih 0-3, prejetih %d)" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge less than 3 files" +msgstr "manj kot treh datotek ni mogoče samodejno združevati" + +#: ../meld/meldapp.py:182 +msgid "can't auto-merge directories" +msgstr "map ni mogoče samodejno združevati" + +#: ../meld/meldapp.py:192 +msgid "Error reading saved comparison file" +msgstr "Napaka med branjem datoteke primerjav" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:107 +msgid "" +msgstr "" -#: ../meld/melddoc.py:49 -#: ../meld/melddoc.py:50 +#: ../meld/melddoc.py:77 ../meld/melddoc.py:78 msgid "untitled" msgstr "neimenovano" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:51 msgid "_File" msgstr "_Datoteka" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Novo ..." +#: ../meld/meldwindow.py:52 +msgid "_New Comparison..." +msgstr "_Nova primerjava ..." -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:53 msgid "Start a new comparison" msgstr "Nova primerjava" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:56 msgid "Save the current file" msgstr "Shrani trenutno datoteko" -#: ../meld/meldwindow.py:129 +#: ../meld/meldwindow.py:58 +msgid "Save As..." +msgstr "Shrani kot ..." + +#: ../meld/meldwindow.py:59 +msgid "Save the current file with a different name" +msgstr "Shrani trenutno datoteko z drugim imenom" + +#: ../meld/meldwindow.py:62 msgid "Close the current file" msgstr "Zapri trenutno datoteko" -#: ../meld/meldwindow.py:130 -msgid "Quit the program" -msgstr "Končaj program" - -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:65 msgid "_Edit" msgstr "_Uredi" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:67 msgid "Undo the last action" msgstr "Razveljavi zadnje dejanje" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:70 msgid "Redo the last undone action" msgstr "Obnovi zadnje razveljavljeno dejanje" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:72 msgid "Cut the selection" msgstr "Izreži izbrano" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:74 msgid "Copy the selection" msgstr "Kopiraj izbrano" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:76 msgid "Paste the clipboard" msgstr "Prilepi iz odložišča" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:78 +msgid "Find..." +msgstr "Najdi ..." + +#: ../meld/meldwindow.py:78 msgid "Search for text" msgstr "Poišči besedilo" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:80 msgid "Find Ne_xt" msgstr "Najdi _naslednje" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:81 msgid "Search forwards for the same text" msgstr "Poišči niz naprej po besedilu" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:83 msgid "Find _Previous" msgstr "Najdi _predhodne" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:84 msgid "Search backwards for the same text" msgstr "Besedilo najdi nazaj po besedilu" -#: ../meld/meldwindow.py:141 +#: ../meld/meldwindow.py:87 +msgid "_Replace..." +msgstr "_Zamenjaj ..." + +#: ../meld/meldwindow.py:88 msgid "Find and replace text" msgstr "Poišči in zamenjaj besedilo" -#: ../meld/meldwindow.py:142 -msgid "Prefere_nces" -msgstr "_Lastnosti" - -#: ../meld/meldwindow.py:142 -msgid "Configure the application" -msgstr "Spremeni nastavitve programa" - -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:91 msgid "_Changes" msgstr "_Spremembe" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:92 +msgid "Next Change" msgstr "Naslednja sprememba" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:93 msgid "Go to the next change" msgstr "Skoči na naslednjo spremembo" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:95 +msgid "Previous Change" msgstr "Predhodna sprememba" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:96 msgid "Go to the previous change" msgstr "Skoči na predhodno spremembo" -#: ../meld/meldwindow.py:147 -msgid "Open externally" +#: ../meld/meldwindow.py:98 +msgid "Open Externally" msgstr "Odpri v zunanjem programu" -#: ../meld/meldwindow.py:147 +#: ../meld/meldwindow.py:99 msgid "Open selected file or directory in the default external application" msgstr "Odpri zbrano datoteko ali mapo v privzetem zunanjem programu" -#: ../meld/meldwindow.py:149 +#: ../meld/meldwindow.py:103 msgid "_View" msgstr "_Pogled" -#: ../meld/meldwindow.py:150 -msgid "File status" +#: ../meld/meldwindow.py:104 +msgid "File Status" msgstr "Stanje datoteke" -#: ../meld/meldwindow.py:151 -msgid "Version status" +#: ../meld/meldwindow.py:105 +msgid "Version Status" msgstr "Stanje različice" -#: ../meld/meldwindow.py:152 -msgid "File filters" -msgstr "Filtri datotek" - -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:108 msgid "Stop the current action" msgstr "Ustavi trenutno dejanje" -#: ../meld/meldwindow.py:154 +#: ../meld/meldwindow.py:111 msgid "Refresh the view" msgstr "Osveži pogled" -#: ../meld/meldwindow.py:155 -msgid "Reload" -msgstr "Ponovno naloži" - -#: ../meld/meldwindow.py:155 -msgid "Reload the comparison" -msgstr "Ponovno naloži primerjavo" - -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:114 msgid "_Tabs" msgstr "_Zavihki" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:115 msgid "_Previous Tab" msgstr "_Predhodni zavihek" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:116 msgid "Activate previous tab" msgstr "Pokaži predhodni zavihek" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:118 msgid "_Next Tab" msgstr "_Naslednji zavihek" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:119 msgid "Activate next tab" msgstr "Pokaži naslednji zavihek" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:122 msgid "Move Tab _Left" msgstr "Premakni zavihek _levo" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:123 msgid "Move current tab to left" msgstr "Premakni trenutni zavihek na levo" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:126 msgid "Move Tab _Right" msgstr "Premakni zavihek _desno" -#: ../meld/meldwindow.py:161 +#: ../meld/meldwindow.py:127 msgid "Move current tab to right" msgstr "Premakni trenutni zavihek na desno" -#: ../meld/meldwindow.py:163 -msgid "_Help" -msgstr "Pomo_č" - -#: ../meld/meldwindow.py:164 -msgid "_Contents" -msgstr "_Vsebina" - -#: ../meld/meldwindow.py:164 -msgid "Open the Meld manual" -msgstr "Odpri priročnik Meld" - -#: ../meld/meldwindow.py:165 -msgid "Report _Bug" -msgstr "Pošlji poročilo o _hrošču" - -#: ../meld/meldwindow.py:165 -msgid "Report a bug in Meld" -msgstr "Poročilo o hrošču programa Meld" - -#: ../meld/meldwindow.py:166 -msgid "About this program" -msgstr "O programu" - -#: ../meld/meldwindow.py:169 -msgid "Full Screen" +#: ../meld/meldwindow.py:131 +msgid "Fullscreen" msgstr "Celozaslonski način" -#: ../meld/meldwindow.py:169 -msgid "View the comparison in full screen" -msgstr "Ogled primerjave v celozaslonskem načinu" +#: ../meld/meldwindow.py:132 +msgid "View the comparison in fullscreen" +msgstr "Pokaži primerjavo v celozaslonskem načinu" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:134 msgid "_Toolbar" msgstr "_Orodna vrstica" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:135 msgid "Show or hide the toolbar" msgstr "Pokaži ali skrij orodno vrstico" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:137 msgid "_Statusbar" msgstr "_Vrstica stanja" -#: ../meld/meldwindow.py:171 +#: ../meld/meldwindow.py:138 msgid "Show or hide the statusbar" msgstr "Pokaži ali skrij vrstico stanja" -#: ../meld/meldwindow.py:538 +#: ../meld/meldwindow.py:147 +msgid "Open Recent" +msgstr "Odpri nedavno" + +#: ../meld/meldwindow.py:148 +msgid "Open recent files" +msgstr "Odpri nedavne datoteke" + +#: ../meld/meldwindow.py:539 msgid "Switch to this tab" msgstr "Preklopi na ta zavihek" -#. exit at first non found directory + file -#: ../meld/meldwindow.py:629 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Ni mogoče primerjati mešanice datotek in map.\n" +#: ../meld/meldwindow.py:662 +msgid "Cannot compare a mixture of files and directories" +msgstr "Ni mogoče sočasno primerjati datotek in map" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:180 msgid "[None]" msgstr "[noben]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Shrani popravke kot ..." - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:36 msgid "label" msgstr "oznaka" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:36 msgid "pattern" msgstr "vzorec" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Na voljo le, če je nameščen paket gnome-python-desktop" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Varnostne kopije\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 -msgid "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db Desktop.ini\n" -msgstr "Značilni metapodatki OS\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db Desktop.ini\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Nadzor različic\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Binarne datoteke\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Medijske datoteke\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 -msgid "" -"CVS keywords\t0\t\\$\\w+(:[^\\n" -"$]+)?\\$\n" -msgstr "" -"Ključne besede CVS\t0\t\\$\\w+(:[^\\n" -"$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 -msgid "C++ comment\t0\t//.*\n" -msgstr "C++ opombe\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "C opombe\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Vsi presledni znaki\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Začetni presledni znaki\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:253 -msgid "Script comment\t0\t#.*" -msgstr "Opomba skripta\t0\t#.*" - -#: ../meld/vcview.py:119 -msgid "Co_mmit" -msgstr "_Uveljavi" - -#: ../meld/vcview.py:119 -msgid "Commit" -msgstr "Uveljavi" - -#: ../meld/vcview.py:120 -msgid "_Update" -msgstr "_Posodobi" - -#: ../meld/vcview.py:120 -msgid "Update" -msgstr "Posodobi" - -#: ../meld/vcview.py:121 -msgid "Add to VC" -msgstr "Dodaj v VC" - -#: ../meld/vcview.py:122 -msgid "Add _Binary" -msgstr "Dodaj _dvojiško" - -#: ../meld/vcview.py:122 -msgid "Add binary to VC" -msgstr "Dodaj dvojiško datoteko v VC" - -#: ../meld/vcview.py:123 -msgid "Remove from VC" -msgstr "Odstrani iz VC" - -#: ../meld/vcview.py:124 -msgid "_Resolved" -msgstr "_Razrešeno" - -#: ../meld/vcview.py:124 -msgid "Mark as resolved for VC" -msgstr "Označi kot razrešeno v VC" - -#: ../meld/vcview.py:125 -msgid "Revert to original" -msgstr "_Povrni na izvirne vrednosti" - -#: ../meld/vcview.py:126 -msgid "Delete locally" -msgstr "Izbriši krajevno" - -#: ../meld/vcview.py:130 -msgid "_Flatten" -msgstr "_Razpni" - -#: ../meld/vcview.py:130 -msgid "Flatten directories" -msgstr "_Razpni mape" - -#: ../meld/vcview.py:131 -msgid "_Modified" -msgstr "_Spremenjeno" - -#: ../meld/vcview.py:132 -msgid "_Normal" -msgstr "_Običajno" - -#: ../meld/vcview.py:132 -msgid "Show normal" -msgstr "Pokaži običajno" - -#: ../meld/vcview.py:133 -msgid "Non _VC" -msgstr "Ni _VC" - -#: ../meld/vcview.py:133 -msgid "Show unversioned files" -msgstr "Pokaži datoteke z nedoločenimi različicami" +#: ../meld/recent.py:107 +msgid "Version control:" +msgstr "Nadzor različic:" + +#: ../meld/ui/findbar.py:143 +msgid "Regular expression error" +msgstr "Napaka v logičnem izrazu" -#: ../meld/vcview.py:134 -msgid "Ignored" -msgstr "Prezrto" +#: ../meld/ui/notebooklabel.py:68 +msgid "Close tab" +msgstr "Zapri zavihek" -#: ../meld/vcview.py:134 -msgid "Show ignored files" -msgstr "Pokaži prezrte datoteke" +#: ../meld/ui/vcdialogs.py:63 +msgid "No files will be committed" +msgstr "Ni pripravljenih datotek za uveljavitev" + +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s v %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d neobjavljenih uveljavitev" +msgstr[1] "%d neobjavljena uveljavitev" +msgstr[2] "%d neobjavljeni uveljavitvi" +msgstr[3] "%d neobjavljene uveljavitve" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d vej" +msgstr[1] "%d veja" +msgstr[2] "%d veji" +msgstr[3] "%d veje" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Način je spremenjen iz %s v %s" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Združeno" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Osnova" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Krajevno" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Oddaljeno" + +#: ../meld/vc/_vc.py:65 +msgid "Unversioned" +msgstr "Brez določene različice" + +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Napaka" + +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Nedavno dodano" + +#: ../meld/vc/_vc.py:72 +msgid "Conflict" +msgstr "V sporu" + +#: ../meld/vc/_vc.py:73 +msgid "Removed" +msgstr "Odstranjeno" + +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Manjkajoče" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Ni na voljo" -#: ../meld/vcview.py:176 -#: ../meld/vcview.py:300 +#: ../meld/vcview.py:218 ../meld/vcview.py:393 msgid "Location" msgstr "Mesto" -#: ../meld/vcview.py:177 +#: ../meld/vcview.py:219 msgid "Status" msgstr "Stanje" -#: ../meld/vcview.py:178 -msgid "Rev" -msgstr "Rev" +#: ../meld/vcview.py:220 +msgid "Revision" +msgstr "Predelava" -#: ../meld/vcview.py:180 +#: ../meld/vcview.py:221 msgid "Options" msgstr "Možnosti" -#: ../meld/vcview.py:232 -msgid "Choose one Version Control" -msgstr "Izbor nadzora različic" - -#: ../meld/vcview.py:233 -msgid "Only one Version Control in this directory" -msgstr "V tej mapi je le en nadzornik različic" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:246 +#: ../meld/vcview.py:304 #, python-format -msgid "%s Not Installed" -msgstr "%s paket ni nameščen" +msgid "%s not installed" +msgstr "Program %s ni nameščen" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:250 -msgid "Invalid Repository" +#: ../meld/vcview.py:308 +msgid "Invalid repository" msgstr "Neveljavno skladišče" -#: ../meld/vcview.py:259 +#: ../meld/vcview.py:317 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:319 ../meld/vcview.py:327 +msgid "None" +msgstr "Brez" + +#: ../meld/vcview.py:338 +msgid "No valid version control system found in this folder" +msgstr "Ni veljavnega sistema za nadzor različic v tej mapi" + +#: ../meld/vcview.py:340 +msgid "Only one version control system found in this folder" +msgstr "V tej mapi je le en sistem nadzora različic" + +#: ../meld/vcview.py:342 +msgid "Choose which version control system to use" +msgstr "Izbor različice sistema za nadzor različic za uporabo" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:300 +#: ../meld/vcview.py:393 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:348 +#: ../meld/vcview.py:407 ../meld/vcview.py:415 +#, python-format +msgid "Scanning %s" +msgstr "Preiskovanje %s" + +#: ../meld/vcview.py:449 msgid "(Empty)" msgstr "(Prazno)" -#: ../meld/vcview.py:386 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Iskanje razlik" +#: ../meld/vcview.py:672 +msgid "Remove folder and all its files?" +msgstr "Ali želite izbrisati mapo in vse njene datoteke?" + +#: ../meld/vcview.py:674 +msgid "" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." +msgstr "" +"S tem dejanjem bodo odstranjene vse izbrane datoteke in mape in vse " +"podrejene datoteke iz sistema za nadzor različic" -#: ../meld/vcview.py:394 +#: ../meld/vcview.py:708 #, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Pripenjanje popravka" +msgid "Error removing %s" +msgstr "Napaka med odstranjevanjem %s" -#: ../meld/vcview.py:479 -msgid "Select some files first." -msgstr "Najprej je treba izbrati datoteke." +#~ msgid "" +#~ "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" +#~ "Missing:Not present" +#~ msgstr "" +#~ "Prezrto:Nedoločeno:::Napaka::Novo dodano:Spremenjeno:V sporu:Odstranjeno:" +#~ "Manjkajoče:Nedostopno" -#: ../meld/vcview.py:552 -#, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" Priklic popravka ni uspel.\n" -" \n" -" Najverjetneje ni nameščenega paketa 'GNU patch' ,\n" -" ali pa je nameščena nepreverjena različica %s.\n" -" \n" -" Pošljite poročilo o hrošču na:\n" -" meld-list@gnome.org\n" -" \n" -" Podani bodo podatki:\n" -" \n" -" - različica meld: '%s'\n" -" - vrsta programskega nadzora: '%s'\n" -" - različica programa nadzora: 'X.Y.Z'\n" -" - izpis '%s datoteka.txt'\n" -" - ukaz patch : '%s'\n" -" (ukaza ni treba zagnati; zahtevan podatek je\n" -" ukazna vrstica) \n" -" \n" -" Zamenjajte 'X.Y.Z' s pravo različico\n" -" programske opreme za nadzor izvorne kode.\n" -" " - -#: ../meld/ui/findbar.py:127 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Napaka v logičnem izrazu\n" -"'%s'" - -#: ../meld/ui/historyentry.py:293 -msgid "_Browse..." -msgstr "_Prebrskaj ..." - -#: ../meld/ui/historyentry.py:301 -msgid "Path" -msgstr "Pot" - -#: ../meld/ui/historyentry.py:302 -msgid "Path to file" -msgstr "Pot do datoteke" - -#: ../meld/ui/historyentry.py:303 -msgid "Pop up a file selector to choose a file" -msgstr "Pokaži izbirnik za izbor datoteke" - -#: ../meld/ui/historyentry.py:441 -msgid "Select directory" -msgstr "Izbor mape" - -#: ../meld/ui/historyentry.py:445 -msgid "Select file" -msgstr "Izbor datoteke" +#~ msgid "http://meldmerge.org/" +#~ msgstr "http://meldmerge.org/" -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Zapri zavihek" +#~ msgid "Loading" +#~ msgstr "Nalaganje" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 -msgid "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" -msgstr "Prezrto:Nedoločeno:::Napaka::Novo dodano:Spremenjeno:V sporu:Odstranjeno:Manjkajoče" +#~ msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +#~ msgstr "" +#~ "Med nalaganjem naj bodo preverjeni nabori v vrsti (na primer: utf8, " +#~ "iso1250)" -#: ../meld/vc/cvs.py:163 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Napaka med pretvarjanjem logičnega izraza\n" -"Določen je bil vzorec '%s'\n" -"Javljena napaka je '%s'" +#~ msgid "Encoding" +#~ msgstr "Nabor znakov" + +#~ msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgstr "Varnostne kopije\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" + +#~ msgid "" +#~ "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +#~ "Desktop.ini\n" +#~ msgstr "" +#~ "Značilni metapodatki OS\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs." +#~ "db Desktop.ini\n" + +#~ msgid "Version Control\t1\t%s\n" +#~ msgstr "Nadzor različic\t1\t%s\n" + +#~ msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +#~ msgstr "Binarne datoteke\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" -#~ msgid "Open selected" -#~ msgstr "Odpri izbrano" +#~ msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +#~ msgstr "" +#~ "Predstavne datoteke\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf," +#~ "xpm}" + +#~ msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgstr "Ključne besede CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" + +#~ msgid "C++ comment\t0\t//.*\n" +#~ msgstr "C++ opombe\t0\t//.*\n" + +#~ msgid "C comment\t0\t/\\*.*?\\*/\n" +#~ msgstr "C opombe\t0\t/\\*.*?\\*/\n" + +#~ msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgstr "Vsi presledni znaki\t0\t[ \\t\\r\\f\\v]*\n" + +#~ msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgstr "Začetni presledni znaki\t0\t^[ \\t\\r\\f\\v]*\n" + +#~ msgid "Script comment\t0\t#.*" +#~ msgstr "Opomba skripta\t0\t#.*" + +#~ msgid "" +#~ "Meld 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.\n" +#~ "\n" +#~ "Meld 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. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see ." +#~ msgstr "" +#~ "Meld je prosta programska oprema; lahko jo razširjate in/ali spreminjate " +#~ "pod pogoji Splošnega javnega dovoljenja GNU (GNU General Public License), " +#~ "kot ga je objavila ustanova Free Software Foundation; bodisi različice 2 " +#~ "ali (po vaši izbiri) katerekoli poznejše različice.\n" +#~ "\n" +#~ "Program Meld se razširja v upanju, da bo uporaben, vendar BREZ VSAKRŠNEGA " +#~ "JAMSTVA; tudi brez posredne zagotovitve CENOVNE VREDNOSTI ali PRIMERNOSTI " +#~ "ZA DOLOČEN NAMEN. Za podrobnosti glejte besedilo Javnega dovoljenja GNU.\n" +#~ "\n" +#~ "Skupaj s programom bi morali prejeti izvod splošnega javnega dovoljenja " +#~ "GNU (GNU General Public License); če ga niste si oglejte spletno stran " +#~ "." -#~ msgid "Error converting pattern '%s' to regular expression" -#~ msgstr "Napaka med pretvarjanjem vzorca '%s' v logični izraz" +#~ msgid "Start a comparison between file and dir/file" +#~ msgstr "Zagon primerjave med datoteko in mapo/datoteko" -#~ msgid "Regex" -#~ msgstr "Logični izraz" +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "Napaka vodila D-Bus; primerjave se odprejo v novem oknu." -#~ msgid "Left" -#~ msgstr "Levo" +#~ msgid "Quit the program" +#~ msgstr "Končaj program" -#~ msgid "Right" -#~ msgstr "Desno" +#~ msgid "Configure the application" +#~ msgstr "Spremeni nastavitve programa" -#~ msgid "_Commit" -#~ msgstr "_Uveljavi" +#~ msgid "_Contents" +#~ msgstr "_Vsebina" -#~ msgid "No differences found." -#~ msgstr "Ni razlik." +#~ msgid "Open the Meld manual" +#~ msgstr "Odpri priročnik Meld" -#~ msgid "Three way directory" -#~ msgstr "Trojni pogled map" +#~ msgid "Report _Bug" +#~ msgstr "Pošlji poročilo o _hrošču" -#~ msgid "Three way file" -#~ msgstr "Trojni pogled datotek" +#~ msgid "Report a bug in Meld" +#~ msgstr "Poročilo o hrošču programa Meld" -#~ msgid "Two way directory" -#~ msgstr "Dvojni pogled map" +#~ msgid "About this program" +#~ msgstr "O programu" -#~ msgid "Two way file" -#~ msgstr "Dvojni pogled datotek" +#~ msgid "Only available if you have PyGtkSourceView 2 installed" +#~ msgstr "Na voljo le, če je nameščen paket PyGtkSourceView" -#~ msgid "Version control view" -#~ msgstr "Pogled nadzora različic" +#~ msgid "_Browse..." +#~ msgstr "_Prebrskaj ..." -#~ msgid "Font" -#~ msgstr "Pisava" +#~ msgid "Path" +#~ msgstr "Pot" -#~ msgid "_Automatically supply missing newline at end of file" -#~ msgstr "Samodejno vstavi manjkajočo _novo vrstico na koncu datoteke" +#~ msgid "Path to file" +#~ msgstr "Pot do datoteke" -#~ msgid "Copy all changes from right pane to left pane" -#~ msgstr "Kopiraj vse spremembe iz desne polovice na levo" +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "Pokaži izbirnik za izbor datoteke" -#~ msgid "Edit Menu" -#~ msgstr "Uredi meni" +#~ msgid "Select directory" +#~ msgstr "Izbor mape" -#~ msgid "Custom command" -#~ msgstr "Ukaz po meri" +#~ msgid "Select file" +#~ msgstr "Izbor datoteke" -#~ msgid "Line Wrapping " -#~ msgstr "Prelom vrstic" +#~ msgid "Compare selected" +#~ msgstr "Primerjaj izbrano" -#~ msgid "Preferences : Meld" -#~ msgstr "Možnosti : Meld" +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "'%s' je mapa.\n" +#~ "Ali naj bo odstranjena vsa vsebina?" -#~ msgid "Use GNOME monospace font" -#~ msgstr "Uporabi pisavo enotne širine" +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "Napaka med pretvarjanjem logičnega izraza\n" +#~ "Določen je bil vzorec '%s'\n" +#~ "Javljena napaka je '%s'" -#~ msgid "Use custom font" -#~ msgstr "Uporabi pisavo po meri" +#~ msgid "[%s] Fetching differences" +#~ msgstr "[%s] Iskanje razlik" -#~ msgid "_Character" -#~ msgstr "_Znak" +#~ msgid "[%s] Applying patch" +#~ msgstr "[%s] Pripenjanje popravka" -#~ msgid "_None" -#~ msgstr "_Brez" +#~ msgid "Patch tool not found" +#~ msgstr "Orodja za uveljavljanje popravkov ni mogoče najti" -#~ msgid "_Word" -#~ msgstr "_Beseda" +#~ msgid "" +#~ "Meld needs the patch tool to be installed to perform comparisons " +#~ "in %s repositories. Please install patch and try again." +#~ msgstr "" +#~ "Program Meld zahteva namestitev orodja patch za uveljavljanje " +#~ "popravkov pri izvajanju primerjav v skladiščih %s. Namestite orodje " +#~ "patch in poskusite znova." -#~ msgid "The error was:" -#~ msgstr "Napaka je:" +#~ msgid "Error fetching original comparison file" +#~ msgstr "Napaka pridobivanja izvorne datoteke za primerjavo" #~ msgid "" -#~ "It contains ascii nulls.\n" -#~ "Perhaps it is a binary file." +#~ "Meld couldn't obtain the original version of your comparison file. If you " +#~ "are using the most recent version of Meld, please report a bug, including " +#~ "as many details as possible." #~ msgstr "" -#~ "Vsebuje tudi ascii ničelne znake.\n" -#~ "Morda je datoteka dvojiška." +#~ "Ni mogoče pridobiti izvorne različice datoteke za primerjavo. V primeru, " +#~ "da uporabljate najnovejšo različico programa, pošljite poročilo o hrošču " +#~ "s čim več podrobnostmi." -#~ msgid "Start with Version Control browser in '%s'" -#~ msgstr "Zagon z brskalnikom nadzornika različic v '%s'" +#~ msgid "Report a bug" +#~ msgstr "Pošlji poročilo o hrošču" -#~ msgid "Start with Version Control diff of '%s'" -#~ msgstr "Zagon s primerjavo diff nadzornika različic '%s'" +#~ msgid "%d unpushed commits in %d branches" +#~ msgstr "%d neobjavljenih uveljavitev v %d vejah" -#~ msgid "Wrong number of arguments (Got %i)" -#~ msgstr "Neveljavno število argumentov (pridobljeno %i)" +#~ msgid "Tag" +#~ msgstr "Oznaka" diff -Nru meld-1.5.3/po/sr@latin.po meld-3.11.0/po/sr@latin.po --- meld-1.5.3/po/sr@latin.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/sr@latin.po 2014-02-16 20:23:22.000000000 +0000 @@ -1,328 +1,857 @@ # Serbian translation of meld -# Courtesy of Prevod.org team (http://prevod.org/) -- 2003, 2004. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2012. # This file is distributed under the same license as the meld package. # Maintainer: Danilo Šegan -# Miroslav Nikolić , 2011. +# Miroslav Nikolić , 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: meld\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-06-11 15:41+0000\n" -"PO-Revision-Date: 2011-06-26 23:07+0200\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=meld&k" +"eywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-01-26 17:17+0000\n" +"PO-Revision-Date: 2014-01-30 23:02+0200\n" "Last-Translator: Miroslav Nikolić \n" "Language-Team: Serbian \n" +"Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: Serbian (sr)\n" -"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" -"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\n" -"X-Generator: Virtaal 0.5.2\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : " +"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" -#: ../bin/meld:96 +#: ../bin/meld:119 msgid "Cannot import: " msgstr "Ne mogu da uvezem: " -#: ../bin/meld:99 +#: ../bin/meld:122 #, c-format msgid "Meld requires %s or higher." msgstr "Meld zahteva %s ili noviji." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Upoređujte i spajajte vaše datoteke." +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Pregledač razlika" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Pregledač razlika Meld" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Upoređujte i spajajte vaše datoteke" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Meld je grafički alat za razlike i stapanje namenjen programerima. Pomaže vam " +"da poredite datoteke, direktorijume, i projekte upravljanje izdanjima. " +"Obezbeđuje dvostruko i trostruko poređenje i datoteka i direktorijuma, i " +"podržava mnoge sisteme upravljanja izdanjima uključujući Git, Merkurijal, Bazar " +"i Subverziju." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" +"Meld vam pomaže da pregledate izmene u kodu, da razumete zakrpe, i ogromne " +"sukobe stapanja čini manje bolnim." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Opis Meldovog poređenja" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Osnovna veličina prozora" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +#| msgid "Show or hide the toolbar" +msgid "Show toolbar" +msgstr "Prikazuje traku alata" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Ako je izabrano, traka alata je vidljiva." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +#| msgid "_Statusbar" +msgid "Show statusbar" +msgstr "Prikazuje traku stanja" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Ako je izabrano, traka stanja je vidljiva." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +#| msgid "Automatically merge files" +msgid "Automatically detected text encodings" +msgstr "Samostalno otkrivanje kodnih rasporeda" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Ova kodiranja teksta će biti samostalno korišćenja (po redu) pri pokušaju " +"dekodiranja učitanih tekstualnih datoteka." + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Širina koraka uvlačenja" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "Broj razmaka za jedan korak uvlačenja" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "Da li da uvlači koristeći razmake ili tabulatore" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" +"Ako je izabrano, svako novo uvlačenje će koristiti razmake umesto tabulatora." + +#: ../data/org.gnome.meld.gschema.xml.h:12 +#| msgid "Show _line numbers" +msgid "Show line numbers" +msgstr "Prikazuje brojeve redova" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" +"Ako je izabrano, brojevi redova će biti prikazani u žlebu poređenja datoteka." + +#: ../data/org.gnome.meld.gschema.xml.h:14 +#| msgid "Highlight _current line" +msgid "Highlight syntax" +msgstr "Ističe pojavu" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Da li da ističe pojavu u poređenju. Zbog samog Meldovog isticanja bojom, ovo " +"je unapred isključeno." + +#: ../data/org.gnome.meld.gschema.xml.h:16 +#| msgid "Show w_hitespace" +msgid "Displayed whitespace" +msgstr "Prikazane praznine" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Birač za zasebne vrste znakova praznina koje će biti prikazane. Moguće " +"vrednosti su: „space“ (razmak), „tab“ (tabulator), „newline“ (novi red) i " +"„nbsp“ (nbsp)." + +#: ../data/org.gnome.meld.gschema.xml.h:18 +#| msgid "Wrapped" +msgid "Wrap mode" +msgstr "Režim prelamanja" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Redovi pri poređenju datoteka će biti prelomljeni u skladu sa ovim " +"podešavanjem, bez prelamanja — „none“, na bilo kom znaku — „char“, ili samo na " +"kraju reči — „word“." + +#: ../data/org.gnome.meld.gschema.xml.h:20 +#| msgid "Highlight _current line" +msgid "Highlight current line" +msgstr "Ističe tekući red" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" +"Ako je izabrano, red koji sadrži kurzor će biti istaknut pri poređenju " +"datoteka." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +#| msgid "_Use the system fixed width font" +msgid "Use the system default monospace font" +msgstr "Koristi sistemski slovni lik stalne širine" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Ako nije izabrano, zadati proizvoljni slovni lik će biti korišćen umesto " +"sistemskog slovnog lika stalne širine." + +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Proizvoljni slovni lik" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"Proizvoljni slovni lik za korišćenje, smešten kao niska i obrađen kao opis " +"Pango slovnog lika" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Zanemaruje prazne redove pri poređenju datoteka" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Ako je izabrano, prazni redovi će biti skraćeni kada se isticanje promeni " +"među datotekama." + +#: ../data/org.gnome.meld.gschema.xml.h:28 +#| msgid "Use _default system editor" +msgid "Use the system default editor" +msgstr "Koristi osnovni uređivač sistema" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Ako nije izabrano, zadati proizvoljni uređivač će biti korišćen umesto " +"sistemskog uređivača prilikom otvaranja datoteka spolja." + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "Naredba pokretanja proizvoljnog uređivača" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"Naredba za pokretanje proizvoljnog uređivača. Ovde je podržano neko ograničeno " +"šabloniranje; za sada „{file}“ i „{line}“ su prepoznate opcije." + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Stupci za prikazivanje" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "Spisak naziva stubaca pri poređenju fascikli i da li će biti prikazani." + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Zanemari simboličke veze" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Ako je izabrano, poređenja fascikli ne prate simboličke veze prilikom " +"prolaska kroz stablo fascikle." + +#: ../data/org.gnome.meld.gschema.xml.h:36 +#| msgid "Shallow Comparison" +msgid "Use shallow comparison" +msgstr "Koristi površno poređenje" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Ako je izabrano, poređenje fascikli poredi datoteke samo na osnovu veličine i " +"m_vremena, smatrajući da su datoteke istovetne ako se njihove veličine i " +"m_vreme poklapaju, a različite u suprotnom." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +#| msgid "_Timestamp resolution:" +msgid "File timestamp resolution" +msgstr "Rezolucija vremenske oznake datoteke" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" +"Prilikom poređenja na osnovu m_vremena, ovo je najmanja razlika u " +"nanosekundama između dve datoteke pre nego što se odluči da imaju različita " +"m_vremena. Ovo je korisno prilikom poređenja datoteka između sistema datoteka " +"sa različitom rezolcijom vremenske oznake." + +#: ../data/org.gnome.meld.gschema.xml.h:40 +#| msgid "File Filters" +msgid "File status filters" +msgstr "Propusnici stanja datoteka" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" +"Spisak stanja korišćenih za izdvajanje vidljivih datoteka pri poređenju " +"fascikli." + +#: ../data/org.gnome.meld.gschema.xml.h:42 +#| msgid "Choose which version control system to use" +msgid "Show the version control console output" +msgstr "Prikazuje izlaz konzole upravljanja izdanjem" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" +"Ako je izabrano, odeljak izlaza konzole će biti prikazan u pregledima " +"upravljanja izdanjem, prikazujući pokrenute naredbe za radnje upravljanja izdanjem." + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "Predstavlja poređenja izdanja kao mesno-levo/udaljeno-desno" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" +"Ako je izabrano, poređenja upravljanja izdanjem će koristiti šemu " +"„levo-je-mesno, desno-je-udaljeno“ da odrede kojim redom će predstaviti " +"datoteke u oknima. U suprotnom, koristi se šema „levo-je-njihovo, " +"desno-je-moje“." + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "Prikazuje ivicu u uređivaču poruke predaje" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" +"Ako je izabrano, biće prikazana vođica da pokaže od kog stupca se ivica " +"nalazi u uređivaču poruke predaje upravljanja izdanjem." + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "Stubac ivice u uređivaču poruke predaje" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" +"Stubac ivice koja se nalazi u uređivaču poruke predaje upravljanja izdanjem." + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "Samostalno silno-prelama poruke predaje" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" +"Ako je izabrano, uređivač poruke predaje upravljanja izdanjem će " +"silno-prelomiti (tj. umetnuti prelome redova) na zadatoj ivici predaje pre " +"predaje." + +#: ../data/org.gnome.meld.gschema.xml.h:52 +#| msgid "Version control view" +msgid "Version control status filters" +msgstr "Propusnici stanja upravljanja izdanjem" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" +"Spisak stanja korišćenih za izdvajanje vidljivih datoteka pri poređenju " +"upravljanja izdanjem." + +#: ../data/org.gnome.meld.gschema.xml.h:54 +#| msgid "File Filters" +msgid "Filename-based filters" +msgstr "Propusnici zasnovani na nazivu datoteke" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" +"Spisak unapred određenih propusnika zasnovanih na nazivu datoteke koji će, " +"ako je radno, ukloniti poklopljene datoteke iz poređenja fascikli." + +#: ../data/org.gnome.meld.gschema.xml.h:56 +#| msgid "Text Filters" +msgid "Text-based filters" +msgstr "Propusnici zasnovani na tekstu" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" +"Spisak unapred određenih propusnika regularnog izraza zasnovanih na tekstu " +"koji će, ako je radno, ukloniti tekst iz upotrebe pri poređenju datoteka. " +"Tekst će još uvek biti prikazan, ali neće doprineti poređenju." + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "O Meldu" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Autorska prava © 2002-2009 Stefen Kenedi\n" +"Autorska prava © 2009-2013 Kaj Viladsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Veb stranica" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "" +" Miroslav Nikolić \n" +"\n" +"http://prevod.org — prevod na srpski jezik" + +#: ../data/ui/application.ui.h:6 +#| msgid "Meld Preferences" +msgid "_Preferences" +msgstr "_Postavke" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "Po_moć" + +#: ../data/ui/application.ui.h:8 +#| msgid "About Meld" +msgid "_About" +msgstr "_O Meldu" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Izađi" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Uporedi" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Uporedite izabrane datoteke" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Umnoži _levo" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Umnožite levo" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Umnoži _desno" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Umnožite desno" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Obriši izabrano" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1412 +msgid "Hide" +msgstr "Sakrij" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Sakrijte izabrano" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Zanemari veličinu slova naziva datoteke" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Smatraće istim različite veličine slova u nazivima datoteka koje su " +"međusobno istovetne" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Isto" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Prikaži istovetne" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Novi" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Prikaži nove" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Izmenjeni" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Prikaži izmenjene" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Propusnici" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Podesite aktivne propusnike" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Aktivan" +msgid "Editable List" +msgstr "Spisak za uređivanje" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Dodajte novi filter" +msgid "Active" +msgstr "Aktivan" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Spisak za uređivanje" +msgid "Column Name" +msgstr "Naziv kolone" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "Premesti _dole" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Dodaj" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:676 +msgid "_Remove" +msgstr "_Ukloni" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Premestite stavku na gore" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "Premesti _gore" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" -msgstr "Premešta stavku nadole" +msgstr "Premestite stavku na dole" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Premešta stavku nagore" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Premesti _dole" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:157 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:364 +#: ../meld/vcview.py:186 msgid "Name" -msgstr "Ime" +msgstr "Naziv" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Obrazac" -#: ../data/ui/EditableList.ui.h:10 -msgid "Remove selected filter" -msgstr "Uklanja izabrani filter" - -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:122 -msgid "_Add" -msgstr "_Dodaj" +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Dodajte novi propusnik" -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:124 -msgid "_Remove" -msgstr "U_kloni" +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Uklonite izabrani propusnik" #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Da sačuvam izmenjene datoteke?" +msgid "Save changes to documents before closing?" +msgstr "Da sačuvam izmene u dokumentu pre zatvaranja?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Neke datoteke su izmenjene.\n" -"Koje želite da sačuvate?" +msgid "If you don't save, changes will be permanently lost." +msgstr "Ako ne sačuvate, izmene će biti trajno izgubljene." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Zatvori _bez čuvanja" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Odbaci izmene" +msgid "_Cancel" +msgstr "_Otkaži" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "_Sačuvaj izabrano" +msgid "_Save" +msgstr "_Sačuvaj" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"U ovu datoteku se ne može upisivati. Možete da kliknete ovde da otključate " +"ovu datoteku i da ipak načinite izmene, ali te izmene moraju biti sačuvane u " +"novu datoteku." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Da povratim nesačuvane izmene u dokumentima?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Izmene načinjene nad sledećim dokumentima će biti trajno izgubljene:\n" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "_Regularan izraz" +msgid "_Replace" +msgstr "_Zameni" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "Zameni s_ve" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Zameni s_a" +msgid "_Previous" +msgstr "_Prethodno" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "Ce_lu reč" +msgid "_Next" +msgstr "_Sledeće" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "_Uporedi veličinu slova" +msgid "Find:" +msgstr "Nađi:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "Sle_deće" +msgid "Replace _with:" +msgstr "Zameni s_a:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "Pre_thodno" +msgid "_Match case" +msgstr "_Uporedi veličinu slova" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "_Zameni" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Ce_lu reč" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Potraži" - -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Izaberite datoteke" - -#: ../data/ui/meldapp.ui.h:2 -msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" -msgstr "" -"Autorska prava © 2002-2009 Stefen Kenedi\n" -"Autorska prava © 2009-2010 Kaj Viladsen" - -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Direktorijum" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Moja" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Izvorna" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Druga" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Izaberite CV direktorijum" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Poređenje di_rektorijuma" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "Poređenje da_toteka" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "Poređenje tri elementa" +msgid "Regular e_xpression" +msgstr "Regularan _izraz" -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "Pretraživač kontrole _verzija" - -#: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "" -"Danilo Šegan \n" -"\n" -"Prevod.org — prevod na srpski jezik." +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Prelomljeno" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Umnoži u ostavu" +msgid "Format as Patch" +msgstr "Oblikuj kao ispravku" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Napravi ispravku" +msgid "Use differences between:" +msgstr "Koristi razlike između:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Pravi ispravku" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Leva i srednja površ" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Srednja i desna površ" +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "Preokreni smer _ispravke" + #: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Koristi razlike između:" +msgid "Copy to Clipboard" +msgstr "Umnoži u ostavu" -#: ../data/ui/patch-dialog.ui.h:7 -msgid "_Reverse patch direction" -msgstr "Preo_kreni smer ispravke" +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:119 +msgid "Save Patch" +msgstr "Sačuvaj ispravku" #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Prikaz" +msgid "Left is remote, right is local" +msgstr "Leva je udaljena, desna je mesna" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Nemoj _podeliti reči u dva reda" +msgid "Left is local, right is remote" +msgstr "Leva je mesna, desna je udaljena" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Naredba _uređivača:" +msgid "1ns (ext4)" +msgstr "1ns (ekst4)" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Uređivač" +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Uključi _prelamanje teksta" +msgid "1s (ext2/ext3)" +msgstr "1s (ekst2/ekst3)" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Kodiranje" +msgid "2s (VFAT)" +msgstr "2s (VFAT)" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Spoljni uređivač" +msgid "Meld Preferences" +msgstr "Postavke Melda" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Filteri datoteka" +msgid "Font" +msgstr "Slovni lik" #: ../data/ui/preferences.ui.h:9 -msgid "Font" -msgstr "Font" +msgid "_Use the system fixed width font" +msgstr "_Koristi sistemski slovni lik stalne širine" #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Zanemari izmene koje ubacuju ili brišu prazne redove" +msgid "_Editor font:" +msgstr "_Slovni lik uređivača:" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Zanemari simboličke veze" +msgid "Display" +msgstr "Prikaz" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Učitavam" +msgid "_Tab width:" +msgstr "Širina _tabulatora:" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Postavke Melda" +msgid "_Insert spaces instead of tabs" +msgstr "_Ubaci razmake umesto tabulatora" #: ../data/ui/preferences.ui.h:14 -msgid "Show _line numbers" -msgstr "Prikaži _brojeve linija" +msgid "Enable text _wrapping" +msgstr "Uključi _prelamanje teksta" #: ../data/ui/preferences.ui.h:15 -msgid "Show w_hitespace" -msgstr "Prikaži _razmake" +msgid "Do not _split words over two lines" +msgstr "Nemoj _deliti reči u dva reda" #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Filteri teksta" +msgid "Highlight _current line" +msgstr "Istakni _tekući red" #: ../data/ui/preferences.ui.h:17 -msgid "Use _default system editor" -msgstr "Koristi _osnovni uređivač sistema" +msgid "Show _line numbers" +msgstr "Prikaži _brojeve redova" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Koristi isticanje _sintakse" +msgid "Show w_hitespace" +msgstr "Prikaži _razmake" -# bug: what encoding is iso8859? it's a registry of encodings, and encoding is eg. iso8859-5 #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Pri učitavanju, probaj ova kodiranja redom. (npr. utf8, iso8859)" +msgid "Use s_yntax highlighting" +msgstr "Koristi isticanje _sintakse" #: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Spoljni uređivač" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "Koristi _osnovni uređivač sistema" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Naredba _uređivača:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Uređivač" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Površno poređenje" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "Up_oredi datoteke samo na osnovu veličine i vremenske oznake" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "_Rezolucija vremenske oznake:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Simboličke veze" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Prikazane kolone" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Poređenje fascikli" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Poređenje izdanja" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "_Prilikom poređenja pregleda datoteke:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Poruke predaje" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Prikaži _desnu marginu na:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Sam _prelamaj redove na desnoj margini pri predaji" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Upravljanje izdanjem" + +#: ../data/ui/preferences.ui.h:37 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " "separated by spaces." msgstr "" -"Prilikom poređenja direktorijuma, možete da filtrirate datoteke i " -"direktorijume prema imenu. Svaki obrazac je spisak džokera u stilu konzole " -"razdvojenih razmakom." +"Prilikom poređenja direktorijuma, možete da izdvojite datoteke i fascikle " +"prema nazivu. Svaki obrazac je spisak džokera u stilu konzole razdvojenih " +"razmakom." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:105 +msgid "File Filters" +msgstr "Propusnici datoteka" + +#: ../data/ui/preferences.ui.h:39 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -331,177 +860,248 @@ "details." msgstr "" "Prilikom poređenja datoteka, možete da zanemarite određene vrste izmena. " -"Svaki obrazac je regularan izraz pajtona koji zamenjuje podudarajući tekst " +"Svaki obrazac je regularan izraz pitona koji zamenjuje podudarajući tekst " "praznim niskama pre izvršavanja poređenja. Ako izraz sadrži grupe, samo grupe " "bivaju zamenjene. Za više detalja pogledajte uputstvo za korisnike." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "_Font uređivača:" - -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "_Ubaci razmake umesto tabulatora" - -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "_Širina tabulatora:" +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Zanemari izmene koje ubacuju ili brišu prazne redove" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "Koristi sistemom postavljenu veličinu _fonta" +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Propusnici teksta" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Ugradi datoteke" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:617 +msgid "New comparison" +msgstr "Novo poređenje" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Poređenje datoteka" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Poređenje fascikli" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Pregled upravljanja izdanjima" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Uporedi _3-elementa" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Izaberite treću datoteku" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Izaberite drugu datoteku" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Izaberite prvu datoteku" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Izaberite prvu fasciklu" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Izaberite drugu fasciklu" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Izaberite treću fasciklu" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Izaberite fasciklu upravljanja izdanjem" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Prazno poređenje" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Opcije poređenja" +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Uporedi" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Datum" +msgid "Co_mmit..." +msgstr "U_gradi..." #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Lokalni primerak naspram druge udaljene revizije" +msgid "Commit changes to version control" +msgstr "Ugradite izmene u upravljanje izdanjem" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Lokalni primerak naspram iste udaljene revizije" +msgid "_Update" +msgstr "_Ažuriraj" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Poruka dnevnika" +msgid "Update working copy from version control" +msgstr "Dogradite radni primerak iz upravljanja izdanjem" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Prethodni dnevnici" - -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:180 -msgid "Tag" -msgstr "Oznaka" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "CV dnevnik" - -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "_Uporedi" +msgid "_Push" +msgstr "_Poguraj" -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Uporedi izabrano" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Pogurajte mesne izmene u udaljene" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Dodajte u upravljanje izdanjem" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Uklonite iz upravljanja izdanjem" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Označi _kao rešeno" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Označite kao rešeno u upravljanju izdanjem" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "_Povrati" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Povratite radni primerak na prvobitno stanje" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Obrišite iz radnog primerka" -#: ../meld/dirdiff.py:228 -msgid "Copy _Left" -msgstr "Umnoži _levo" - -#: ../meld/dirdiff.py:228 -msgid "Copy to left" -msgstr "Umnožite levo" - -#: ../meld/dirdiff.py:229 -msgid "Copy _Right" -msgstr "Umnoži _desno" - -#: ../meld/dirdiff.py:229 -msgid "Copy to right" -msgstr "Umnožite desno" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Izravnaj" -#: ../meld/dirdiff.py:230 -msgid "Delete selected" -msgstr "Obriši izabrano" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Izravnajte fascikle" -#: ../meld/dirdiff.py:231 ../meld/filediff.py:1117 -msgid "Hide" -msgstr "Sakrij" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "Iz_menjen" -#: ../meld/dirdiff.py:231 -msgid "Hide selected" -msgstr "Sakrij izabrano" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Prikažite izmenjene datoteke" -#: ../meld/dirdiff.py:233 ../meld/filediff.py:267 ../meld/vcview.py:119 -msgid "Open selected" -msgstr "Otvori izabrano" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Obično" -#: ../meld/dirdiff.py:237 -msgid "Case" -msgstr "Veličina slova" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Prikažite uobičajene datoteke" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "_Neobrađeno" -#: ../meld/dirdiff.py:237 -msgid "Ignore case of entries" -msgstr "Zanemari veličinu slova unosa" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Prikažite neobrađene datoteke" -#: ../meld/dirdiff.py:238 -msgid "Same" -msgstr "Isto" +#: ../data/ui/vcview.ui.h:26 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Zanemarene" -#: ../meld/dirdiff.py:238 -msgid "Show identical" -msgstr "Prikaži istovetne" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Prikažite zanemarene datoteke" -#: ../meld/dirdiff.py:239 -msgid "New" -msgstr "Novi" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Ugradi" -#: ../meld/dirdiff.py:239 -msgid "Show new" -msgstr "Prikaži nove" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Ugradi datoteke" -#: ../meld/dirdiff.py:240 -msgid "Modified" -msgstr "Izmenjeni" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Poruka dnevnika" -#: ../meld/dirdiff.py:240 ../meld/vcview.py:132 -msgid "Show modified" -msgstr "Prikaži izmenjene" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Prethodni dnevnici:" -#: ../meld/dirdiff.py:242 -msgid "Filters" -msgstr "Filteri" +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "U_gradi" -#: ../meld/dirdiff.py:242 -msgid "Set active filters" -msgstr "Podesite aktivne filtere" +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Da poguram mesne predaje u udaljene?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"Predaje koje će biti pogurane se određuju vašim sistemom upravljanja izdanjem" + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Poguraj predaje" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:382 +msgid "Size" +msgstr "Veličina" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:390 +msgid "Modification time" +msgstr "Vreme izmene" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:398 +msgid "Permissions" +msgstr "Ovlašćenja" -#: ../meld/dirdiff.py:359 +#: ../meld/dirdiff.py:557 #, python-format msgid "Hide %s" msgstr "Sakrij „%s“" -#: ../meld/dirdiff.py:462 ../meld/dirdiff.py:475 ../meld/vcview.py:305 -#: ../meld/vcview.py:333 +#: ../meld/dirdiff.py:686 ../meld/dirdiff.py:708 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] pregledam „%s“" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:837 #, python-format msgid "[%s] Done" msgstr "[%s] Gotovo" -#: ../meld/dirdiff.py:578 +#: ../meld/dirdiff.py:844 msgid "Multiple errors occurred while scanning this folder" msgstr "Došlo je do više grešaka za vreme pretraživanja ove fascikle" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:845 msgid "Files with invalid encodings found" msgstr "Pronađene su datoteke sa neispravnim kodiranjem" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:847 msgid "Some files were in an incorrect encoding. The names are something like:" -msgstr "Neke datoteke bejahu u neispravnom kodiranju. Imena su nešto kao:" +msgstr "Neke datoteke bejahu u neispravnom kodiranju. Nazivi su nešto kao:" -#: ../meld/dirdiff.py:583 +#: ../meld/dirdiff.py:849 msgid "Files hidden by case insensitive comparison" msgstr "Datoteke skrivene poređenjem neosetljivim na veličinu slova" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:585 +#: ../meld/dirdiff.py:851 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -509,16 +1109,17 @@ "Pokrenuli ste poređenje nezavisno od veličine slova na sistemu datoteka gde " "je ona bitna. Neke datoteke nisu vidljive:" -#: ../meld/dirdiff.py:596 +#: ../meld/dirdiff.py:862 #, python-format msgid "'%s' hidden by '%s'" msgstr "„%s“ sakriveno od strane „%s“" -#: ../meld/dirdiff.py:621 ../meld/filediff.py:981 ../meld/filediff.py:1121 +#: ../meld/dirdiff.py:887 ../meld/filediff.py:1105 ../meld/filediff.py:1243 +#: ../meld/filediff.py:1414 ../meld/filediff.py:1444 ../meld/filediff.py:1446 msgid "Hi_de" msgstr "_Sakrij" -#: ../meld/dirdiff.py:671 +#: ../meld/dirdiff.py:918 #, python-format msgid "" "'%s' exists.\n" @@ -527,47 +1128,38 @@ "„%s“ postoji.\n" "Da presnimim?" -#: ../meld/dirdiff.py:678 +#: ../meld/dirdiff.py:926 +msgid "Error copying file" +msgstr "Greška umnožavanja datoteke" + +#: ../meld/dirdiff.py:927 #, python-format msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Greška pri umnožavanju „%s“ u „%s“\n" +"Ne mogu da umnožim „%s“\n" +"u „%s“.\n" "\n" -"%s." +"%s" -#: ../meld/dirdiff.py:696 ../meld/vcview.py:505 +#: ../meld/dirdiff.py:950 #, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"„%s“ je direktorijum.\n" -"Da uklonim rekurzivno?" +msgid "Error deleting %s" +msgstr "Greška brisanja „%s“" -#: ../meld/dirdiff.py:703 ../meld/vcview.py:510 -#, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Greška pri uklanjanju „%s“\n" -"\n" -"%s." - -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:1081 #, python-format msgid "%i second" msgid_plural "%i seconds" -msgstr[0] "%i sekund" +msgstr[0] "%i sekunda" msgstr[1] "%i sekunde" msgstr[2] "%i sekundi" msgstr[3] "%i sekunda" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:1082 #, python-format msgid "%i minute" msgid_plural "%i minutes" @@ -576,7 +1168,7 @@ msgstr[2] "%i minuta" msgstr[3] "%i minut" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:1083 #, python-format msgid "%i hour" msgid_plural "%i hours" @@ -585,7 +1177,7 @@ msgstr[2] "%i sati" msgstr[3] "%i sat" -#: ../meld/dirdiff.py:718 +#: ../meld/dirdiff.py:1084 #, python-format msgid "%i day" msgid_plural "%i days" @@ -594,7 +1186,7 @@ msgstr[2] "%i dana" msgstr[3] "%i dan" -#: ../meld/dirdiff.py:719 +#: ../meld/dirdiff.py:1085 #, python-format msgid "%i week" msgid_plural "%i weeks" @@ -603,7 +1195,7 @@ msgstr[2] "%i nedelja" msgstr[3] "%i nedelja" -#: ../meld/dirdiff.py:720 +#: ../meld/dirdiff.py:1086 #, python-format msgid "%i month" msgid_plural "%i months" @@ -612,7 +1204,7 @@ msgstr[2] "%i meseci" msgstr[3] "%i mesec" -#: ../meld/dirdiff.py:721 +#: ../meld/dirdiff.py:1087 #, python-format msgid "%i year" msgid_plural "%i years" @@ -621,224 +1213,280 @@ msgstr[2] "%i godina" msgstr[3] "%i godina" -#: ../meld/filediff.py:268 -msgid "Format as patch..." -msgstr "Formatiraj kao ispravku..." +#: ../meld/filediff.py:227 +msgid "Format as Patch..." +msgstr "Oblikuj kao ispravku..." -#: ../meld/filediff.py:268 +#: ../meld/filediff.py:228 msgid "Create a patch using differences between files" -msgstr "Pravi ispravku koristeći razlike između datoteka" +msgstr "Napravite ispravku koristeći razlike između datoteka" + +#: ../meld/filediff.py:230 +msgid "Save A_ll" +msgstr "Sačuvaj _sve" + +#: ../meld/filediff.py:231 +msgid "Save all files in the current comparison" +msgstr "Sačuvajte sve datoteke u tekućem poređenju" + +#: ../meld/filediff.py:234 +msgid "Revert files to their saved versions" +msgstr "Povratite datoteke na njihova sačuvana izdanja" + +#: ../meld/filediff.py:236 +msgid "Add Synchronization Point" +msgstr "Dodaj tačku usklađivanja" + +#: ../meld/filediff.py:237 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Dodajte tačku za usklađivanje izmena između datoteka" + +#: ../meld/filediff.py:240 +msgid "Clear Synchronization Points" +msgstr "Očisti tačke usklađivanja" + +#: ../meld/filediff.py:241 +msgid "Clear manual change sychronization points" +msgstr "Očistite tačke usklađivanja izmena" -#: ../meld/filediff.py:269 -msgid "Previous conflict" +#: ../meld/filediff.py:243 +msgid "Previous Conflict" msgstr "Prethodni sukob" -#: ../meld/filediff.py:269 +#: ../meld/filediff.py:244 msgid "Go to the previous conflict" -msgstr "Ide na prethodni sukob" +msgstr "Idite na prethodni sukob" -#: ../meld/filediff.py:270 -msgid "Next conflict" +#: ../meld/filediff.py:246 +msgid "Next Conflict" msgstr "Sledeći sukob" -#: ../meld/filediff.py:270 +#: ../meld/filediff.py:247 msgid "Go to the next conflict" -msgstr "Ide na sledeći sukob" +msgstr "Idite na sledeći sukob" -#: ../meld/filediff.py:271 -msgid "Push to left" +#: ../meld/filediff.py:249 +msgid "Push to Left" msgstr "Gurni ulevo" -#: ../meld/filediff.py:271 +#: ../meld/filediff.py:250 msgid "Push current change to the left" -msgstr "Gura tekuću izmenu ulevo" +msgstr "Gurnite tekuću izmenu ulevo" -#: ../meld/filediff.py:272 -msgid "Push to right" +#: ../meld/filediff.py:253 +msgid "Push to Right" msgstr "Gurni udesno" -#: ../meld/filediff.py:272 +#: ../meld/filediff.py:254 msgid "Push current change to the right" -msgstr "Gura tekuću izmenu udesno" +msgstr "Gurnite tekuću izmenu udesno" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:274 -msgid "Pull from left" +#: ../meld/filediff.py:258 +msgid "Pull from Left" msgstr "Ubaci s leva" -#: ../meld/filediff.py:274 +#: ../meld/filediff.py:259 msgid "Pull change from the left" -msgstr "Ubacuje izmenu s leva" +msgstr "Ubacite izmenu s leva" -#: ../meld/filediff.py:275 -msgid "Pull from right" +#: ../meld/filediff.py:262 +msgid "Pull from Right" msgstr "Ubaci s desna" -#: ../meld/filediff.py:275 +#: ../meld/filediff.py:263 msgid "Pull change from the right" -msgstr "Ubacuje izmenu s leva" +msgstr "Ubacite izmenu s desna" -#: ../meld/filediff.py:276 -msgid "Copy above left" +#: ../meld/filediff.py:265 +msgid "Copy Above Left" msgstr "Umnoži iznad ulevo" -#: ../meld/filediff.py:276 +#: ../meld/filediff.py:266 msgid "Copy change above the left chunk" -msgstr "Umnožava izmenu iznad komada ulevo" +msgstr "Umnožite izmenu iznad komada ulevo" -#: ../meld/filediff.py:277 -msgid "Copy below left" +#: ../meld/filediff.py:268 +msgid "Copy Below Left" msgstr "Umnoži ispod ulevo" -#: ../meld/filediff.py:277 +#: ../meld/filediff.py:269 msgid "Copy change below the left chunk" -msgstr "Umnožava izmenu ispod komada ulevo" +msgstr "Umnožite izmenu ispod komada ulevo" -#: ../meld/filediff.py:278 -msgid "Copy above right" +#: ../meld/filediff.py:271 +msgid "Copy Above Right" msgstr "Umnoži iznad udesno" -#: ../meld/filediff.py:278 +#: ../meld/filediff.py:272 msgid "Copy change above the right chunk" -msgstr "Umnožava izmenu iznad komada ulevo" +msgstr "Umnožite izmenu iznad komada udesno" -#: ../meld/filediff.py:279 -msgid "Copy below right" +#: ../meld/filediff.py:274 +msgid "Copy Below Right" msgstr "Umnoži ispod udesno" -#: ../meld/filediff.py:279 +#: ../meld/filediff.py:275 msgid "Copy change below the right chunk" -msgstr "Umnožava izmenu ispod komada udesno" +msgstr "Umnožite izmenu ispod komada udesno" -#: ../meld/filediff.py:280 +#: ../meld/filediff.py:277 msgid "Delete" msgstr "Obriši" -#: ../meld/filediff.py:280 +#: ../meld/filediff.py:278 msgid "Delete change" -msgstr "Briše izmenu" +msgstr "Obrišite izmenu" -#: ../meld/filediff.py:281 -msgid "Merge all changes from left" -msgstr "Objedini sve izmene s leva" +#: ../meld/filediff.py:280 +msgid "Merge All from Left" +msgstr "Objedini sve s leva" #: ../meld/filediff.py:281 msgid "Merge all non-conflicting changes from the left" -msgstr "Objedinjuje sve nesukobljavajuće izmene s leva" +msgstr "Objedinite sve nesukobljavajuće izmene s leva" -#: ../meld/filediff.py:282 -msgid "Merge all changes from right" -msgstr "Objedini sve izmene s desna" +#: ../meld/filediff.py:283 +msgid "Merge All from Right" +msgstr "Objedini sve s desna" -#: ../meld/filediff.py:282 +#: ../meld/filediff.py:284 msgid "Merge all non-conflicting changes from the right" -msgstr "Objedinjuje sve nesukobljavajuće izmene s desna" +msgstr "Objedinite sve nesukobljavajuće izmene s desna" -#: ../meld/filediff.py:283 -msgid "Merge all non-conflicting" -msgstr "Objedini sve nesukobljavajuće" +#: ../meld/filediff.py:286 +msgid "Merge All" +msgstr "Stopi sve" -#: ../meld/filediff.py:283 +#: ../meld/filediff.py:287 msgid "Merge all non-conflicting changes from left and right panes" -msgstr "Objedinjuje sve nesukobljavajuće izmene s leve i desne površi" +msgstr "Objedinite sve nesukobljavajuće izmene s leve i desne površi" -#: ../meld/filediff.py:284 -msgid "Cycle through documents" +#: ../meld/filediff.py:291 +msgid "Cycle Through Documents" msgstr "Kruži kroz dokumente" -#: ../meld/filediff.py:284 +#: ../meld/filediff.py:292 msgid "Move keyboard focus to the next document in this comparison" -msgstr "Premešta fokus tastature na sledeći dokument u ovom poređenju" +msgstr "Premestite fokus tastature na sledeći dokument u ovom poređenju" -#: ../meld/filediff.py:288 -msgid "Lock scrolling" +#: ../meld/filediff.py:298 +msgid "Lock Scrolling" msgstr "Zaključaj klizanje" -#: ../meld/filediff.py:289 +#: ../meld/filediff.py:299 msgid "Lock scrolling of all panes" -msgstr "Zaključava klizanje svih površi" +msgstr "Zaključajte klizanje svih površi" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:381 +#: ../meld/filediff.py:484 msgid "INS" msgstr "UMET" -#: ../meld/filediff.py:381 +#: ../meld/filediff.py:484 msgid "OVR" msgstr "PREP" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:383 +#: ../meld/filediff.py:486 #, python-format msgid "Ln %i, Col %i" msgstr "Red %i, mesto %i" -#: ../meld/filediff.py:693 +#: ../meld/filediff.py:823 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " "incorrect. See the user manual for more details." msgstr "" -"Filter „%s“ je izmenio broj redova u datoteci. Poređenje neće biti tačno. Za " -"više detalja pogledajte priručnik za korisnike." +"Propusnik „%s“ je izmenio broj redova u datoteci. Poređenje neće biti tačno. " +"Za više detalja pogledajte priručnik za korisnike." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:780 -msgid "" -msgstr "" - -#: ../meld/filediff.py:969 +#: ../meld/filediff.py:1093 #, python-format msgid "[%s] Set num panes" -msgstr "[%s] Postavi broj ploča" +msgstr "[%s] Postavi broj površi" -#: ../meld/filediff.py:975 +#: ../meld/filediff.py:1099 #, python-format msgid "[%s] Opening files" msgstr "[%s] Otvaram datoteke" -#: ../meld/filediff.py:999 ../meld/filediff.py:1008 ../meld/filediff.py:1020 -#: ../meld/filediff.py:1026 +#: ../meld/filediff.py:1122 ../meld/filediff.py:1132 ../meld/filediff.py:1145 +#: ../meld/filediff.py:1151 msgid "Could not read file" msgstr "Ne mogu da pročitam datoteku" -#: ../meld/filediff.py:1000 +#: ../meld/filediff.py:1123 #, python-format msgid "[%s] Reading files" msgstr "[%s] Čitam datoteke" -#: ../meld/filediff.py:1009 +#: ../meld/filediff.py:1133 #, python-format msgid "%s appears to be a binary file." msgstr "„%s“ izgleda da je izvršna datoteka." -#: ../meld/filediff.py:1021 +#: ../meld/filediff.py:1146 #, python-format msgid "%s is not in encodings: %s" msgstr "„%s“ nije u kodiranjima: „%s“" -#: ../meld/filediff.py:1051 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1181 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Sračunavam razlike" -#: ../meld/filediff.py:1108 +#: ../meld/filediff.py:1238 +#, python-format +msgid "File %s has changed on disk" +msgstr "Datoteka „%s“ je izmenjena na disku" + +#: ../meld/filediff.py:1239 +#| msgid "Could not read file" +msgid "Do you want to reload the file?" +msgstr "Da li želite ponovo da učitate datoteku?" + +#: ../meld/filediff.py:1242 +msgid "_Reload" +msgstr "_Učitaj ponovo" + +#: ../meld/filediff.py:1403 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" msgstr "" -"Korišćeni su filteri teksta, a mogu postojati i zamaskirane razlike između " -"datoteka. Da li želite da poredite nefiltrirane datoteke?" +"Korišćeni su propusnici teksta, a mogu postojati i zamaskirane razlike " +"između datoteka. Da li želite da poredite neizdvojene datoteke?" -#: ../meld/filediff.py:1114 +#: ../meld/filediff.py:1409 msgid "Files are identical" msgstr "Datoteke su istovetne" -#: ../meld/filediff.py:1124 +#: ../meld/filediff.py:1417 msgid "Show without filters" -msgstr "Prikazuje bez filtera" +msgstr "Prikazuje bez propusnika" + +#: ../meld/filediff.py:1439 +msgid "Change highlighting incomplete" +msgstr "Isticanje izmena nije dovršeno" -#: ../meld/filediff.py:1278 +#: ../meld/filediff.py:1440 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Neke izmene nisu istaknute zato što su prevelike. Možete da primorate Meld " +"da produži sa isticanjem većih izmena, iako to može biti sporo." + +#: ../meld/filediff.py:1448 +msgid "Keep highlighting" +msgstr "Zadržite isticanje" + +#: ../meld/filediff.py:1450 +msgid "_Keep highlighting" +msgstr "_Zadrži isticanje" + +#: ../meld/filediff.py:1581 #, python-format msgid "" "\"%s\" exists!\n" @@ -847,7 +1495,7 @@ "„%s“ postoji!\n" "Da presnimim?" -#: ../meld/filediff.py:1291 +#: ../meld/filediff.py:1594 #, python-format msgid "" "Error writing to %s\n" @@ -858,12 +1506,38 @@ "\n" "%s." -#: ../meld/filediff.py:1300 -#, python-format -msgid "Choose a name for buffer %i." -msgstr "Izaberite ime za %i. bafer." +#: ../meld/filediff.py:1605 +msgid "Save Left Pane As" +msgstr "Sačuvaj levu površ kao" + +#: ../meld/filediff.py:1607 +msgid "Save Middle Pane As" +msgstr "Sačuvaj srednju površ kao" + +#: ../meld/filediff.py:1609 +msgid "Save Right Pane As" +msgstr "Sačuvaj desnu površ kao" + +#: ../meld/filediff.py:1620 +#, python-format +msgid "File %s has changed on disk since it was opened" +msgstr "Datoteka „%s“ je izmenjena na disku nakon otvaranja" + +#: ../meld/filediff.py:1622 +#| msgid "If you don't save, changes will be permanently lost." +msgid "If you save it, any external changes will be lost." +msgstr "Ako je sačuvate, sve spoljne izmene će biti izgubljene." + +#: ../meld/filediff.py:1625 +#| msgid "Save A_ll" +msgid "Save Anyway" +msgstr "Ipak sačuvaj" + +#: ../meld/filediff.py:1626 +msgid "Don't Save" +msgstr "Nemoj čuvati" -#: ../meld/filediff.py:1315 +#: ../meld/filediff.py:1650 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -874,1018 +1548,527 @@ "\n" "Koji oblik želite da koristite?" -#: ../meld/filediff.py:1331 +#: ../meld/filediff.py:1666 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" "Would you like to save as UTF-8?" msgstr "" "„%s“ sadrži znakove koji se ne mogu kodirati uz „%s“\n" -"Da li želite da sačuvate kao „UTF-8“?" +"Da li želite da sačuvate kao UTF-8?" -#: ../meld/filediff.py:1390 -#, python-format +#: ../meld/filediff.py:2030 +msgid "Live comparison updating disabled" +msgstr "Isključeno je živo ažuriranje poređenja" + +#: ../meld/filediff.py:2031 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." msgstr "" -"Osvežavanje će odbaciti izmene u:\n" -"%s\n" -"\n" -"Ovu operaciju ne možete opozvati." +"Živo ažuriranje poređenja je isključeno kada su aktivne tačke usklađivanja. Još " +"uvek možete ručno da osvežite poređenje, a živa ažuriranja će nastaviti sa " +"radom nakon čišćenja tačaka usklađivanja." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:49 #, python-format msgid "[%s] Merging files" msgstr "[%s] Objedinjujem datoteke" -#: ../meld/meldapp.py:149 +#: ../meld/gutterrendererchunk.py:91 +msgid "Copy _up" +msgstr "Umnoži _gore" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _down" +msgstr "Umnoži _dole" + +#: ../meld/meldapp.py:132 msgid "wrong number of arguments supplied to --diff" msgstr "pogrešan broj argumenata pridodat uz „--diff“" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:137 msgid "Start with an empty window" msgstr "Otvara jedan prazan prozor" # bug: string composition is bad i18n, and will make l10n hard -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:140 msgid "file" msgstr "datoteka" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:142 msgid "dir" msgstr "dir" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:139 msgid "Start a version control comparison" msgstr "Pokreće poređenje kontrole verzije" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:141 msgid "Start a 2- or 3-way file comparison" msgstr "Pokreće poređenje 2 ili 3 elementa datoteka" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:143 msgid "Start a 2- or 3-way directory comparison" -msgstr "Pokreće poređenje 2 ili 3 elementa direktorijuma" - -#: ../meld/meldapp.py:157 -msgid "Start a comparison between file and dir/file" -msgstr "Pokreće poređenje između datoteke i direktorijuma/datoteke" +msgstr "Pokreće poređenje 2 ili 3 elementa fascikli" -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:151 msgid "Meld is a file and directory comparison tool." -msgstr "Meld je alat za poređenje datoteka i direktorijuma." +msgstr "Meld je alat za poređenje datoteka i fascikli." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:154 msgid "Set label to use instead of file name" -msgstr "Podešava oznaku za korišćenje umesto imena datoteke" +msgstr "Podešava oznaku za korišćenje umesto naziva datoteke" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:156 +msgid "Open a new tab in an already running instance" +msgstr "Otvara novi jezičak u jednom već otvorenom primerku" + +#: ../meld/meldapp.py:159 msgid "Automatically compare all differing files on startup" -msgstr "Automatski poredi sve razlikujuće datoteke prilikom pokretanja" +msgstr "Samostalno poredi sve razlikujuće datoteke prilikom pokretanja" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:161 msgid "Ignored for compatibility" -msgstr "Zanemareno zbog kompatibilnosti" +msgstr "Zanemareno zbog saglasnosti" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:164 msgid "Set the target file for saving a merge result" msgstr "Podešava ciljnu datoteku za čuvanje rezultata stapanja" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "" -"Pravi jezičak razlika za najviše do 3 pridodate datoteke ili direktorijuma." +#: ../meld/meldapp.py:166 +msgid "Automatically merge files" +msgstr "Samostalno stapa datoteke" -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:169 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Učitava sačuvano poređenje iz Meldove datoteke poređenja" + +#: ../meld/meldapp.py:172 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Pravi jezičak razlika pridodate datoteke ili fascikle" + +#: ../meld/meldapp.py:175 #, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "previše argumenata (traženo je 0-4, dobih %d)" +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "previše argumenata (traženo je 0-3, dobih %d)" + +#: ../meld/meldapp.py:178 +msgid "can't auto-merge less than 3 files" +msgstr "ne mogu samostalno da stopim manje od 3 datoteke" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge directories" +msgstr "ne mogu samostalno da stopim direktorijume" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "ne mogu da poredim više od tri direktorijuma" +#: ../meld/meldapp.py:190 +msgid "Error reading saved comparison file" +msgstr "Greška čitanja sačuvane datoteke poređenja" -#: ../meld/melddoc.py:51 ../meld/melddoc.py:52 +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:105 +msgid "" +msgstr "" + +#: ../meld/melddoc.py:75 ../meld/melddoc.py:76 msgid "untitled" msgstr "bezimeni" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:50 msgid "_File" msgstr "_Datoteka" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Novi..." +#: ../meld/meldwindow.py:51 +msgid "_New Comparison..." +msgstr "_Novo poređenje..." -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:52 msgid "Start a new comparison" -msgstr "Započinje novo poređenje" +msgstr "Započnite novo poređenje" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:55 msgid "Save the current file" -msgstr "Čuva trenutnu datoteku" +msgstr "Sačuvajte trenutnu datoteku" -#: ../meld/meldwindow.py:129 -msgid "Close the current file" -msgstr "Zatvara trenutnu datoteku" +#: ../meld/meldwindow.py:57 +msgid "Save As..." +msgstr "Sačuvaj kao..." -#: ../meld/meldwindow.py:130 -msgid "Quit the program" -msgstr "Zatvara program" +#: ../meld/meldwindow.py:58 +msgid "Save the current file with a different name" +msgstr "Sačuvajte tekuću datoteku pod drugim nazivom" -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:61 +msgid "Close the current file" +msgstr "Zatvorite trenutnu datoteku" + +#: ../meld/meldwindow.py:64 msgid "_Edit" msgstr "_Uređivanje" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:66 msgid "Undo the last action" -msgstr "Opoziva poslednju radnju" +msgstr "Opozovite poslednju radnju" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:69 msgid "Redo the last undone action" -msgstr "Ponavlja poslednju opozvanu radnju" +msgstr "Ponovite poslednju opozvanu radnju" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:71 msgid "Cut the selection" -msgstr "Iseca izbor" +msgstr "Isecite izbor" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:73 msgid "Copy the selection" -msgstr "Umnožava izbor" +msgstr "Umnožite izbor" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:75 msgid "Paste the clipboard" -msgstr "Ubaci ostavu" +msgstr "Ubacite ostavu" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:77 +msgid "Find..." +msgstr "Pronađi..." + +#: ../meld/meldwindow.py:77 msgid "Search for text" -msgstr "Traži tekst" +msgstr "Tražite tekst" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:79 msgid "Find Ne_xt" -msgstr "Nađi s_edeće" +msgstr "Nađi s_ledeće" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:80 msgid "Search forwards for the same text" -msgstr "Traži unapred isti tekst" +msgstr "Tražite unapred isti tekst" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:82 msgid "Find _Previous" msgstr "Nađi pre_thodno" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:83 msgid "Search backwards for the same text" -msgstr "Traži unazad isti tekst" - -#: ../meld/meldwindow.py:141 -msgid "Find and replace text" -msgstr "Pronalazi i zamenjuje tekst" +msgstr "Tražite unazad isti tekst" -#: ../meld/meldwindow.py:142 -msgid "Prefere_nces" -msgstr "_Postavke" +#: ../meld/meldwindow.py:86 +msgid "_Replace..." +msgstr "_Zameni..." -#: ../meld/meldwindow.py:142 -msgid "Configure the application" -msgstr "Podesite program" +#: ../meld/meldwindow.py:87 +msgid "Find and replace text" +msgstr "Pronađite i zamenite tekst" -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:90 msgid "_Changes" msgstr "_Izmene" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:91 +msgid "Next Change" msgstr "Sledeća izmena" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:92 msgid "Go to the next change" -msgstr "Ide na sledeću izmenu" +msgstr "Idite na sledeću izmenu" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:94 +msgid "Previous Change" msgstr "Prethodna izmena" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:95 msgid "Go to the previous change" -msgstr "Ide na prethodnu izmenu" +msgstr "Idite na prethodnu izmenu" + +#: ../meld/meldwindow.py:97 +msgid "Open Externally" +msgstr "Otvori spoljnim" -#: ../meld/meldwindow.py:148 +#: ../meld/meldwindow.py:98 +msgid "Open selected file or directory in the default external application" +msgstr "Otvorite izabranu datoteku ili fasciklu u osnovnom spoljnom programu" + +#: ../meld/meldwindow.py:102 msgid "_View" msgstr "P_regled" -#: ../meld/meldwindow.py:149 -msgid "File status" +#: ../meld/meldwindow.py:103 +msgid "File Status" msgstr "Stanje datoteke" -#: ../meld/meldwindow.py:150 -msgid "Version status" +#: ../meld/meldwindow.py:104 +msgid "Version Status" msgstr "Stanje izdanja" -#: ../meld/meldwindow.py:151 -msgid "File filters" -msgstr "Filteri datoteke" - -#: ../meld/meldwindow.py:152 +#: ../meld/meldwindow.py:107 msgid "Stop the current action" -msgstr "Zaustavlja trenutnu radnju" +msgstr "Zaustavite trenutnu radnju" -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:110 msgid "Refresh the view" -msgstr "Osvežava pregled" +msgstr "Osvežite pregled" -#: ../meld/meldwindow.py:154 -msgid "Reload" -msgstr "Ponovo učitaj" - -#: ../meld/meldwindow.py:154 -msgid "Reload the comparison" -msgstr "Ponovo učitava poređenje" - -#: ../meld/meldwindow.py:156 +#: ../meld/meldwindow.py:113 msgid "_Tabs" -msgstr "_Jezičak" +msgstr "_Jezičci" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:114 msgid "_Previous Tab" msgstr "Pre_thodni jezičak" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:115 msgid "Activate previous tab" -msgstr "Aktivira prethodni jezičak" +msgstr "Idite na prethodni jezičak" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:117 msgid "_Next Tab" msgstr "Sle_deći jezičak" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:118 msgid "Activate next tab" -msgstr "Aktivira sledeći jezičak" +msgstr "Idite na naredni jezičak" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:121 msgid "Move Tab _Left" -msgstr "Premesti jezičak u_levo" +msgstr "Premesti jezičak _levo" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:122 msgid "Move current tab to left" -msgstr "Premešta trenutni jezičak na levo" +msgstr "Premestite trenutni jezičak na levo" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:125 msgid "Move Tab _Right" -msgstr "Premesti jezičak u_desno" +msgstr "Premesti jezičak _desno" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:126 msgid "Move current tab to right" -msgstr "Premešta trenutni jezičak na desno" +msgstr "Premestite trenutni jezičak na desno" -#: ../meld/meldwindow.py:162 -msgid "_Help" -msgstr "Pomo_ć" - -#: ../meld/meldwindow.py:163 -msgid "_Contents" -msgstr "_Sadržaj" - -#: ../meld/meldwindow.py:163 -msgid "Open the Meld manual" -msgstr "Otvorite uputstvo Melda" - -#: ../meld/meldwindow.py:164 -msgid "Report _Bug" -msgstr "Prijavi _grešku" - -#: ../meld/meldwindow.py:164 -msgid "Report a bug in Meld" -msgstr "Prijavite grešku u Meldu" - -#: ../meld/meldwindow.py:165 -msgid "About this program" -msgstr "O ovom programu" - -#: ../meld/meldwindow.py:168 -msgid "Full Screen" -msgstr "Ceo ekran" +#: ../meld/meldwindow.py:130 +msgid "Fullscreen" +msgstr "Preko celog ekrana" -#: ../meld/meldwindow.py:168 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:131 +msgid "View the comparison in fullscreen" msgstr "Pregledajte poređenje preko celog ekrana" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:133 msgid "_Toolbar" -msgstr "Linija _alata" +msgstr "_Traka alata" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:134 msgid "Show or hide the toolbar" -msgstr "Prikazuje ili skriva liniju alata" +msgstr "Prikažite ili sakrijte traku alata" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:136 msgid "_Statusbar" -msgstr "Linija _stanja" +msgstr "Traka _stanja" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:137 msgid "Show or hide the statusbar" -msgstr "Prikazuje ili skriva liniju stanja" +msgstr "Prikažite ili sakrijte traku stanja" + +#: ../meld/meldwindow.py:146 +msgid "Open Recent" +msgstr "Otvori skorašnje" + +#: ../meld/meldwindow.py:147 +msgid "Open recent files" +msgstr "Otvorite skorašnje datoteke" -#: ../meld/meldwindow.py:534 +#: ../meld/meldwindow.py:538 msgid "Switch to this tab" -msgstr "Prebacuje se na ovaj jezičak" +msgstr "Prebacite se na ovaj jezičak" -#. exit at first non found directory + file -#: ../meld/meldwindow.py:625 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Ne mogu da poredim mešavinu datoteka i direktorijuma.\n" +#: ../meld/meldwindow.py:661 +msgid "Cannot compare a mixture of files and directories" +msgstr "Ne mogu da poredim mešavinu datoteka i fascikli" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:178 msgid "[None]" msgstr "[ništa]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Sačuvaj ispravku kao..." - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "label" -msgstr "oznaka" +msgstr "natpis" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "pattern" msgstr "obrazac" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Dostupno je samo ako ste instalirali „gnome-python-desktop“" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Rezervne kopije\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Kontrola verzija\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Izvršne\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Medija\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "CVS ključne reči\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 -msgid "C++ comment\t0\t//.*\n" -msgstr "C++ komentar\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "C komentar\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Svi razmaci\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Početni razmak\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 -msgid "Script comment\t0\t#.*" -msgstr "Komentar skripte\t0\t#.*" - -#: ../meld/vcview.py:120 -msgid "Co_mmit" -msgstr "U_gradi" - -#: ../meld/vcview.py:120 -msgid "Commit" -msgstr "Ugradi" - -#: ../meld/vcview.py:121 -msgid "_Update" -msgstr "_Dopuni" - -#: ../meld/vcview.py:121 -msgid "Update" -msgstr "Dopuni" - -#: ../meld/vcview.py:122 -msgid "Add to VC" -msgstr "Dodaj u CV" - -#: ../meld/vcview.py:123 -msgid "Add _Binary" -msgstr "Dodaj _binarno" - -#: ../meld/vcview.py:123 -msgid "Add binary to VC" -msgstr "Dodaj binarno u CV" - -#: ../meld/vcview.py:124 -msgid "Remove from VC" -msgstr "Ukloni iz CV" - -#: ../meld/vcview.py:125 -msgid "_Resolved" -msgstr "_Rešeno" - -#: ../meld/vcview.py:125 -msgid "Mark as resolved for VC" -msgstr "Označava kao rešeno za CV" - -#: ../meld/vcview.py:126 -msgid "Revert to original" -msgstr "Vrati na original" - -#: ../meld/vcview.py:127 -msgid "Delete locally" -msgstr "Obriši u lokalu" - -#: ../meld/vcview.py:131 -msgid "_Flatten" -msgstr "_Izravnaj" - -#: ../meld/vcview.py:131 -msgid "Flatten directories" -msgstr "Izravnaj direktorijume" - -#: ../meld/vcview.py:132 -msgid "_Modified" -msgstr "Iz_menjen" - -#: ../meld/vcview.py:133 -msgid "_Normal" -msgstr "_Obično" - -#: ../meld/vcview.py:133 -msgid "Show normal" -msgstr "Prikaži obične" - -#: ../meld/vcview.py:134 -msgid "Non _VC" -msgstr "Ne _CV" +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Upravljanje izdanjem:" + +#: ../meld/ui/findbar.py:141 +msgid "Regular expression error" +msgstr "Greška regularnog izraza" -#: ../meld/vcview.py:134 -msgid "Show unversioned files" -msgstr "Prikazuje neverzionirane datoteke" - -#: ../meld/vcview.py:135 -msgid "Ignored" -msgstr "Zanemaren" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Zatvorite jezičak" -#: ../meld/vcview.py:135 -msgid "Show ignored files" -msgstr "Prikazuje zanemarene datoteke" +#: ../meld/ui/vcdialogs.py:61 +msgid "No files will be committed" +msgstr "Nijedna datoteka neće biti ugrađena" + +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s u %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d nepogurana predaja" +msgstr[1] "%d nepogurane predaje" +msgstr[2] "%d nepoguranih predaja" +msgstr[3] "%d nepogurana predaja" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d grani" +msgstr[1] "%d grane" +msgstr[2] "%d grana" +msgstr[3] "%d grani" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Režim je izmenjen iz „%s“ u „%s“" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Stopljeno" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Osnova" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Mesno" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Udaljeno" + +#: ../meld/vc/_vc.py:65 +#| msgid "Un_versioned" +msgid "Unversioned" +msgstr "Neobrađeno" + +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Greška" + +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Novo dodata" + +#: ../meld/vc/_vc.py:72 +#| msgid "Next Conflict" +msgid "Conflict" +msgstr "Sukob" + +#: ../meld/vc/_vc.py:73 +#| msgid "_Remove" +msgid "Removed" +msgstr "Uklonjeno" + +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Nedostaje" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Nije prisutno" -#: ../meld/vcview.py:177 ../meld/vcview.py:301 +#: ../meld/vcview.py:216 ../meld/vcview.py:391 msgid "Location" msgstr "Putanja" -#: ../meld/vcview.py:178 +#: ../meld/vcview.py:217 msgid "Status" msgstr "Stanje" -#: ../meld/vcview.py:179 -msgid "Rev" -msgstr "Izd" +#: ../meld/vcview.py:218 +msgid "Revision" +msgstr "Pregled" -#: ../meld/vcview.py:181 +#: ../meld/vcview.py:219 msgid "Options" msgstr "Opcije" -#: ../meld/vcview.py:233 -msgid "Choose one Version Control" -msgstr "Izaberite Kontrolu verzije" - -#: ../meld/vcview.py:234 -msgid "Only one Version Control in this directory" -msgstr "Samo jedna Kontrola verzija u ovom direktorijumu" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:247 +#: ../meld/vcview.py:302 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "„%s“ nije instaliran" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:251 -msgid "Invalid Repository" -msgstr "Neispravno skladište" +#: ../meld/vcview.py:306 +msgid "Invalid repository" +msgstr "Neispravna riznica" -#: ../meld/vcview.py:260 +#: ../meld/vcview.py:315 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:317 ../meld/vcview.py:325 +msgid "None" +msgstr "Ništa" + +#: ../meld/vcview.py:336 +msgid "No valid version control system found in this folder" +msgstr "U ovoj fascikli nije pronađen ispravan sistem upravljanja izdanjem" + +#: ../meld/vcview.py:338 +msgid "Only one version control system found in this folder" +msgstr "U ovoj fascikli je pronađen samo jedan sistem upravljanja izdanjem" + +#: ../meld/vcview.py:340 +msgid "Choose which version control system to use" +msgstr "Izaberite koji sistem upravljanja izdanjem će biti korišćen" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:301 +#: ../meld/vcview.py:391 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:349 -msgid "(Empty)" -msgstr "(Prazno)" - -#: ../meld/vcview.py:387 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Pribavljam razlike" - -#: ../meld/vcview.py:395 +#: ../meld/vcview.py:405 ../meld/vcview.py:413 #, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Primenjujem zakrpu" +msgid "Scanning %s" +msgstr "Pregledam „%s“" -#: ../meld/vcview.py:480 -msgid "Select some files first." -msgstr "Prvo izaberite neke datoteke." - -#: ../meld/vcview.py:553 -#, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" Prizivanje „patch“ nije uspelo.\n" -" \n" -" Možda niste instalirali „GNU patch“,\n" -" ili koristite neproverenu verziju „%s“.\n" -" \n" -" Molim pošaljite izveštaj o grešci na:\n" -" meld-list@gnome.org\n" -" \n" -" Koji sadrži sledeće informacije:\n" -" \n" -" — verzija melda: „%s“\n" -" — vrsta softvera kontrole izvora: „%s“\n" -" — verzija softvera kontrole izvora: „X.Y.Z“\n" -" — ispis „%s nekadatoteka.txt“\n" -" — naredba za pač: „%s“\n" -" (nije potrebno stvarno pokretanje, samo\n" -" obezbedite liniju naredbe) \n" -" \n" -" Zamenite „X.Y.Z“ trenutnom verzijom\n" -" softvera kontrole izvora koji koristite.\n" -" " - -#: ../meld/ui/findbar.py:127 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Greška sa regularnim izrazom\n" -"„%s“" - -#: ../meld/ui/historyentry.py:293 -msgid "_Browse..." -msgstr "Pre_traži..." - -#: ../meld/ui/historyentry.py:301 -msgid "Path" -msgstr "Putanja" - -#: ../meld/ui/historyentry.py:302 -msgid "Path to file" -msgstr "Putanja do datoteke" - -#: ../meld/ui/historyentry.py:303 -msgid "Pop up a file selector to choose a file" -msgstr "Izbacuje birača datoteka za izbor datoteke" - -#: ../meld/ui/historyentry.py:441 -msgid "Select directory" -msgstr "Izaberite direktorijum" - -#: ../meld/ui/historyentry.py:445 -msgid "Select file" -msgstr "Izaberite datoteku" +#: ../meld/vcview.py:447 +msgid "(Empty)" +msgstr "(Prazno)" -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Zatvori jezičak" +#: ../meld/vcview.py:670 +msgid "Remove folder and all its files?" +msgstr "Da uklonim fasciklu i sve njene datoteke?" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 +#: ../meld/vcview.py:672 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"Zanemareno:Neverzionirano:::Greška::Novo dodato:Izmenjeno:Sukob:Uklonjeno:" -"Nedostajuće" +"Ovo će ukloniti sve izabrane datoteke i fascikle, i sve datoteke unutar svih " +"izabranih fascikli, iz upravljanja izdanjem." -#: ../meld/vc/cvs.py:163 +#: ../meld/vcview.py:706 #, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Greška pri pretvaranju u regularni izraz\n" -"Obrazac je bio „%s“\n" -"Greška je bila „%s“" - -#~ msgid "[%s] Scanning" -#~ msgstr "[%s] pregledam" - -#~ msgid "Error converting pattern '%s' to regular expression" -#~ msgstr "Greška pri pretvaranju obrasca „%s“ u regularni izraz" - -# bug: plural-forms -#~ msgid "" -#~ "second,seconds:minute,minutes:hour,hours:day,days:week,weeks:month,months:" -#~ "year,years" -#~ msgstr "" -#~ "sekundu,sekundi:minut,minuta:čas,časa:dan,dana:nedelju,nedelja:mesec,meseci:" -#~ "godinu,godina" - -#~ msgid "The regular expression '%s' was not found." -#~ msgstr "Regularni izraz „%s“ nije nađen." - -#~ msgid "The text '%s' was not found." -#~ msgstr "Tekst „%s“ nije nađen." - -#~ msgid "" -#~ "Could not open '%s' for reading.\n" -#~ "\n" -#~ "The error was:\n" -#~ "%s" -#~ msgstr "" -#~ "Ne mogu da otvorim „%s“ radi čitanja.\n" -#~ "\n" -#~ "Greška beše:\n" -#~ "%s" - -#~ msgid "" -#~ "Could not read from '%s'.\n" -#~ "\n" -#~ "I tried encodings %s." -#~ msgstr "" -#~ "Ne mogu da čitam iz „%s“.\n" -#~ "\n" -#~ "Pokušah kodiranja %s." - -#~ msgid "" -#~ "Could not read from '%s'.\n" -#~ "\n" -#~ "The error was:\n" -#~ "%s" -#~ msgstr "" -#~ "Ne mogu da čitam iz „%s“.\n" -#~ "\n" -#~ "Greška beše:\n" -#~ "%s." - -#~ msgid "Meld requires a recent version of pygtk." -#~ msgstr "Meld zahteva skoro izdanje PiGtk-a." - -#~ msgid "pygtk-%s or higher is recommended." -#~ msgstr "Preporučuje se PiGtk %s ili noviji." - -#~ msgid "Meld works best with pygtk-%s or higher. (found %s)" -#~ msgstr "Meld najbolje radi uz PiGtk %s ili noviji. (nađoh %s)" - -#~ msgid "" -#~ "Due to incompatible API changes some functions may not operate as " -#~ "expected." -#~ msgstr "" -#~ "Zbog nesaglasnih izmena programerske sprege, neke funkcije možda neće " -#~ "raditi kako treba." - -#~ msgid "Modified File" -#~ msgstr "Izmenjena datoteka" - -#~ msgid "Other Changes" -#~ msgstr "Ostale izmene" - -#~ msgid "Common Ancestor" -#~ msgstr "Zajednički predak" - -#~ msgid "Original Directory" -#~ msgstr "Izvorni direktorijum" - -#~ msgid "Modified Directory" -#~ msgstr "Izmenjen direktorijum" - -#~ msgid "" -#~ "Meld is a file and directory comparison tool. Usage:\n" -#~ "\n" -#~ " meld Start with no windows open\n" -#~ " meld Start with CVS browser in 'dir'\n" -#~ " meld Start with CVS diff of 'file'\n" -#~ " meld [file] Start with 2 or 3 way file comparison\n" -#~ " meld [dir] Start with 2 or 3 way directory " -#~ "comparison\n" -#~ "\n" -#~ "For more information choose help -> contents.\n" -#~ "Report bugs at http://bugzilla.gnome.org/buglist.cgi?product=meld\n" -#~ "stevek@gnome.org\n" -#~ msgstr "" -#~ "Meld je alat za poređenje datoteka i direktorijuma. Upotreba:\n" -#~ "\n" -#~ " meld Pokreni bez otvorenih prozora\n" -#~ " meld Pokreni sa CVS pregledačem u „dir“\n" -#~ " meld Pokreni CVS razlike za „datoteka“\n" -#~ " meld [datoteka]\n" -#~ " Pokreni dvo- ili trosmerno poređenje " -#~ "datoteka\n" -#~ " meld [dir] Pokreni dvo- ili trosmerno poređenje \n" -#~ " direktorijuma\n" -#~ "\n" -#~ "Za više podataka izaberite pomoć -> sadržaj.\n" -#~ "Prijavite greške na http://bugzilla.gnome.org/buglist.cgi?product=meld\n" -#~ "http://mail.gnome.org/mailman/listinfo/meld-list\n" - -#~ msgid "" -#~ "Meld %s\n" -#~ "Written by Stephen Kennedy " -#~ msgstr "" -#~ "Meld %s\n" -#~ "Napisao Stifen Kenedi (Stephen Kennedy) " - -#~ msgid "`%s' is not a directory or file, cannot open cvs view" -#~ msgstr "" -#~ "„%s“ ne predstavlja direktorijum ni datoteku, ne mogu da otvorim CVS " -#~ "pregled" - -#~ msgid "folder" -#~ msgstr "direktorijum" - -#~ msgid "*" -#~ msgstr "*" - -#~ msgid "Remove _Locally" -#~ msgstr "Ukloni u _lokalu" - -#~ msgid "Show non-CVS" -#~ msgstr "Prikaži ne-CVS" - -#~ msgid "_Commit" -#~ msgstr "U_gradi" - -#~ msgid "_Diff" -#~ msgstr "_Razlike" - -#~ msgid "Copy All _Left" -#~ msgstr "Umnoži sve _levo" - -#~ msgid "Copy All _Right" -#~ msgstr "Umnoži sve _desno" - -#~ msgid "Edit" -#~ msgstr "Uredi" - -#~ msgid "Find" -#~ msgstr "Pronađi" - -#~ msgid "Match _entire word only" -#~ msgstr "Poklapanje samo _celih reči" - -#~ msgid "_Wrap around" -#~ msgstr "U _krug" - -#~ msgid "Diff" -#~ msgstr "Razlike" - -#~ msgid "Hide..." -#~ msgstr "Sakrij..." - -#~ msgid "Left" -#~ msgstr "Levo" - -#~ msgid "Right" -#~ msgstr "Desno" - -# bug: plural-forms -#~ msgid " spaces." -#~ msgstr " razmaka." - -#~ msgid "(gnome-default-editor)" -#~ msgstr "(podrazumevani-uređivač-gnoma)" - -#~ msgid "Drawing Style" -#~ msgstr "Stil iscrtavanja" - -#~ msgid "Edit Menu" -#~ msgstr "Meni za uređivanje" - -#~ msgid "Font" -#~ msgstr "Font" - -#~ msgid "Global options" -#~ msgstr "Opšte opcije" - -#~ msgid "Loading" -#~ msgstr "Učitavanje" - -#~ msgid "Misc" -#~ msgstr "Razno" - -#~ msgid "Saving" -#~ msgstr "Čuvanje" - -#~ msgid "Toolbar Appearance" -#~ msgstr "Izgled alatki" - -#~ msgid "Update Options" -#~ msgstr "Opcije dopunjavanja" - -#~ msgid "Whitespace" -#~ msgstr "Beline" - -#~ msgid "Binary Files" -#~ msgstr "Binarne datoteke" - -#~ msgid "CVS" -#~ msgstr "CVS" - -#~ msgid "Diff" -#~ msgstr "Razlike" - -#~ msgid "Display" -#~ msgstr "Prikaz" - -#~ msgid "Editor" -#~ msgstr "Uređivač" - -#~ msgid "Encoding" -#~ msgstr "Kodiranje" - -#~ msgid "File Filters" -#~ msgstr "Filteri datoteka" - -#~ msgid "Text Filters" -#~ msgstr "Filteri teksta" - -#~ msgid "Automatically supply missing newline at end of file." -#~ msgstr "Sam dodaj nedostajući novi-red na kraju datoteke." - -#~ msgid "" -#~ "Binary files do not have text filters applied to them when comparing." -#~ msgstr "Na binarne datoteke se ne primenjuju filteri teksta pri poređenju." - -#~ msgid "CVS" -#~ msgstr "CVS" - -#~ msgid "CVS binary" -#~ msgstr "CVS program" - -#~ msgid "CVS view" -#~ msgstr "CVS pregled" - -#~ msgid "" -#~ "Choose how the central bar of the diff viewer is drawn. You may wish to " -#~ "choose a simpler mode if you find scrolling is slow." -#~ msgstr "" -#~ "Izaberite kako se iscrtava centralna traka prikazivanja razlika. Možete " -#~ "želeti da izaberete jednostavniji način ako je klizanje sporo." - -#~ msgid "Copyright (C) 2002 Stephen Kennedy" -#~ msgstr "Sva prava zadržana © 2002 Stifen Kenedi (Stephen Kennedy)" - -#~ msgid "Create missing directories (-d)" -#~ msgstr "Napravi nedostajuće direktorijume (-d)" - -#~ msgid "Curved : Filled Curves" -#~ msgstr "Kriva : ispunjene krive" - -#~ msgid "Edit menu popup invokes" -#~ msgstr "Iskačući prozor menija za uređivanje pokreće" - -#~ msgid "Gnome Default" -#~ msgstr "Podrazumevano u Gnomu" - -#~ msgid "Icons Only" -#~ msgstr "Samo slike" - -#~ msgid "Ignore .cvsrc (-f)" -#~ msgstr "Zanemari .cvsrc (-f)" - -#~ msgid "Ignore changes in amount of white space" -#~ msgstr "Zanemari izmene količine belina" - -#~ msgid "" -#~ "Ignore changes in case; consider upper and lower-case letters equivalent" -#~ msgstr "" -#~ "Zanemari izmene veličine slova; smatraj velika i mala slova jednakim" - -#~ msgid "Locate CVS binary : Meld" -#~ msgstr "Pronađi CVS program : Meld" - -#~ msgid "Prune empty directories (-P)" -#~ msgstr "Obriši prazne direktorijume (-P)" - -#~ msgid "Quiet mode (-q)" -#~ msgstr "Tihi režim (-q)" - -#~ msgid "Save File 1" -#~ msgstr "Sačuvaj 1. datoteku" - -#~ msgid "Save File 2" -#~ msgstr "Sačuvaj 2. datoteku" - -#~ msgid "Save File 3" -#~ msgstr "Sačuvaj 3. datoteku" - -#~ msgid "Save in UTF-8 encoding" -#~ msgstr "Sačuvaj sa UTF-8 kodiranjem" - -#~ msgid "Save in the files original encoding" -#~ msgstr "Sačuvaj datoteke sa izvornim kodiranjem" - -#~ msgid "Simple : Lines only" -#~ msgstr "Jednostavno : samo linije" - -# bug: missing colon ":", s/quadilaterals/quadrilaterals/ -#~ msgid "Solid Filled Quadilaterals" -#~ msgstr "Ispunjeno : ispunjeni pravougaonici" - -#~ msgid "Tabs equivalent to " -#~ msgstr "Tabulatori su istovetni sa " - -#~ msgid "Text Beside Icons" -#~ msgstr "Tekst pored ikona" - -#~ msgid "Text Only" -#~ msgstr "Samo tekst" - -#~ msgid "Text Under Icons" -#~ msgstr "Tekst ispod ikona" - -#~ msgid "Two way directory" -#~ msgstr "Dvosmerni direktorijum" - -#~ msgid "Two way file" -#~ msgstr "Dvosmerna datoteka" - -#~ msgid "Use Compression (-z)" -#~ msgstr "Koristi sažimanje (-z)" - -#~ msgid "Use GNOME monospace font." -#~ msgstr "Koristi Gnomov font utvrđene širine." - -#~ msgid "Use custom font." -#~ msgstr "Koristi poseban font." - -#~ msgid "Whitespace is significant" -#~ msgstr "Beline su bitne" - -#~ msgid "_Binary Files" -#~ msgstr "_Binarne datoteke" - -#~ msgid "_Logo" -#~ msgstr "_Logotip" - -#~ msgid "_Save" -#~ msgstr "_Sačuvaj" - -#~ msgid "http://meld.sourceforge.net" -#~ msgstr "http://meld.sourceforge.net" - -#~ msgid "utf8 iso8859" -#~ msgstr "utf8 iso8859-5 iso8859-2 iso8859" - -#~ msgid "window1" -#~ msgstr "prozor1" - -#~ msgid "Recurse" -#~ msgstr "Rekurzivno" +msgid "Error removing %s" +msgstr "Greška pri uklanjanju „%s“" diff -Nru meld-1.5.3/po/sr.po meld-3.11.0/po/sr.po --- meld-1.5.3/po/sr.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/sr.po 2014-02-16 20:23:22.000000000 +0000 @@ -1,328 +1,857 @@ # Serbian translation of meld -# Courtesy of Prevod.org team (http://prevod.org/) -- 2003, 2004. +# Courtesy of Prevod.org team (http://prevod.org/) -- 2003—2012. # This file is distributed under the same license as the meld package. # Maintainer: Данило Шеган -# Мирослав Николић , 2011. +# Мирослав Николић , 2011, 2012, 2013, 2014. msgid "" msgstr "" "Project-Id-Version: meld\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=meld&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-06-11 15:41+0000\n" -"PO-Revision-Date: 2011-06-26 23:07+0200\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=meld&k" +"eywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2014-01-26 17:17+0000\n" +"PO-Revision-Date: 2014-01-30 23:02+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian \n" +"Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: Serbian (sr)\n" -"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" -"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\n" -"X-Generator: Virtaal 0.5.2\n" +"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : " +"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Project-Style: gnome\n" -#: ../bin/meld:96 +#: ../bin/meld:119 msgid "Cannot import: " msgstr "Не могу да увезем: " -#: ../bin/meld:99 +#: ../bin/meld:122 #, c-format msgid "Meld requires %s or higher." msgstr "Мелд захтева %s или новији." -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "Упоређујте и спајајте ваше датотеке." +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Мелд" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "Прегледач разлика" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 -msgid "Meld" -msgstr "Мелд" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Прегледач разлика Мелд" +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Упоређујте и спајајте ваше датотеке" + +#: ../data/meld.appdata.xml.in.h:1 +msgid "" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." +msgstr "" +"Мелд је графички алат за разлике и стапање намењен програмерима. Помаже вам " +"да поредите датотеке, директоријуме, и пројекте управљање издањима. " +"Обезбеђује двоструко и троструко поређење и датотека и директоријума, и " +"подржава многе системе управљања издањима укључујући Гит, Меркуријал, Базар " +"и Субверзију." + +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" +"Мелд вам помаже да прегледате измене у коду, да разумете закрпе, и огромне " +"сукобе стапања чини мање болним." + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Опис Мелдовог поређења" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "Основна величина прозора" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +#| msgid "Show or hide the toolbar" +msgid "Show toolbar" +msgstr "Приказује траку алата" + +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "Ако је изабрано, трака алата је видљива." + +#: ../data/org.gnome.meld.gschema.xml.h:4 +#| msgid "_Statusbar" +msgid "Show statusbar" +msgstr "Приказује траку стања" + +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "Ако је изабрано, трака стања је видљива." + +#: ../data/org.gnome.meld.gschema.xml.h:6 +#| msgid "Automatically merge files" +msgid "Automatically detected text encodings" +msgstr "Самостално откривање кодних распореда" + +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" +"Ова кодирања текста ће бити самостално коришћења (по реду) при покушају " +"декодирања учитаних текстуалних датотека." + +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "Ширина корака увлачења" + +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "Број размака за један корак увлачења" + +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "Да ли да увлачи користећи размаке или табулаторе" + +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" +"Ако је изабрано, свако ново увлачење ће користити размаке уместо табулатора." + +#: ../data/org.gnome.meld.gschema.xml.h:12 +#| msgid "Show _line numbers" +msgid "Show line numbers" +msgstr "Приказује бројеве редова" + +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" +"Ако је изабрано, бројеви редова ће бити приказани у жлебу поређења датотека." + +#: ../data/org.gnome.meld.gschema.xml.h:14 +#| msgid "Highlight _current line" +msgid "Highlight syntax" +msgstr "Истиче појаву" + +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" +"Да ли да истиче појаву у поређењу. Због самог Мелдовог истицања бојом, ово " +"је унапред искључено." + +#: ../data/org.gnome.meld.gschema.xml.h:16 +#| msgid "Show w_hitespace" +msgid "Displayed whitespace" +msgstr "Приказане празнине" + +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" +"Бирач за засебне врсте знакова празнина које ће бити приказане. Могуће " +"вредности су: „space“ (размак), „tab“ (табулатор), „newline“ (нови ред) и " +"„nbsp“ (нбсп)." + +#: ../data/org.gnome.meld.gschema.xml.h:18 +#| msgid "Wrapped" +msgid "Wrap mode" +msgstr "Режим преламања" + +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" +"Редови при поређењу датотека ће бити преломљени у складу са овим " +"подешавањем, без преламања — „none“, на било ком знаку — „char“, или само на " +"крају речи — „word“." + +#: ../data/org.gnome.meld.gschema.xml.h:20 +#| msgid "Highlight _current line" +msgid "Highlight current line" +msgstr "Истиче текући ред" + +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" +"Ако је изабрано, ред који садржи курзор ће бити истакнут при поређењу " +"датотека." + +#: ../data/org.gnome.meld.gschema.xml.h:22 +#| msgid "_Use the system fixed width font" +msgid "Use the system default monospace font" +msgstr "Користи системски словни лик сталне ширине" + +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" +"Ако није изабрано, задати произвољни словни лик ће бити коришћен уместо " +"системског словног лика сталне ширине." + +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "Произвољни словни лик" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" +"Произвољни словни лик за коришћење, смештен као ниска и обрађен као опис " +"Панго словног лика" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "Занемарује празне редове при поређењу датотека" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" +"Ако је изабрано, празни редови ће бити скраћени када се истицање промени " +"међу датотекама." + +#: ../data/org.gnome.meld.gschema.xml.h:28 +#| msgid "Use _default system editor" +msgid "Use the system default editor" +msgstr "Користи основни уређивач система" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" +"Ако није изабрано, задати произвољни уређивач ће бити коришћен уместо " +"системског уређивача приликом отварања датотека споља." + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "Наредба покретања произвољног уређивача" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" +"Наредба за покретање произвољног уређивача. Овде је подржано неко ограничено " +"шаблонирање; за сада „{file}“ и „{line}“ су препознате опције." + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "Ступци за приказивање" + +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "Списак назива стубаца при поређењу фасцикли и да ли ће бити приказани." + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 +msgid "Ignore symbolic links" +msgstr "Занемари симболичке везе" + +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" +"Ако је изабрано, поређења фасцикли не прате симболичке везе приликом " +"проласка кроз стабло фасцикле." + +#: ../data/org.gnome.meld.gschema.xml.h:36 +#| msgid "Shallow Comparison" +msgid "Use shallow comparison" +msgstr "Користи површно поређење" + +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" +"Ако је изабрано, поређење фасцикли пореди датотеке само на основу величине и " +"м_времена, сматрајући да су датотеке истоветне ако се њихове величине и " +"м_време поклапају, а различите у супротном." + +#: ../data/org.gnome.meld.gschema.xml.h:38 +#| msgid "_Timestamp resolution:" +msgid "File timestamp resolution" +msgstr "Резолуција временске ознаке датотеке" + +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" +"Приликом поређења на основу м_времена, ово је најмања разлика у " +"наносекундама између две датотеке пре него што се одлучи да имају различита " +"м_времена. Ово је корисно приликом поређења датотека између система датотека " +"са различитом резолцијом временске ознаке." + +#: ../data/org.gnome.meld.gschema.xml.h:40 +#| msgid "File Filters" +msgid "File status filters" +msgstr "Пропусници стања датотека" + +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" +"Списак стања коришћених за издвајање видљивих датотека при поређењу " +"фасцикли." + +#: ../data/org.gnome.meld.gschema.xml.h:42 +#| msgid "Choose which version control system to use" +msgid "Show the version control console output" +msgstr "Приказује излаз конзоле управљања издањем" + +#: ../data/org.gnome.meld.gschema.xml.h:43 +msgid "" +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." +msgstr "" +"Ако је изабрано, одељак излаза конзоле ће бити приказан у прегледима " +"управљања издањем, приказујући покренуте наредбе за радње управљања издањем." + +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "Представља поређења издања као месно-лево/удаљено-десно" + +#: ../data/org.gnome.meld.gschema.xml.h:45 +msgid "" +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." +msgstr "" +"Ако је изабрано, поређења управљања издањем ће користити шему " +"„лево-је-месно, десно-је-удаљено“ да одреде којим редом ће представити " +"датотеке у окнима. У супротном, користи се шема „лево-је-њихово, " +"десно-је-моје“." + +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "Приказује ивицу у уређивачу поруке предаје" + +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" +"Ако је изабрано, биће приказана вођица да покаже од ког ступца се ивица " +"налази у уређивачу поруке предаје управљања издањем." + +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "Стубац ивице у уређивачу поруке предаје" + +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" +"Стубац ивице која се налази у уређивачу поруке предаје управљања издањем." + +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "Самостално силно-прелама поруке предаје" + +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" +"Ако је изабрано, уређивач поруке предаје управљања издањем ће " +"силно-преломити (тј. уметнути преломе редова) на задатој ивици предаје пре " +"предаје." + +#: ../data/org.gnome.meld.gschema.xml.h:52 +#| msgid "Version control view" +msgid "Version control status filters" +msgstr "Пропусници стања управљања издањем" + +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" +"Списак стања коришћених за издвајање видљивих датотека при поређењу " +"управљања издањем." + +#: ../data/org.gnome.meld.gschema.xml.h:54 +#| msgid "File Filters" +msgid "Filename-based filters" +msgstr "Пропусници засновани на називу датотеке" + +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" +"Списак унапред одређених пропусника заснованих на називу датотеке који ће, " +"ако је радно, уклонити поклопљене датотеке из поређења фасцикли." + +#: ../data/org.gnome.meld.gschema.xml.h:56 +#| msgid "Text Filters" +msgid "Text-based filters" +msgstr "Пропусници засновани на тексту" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" +"Списак унапред одређених пропусника регуларног израза заснованих на тексту " +"који ће, ако је радно, уклонити текст из употребе при поређењу датотека. " +"Текст ће још увек бити приказан, али неће допринети поређењу." + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "О Мелду" + +#: ../data/ui/application.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Ауторска права © 2002-2009 Стефен Кенеди\n" +"Ауторска права © 2009-2013 Кај Виладсен" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "Веб страница" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "" +" Мирослав Николић \n" +"\n" +"http://prevod.org — превод на српски језик" + +#: ../data/ui/application.ui.h:6 +#| msgid "Meld Preferences" +msgid "_Preferences" +msgstr "_Поставке" + +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "По_моћ" + +#: ../data/ui/application.ui.h:8 +#| msgid "About Meld" +msgid "_About" +msgstr "_О Мелду" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "_Изађи" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Упореди" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "Упоредите изабране датотеке" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "Умножи _лево" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "Умножите лево" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "Умножи _десно" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "Умножите десно" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Обриши изабрано" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1412 +msgid "Hide" +msgstr "Сакриј" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Сакријте изабрано" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "Занемари величину слова назива датотеке" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" +"Сматраће истим различите величине слова у називима датотека које су " +"међусобно истоветне" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Исто" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "Прикажи истоветне" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Нови" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "Прикажи нове" + +#: ../data/ui/dirdiff.ui.h:16 ../meld/vc/_vc.py:71 +msgid "Modified" +msgstr "Измењени" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "Прикажи измењене" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "Пропусници" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "Подесите активне пропуснике" + #: ../data/ui/EditableList.ui.h:1 -msgid "Active" -msgstr "Активан" +msgid "Editable List" +msgstr "Списак за уређивање" #: ../data/ui/EditableList.ui.h:2 -msgid "Add new filter" -msgstr "Додајте нови филтер" +msgid "Active" +msgstr "Активан" #: ../data/ui/EditableList.ui.h:3 -msgid "Editable List" -msgstr "Списак за уређивање" +msgid "Column Name" +msgstr "Назив колоне" -#: ../data/ui/EditableList.ui.h:4 -msgid "Move _Down" -msgstr "Премести _доле" +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Додај" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:676 +msgid "_Remove" +msgstr "_Уклони" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "Преместите ставку на горе" -#: ../data/ui/EditableList.ui.h:5 +#: ../data/ui/EditableList.ui.h:7 msgid "Move _Up" msgstr "Премести _горе" -#: ../data/ui/EditableList.ui.h:6 +#: ../data/ui/EditableList.ui.h:8 msgid "Move item down" -msgstr "Премешта ставку надоле" +msgstr "Преместите ставку на доле" -#: ../data/ui/EditableList.ui.h:7 -msgid "Move item up" -msgstr "Премешта ставку нагоре" +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "Премести _доле" -#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:157 +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:364 +#: ../meld/vcview.py:186 msgid "Name" -msgstr "Име" +msgstr "Назив" -#: ../data/ui/EditableList.ui.h:9 +#: ../data/ui/EditableList.ui.h:11 msgid "Pattern" msgstr "Образац" -#: ../data/ui/EditableList.ui.h:10 -msgid "Remove selected filter" -msgstr "Уклања изабрани филтер" - -#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:122 -msgid "_Add" -msgstr "_Додај" +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Додајте нови пропусник" -#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:124 -msgid "_Remove" -msgstr "У_клони" +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Уклоните изабрани пропусник" #: ../data/ui/filediff.ui.h:1 -msgid "Save modified files?" -msgstr "Да сачувам измењене датотеке?" +msgid "Save changes to documents before closing?" +msgstr "Да сачувам измене у документу пре затварања?" #: ../data/ui/filediff.ui.h:2 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "" -"Неке датотеке су измењене.\n" -"Које желите да сачувате?" +msgid "If you don't save, changes will be permanently lost." +msgstr "Ако не сачувате, измене ће бити трајно изгубљене." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Затвори _без чувања" #: ../data/ui/filediff.ui.h:4 -msgid "_Discard Changes" -msgstr "_Одбаци измене" +msgid "_Cancel" +msgstr "_Откажи" #: ../data/ui/filediff.ui.h:5 -msgid "_Save Selected" -msgstr "_Сачувај изабрано" +msgid "_Save" +msgstr "_Сачувај" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"У ову датотеку се не може уписивати. Можете да кликнете овде да откључате " +"ову датотеку и да ипак начините измене, али те измене морају бити сачуване у " +"нову датотеку." + +#: ../data/ui/filediff.ui.h:7 +msgid "Revert unsaved changes to documents?" +msgstr "Да повратим несачуване измене у документима?" + +#: ../data/ui/filediff.ui.h:8 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Измене начињене над следећим документима ће бити трајно изгубљене:\n" #: ../data/ui/findbar.ui.h:1 -msgid "Regular E_xpression" -msgstr "_Регуларан израз" +msgid "_Replace" +msgstr "_Замени" #: ../data/ui/findbar.ui.h:2 msgid "Replace _All" msgstr "Замени с_ве" #: ../data/ui/findbar.ui.h:3 -msgid "Replace _With" -msgstr "Замени с_а" +msgid "_Previous" +msgstr "_Претходно" #: ../data/ui/findbar.ui.h:4 -msgid "Who_le word" -msgstr "Це_лу реч" +msgid "_Next" +msgstr "_Следеће" #: ../data/ui/findbar.ui.h:5 -msgid "_Match Case" -msgstr "_Упореди величину слова" +msgid "Find:" +msgstr "Нађи:" #: ../data/ui/findbar.ui.h:6 -msgid "_Next" -msgstr "Сле_деће" +msgid "Replace _with:" +msgstr "Замени с_а:" #: ../data/ui/findbar.ui.h:7 -msgid "_Previous" -msgstr "Пре_тходно" +msgid "_Match case" +msgstr "_Упореди величину слова" -#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 -msgid "_Replace" -msgstr "_Замени" +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "Це_лу реч" #: ../data/ui/findbar.ui.h:9 -msgid "_Search for" -msgstr "_Потражи" - -#: ../data/ui/meldapp.ui.h:1 -msgid "Choose Files" -msgstr "Изаберите датотеке" - -#: ../data/ui/meldapp.ui.h:2 -msgid "" -"Copyright © 2002-2009 Stephen Kennedy\n" -"Copyright © 2009-2010 Kai Willadsen" -msgstr "" -"Ауторска права © 2002-2009 Стефен Кенеди\n" -"Ауторска права © 2009-2010 Кај Виладсен" - -#: ../data/ui/meldapp.ui.h:4 -msgid "Directory" -msgstr "Директоријум" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:7 -msgid "Mine" -msgstr "Моја" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:9 -msgid "Original" -msgstr "Изворна" - -#. Refers to version of the file being compared -#: ../data/ui/meldapp.ui.h:11 -msgid "Other" -msgstr "Друга" - -#: ../data/ui/meldapp.ui.h:12 -msgid "Select VC Directory" -msgstr "Изаберите ЦВ директоријум" - -#: ../data/ui/meldapp.ui.h:13 -msgid "_Directory Comparison" -msgstr "Поређење ди_ректоријума" - -#: ../data/ui/meldapp.ui.h:14 -msgid "_File Comparison" -msgstr "Поређење да_тотека" - -#: ../data/ui/meldapp.ui.h:15 -msgid "_Three Way Compare" -msgstr "Поређење три елемента" +msgid "Regular e_xpression" +msgstr "Регуларан _израз" -#: ../data/ui/meldapp.ui.h:16 -msgid "_Version Control Browser" -msgstr "Претраживач контроле _верзија" - -#: ../data/ui/meldapp.ui.h:17 -msgid "translator-credits" -msgstr "" -"Данило Шеган \n" -"\n" -"Prevod.org — превод на српски језик." +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "Преломљено" #: ../data/ui/patch-dialog.ui.h:1 -msgid "Copy to Clipboard" -msgstr "Умножи у оставу" +msgid "Format as Patch" +msgstr "Обликуј као исправку" #: ../data/ui/patch-dialog.ui.h:2 -msgid "Create Patch" -msgstr "Направи исправку" +msgid "Use differences between:" +msgstr "Користи разлике између:" #: ../data/ui/patch-dialog.ui.h:3 -msgid "Create a patch" -msgstr "Прави исправку" - -#: ../data/ui/patch-dialog.ui.h:4 msgid "Left and middle panes" msgstr "Лева и средња површ" -#: ../data/ui/patch-dialog.ui.h:5 +#: ../data/ui/patch-dialog.ui.h:4 msgid "Middle and right panes" msgstr "Средња и десна површ" +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "Преокрени смер _исправке" + #: ../data/ui/patch-dialog.ui.h:6 -msgid "Use differences between:" -msgstr "Користи разлике између:" +msgid "Copy to Clipboard" +msgstr "Умножи у оставу" -#: ../data/ui/patch-dialog.ui.h:7 -msgid "_Reverse patch direction" -msgstr "Прео_крени смер исправке" +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:119 +msgid "Save Patch" +msgstr "Сачувај исправку" #: ../data/ui/preferences.ui.h:1 -msgid "Display" -msgstr "Приказ" +msgid "Left is remote, right is local" +msgstr "Лева је удаљена, десна је месна" #: ../data/ui/preferences.ui.h:2 -msgid "Do not _split words over two lines" -msgstr "Немој _поделити речи у два реда" +msgid "Left is local, right is remote" +msgstr "Лева је месна, десна је удаљена" #: ../data/ui/preferences.ui.h:3 -msgid "Edito_r command:" -msgstr "Наредба _уређивача:" +msgid "1ns (ext4)" +msgstr "1ns (екст4)" #: ../data/ui/preferences.ui.h:4 -msgid "Editor" -msgstr "Уређивач" +msgid "100ns (NTFS)" +msgstr "100ns (НТФС)" #: ../data/ui/preferences.ui.h:5 -msgid "Enable text _wrapping" -msgstr "Укључи _преламање текста" +msgid "1s (ext2/ext3)" +msgstr "1s (екст2/екст3)" #: ../data/ui/preferences.ui.h:6 -msgid "Encoding" -msgstr "Кодирање" +msgid "2s (VFAT)" +msgstr "2s (ВФАТ)" #: ../data/ui/preferences.ui.h:7 -msgid "External editor" -msgstr "Спољни уређивач" +msgid "Meld Preferences" +msgstr "Поставке Мелда" #: ../data/ui/preferences.ui.h:8 -msgid "File Filters" -msgstr "Филтери датотека" +msgid "Font" +msgstr "Словни лик" #: ../data/ui/preferences.ui.h:9 -msgid "Font" -msgstr "Фонт" +msgid "_Use the system fixed width font" +msgstr "_Користи системски словни лик сталне ширине" #: ../data/ui/preferences.ui.h:10 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Занемари измене које убацују или бришу празне редове" +msgid "_Editor font:" +msgstr "_Словни лик уређивача:" #: ../data/ui/preferences.ui.h:11 -msgid "Ignore symbolic links" -msgstr "Занемари симболичке везе" +msgid "Display" +msgstr "Приказ" #: ../data/ui/preferences.ui.h:12 -msgid "Loading" -msgstr "Учитавам" +msgid "_Tab width:" +msgstr "Ширина _табулатора:" #: ../data/ui/preferences.ui.h:13 -msgid "Meld Preferences" -msgstr "Поставке Мелда" +msgid "_Insert spaces instead of tabs" +msgstr "_Убаци размаке уместо табулатора" #: ../data/ui/preferences.ui.h:14 -msgid "Show _line numbers" -msgstr "Прикажи _бројеве линија" +msgid "Enable text _wrapping" +msgstr "Укључи _преламање текста" #: ../data/ui/preferences.ui.h:15 -msgid "Show w_hitespace" -msgstr "Прикажи _размаке" +msgid "Do not _split words over two lines" +msgstr "Немој _делити речи у два реда" #: ../data/ui/preferences.ui.h:16 -msgid "Text Filters" -msgstr "Филтери текста" +msgid "Highlight _current line" +msgstr "Истакни _текући ред" #: ../data/ui/preferences.ui.h:17 -msgid "Use _default system editor" -msgstr "Користи _основни уређивач система" +msgid "Show _line numbers" +msgstr "Прикажи _бројеве редова" #: ../data/ui/preferences.ui.h:18 -msgid "Use s_yntax highlighting" -msgstr "Користи истицање _синтаксе" +msgid "Show w_hitespace" +msgstr "Прикажи _размаке" -# bug: what encoding is iso8859? it's a registry of encodings, and encoding is eg. iso8859-5 #: ../data/ui/preferences.ui.h:19 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "При учитавању, пробај ова кодирања редом. (нпр. utf8, iso8859)" +msgid "Use s_yntax highlighting" +msgstr "Користи истицање _синтаксе" #: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "Спољни уређивач" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "Користи _основни уређивач система" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "Наредба _уређивача:" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "Уређивач" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "Површно поређење" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "Уп_ореди датотеке само на основу величине и временске ознаке" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "_Резолуција временске ознаке:" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "Симболичке везе" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "Приказане колоне" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "Поређење фасцикли" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "Поређење издања" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "_Приликом поређења прегледа датотеке:" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "Поруке предаје" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "Прикажи _десну маргину на:" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "Сам _преламај редове на десној маргини при предаји" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "Управљање издањем" + +#: ../data/ui/preferences.ui.h:37 msgid "" "When performing directory comparisons, you may filter out files and " "directories by name. Each pattern is a list of shell style wildcards " "separated by spaces." msgstr "" -"Приликом поређења директоријума, можете да филтрирате датотеке и " -"директоријуме према имену. Сваки образац је списак џокера у стилу конзоле " -"раздвојених размаком." +"Приликом поређења директоријума, можете да издвојите датотеке и фасцикле " +"према називу. Сваки образац је списак џокера у стилу конзоле раздвојених " +"размаком." -#: ../data/ui/preferences.ui.h:21 +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:105 +msgid "File Filters" +msgstr "Пропусници датотека" + +#: ../data/ui/preferences.ui.h:39 msgid "" "When performing file comparisons, you may ignore certain types of changes. " "Each pattern here is a python regular expression which replaces matching " @@ -331,177 +860,248 @@ "details." msgstr "" "Приликом поређења датотека, можете да занемарите одређене врсте измена. " -"Сваки образац је регуларан израз пајтона који замењује подударајући текст " +"Сваки образац је регуларан израз питона који замењује подударајући текст " "празним нискама пре извршавања поређења. Ако израз садржи групе, само групе " "бивају замењене. За више детаља погледајте упутство за кориснике." -#: ../data/ui/preferences.ui.h:22 -msgid "_Editor font:" -msgstr "_Фонт уређивача:" - -#: ../data/ui/preferences.ui.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "_Убаци размаке уместо табулатора" - -#: ../data/ui/preferences.ui.h:24 -msgid "_Tab width:" -msgstr "_Ширина табулатора:" +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Занемари измене које убацују или бришу празне редове" -#: ../data/ui/preferences.ui.h:25 -msgid "_Use the system fixed width font" -msgstr "Користи системом постављену величину _фонта" +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "Пропусници текста" -#: ../data/ui/vcview.ui.h:1 -msgid "Commit Files" -msgstr "Угради датотеке" +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:617 +msgid "New comparison" +msgstr "Ново поређење" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "Поређење датотека" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "Поређење фасцикли" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Преглед управљања издањима" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "Упореди _3-елемента" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "Изаберите трећу датотеку" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "Изаберите другу датотеку" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "Изаберите прву датотеку" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "Изаберите прву фасциклу" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "Изаберите другу фасциклу" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "Изаберите трећу фасциклу" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "Изаберите фасциклу управљања издањем" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "_Празно поређење" -#: ../data/ui/vcview.ui.h:2 -msgid "Compare Options" -msgstr "Опције поређења" +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "_Упореди" #: ../data/ui/vcview.ui.h:3 -msgid "Date" -msgstr "Датум" +msgid "Co_mmit..." +msgstr "У_гради..." #: ../data/ui/vcview.ui.h:4 -msgid "Local copy against other remote revision" -msgstr "Локални примерак наспрам друге удаљене ревизије" +msgid "Commit changes to version control" +msgstr "Уградите измене у управљање издањем" #: ../data/ui/vcview.ui.h:5 -msgid "Local copy against same remote revision" -msgstr "Локални примерак наспрам исте удаљене ревизије" +msgid "_Update" +msgstr "_Ажурирај" #: ../data/ui/vcview.ui.h:6 -msgid "Log Message" -msgstr "Порука дневника" +msgid "Update working copy from version control" +msgstr "Доградите радни примерак из управљања издањем" #: ../data/ui/vcview.ui.h:7 -msgid "Previous Logs" -msgstr "Претходни дневници" - -#: ../data/ui/vcview.ui.h:8 ../meld/vcview.py:180 -msgid "Tag" -msgstr "Ознака" - -#: ../data/ui/vcview.ui.h:9 -msgid "VC Log" -msgstr "ЦВ дневник" - -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "_Compare" -msgstr "_Упореди" +msgid "_Push" +msgstr "_Погурај" -#: ../meld/dirdiff.py:227 ../meld/vcview.py:118 -msgid "Compare selected" -msgstr "Упореди изабрано" +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "Погурајте месне измене у удаљене" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "Додајте у управљање издањем" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "Уклоните из управљања издањем" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "Означи _као решено" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "Означите као решено у управљању издањем" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "_Поврати" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "Повратите радни примерак на првобитно стање" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "Обришите из радног примерка" -#: ../meld/dirdiff.py:228 -msgid "Copy _Left" -msgstr "Умножи _лево" - -#: ../meld/dirdiff.py:228 -msgid "Copy to left" -msgstr "Умножите лево" - -#: ../meld/dirdiff.py:229 -msgid "Copy _Right" -msgstr "Умножи _десно" - -#: ../meld/dirdiff.py:229 -msgid "Copy to right" -msgstr "Умножите десно" +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "_Изравнај" -#: ../meld/dirdiff.py:230 -msgid "Delete selected" -msgstr "Обриши изабрано" +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "Изравнајте фасцикле" -#: ../meld/dirdiff.py:231 ../meld/filediff.py:1117 -msgid "Hide" -msgstr "Сакриј" +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "Из_мењен" -#: ../meld/dirdiff.py:231 -msgid "Hide selected" -msgstr "Сакриј изабрано" +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "Прикажите измењене датотеке" -#: ../meld/dirdiff.py:233 ../meld/filediff.py:267 ../meld/vcview.py:119 -msgid "Open selected" -msgstr "Отвори изабрано" +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "_Обично" -#: ../meld/dirdiff.py:237 -msgid "Case" -msgstr "Величина слова" +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "Прикажите уобичајене датотеке" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "_Необрађено" -#: ../meld/dirdiff.py:237 -msgid "Ignore case of entries" -msgstr "Занемари величину слова уноса" +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "Прикажите необрађене датотеке" -#: ../meld/dirdiff.py:238 -msgid "Same" -msgstr "Исто" +#: ../data/ui/vcview.ui.h:26 ../meld/vc/_vc.py:64 +msgid "Ignored" +msgstr "Занемарене" -#: ../meld/dirdiff.py:238 -msgid "Show identical" -msgstr "Прикажи истоветне" +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "Прикажите занемарене датотеке" -#: ../meld/dirdiff.py:239 -msgid "New" -msgstr "Нови" +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "Угради" -#: ../meld/dirdiff.py:239 -msgid "Show new" -msgstr "Прикажи нове" +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "Угради датотеке" -#: ../meld/dirdiff.py:240 -msgid "Modified" -msgstr "Измењени" +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "Порука дневника" -#: ../meld/dirdiff.py:240 ../meld/vcview.py:132 -msgid "Show modified" -msgstr "Прикажи измењене" +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "Претходни дневници:" -#: ../meld/dirdiff.py:242 -msgid "Filters" -msgstr "Филтери" +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "У_гради" -#: ../meld/dirdiff.py:242 -msgid "Set active filters" -msgstr "Подесите активне филтере" +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "Да погурам месне предаје у удаљене?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" +"Предаје које ће бити погуране се одређују вашим системом управљања издањем" + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "_Погурај предаје" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:382 +msgid "Size" +msgstr "Величина" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:390 +msgid "Modification time" +msgstr "Време измене" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:398 +msgid "Permissions" +msgstr "Овлашћења" -#: ../meld/dirdiff.py:359 +#: ../meld/dirdiff.py:557 #, python-format msgid "Hide %s" msgstr "Сакриј „%s“" -#: ../meld/dirdiff.py:462 ../meld/dirdiff.py:475 ../meld/vcview.py:305 -#: ../meld/vcview.py:333 +#: ../meld/dirdiff.py:686 ../meld/dirdiff.py:708 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] прегледам „%s“" -#: ../meld/dirdiff.py:574 +#: ../meld/dirdiff.py:837 #, python-format msgid "[%s] Done" msgstr "[%s] Готово" -#: ../meld/dirdiff.py:578 +#: ../meld/dirdiff.py:844 msgid "Multiple errors occurred while scanning this folder" msgstr "Дошло је до више грешака за време претраживања ове фасцикле" -#: ../meld/dirdiff.py:579 +#: ../meld/dirdiff.py:845 msgid "Files with invalid encodings found" msgstr "Пронађене су датотеке са неисправним кодирањем" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:581 +#: ../meld/dirdiff.py:847 msgid "Some files were in an incorrect encoding. The names are something like:" -msgstr "Неке датотеке бејаху у неисправном кодирању. Имена су нешто као:" +msgstr "Неке датотеке бејаху у неисправном кодирању. Називи су нешто као:" -#: ../meld/dirdiff.py:583 +#: ../meld/dirdiff.py:849 msgid "Files hidden by case insensitive comparison" msgstr "Датотеке скривене поређењем неосетљивим на величину слова" #. TRANSLATORS: This is followed by a list of files -#: ../meld/dirdiff.py:585 +#: ../meld/dirdiff.py:851 msgid "" "You are running a case insensitive comparison on a case sensitive " "filesystem. The following files in this folder are hidden:" @@ -509,16 +1109,17 @@ "Покренули сте поређење независно од величине слова на систему датотека где " "је она битна. Неке датотеке нису видљиве:" -#: ../meld/dirdiff.py:596 +#: ../meld/dirdiff.py:862 #, python-format msgid "'%s' hidden by '%s'" msgstr "„%s“ сакривено од стране „%s“" -#: ../meld/dirdiff.py:621 ../meld/filediff.py:981 ../meld/filediff.py:1121 +#: ../meld/dirdiff.py:887 ../meld/filediff.py:1105 ../meld/filediff.py:1243 +#: ../meld/filediff.py:1414 ../meld/filediff.py:1444 ../meld/filediff.py:1446 msgid "Hi_de" msgstr "_Сакриј" -#: ../meld/dirdiff.py:671 +#: ../meld/dirdiff.py:918 #, python-format msgid "" "'%s' exists.\n" @@ -527,47 +1128,38 @@ "„%s“ постоји.\n" "Да преснимим?" -#: ../meld/dirdiff.py:678 +#: ../meld/dirdiff.py:926 +msgid "Error copying file" +msgstr "Грешка умножавања датотеке" + +#: ../meld/dirdiff.py:927 #, python-format msgid "" -"Error copying '%s' to '%s'\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"Грешка при умножавању „%s“ у „%s“\n" +"Не могу да умножим „%s“\n" +"у „%s“.\n" "\n" -"%s." +"%s" -#: ../meld/dirdiff.py:696 ../meld/vcview.py:505 +#: ../meld/dirdiff.py:950 #, python-format -msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"„%s“ је директоријум.\n" -"Да уклоним рекурзивно?" +msgid "Error deleting %s" +msgstr "Грешка брисања „%s“" -#: ../meld/dirdiff.py:703 ../meld/vcview.py:510 -#, python-format -msgid "" -"Error removing %s\n" -"\n" -"%s." -msgstr "" -"Грешка при уклањању „%s“\n" -"\n" -"%s." - -#: ../meld/dirdiff.py:715 +#: ../meld/dirdiff.py:1081 #, python-format msgid "%i second" msgid_plural "%i seconds" -msgstr[0] "%i секунд" +msgstr[0] "%i секунда" msgstr[1] "%i секунде" msgstr[2] "%i секунди" msgstr[3] "%i секунда" -#: ../meld/dirdiff.py:716 +#: ../meld/dirdiff.py:1082 #, python-format msgid "%i minute" msgid_plural "%i minutes" @@ -576,7 +1168,7 @@ msgstr[2] "%i минута" msgstr[3] "%i минут" -#: ../meld/dirdiff.py:717 +#: ../meld/dirdiff.py:1083 #, python-format msgid "%i hour" msgid_plural "%i hours" @@ -585,7 +1177,7 @@ msgstr[2] "%i сати" msgstr[3] "%i сат" -#: ../meld/dirdiff.py:718 +#: ../meld/dirdiff.py:1084 #, python-format msgid "%i day" msgid_plural "%i days" @@ -594,7 +1186,7 @@ msgstr[2] "%i дана" msgstr[3] "%i дан" -#: ../meld/dirdiff.py:719 +#: ../meld/dirdiff.py:1085 #, python-format msgid "%i week" msgid_plural "%i weeks" @@ -603,7 +1195,7 @@ msgstr[2] "%i недеља" msgstr[3] "%i недеља" -#: ../meld/dirdiff.py:720 +#: ../meld/dirdiff.py:1086 #, python-format msgid "%i month" msgid_plural "%i months" @@ -612,7 +1204,7 @@ msgstr[2] "%i месеци" msgstr[3] "%i месец" -#: ../meld/dirdiff.py:721 +#: ../meld/dirdiff.py:1087 #, python-format msgid "%i year" msgid_plural "%i years" @@ -621,224 +1213,280 @@ msgstr[2] "%i година" msgstr[3] "%i година" -#: ../meld/filediff.py:268 -msgid "Format as patch..." -msgstr "Форматирај као исправку..." +#: ../meld/filediff.py:227 +msgid "Format as Patch..." +msgstr "Обликуј као исправку..." -#: ../meld/filediff.py:268 +#: ../meld/filediff.py:228 msgid "Create a patch using differences between files" -msgstr "Прави исправку користећи разлике између датотека" +msgstr "Направите исправку користећи разлике између датотека" + +#: ../meld/filediff.py:230 +msgid "Save A_ll" +msgstr "Сачувај _све" + +#: ../meld/filediff.py:231 +msgid "Save all files in the current comparison" +msgstr "Сачувајте све датотеке у текућем поређењу" + +#: ../meld/filediff.py:234 +msgid "Revert files to their saved versions" +msgstr "Повратите датотеке на њихова сачувана издања" + +#: ../meld/filediff.py:236 +msgid "Add Synchronization Point" +msgstr "Додај тачку усклађивања" + +#: ../meld/filediff.py:237 +msgid "Add a manual point for synchronization of changes between files" +msgstr "Додајте тачку за усклађивање измена између датотека" + +#: ../meld/filediff.py:240 +msgid "Clear Synchronization Points" +msgstr "Очисти тачке усклађивања" + +#: ../meld/filediff.py:241 +msgid "Clear manual change sychronization points" +msgstr "Очистите тачке усклађивања измена" -#: ../meld/filediff.py:269 -msgid "Previous conflict" +#: ../meld/filediff.py:243 +msgid "Previous Conflict" msgstr "Претходни сукоб" -#: ../meld/filediff.py:269 +#: ../meld/filediff.py:244 msgid "Go to the previous conflict" -msgstr "Иде на претходни сукоб" +msgstr "Идите на претходни сукоб" -#: ../meld/filediff.py:270 -msgid "Next conflict" +#: ../meld/filediff.py:246 +msgid "Next Conflict" msgstr "Следећи сукоб" -#: ../meld/filediff.py:270 +#: ../meld/filediff.py:247 msgid "Go to the next conflict" -msgstr "Иде на следећи сукоб" +msgstr "Идите на следећи сукоб" -#: ../meld/filediff.py:271 -msgid "Push to left" +#: ../meld/filediff.py:249 +msgid "Push to Left" msgstr "Гурни улево" -#: ../meld/filediff.py:271 +#: ../meld/filediff.py:250 msgid "Push current change to the left" -msgstr "Гура текућу измену улево" +msgstr "Гурните текућу измену улево" -#: ../meld/filediff.py:272 -msgid "Push to right" +#: ../meld/filediff.py:253 +msgid "Push to Right" msgstr "Гурни удесно" -#: ../meld/filediff.py:272 +#: ../meld/filediff.py:254 msgid "Push current change to the right" -msgstr "Гура текућу измену удесно" +msgstr "Гурните текућу измену удесно" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:274 -msgid "Pull from left" +#: ../meld/filediff.py:258 +msgid "Pull from Left" msgstr "Убаци с лева" -#: ../meld/filediff.py:274 +#: ../meld/filediff.py:259 msgid "Pull change from the left" -msgstr "Убацује измену с лева" +msgstr "Убаците измену с лева" -#: ../meld/filediff.py:275 -msgid "Pull from right" +#: ../meld/filediff.py:262 +msgid "Pull from Right" msgstr "Убаци с десна" -#: ../meld/filediff.py:275 +#: ../meld/filediff.py:263 msgid "Pull change from the right" -msgstr "Убацује измену с лева" +msgstr "Убаците измену с десна" -#: ../meld/filediff.py:276 -msgid "Copy above left" +#: ../meld/filediff.py:265 +msgid "Copy Above Left" msgstr "Умножи изнад улево" -#: ../meld/filediff.py:276 +#: ../meld/filediff.py:266 msgid "Copy change above the left chunk" -msgstr "Умножава измену изнад комада улево" +msgstr "Умножите измену изнад комада улево" -#: ../meld/filediff.py:277 -msgid "Copy below left" +#: ../meld/filediff.py:268 +msgid "Copy Below Left" msgstr "Умножи испод улево" -#: ../meld/filediff.py:277 +#: ../meld/filediff.py:269 msgid "Copy change below the left chunk" -msgstr "Умножава измену испод комада улево" +msgstr "Умножите измену испод комада улево" -#: ../meld/filediff.py:278 -msgid "Copy above right" +#: ../meld/filediff.py:271 +msgid "Copy Above Right" msgstr "Умножи изнад удесно" -#: ../meld/filediff.py:278 +#: ../meld/filediff.py:272 msgid "Copy change above the right chunk" -msgstr "Умножава измену изнад комада улево" +msgstr "Умножите измену изнад комада удесно" -#: ../meld/filediff.py:279 -msgid "Copy below right" +#: ../meld/filediff.py:274 +msgid "Copy Below Right" msgstr "Умножи испод удесно" -#: ../meld/filediff.py:279 +#: ../meld/filediff.py:275 msgid "Copy change below the right chunk" -msgstr "Умножава измену испод комада удесно" +msgstr "Умножите измену испод комада удесно" -#: ../meld/filediff.py:280 +#: ../meld/filediff.py:277 msgid "Delete" msgstr "Обриши" -#: ../meld/filediff.py:280 +#: ../meld/filediff.py:278 msgid "Delete change" -msgstr "Брише измену" +msgstr "Обришите измену" -#: ../meld/filediff.py:281 -msgid "Merge all changes from left" -msgstr "Обједини све измене с лева" +#: ../meld/filediff.py:280 +msgid "Merge All from Left" +msgstr "Обједини све с лева" #: ../meld/filediff.py:281 msgid "Merge all non-conflicting changes from the left" -msgstr "Обједињује све несукобљавајуће измене с лева" +msgstr "Обједините све несукобљавајуће измене с лева" -#: ../meld/filediff.py:282 -msgid "Merge all changes from right" -msgstr "Обједини све измене с десна" +#: ../meld/filediff.py:283 +msgid "Merge All from Right" +msgstr "Обједини све с десна" -#: ../meld/filediff.py:282 +#: ../meld/filediff.py:284 msgid "Merge all non-conflicting changes from the right" -msgstr "Обједињује све несукобљавајуће измене с десна" +msgstr "Обједините све несукобљавајуће измене с десна" -#: ../meld/filediff.py:283 -msgid "Merge all non-conflicting" -msgstr "Обједини све несукобљавајуће" +#: ../meld/filediff.py:286 +msgid "Merge All" +msgstr "Стопи све" -#: ../meld/filediff.py:283 +#: ../meld/filediff.py:287 msgid "Merge all non-conflicting changes from left and right panes" -msgstr "Обједињује све несукобљавајуће измене с леве и десне површи" +msgstr "Обједините све несукобљавајуће измене с леве и десне површи" -#: ../meld/filediff.py:284 -msgid "Cycle through documents" +#: ../meld/filediff.py:291 +msgid "Cycle Through Documents" msgstr "Кружи кроз документе" -#: ../meld/filediff.py:284 +#: ../meld/filediff.py:292 msgid "Move keyboard focus to the next document in this comparison" -msgstr "Премешта фокус тастатуре на следећи документ у овом поређењу" +msgstr "Преместите фокус тастатуре на следећи документ у овом поређењу" -#: ../meld/filediff.py:288 -msgid "Lock scrolling" +#: ../meld/filediff.py:298 +msgid "Lock Scrolling" msgstr "Закључај клизање" -#: ../meld/filediff.py:289 +#: ../meld/filediff.py:299 msgid "Lock scrolling of all panes" -msgstr "Закључава клизање свих површи" +msgstr "Закључајте клизање свих површи" #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:381 +#: ../meld/filediff.py:484 msgid "INS" msgstr "УМЕТ" -#: ../meld/filediff.py:381 +#: ../meld/filediff.py:484 msgid "OVR" msgstr "ПРЕП" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:383 +#: ../meld/filediff.py:486 #, python-format msgid "Ln %i, Col %i" msgstr "Ред %i, место %i" -#: ../meld/filediff.py:693 +#: ../meld/filediff.py:823 #, python-format msgid "" "Filter '%s' changed the number of lines in the file. Comparison will be " "incorrect. See the user manual for more details." msgstr "" -"Филтер „%s“ је изменио број редова у датотеци. Поређење неће бити тачно. За " -"више детаља погледајте приручник за кориснике." +"Пропусник „%s“ је изменио број редова у датотеци. Поређење неће бити тачно. " +"За више детаља погледајте приручник за кориснике." -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:780 -msgid "" -msgstr "<неименован>" - -#: ../meld/filediff.py:969 +#: ../meld/filediff.py:1093 #, python-format msgid "[%s] Set num panes" -msgstr "[%s] Постави број плоча" +msgstr "[%s] Постави број површи" -#: ../meld/filediff.py:975 +#: ../meld/filediff.py:1099 #, python-format msgid "[%s] Opening files" msgstr "[%s] Отварам датотеке" -#: ../meld/filediff.py:999 ../meld/filediff.py:1008 ../meld/filediff.py:1020 -#: ../meld/filediff.py:1026 +#: ../meld/filediff.py:1122 ../meld/filediff.py:1132 ../meld/filediff.py:1145 +#: ../meld/filediff.py:1151 msgid "Could not read file" msgstr "Не могу да прочитам датотеку" -#: ../meld/filediff.py:1000 +#: ../meld/filediff.py:1123 #, python-format msgid "[%s] Reading files" msgstr "[%s] Читам датотеке" -#: ../meld/filediff.py:1009 +#: ../meld/filediff.py:1133 #, python-format msgid "%s appears to be a binary file." msgstr "„%s“ изгледа да је извршна датотека." -#: ../meld/filediff.py:1021 +#: ../meld/filediff.py:1146 #, python-format msgid "%s is not in encodings: %s" msgstr "„%s“ није у кодирањима: „%s“" -#: ../meld/filediff.py:1051 ../meld/filemerge.py:67 +#: ../meld/filediff.py:1181 #, python-format msgid "[%s] Computing differences" msgstr "[%s] Срачунавам разлике" -#: ../meld/filediff.py:1108 +#: ../meld/filediff.py:1238 +#, python-format +msgid "File %s has changed on disk" +msgstr "Датотека „%s“ је измењена на диску" + +#: ../meld/filediff.py:1239 +#| msgid "Could not read file" +msgid "Do you want to reload the file?" +msgstr "Да ли желите поново да учитате датотеку?" + +#: ../meld/filediff.py:1242 +msgid "_Reload" +msgstr "_Учитај поново" + +#: ../meld/filediff.py:1403 msgid "" "Text filters are being used, and may be masking differences between files. " "Would you like to compare the unfiltered files?" msgstr "" -"Коришћени су филтери текста, а могу постојати и замаскиране разлике између " -"датотека. Да ли желите да поредите нефилтриране датотеке?" +"Коришћени су пропусници текста, а могу постојати и замаскиране разлике " +"између датотека. Да ли желите да поредите неиздвојене датотеке?" -#: ../meld/filediff.py:1114 +#: ../meld/filediff.py:1409 msgid "Files are identical" msgstr "Датотеке су истоветне" -#: ../meld/filediff.py:1124 +#: ../meld/filediff.py:1417 msgid "Show without filters" -msgstr "Приказује без филтера" +msgstr "Приказује без пропусника" + +#: ../meld/filediff.py:1439 +msgid "Change highlighting incomplete" +msgstr "Истицање измена није довршено" -#: ../meld/filediff.py:1278 +#: ../meld/filediff.py:1440 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"Неке измене нису истакнуте зато што су превелике. Можете да приморате Мелд " +"да продужи са истицањем већих измена, иако то може бити споро." + +#: ../meld/filediff.py:1448 +msgid "Keep highlighting" +msgstr "Задржите истицање" + +#: ../meld/filediff.py:1450 +msgid "_Keep highlighting" +msgstr "_Задржи истицање" + +#: ../meld/filediff.py:1581 #, python-format msgid "" "\"%s\" exists!\n" @@ -847,7 +1495,7 @@ "„%s“ постоји!\n" "Да преснимим?" -#: ../meld/filediff.py:1291 +#: ../meld/filediff.py:1594 #, python-format msgid "" "Error writing to %s\n" @@ -858,12 +1506,38 @@ "\n" "%s." -#: ../meld/filediff.py:1300 -#, python-format -msgid "Choose a name for buffer %i." -msgstr "Изаберите име за %i. бафер." +#: ../meld/filediff.py:1605 +msgid "Save Left Pane As" +msgstr "Сачувај леву површ као" + +#: ../meld/filediff.py:1607 +msgid "Save Middle Pane As" +msgstr "Сачувај средњу површ као" + +#: ../meld/filediff.py:1609 +msgid "Save Right Pane As" +msgstr "Сачувај десну површ као" + +#: ../meld/filediff.py:1620 +#, python-format +msgid "File %s has changed on disk since it was opened" +msgstr "Датотека „%s“ је измењена на диску након отварања" + +#: ../meld/filediff.py:1622 +#| msgid "If you don't save, changes will be permanently lost." +msgid "If you save it, any external changes will be lost." +msgstr "Ако је сачувате, све спољне измене ће бити изгубљене." + +#: ../meld/filediff.py:1625 +#| msgid "Save A_ll" +msgid "Save Anyway" +msgstr "Ипак сачувај" + +#: ../meld/filediff.py:1626 +msgid "Don't Save" +msgstr "Немој чувати" -#: ../meld/filediff.py:1315 +#: ../meld/filediff.py:1650 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -874,1018 +1548,527 @@ "\n" "Који облик желите да користите?" -#: ../meld/filediff.py:1331 +#: ../meld/filediff.py:1666 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" "Would you like to save as UTF-8?" msgstr "" "„%s“ садржи знакове који се не могу кодирати уз „%s“\n" -"Да ли желите да сачувате као „UTF-8“?" +"Да ли желите да сачувате као УТФ-8?" -#: ../meld/filediff.py:1390 -#, python-format +#: ../meld/filediff.py:2030 +msgid "Live comparison updating disabled" +msgstr "Искључено је живо ажурирање поређења" + +#: ../meld/filediff.py:2031 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." msgstr "" -"Освежавање ће одбацити измене у:\n" -"%s\n" -"\n" -"Ову операцију не можете опозвати." +"Живо ажурирање поређења је искључено када су активне тачке усклађивања. Још " +"увек можете ручно да освежите поређење, а жива ажурирања ће наставити са " +"радом након чишћења тачака усклађивања." -#: ../meld/filemerge.py:82 +#: ../meld/filemerge.py:49 #, python-format msgid "[%s] Merging files" msgstr "[%s] Обједињујем датотеке" -#: ../meld/meldapp.py:149 +#: ../meld/gutterrendererchunk.py:91 +msgid "Copy _up" +msgstr "Умножи _горе" + +#: ../meld/gutterrendererchunk.py:92 +msgid "Copy _down" +msgstr "Умножи _доле" + +#: ../meld/meldapp.py:132 msgid "wrong number of arguments supplied to --diff" msgstr "погрешан број аргумената придодат уз „--diff“" -#: ../meld/meldapp.py:153 +#: ../meld/meldapp.py:137 msgid "Start with an empty window" msgstr "Отвара један празан прозор" # bug: string composition is bad i18n, and will make l10n hard -#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:140 msgid "file" msgstr "датотека" -#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#: ../meld/meldapp.py:138 ../meld/meldapp.py:142 msgid "dir" msgstr "дир" -#: ../meld/meldapp.py:154 +#: ../meld/meldapp.py:139 msgid "Start a version control comparison" msgstr "Покреће поређење контроле верзије" -#: ../meld/meldapp.py:155 +#: ../meld/meldapp.py:141 msgid "Start a 2- or 3-way file comparison" msgstr "Покреће поређење 2 или 3 елемента датотека" -#: ../meld/meldapp.py:156 +#: ../meld/meldapp.py:143 msgid "Start a 2- or 3-way directory comparison" -msgstr "Покреће поређење 2 или 3 елемента директоријума" - -#: ../meld/meldapp.py:157 -msgid "Start a comparison between file and dir/file" -msgstr "Покреће поређење између датотеке и директоријума/датотеке" +msgstr "Покреће поређење 2 или 3 елемента фасцикли" -#: ../meld/meldapp.py:163 +#: ../meld/meldapp.py:151 msgid "Meld is a file and directory comparison tool." -msgstr "Мелд је алат за поређење датотека и директоријума." +msgstr "Мелд је алат за поређење датотека и фасцикли." -#: ../meld/meldapp.py:166 +#: ../meld/meldapp.py:154 msgid "Set label to use instead of file name" -msgstr "Подешава ознаку за коришћење уместо имена датотеке" +msgstr "Подешава ознаку за коришћење уместо назива датотеке" -#: ../meld/meldapp.py:168 +#: ../meld/meldapp.py:156 +msgid "Open a new tab in an already running instance" +msgstr "Отвара нови језичак у једном већ отвореном примерку" + +#: ../meld/meldapp.py:159 msgid "Automatically compare all differing files on startup" -msgstr "Аутоматски пореди све разликујуће датотеке приликом покретања" +msgstr "Самостално пореди све разликујуће датотеке приликом покретања" -#: ../meld/meldapp.py:170 +#: ../meld/meldapp.py:161 msgid "Ignored for compatibility" -msgstr "Занемарено због компатибилности" +msgstr "Занемарено због сагласности" -#: ../meld/meldapp.py:173 +#: ../meld/meldapp.py:164 msgid "Set the target file for saving a merge result" msgstr "Подешава циљну датотеку за чување резултата стапања" -#: ../meld/meldapp.py:176 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "" -"Прави језичак разлика за највише до 3 придодате датотеке или директоријума." +#: ../meld/meldapp.py:166 +msgid "Automatically merge files" +msgstr "Самостално стапа датотеке" -#: ../meld/meldapp.py:179 +#: ../meld/meldapp.py:169 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "Учитава сачувано поређење из Мелдове датотеке поређења" + +#: ../meld/meldapp.py:172 +msgid "Create a diff tab for the supplied files or folders" +msgstr "Прави језичак разлика придодате датотеке или фасцикле" + +#: ../meld/meldapp.py:175 #, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "превише аргумената (тражено је 0-4, добих %d)" +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "превише аргумената (тражено је 0-3, добих %d)" + +#: ../meld/meldapp.py:178 +msgid "can't auto-merge less than 3 files" +msgstr "не могу самостално да стопим мање од 3 датотеке" + +#: ../meld/meldapp.py:180 +msgid "can't auto-merge directories" +msgstr "не могу самостално да стопим директоријуме" -#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 -msgid "can't compare more than three directories" -msgstr "не могу да поредим више од три директоријума" +#: ../meld/meldapp.py:190 +msgid "Error reading saved comparison file" +msgstr "Грешка читања сачуване датотеке поређења" -#: ../meld/melddoc.py:51 ../meld/melddoc.py:52 +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:105 +msgid "" +msgstr "<неименован>" + +#: ../meld/melddoc.py:75 ../meld/melddoc.py:76 msgid "untitled" msgstr "безимени" -#: ../meld/meldwindow.py:125 +#: ../meld/meldwindow.py:50 msgid "_File" msgstr "_Датотека" -#: ../meld/meldwindow.py:126 -msgid "_New..." -msgstr "_Нови..." +#: ../meld/meldwindow.py:51 +msgid "_New Comparison..." +msgstr "_Ново поређење..." -#: ../meld/meldwindow.py:126 +#: ../meld/meldwindow.py:52 msgid "Start a new comparison" -msgstr "Започиње ново поређење" +msgstr "Започните ново поређење" -#: ../meld/meldwindow.py:127 +#: ../meld/meldwindow.py:55 msgid "Save the current file" -msgstr "Чува тренутну датотеку" +msgstr "Сачувајте тренутну датотеку" -#: ../meld/meldwindow.py:129 -msgid "Close the current file" -msgstr "Затвара тренутну датотеку" +#: ../meld/meldwindow.py:57 +msgid "Save As..." +msgstr "Сачувај као..." -#: ../meld/meldwindow.py:130 -msgid "Quit the program" -msgstr "Затвара програм" +#: ../meld/meldwindow.py:58 +msgid "Save the current file with a different name" +msgstr "Сачувајте текућу датотеку под другим називом" -#: ../meld/meldwindow.py:132 +#: ../meld/meldwindow.py:61 +msgid "Close the current file" +msgstr "Затворите тренутну датотеку" + +#: ../meld/meldwindow.py:64 msgid "_Edit" msgstr "_Уређивање" -#: ../meld/meldwindow.py:133 +#: ../meld/meldwindow.py:66 msgid "Undo the last action" -msgstr "Опозива последњу радњу" +msgstr "Опозовите последњу радњу" -#: ../meld/meldwindow.py:134 +#: ../meld/meldwindow.py:69 msgid "Redo the last undone action" -msgstr "Понавља последњу опозвану радњу" +msgstr "Поновите последњу опозвану радњу" -#: ../meld/meldwindow.py:135 +#: ../meld/meldwindow.py:71 msgid "Cut the selection" -msgstr "Исеца избор" +msgstr "Исеците избор" -#: ../meld/meldwindow.py:136 +#: ../meld/meldwindow.py:73 msgid "Copy the selection" -msgstr "Умножава избор" +msgstr "Умножите избор" -#: ../meld/meldwindow.py:137 +#: ../meld/meldwindow.py:75 msgid "Paste the clipboard" -msgstr "Убаци оставу" +msgstr "Убаците оставу" -#: ../meld/meldwindow.py:138 +#: ../meld/meldwindow.py:77 +msgid "Find..." +msgstr "Пронађи..." + +#: ../meld/meldwindow.py:77 msgid "Search for text" -msgstr "Тражи текст" +msgstr "Тражите текст" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:79 msgid "Find Ne_xt" -msgstr "Нађи с_едеће" +msgstr "Нађи с_ледеће" -#: ../meld/meldwindow.py:139 +#: ../meld/meldwindow.py:80 msgid "Search forwards for the same text" -msgstr "Тражи унапред исти текст" +msgstr "Тражите унапред исти текст" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:82 msgid "Find _Previous" msgstr "Нађи пре_тходно" -#: ../meld/meldwindow.py:140 +#: ../meld/meldwindow.py:83 msgid "Search backwards for the same text" -msgstr "Тражи уназад исти текст" - -#: ../meld/meldwindow.py:141 -msgid "Find and replace text" -msgstr "Проналази и замењује текст" +msgstr "Тражите уназад исти текст" -#: ../meld/meldwindow.py:142 -msgid "Prefere_nces" -msgstr "_Поставке" +#: ../meld/meldwindow.py:86 +msgid "_Replace..." +msgstr "_Замени..." -#: ../meld/meldwindow.py:142 -msgid "Configure the application" -msgstr "Подесите програм" +#: ../meld/meldwindow.py:87 +msgid "Find and replace text" +msgstr "Пронађите и замените текст" -#: ../meld/meldwindow.py:144 +#: ../meld/meldwindow.py:90 msgid "_Changes" msgstr "_Измене" -#: ../meld/meldwindow.py:145 -msgid "Next change" +#: ../meld/meldwindow.py:91 +msgid "Next Change" msgstr "Следећа измена" -#: ../meld/meldwindow.py:145 +#: ../meld/meldwindow.py:92 msgid "Go to the next change" -msgstr "Иде на следећу измену" +msgstr "Идите на следећу измену" -#: ../meld/meldwindow.py:146 -msgid "Previous change" +#: ../meld/meldwindow.py:94 +msgid "Previous Change" msgstr "Претходна измена" -#: ../meld/meldwindow.py:146 +#: ../meld/meldwindow.py:95 msgid "Go to the previous change" -msgstr "Иде на претходну измену" +msgstr "Идите на претходну измену" + +#: ../meld/meldwindow.py:97 +msgid "Open Externally" +msgstr "Отвори спољним" -#: ../meld/meldwindow.py:148 +#: ../meld/meldwindow.py:98 +msgid "Open selected file or directory in the default external application" +msgstr "Отворите изабрану датотеку или фасциклу у основном спољном програму" + +#: ../meld/meldwindow.py:102 msgid "_View" msgstr "П_реглед" -#: ../meld/meldwindow.py:149 -msgid "File status" +#: ../meld/meldwindow.py:103 +msgid "File Status" msgstr "Стање датотеке" -#: ../meld/meldwindow.py:150 -msgid "Version status" +#: ../meld/meldwindow.py:104 +msgid "Version Status" msgstr "Стање издања" -#: ../meld/meldwindow.py:151 -msgid "File filters" -msgstr "Филтери датотеке" - -#: ../meld/meldwindow.py:152 +#: ../meld/meldwindow.py:107 msgid "Stop the current action" -msgstr "Зауставља тренутну радњу" +msgstr "Зауставите тренутну радњу" -#: ../meld/meldwindow.py:153 +#: ../meld/meldwindow.py:110 msgid "Refresh the view" -msgstr "Освежава преглед" +msgstr "Освежите преглед" -#: ../meld/meldwindow.py:154 -msgid "Reload" -msgstr "Поново учитај" - -#: ../meld/meldwindow.py:154 -msgid "Reload the comparison" -msgstr "Поново учитава поређење" - -#: ../meld/meldwindow.py:156 +#: ../meld/meldwindow.py:113 msgid "_Tabs" -msgstr "_Језичак" +msgstr "_Језичци" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:114 msgid "_Previous Tab" msgstr "Пре_тходни језичак" -#: ../meld/meldwindow.py:157 +#: ../meld/meldwindow.py:115 msgid "Activate previous tab" -msgstr "Активира претходни језичак" +msgstr "Идите на претходни језичак" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:117 msgid "_Next Tab" msgstr "Сле_дећи језичак" -#: ../meld/meldwindow.py:158 +#: ../meld/meldwindow.py:118 msgid "Activate next tab" -msgstr "Активира следећи језичак" +msgstr "Идите на наредни језичак" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:121 msgid "Move Tab _Left" -msgstr "Премести језичак у_лево" +msgstr "Премести језичак _лево" -#: ../meld/meldwindow.py:159 +#: ../meld/meldwindow.py:122 msgid "Move current tab to left" -msgstr "Премешта тренутни језичак на лево" +msgstr "Преместите тренутни језичак на лево" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:125 msgid "Move Tab _Right" -msgstr "Премести језичак у_десно" +msgstr "Премести језичак _десно" -#: ../meld/meldwindow.py:160 +#: ../meld/meldwindow.py:126 msgid "Move current tab to right" -msgstr "Премешта тренутни језичак на десно" +msgstr "Преместите тренутни језичак на десно" -#: ../meld/meldwindow.py:162 -msgid "_Help" -msgstr "Помо_ћ" - -#: ../meld/meldwindow.py:163 -msgid "_Contents" -msgstr "_Садржај" - -#: ../meld/meldwindow.py:163 -msgid "Open the Meld manual" -msgstr "Отворите упутство Мелда" - -#: ../meld/meldwindow.py:164 -msgid "Report _Bug" -msgstr "Пријави _грешку" - -#: ../meld/meldwindow.py:164 -msgid "Report a bug in Meld" -msgstr "Пријавите грешку у Мелду" - -#: ../meld/meldwindow.py:165 -msgid "About this program" -msgstr "О овом програму" - -#: ../meld/meldwindow.py:168 -msgid "Full Screen" -msgstr "Цео екран" +#: ../meld/meldwindow.py:130 +msgid "Fullscreen" +msgstr "Преко целог екрана" -#: ../meld/meldwindow.py:168 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:131 +msgid "View the comparison in fullscreen" msgstr "Прегледајте поређење преко целог екрана" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:133 msgid "_Toolbar" -msgstr "Линија _алата" +msgstr "_Трака алата" -#: ../meld/meldwindow.py:169 +#: ../meld/meldwindow.py:134 msgid "Show or hide the toolbar" -msgstr "Приказује или скрива линију алата" +msgstr "Прикажите или сакријте траку алата" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:136 msgid "_Statusbar" -msgstr "Линија _стања" +msgstr "Трака _стања" -#: ../meld/meldwindow.py:170 +#: ../meld/meldwindow.py:137 msgid "Show or hide the statusbar" -msgstr "Приказује или скрива линију стања" +msgstr "Прикажите или сакријте траку стања" + +#: ../meld/meldwindow.py:146 +msgid "Open Recent" +msgstr "Отвори скорашње" + +#: ../meld/meldwindow.py:147 +msgid "Open recent files" +msgstr "Отворите скорашње датотеке" -#: ../meld/meldwindow.py:534 +#: ../meld/meldwindow.py:538 msgid "Switch to this tab" -msgstr "Пребацује се на овај језичак" +msgstr "Пребаците се на овај језичак" -#. exit at first non found directory + file -#: ../meld/meldwindow.py:625 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Не могу да поредим мешавину датотека и директоријума.\n" +#: ../meld/meldwindow.py:661 +msgid "Cannot compare a mixture of files and directories" +msgstr "Не могу да поредим мешавину датотека и фасцикли" #. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:174 +#: ../meld/misc.py:178 msgid "[None]" msgstr "[ништа]" -#: ../meld/patchdialog.py:122 -msgid "Save Patch As..." -msgstr "Сачувај исправку као..." - -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "label" -msgstr "ознака" +msgstr "натпис" -#: ../meld/preferences.py:37 +#: ../meld/preferences.py:34 msgid "pattern" msgstr "образац" -#: ../meld/preferences.py:105 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "Доступно је само ако сте инсталирали „gnome-python-desktop“" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:233 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Резервне копије\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:235 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "Контрола верзија\t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:237 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Извршне\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:239 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Медија\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:241 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "ЦВС кључне речи\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:243 -msgid "C++ comment\t0\t//.*\n" -msgstr "Ц++ коментар\t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:245 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "Ц коментар\t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:247 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Сви размаци\t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:249 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Почетни размак\t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:251 -msgid "Script comment\t0\t#.*" -msgstr "Коментар скрипте\t0\t#.*" - -#: ../meld/vcview.py:120 -msgid "Co_mmit" -msgstr "У_гради" - -#: ../meld/vcview.py:120 -msgid "Commit" -msgstr "Угради" - -#: ../meld/vcview.py:121 -msgid "_Update" -msgstr "_Допуни" - -#: ../meld/vcview.py:121 -msgid "Update" -msgstr "Допуни" - -#: ../meld/vcview.py:122 -msgid "Add to VC" -msgstr "Додај у ЦВ" - -#: ../meld/vcview.py:123 -msgid "Add _Binary" -msgstr "Додај _бинарно" - -#: ../meld/vcview.py:123 -msgid "Add binary to VC" -msgstr "Додај бинарно у ЦВ" - -#: ../meld/vcview.py:124 -msgid "Remove from VC" -msgstr "Уклони из ЦВ" - -#: ../meld/vcview.py:125 -msgid "_Resolved" -msgstr "_Решено" - -#: ../meld/vcview.py:125 -msgid "Mark as resolved for VC" -msgstr "Означава као решено за ЦВ" - -#: ../meld/vcview.py:126 -msgid "Revert to original" -msgstr "Врати на оригинал" - -#: ../meld/vcview.py:127 -msgid "Delete locally" -msgstr "Обриши у локалу" - -#: ../meld/vcview.py:131 -msgid "_Flatten" -msgstr "_Изравнај" - -#: ../meld/vcview.py:131 -msgid "Flatten directories" -msgstr "Изравнај директоријуме" - -#: ../meld/vcview.py:132 -msgid "_Modified" -msgstr "Из_мењен" - -#: ../meld/vcview.py:133 -msgid "_Normal" -msgstr "_Обично" - -#: ../meld/vcview.py:133 -msgid "Show normal" -msgstr "Прикажи обичне" - -#: ../meld/vcview.py:134 -msgid "Non _VC" -msgstr "Не _ЦВ" +#: ../meld/recent.py:105 +msgid "Version control:" +msgstr "Управљање издањем:" + +#: ../meld/ui/findbar.py:141 +msgid "Regular expression error" +msgstr "Грешка регуларног израза" -#: ../meld/vcview.py:134 -msgid "Show unversioned files" -msgstr "Приказује неверзиониране датотеке" - -#: ../meld/vcview.py:135 -msgid "Ignored" -msgstr "Занемарен" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "Затворите језичак" -#: ../meld/vcview.py:135 -msgid "Show ignored files" -msgstr "Приказује занемарене датотеке" +#: ../meld/ui/vcdialogs.py:61 +msgid "No files will be committed" +msgstr "Ниједна датотека неће бити уграђена" + +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s у %s" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d непогурана предаја" +msgstr[1] "%d непогуране предаје" +msgstr[2] "%d непогураних предаја" +msgstr[3] "%d непогурана предаја" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d грани" +msgstr[1] "%d гране" +msgstr[2] "%d грана" +msgstr[3] "%d грани" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Режим је измењен из „%s“ у „%s“" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "Стопљено" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "Основа" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Месно" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Удаљено" + +#: ../meld/vc/_vc.py:65 +#| msgid "Un_versioned" +msgid "Unversioned" +msgstr "Необрађено" + +#: ../meld/vc/_vc.py:68 +msgid "Error" +msgstr "Грeшкa" + +#: ../meld/vc/_vc.py:70 +msgid "Newly added" +msgstr "Ново додата" + +#: ../meld/vc/_vc.py:72 +#| msgid "Next Conflict" +msgid "Conflict" +msgstr "Сукоб" + +#: ../meld/vc/_vc.py:73 +#| msgid "_Remove" +msgid "Removed" +msgstr "Уклоњено" + +#: ../meld/vc/_vc.py:74 +msgid "Missing" +msgstr "Недостаје" + +#: ../meld/vc/_vc.py:75 +msgid "Not present" +msgstr "Није присутно" -#: ../meld/vcview.py:177 ../meld/vcview.py:301 +#: ../meld/vcview.py:216 ../meld/vcview.py:391 msgid "Location" msgstr "Путања" -#: ../meld/vcview.py:178 +#: ../meld/vcview.py:217 msgid "Status" msgstr "Стање" -#: ../meld/vcview.py:179 -msgid "Rev" -msgstr "Изд" +#: ../meld/vcview.py:218 +msgid "Revision" +msgstr "Преглед" -#: ../meld/vcview.py:181 +#: ../meld/vcview.py:219 msgid "Options" msgstr "Опције" -#: ../meld/vcview.py:233 -msgid "Choose one Version Control" -msgstr "Изаберите Контролу верзије" - -#: ../meld/vcview.py:234 -msgid "Only one Version Control in this directory" -msgstr "Само једна Контрола верзија у овом директоријуму" - #. TRANSLATORS: this is an error message when a version control #. application isn't installed or can't be found -#: ../meld/vcview.py:247 +#: ../meld/vcview.py:302 #, python-format -msgid "%s Not Installed" +msgid "%s not installed" msgstr "„%s“ није инсталиран" #. TRANSLATORS: this is an error message when a version #. controlled repository is invalid or corrupted -#: ../meld/vcview.py:251 -msgid "Invalid Repository" -msgstr "Неисправно складиште" +#: ../meld/vcview.py:306 +msgid "Invalid repository" +msgstr "Неисправна ризница" -#: ../meld/vcview.py:260 +#: ../meld/vcview.py:315 #, python-format msgid "%s (%s)" msgstr "%s (%s)" +#: ../meld/vcview.py:317 ../meld/vcview.py:325 +msgid "None" +msgstr "Ништа" + +#: ../meld/vcview.py:336 +msgid "No valid version control system found in this folder" +msgstr "У овој фасцикли није пронађен исправан систем управљања издањем" + +#: ../meld/vcview.py:338 +msgid "Only one version control system found in this folder" +msgstr "У овој фасцикли је пронађен само један систем управљања издањем" + +#: ../meld/vcview.py:340 +msgid "Choose which version control system to use" +msgstr "Изаберите који систем управљања издањем ће бити коришћен" + #. TRANSLATORS: This is the location of the directory the user is diffing -#: ../meld/vcview.py:301 +#: ../meld/vcview.py:391 #, python-format msgid "%s: %s" msgstr "%s: %s" -#: ../meld/vcview.py:349 -msgid "(Empty)" -msgstr "(Празно)" - -#: ../meld/vcview.py:387 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Прибављам разлике" - -#: ../meld/vcview.py:395 +#: ../meld/vcview.py:405 ../meld/vcview.py:413 #, python-format -msgid "[%s] Applying patch" -msgstr "[%s] Примењујем закрпу" +msgid "Scanning %s" +msgstr "Прегледам „%s“" -#: ../meld/vcview.py:480 -msgid "Select some files first." -msgstr "Прво изаберите неке датотеке." - -#: ../meld/vcview.py:553 -#, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" Призивање „patch“ није успело.\n" -" \n" -" Можда нисте инсталирали „GNU patch“,\n" -" или користите непроверену верзију „%s“.\n" -" \n" -" Молим пошаљите извештај о грешци на:\n" -" meld-list@gnome.org\n" -" \n" -" Који садржи следеће информације:\n" -" \n" -" — верзија мелда: „%s“\n" -" — врста софтвера контроле извора: „%s“\n" -" — верзија софтвера контроле извора: „X.Y.Z“\n" -" — испис „%s некадатотека.txt“\n" -" — наредба за пач: „%s“\n" -" (није потребно стварно покретање, само\n" -" обезбедите линију наредбе) \n" -" \n" -" Замените „X.Y.Z“ тренутном верзијом\n" -" софтвера контроле извора који користите.\n" -" " - -#: ../meld/ui/findbar.py:127 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"Грешка са регуларним изразом\n" -"„%s“" - -#: ../meld/ui/historyentry.py:293 -msgid "_Browse..." -msgstr "Пре_тражи..." - -#: ../meld/ui/historyentry.py:301 -msgid "Path" -msgstr "Путања" - -#: ../meld/ui/historyentry.py:302 -msgid "Path to file" -msgstr "Путања до датотеке" - -#: ../meld/ui/historyentry.py:303 -msgid "Pop up a file selector to choose a file" -msgstr "Избацује бирача датотека за избор датотеке" - -#: ../meld/ui/historyentry.py:441 -msgid "Select directory" -msgstr "Изаберите директоријум" - -#: ../meld/ui/historyentry.py:445 -msgid "Select file" -msgstr "Изаберите датотеку" +#: ../meld/vcview.py:447 +msgid "(Empty)" +msgstr "(Празно)" -#: ../meld/ui/notebooklabel.py:60 -msgid "Close tab" -msgstr "Затвори језичак" +#: ../meld/vcview.py:670 +msgid "Remove folder and all its files?" +msgstr "Да уклоним фасциклу и све њене датотеке?" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 +#: ../meld/vcview.py:672 msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." msgstr "" -"Занемарено:Неверзионирано:::Грешка::Ново додато:Измењено:Сукоб:Уклоњено:" -"Недостајуће" +"Ово ће уклонити све изабране датотеке и фасцикле, и све датотеке унутар свих " +"изабраних фасцикли, из управљања издањем." -#: ../meld/vc/cvs.py:163 +#: ../meld/vcview.py:706 #, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"Грешка при претварању у регуларни израз\n" -"Образац је био „%s“\n" -"Грешка је била „%s“" - -#~ msgid "[%s] Scanning" -#~ msgstr "[%s] прегледам" - -#~ msgid "Error converting pattern '%s' to regular expression" -#~ msgstr "Грешка при претварању обрасца „%s“ у регуларни израз" - -# bug: plural-forms -#~ msgid "" -#~ "second,seconds:minute,minutes:hour,hours:day,days:week,weeks:month,months:" -#~ "year,years" -#~ msgstr "" -#~ "секунду,секунди:минут,минута:час,часа:дан,дана:недељу,недеља:месец,месеци:" -#~ "годину,година" - -#~ msgid "The regular expression '%s' was not found." -#~ msgstr "Регуларни израз „%s“ није нађен." - -#~ msgid "The text '%s' was not found." -#~ msgstr "Текст „%s“ није нађен." - -#~ msgid "" -#~ "Could not open '%s' for reading.\n" -#~ "\n" -#~ "The error was:\n" -#~ "%s" -#~ msgstr "" -#~ "Не могу да отворим „%s“ ради читања.\n" -#~ "\n" -#~ "Грешка беше:\n" -#~ "%s" - -#~ msgid "" -#~ "Could not read from '%s'.\n" -#~ "\n" -#~ "I tried encodings %s." -#~ msgstr "" -#~ "Не могу да читам из „%s“.\n" -#~ "\n" -#~ "Покушах кодирања %s." - -#~ msgid "" -#~ "Could not read from '%s'.\n" -#~ "\n" -#~ "The error was:\n" -#~ "%s" -#~ msgstr "" -#~ "Не могу да читам из „%s“.\n" -#~ "\n" -#~ "Грешка беше:\n" -#~ "%s." - -#~ msgid "Meld requires a recent version of pygtk." -#~ msgstr "Мелд захтева скоро издање ПиГтк-а." - -#~ msgid "pygtk-%s or higher is recommended." -#~ msgstr "Препоручује се ПиГтк %s или новији." - -#~ msgid "Meld works best with pygtk-%s or higher. (found %s)" -#~ msgstr "Мелд најбоље ради уз ПиГтк %s или новији. (нађох %s)" - -#~ msgid "" -#~ "Due to incompatible API changes some functions may not operate as " -#~ "expected." -#~ msgstr "" -#~ "Због несагласних измена програмерске спреге, неке функције можда неће " -#~ "радити како треба." - -#~ msgid "Modified File" -#~ msgstr "Измењена датотека" - -#~ msgid "Other Changes" -#~ msgstr "Остале измене" - -#~ msgid "Common Ancestor" -#~ msgstr "Заједнички предак" - -#~ msgid "Original Directory" -#~ msgstr "Изворни директоријум" - -#~ msgid "Modified Directory" -#~ msgstr "Измењен директоријум" - -#~ msgid "" -#~ "Meld is a file and directory comparison tool. Usage:\n" -#~ "\n" -#~ " meld Start with no windows open\n" -#~ " meld Start with CVS browser in 'dir'\n" -#~ " meld Start with CVS diff of 'file'\n" -#~ " meld [file] Start with 2 or 3 way file comparison\n" -#~ " meld [dir] Start with 2 or 3 way directory " -#~ "comparison\n" -#~ "\n" -#~ "For more information choose help -> contents.\n" -#~ "Report bugs at http://bugzilla.gnome.org/buglist.cgi?product=meld\n" -#~ "stevek@gnome.org\n" -#~ msgstr "" -#~ "Мелд је алат за поређење датотека и директоријума. Употреба:\n" -#~ "\n" -#~ " meld Покрени без отворених прозора\n" -#~ " meld <дир> Покрени са CVS прегледачем у „дир“\n" -#~ " meld <датотека> Покрени CVS разлике за „датотека“\n" -#~ " meld <датотека> <датотека> [датотека]\n" -#~ " Покрени дво- или тросмерно поређење " -#~ "датотека\n" -#~ " meld <дир> <дир> [дир] Покрени дво- или тросмерно поређење \n" -#~ " директоријума\n" -#~ "\n" -#~ "За више података изаберите помоћ -> садржај.\n" -#~ "Пријавите грешке на http://bugzilla.gnome.org/buglist.cgi?product=meld\n" -#~ "http://mail.gnome.org/mailman/listinfo/meld-list\n" - -#~ msgid "" -#~ "Meld %s\n" -#~ "Written by Stephen Kennedy " -#~ msgstr "" -#~ "Мелд %s\n" -#~ "Написао Стифен Кенеди (Stephen Kennedy) " - -#~ msgid "`%s' is not a directory or file, cannot open cvs view" -#~ msgstr "" -#~ "„%s“ не представља директоријум ни датотеку, не могу да отворим CVS " -#~ "преглед" - -#~ msgid "folder" -#~ msgstr "директоријум" - -#~ msgid "*" -#~ msgstr "*" - -#~ msgid "Remove _Locally" -#~ msgstr "Уклони у _локалу" - -#~ msgid "Show non-CVS" -#~ msgstr "Прикажи не-CVS" - -#~ msgid "_Commit" -#~ msgstr "У_гради" - -#~ msgid "_Diff" -#~ msgstr "_Разлике" - -#~ msgid "Copy All _Left" -#~ msgstr "Умножи све _лево" - -#~ msgid "Copy All _Right" -#~ msgstr "Умножи све _десно" - -#~ msgid "Edit" -#~ msgstr "Уреди" - -#~ msgid "Find" -#~ msgstr "Пронађи" - -#~ msgid "Match _entire word only" -#~ msgstr "Поклапање само _целих речи" - -#~ msgid "_Wrap around" -#~ msgstr "У _круг" - -#~ msgid "Diff" -#~ msgstr "Разлике" - -#~ msgid "Hide..." -#~ msgstr "Сакриј..." - -#~ msgid "Left" -#~ msgstr "Лево" - -#~ msgid "Right" -#~ msgstr "Десно" - -# bug: plural-forms -#~ msgid " spaces." -#~ msgstr " размака." - -#~ msgid "(gnome-default-editor)" -#~ msgstr "(подразумевани-уређивач-гнома)" - -#~ msgid "Drawing Style" -#~ msgstr "Стил исцртавања" - -#~ msgid "Edit Menu" -#~ msgstr "Мени за уређивање" - -#~ msgid "Font" -#~ msgstr "Фонт" - -#~ msgid "Global options" -#~ msgstr "Опште опције" - -#~ msgid "Loading" -#~ msgstr "Учитавање" - -#~ msgid "Misc" -#~ msgstr "Разно" - -#~ msgid "Saving" -#~ msgstr "Чување" - -#~ msgid "Toolbar Appearance" -#~ msgstr "Изглед алатки" - -#~ msgid "Update Options" -#~ msgstr "Опције допуњавања" - -#~ msgid "Whitespace" -#~ msgstr "Белине" - -#~ msgid "Binary Files" -#~ msgstr "Бинарне датотеке" - -#~ msgid "CVS" -#~ msgstr "CVS" - -#~ msgid "Diff" -#~ msgstr "Разлике" - -#~ msgid "Display" -#~ msgstr "Приказ" - -#~ msgid "Editor" -#~ msgstr "Уређивач" - -#~ msgid "Encoding" -#~ msgstr "Кодирање" - -#~ msgid "File Filters" -#~ msgstr "Филтери датотека" - -#~ msgid "Text Filters" -#~ msgstr "Филтери текста" - -#~ msgid "Automatically supply missing newline at end of file." -#~ msgstr "Сам додај недостајући нови-ред на крају датотеке." - -#~ msgid "" -#~ "Binary files do not have text filters applied to them when comparing." -#~ msgstr "На бинарне датотеке се не примењују филтери текста при поређењу." - -#~ msgid "CVS" -#~ msgstr "CVS" - -#~ msgid "CVS binary" -#~ msgstr "CVS програм" - -#~ msgid "CVS view" -#~ msgstr "CVS преглед" - -#~ msgid "" -#~ "Choose how the central bar of the diff viewer is drawn. You may wish to " -#~ "choose a simpler mode if you find scrolling is slow." -#~ msgstr "" -#~ "Изаберите како се исцртава централна трака приказивања разлика. Можете " -#~ "желети да изаберете једноставнији начин ако је клизање споро." - -#~ msgid "Copyright (C) 2002 Stephen Kennedy" -#~ msgstr "Сва права задржана © 2002 Стифен Кенеди (Stephen Kennedy)" - -#~ msgid "Create missing directories (-d)" -#~ msgstr "Направи недостајуће директоријуме (-d)" - -#~ msgid "Curved : Filled Curves" -#~ msgstr "Крива : испуњене криве" - -#~ msgid "Edit menu popup invokes" -#~ msgstr "Искачући прозор менија за уређивање покреће" - -#~ msgid "Gnome Default" -#~ msgstr "Подразумевано у Гному" - -#~ msgid "Icons Only" -#~ msgstr "Само слике" - -#~ msgid "Ignore .cvsrc (-f)" -#~ msgstr "Занемари .cvsrc (-f)" - -#~ msgid "Ignore changes in amount of white space" -#~ msgstr "Занемари измене количине белина" - -#~ msgid "" -#~ "Ignore changes in case; consider upper and lower-case letters equivalent" -#~ msgstr "" -#~ "Занемари измене величине слова; сматрај велика и мала слова једнаким" - -#~ msgid "Locate CVS binary : Meld" -#~ msgstr "Пронађи CVS програм : Мелд" - -#~ msgid "Prune empty directories (-P)" -#~ msgstr "Обриши празне директоријуме (-P)" - -#~ msgid "Quiet mode (-q)" -#~ msgstr "Тихи режим (-q)" - -#~ msgid "Save File 1" -#~ msgstr "Сачувај 1. датотеку" - -#~ msgid "Save File 2" -#~ msgstr "Сачувај 2. датотеку" - -#~ msgid "Save File 3" -#~ msgstr "Сачувај 3. датотеку" - -#~ msgid "Save in UTF-8 encoding" -#~ msgstr "Сачувај са УТФ-8 кодирањем" - -#~ msgid "Save in the files original encoding" -#~ msgstr "Сачувај датотеке са изворним кодирањем" - -#~ msgid "Simple : Lines only" -#~ msgstr "Једноставно : само линије" - -# bug: missing colon ":", s/quadilaterals/quadrilaterals/ -#~ msgid "Solid Filled Quadilaterals" -#~ msgstr "Испуњено : испуњени правоугаоници" - -#~ msgid "Tabs equivalent to " -#~ msgstr "Табулатори су истоветни са " - -#~ msgid "Text Beside Icons" -#~ msgstr "Текст поред икона" - -#~ msgid "Text Only" -#~ msgstr "Само текст" - -#~ msgid "Text Under Icons" -#~ msgstr "Текст испод икона" - -#~ msgid "Two way directory" -#~ msgstr "Двосмерни директоријум" - -#~ msgid "Two way file" -#~ msgstr "Двосмерна датотека" - -#~ msgid "Use Compression (-z)" -#~ msgstr "Користи сажимање (-z)" - -#~ msgid "Use GNOME monospace font." -#~ msgstr "Користи Гномов фонт утврђене ширине." - -#~ msgid "Use custom font." -#~ msgstr "Користи посебан фонт." - -#~ msgid "Whitespace is significant" -#~ msgstr "Белине су битне" - -#~ msgid "_Binary Files" -#~ msgstr "_Бинарне датотеке" - -#~ msgid "_Logo" -#~ msgstr "_Логотип" - -#~ msgid "_Save" -#~ msgstr "_Сачувај" - -#~ msgid "http://meld.sourceforge.net" -#~ msgstr "http://meld.sourceforge.net" - -#~ msgid "utf8 iso8859" -#~ msgstr "utf8 iso8859-5 iso8859-2 iso8859" - -#~ msgid "window1" -#~ msgstr "прозор1" - -#~ msgid "Recurse" -#~ msgstr "Рекурзивно" +msgid "Error removing %s" +msgstr "Грешка при уклањању „%s“" diff -Nru meld-1.5.3/po/tr.po meld-3.11.0/po/tr.po --- meld-1.5.3/po/tr.po 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/po/tr.po 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,1980 @@ +# Turkish (Turkey) translation for Meld +# Copyright (C) 2004 THE meld'S COPYRIGHT HOLDER +# This file is distributed under the same license as the meld package. +# Özgür Sarıer , 2013. +# Muhammet Kara , 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: meld 1.7.3\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-09-27 22:07+0000\n" +"PO-Revision-Date: 2013-09-29 09:39+0300\n" +"Last-Translator: Muhammet Kara \n" +"Language-Team: Türkçe \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 2.91.6\n" + +#: ../bin/meld:121 +msgid "Cannot import: " +msgstr "İçe aktarılamıyor: " + +#: ../bin/meld:124 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld %s veya üstünü gerektirir." + +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:2 +msgid "Diff Viewer" +msgstr "Fark Görüntüleyicisi" + +#: ../data/meld.desktop.in.h:3 +msgid "Meld Diff Viewer" +msgstr "Meld Fark Görüntüleyicisi" + +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "Dosyalarınızı karşılaştırın ve birleştirin" + +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 +msgid "_Compare" +msgstr "_Karşılaştır" + +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:7 +msgid "Delete selected" +msgstr "Seçileni Sil" + +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1379 +msgid "Hide" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:9 +msgid "Hide selected" +msgstr "Seçileni gizle" + +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:12 +msgid "Same" +msgstr "Benzer" + +#: ../data/ui/dirdiff.ui.h:13 +msgid "Show identical" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:14 +msgid "New" +msgstr "Yeni" + +#: ../data/ui/dirdiff.ui.h:15 +msgid "Show new" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:16 +msgid "Modified" +msgstr "Değiştirilmiş" + +#: ../data/ui/dirdiff.ui.h:17 +msgid "Show modified" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:18 +msgid "Filters" +msgstr "" + +#: ../data/ui/dirdiff.ui.h:19 +msgid "Set active filters" +msgstr "" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "Etkin" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column Name" +msgstr "Sütun İsmi" + +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "_Ekle" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:644 +msgid "_Remove" +msgstr "_Kaldır" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:324 +#: ../meld/vcview.py:174 +msgid "Name" +msgstr "İsim" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "Örüntü" + +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "Yeni süzgeç ekle" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "Seçili süzgeci kaldır" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "Kapatmadan önce değişiklikleri belgeye kaydet?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "Kaydetmezseniz değişiklikler kaybolacaktır." + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "Kaydet_meden Kapat" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "_İptal" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "_Kaydet" + +#: ../data/ui/filediff.ui.h:6 +msgid "Revert unsaved changes to documents?" +msgstr "" + +#: ../data/ui/filediff.ui.h:7 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "Aşağıdaki belgelerde yapılan değişiklikler kaybolacak:\n" + +#: ../data/ui/filediff.ui.h:9 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"Bu dosyaya yazılamıyor. Buraya tıklayarak dosyanın kilidini açabilir ve buna " +"rağmen değişiklikler yapabilirsiniz, fakat bu değişikler yeni bir dosyaya " +"kaydedilmek zorundadır." + +#: ../data/ui/filediff.ui.h:10 ../meld/filediff.py:299 +msgid "Lock scrolling of all panes" +msgstr "" + +#: ../data/ui/findbar.ui.h:1 +msgid "_Replace" +msgstr "" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "_Önceki" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "_Sonraki" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "Bul:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "İle _değiştir:" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match case" +msgstr "" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular e_xpression" +msgstr "" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "" + +#: ../data/ui/meldapp.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" + +#: ../data/ui/meldapp.ui.h:4 +msgid "" +"Meld 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.\n" +"\n" +"Meld 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. \n" +"\n" +"You should have received a copy of the GNU General Public License along with " +"this program. If not, see ." +msgstr "" + +#: ../data/ui/meldapp.ui.h:9 +msgid "translator-credits" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Format as Patch" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Use differences between:" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Left and middle panes" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Middle and right panes" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "Panoya Kopyala" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:124 +msgid "Save Patch" +msgstr "" + +#: ../data/ui/preferences.ui.h:1 +msgid "Left is remote, right is local" +msgstr "" + +#: ../data/ui/preferences.ui.h:2 +msgid "Left is local, right is remote" +msgstr "" + +#: ../data/ui/preferences.ui.h:3 +msgid "Meld Preferences" +msgstr "" + +#: ../data/ui/preferences.ui.h:4 +msgid "Font" +msgstr "" + +#: ../data/ui/preferences.ui.h:5 +msgid "_Use the system fixed width font" +msgstr "" + +#: ../data/ui/preferences.ui.h:6 +msgid "_Editor font:" +msgstr "" + +#: ../data/ui/preferences.ui.h:7 +msgid "Display" +msgstr "Görünüm" + +#: ../data/ui/preferences.ui.h:8 +msgid "_Tab width:" +msgstr "" + +#: ../data/ui/preferences.ui.h:9 +msgid "_Insert spaces instead of tabs" +msgstr "" + +#: ../data/ui/preferences.ui.h:10 +msgid "Enable text _wrapping" +msgstr "" + +#: ../data/ui/preferences.ui.h:11 +msgid "Do not _split words over two lines" +msgstr "" + +#: ../data/ui/preferences.ui.h:12 +msgid "Highlight _current line" +msgstr "" + +#: ../data/ui/preferences.ui.h:13 +msgid "Show _line numbers" +msgstr "" + +#: ../data/ui/preferences.ui.h:14 +msgid "Show w_hitespace" +msgstr "" + +#: ../data/ui/preferences.ui.h:15 +msgid "Use s_yntax highlighting" +msgstr "" + +#: ../data/ui/preferences.ui.h:16 +msgid "External Editor" +msgstr "" + +#: ../data/ui/preferences.ui.h:17 +msgid "Use _default system editor" +msgstr "" + +#: ../data/ui/preferences.ui.h:18 +msgid "Edito_r command:" +msgstr "" + +#: ../data/ui/preferences.ui.h:19 +msgid "Editor" +msgstr "Düzenleyici" + +#: ../data/ui/preferences.ui.h:20 +msgid "Shallow Comparison" +msgstr "" + +#: ../data/ui/preferences.ui.h:21 +msgid "C_ompare files based only on size and timestamp" +msgstr "" + +#: ../data/ui/preferences.ui.h:22 +msgid "_Timestamp resolution:" +msgstr "" + +#: ../data/ui/preferences.ui.h:23 +msgid "Symbolic Links" +msgstr "" + +#: ../data/ui/preferences.ui.h:24 +msgid "Ignore symbolic links" +msgstr "Simgesel bağlantıları yoksay" + +#: ../data/ui/preferences.ui.h:25 +msgid "Visible Columns" +msgstr "" + +#: ../data/ui/preferences.ui.h:26 +msgid "Folder Comparisons" +msgstr "" + +#: ../data/ui/preferences.ui.h:27 +msgid "Version Comparisons" +msgstr "" + +#: ../data/ui/preferences.ui.h:28 +msgid "_When comparing file revisions:" +msgstr "" + +#: ../data/ui/preferences.ui.h:29 +msgid "Commit Messages" +msgstr "" + +#: ../data/ui/preferences.ui.h:30 +msgid "Show _right margin at:" +msgstr "" + +#: ../data/ui/preferences.ui.h:31 +msgid "Automatically _break lines at right margin on commit" +msgstr "" + +#: ../data/ui/preferences.ui.h:32 +msgid "Version Control" +msgstr "" + +#: ../data/ui/preferences.ui.h:33 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" + +#: ../data/ui/preferences.ui.h:34 ../meld/meldwindow.py:122 +msgid "File Filters" +msgstr "" + +#: ../data/ui/preferences.ui.h:35 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" + +#: ../data/ui/preferences.ui.h:36 +msgid "Ignore changes which insert or delete blank lines" +msgstr "" + +#: ../data/ui/preferences.ui.h:37 +msgid "Text Filters" +msgstr "" + +#: ../data/ui/preferences.ui.h:38 +msgid "Loading" +msgstr "" + +#: ../data/ui/preferences.ui.h:39 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "" + +#: ../data/ui/preferences.ui.h:40 +msgid "Encoding" +msgstr "Kodlama" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:681 +msgid "New comparison" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "Sürüm denetim görünümü" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "K_arşılaştır" + +#: ../data/ui/vcview.ui.h:3 +msgid "Co_mmit..." +msgstr "" + +#: ../data/ui/vcview.ui.h:4 +msgid "Commit changes to version control" +msgstr "" + +#: ../data/ui/vcview.ui.h:5 +msgid "_Update" +msgstr "" + +#: ../data/ui/vcview.ui.h:6 +msgid "Update working copy from version control" +msgstr "" + +#: ../data/ui/vcview.ui.h:7 +msgid "_Push" +msgstr "" + +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "" + +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "" + +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "" + +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "" + +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "" + +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "" + +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "" + +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "" + +#: ../data/ui/vcview.ui.h:26 +msgid "Ignored" +msgstr "" + +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "" + +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "" + +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "" + +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "" + +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "" + +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "" + +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "" + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:342 +msgid "Size" +msgstr "" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:350 +msgid "Modification time" +msgstr "" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:358 +msgid "Permissions" +msgstr "" + +#: ../meld/dirdiff.py:492 +#, python-format +msgid "Hide %s" +msgstr "" + +#: ../meld/dirdiff.py:618 ../meld/dirdiff.py:637 +#, python-format +msgid "[%s] Scanning %s" +msgstr "" + +#: ../meld/dirdiff.py:737 +#, python-format +msgid "[%s] Done" +msgstr "" + +#: ../meld/dirdiff.py:743 +msgid "Multiple errors occurred while scanning this folder" +msgstr "" + +#: ../meld/dirdiff.py:744 +msgid "Files with invalid encodings found" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:746 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "" + +#: ../meld/dirdiff.py:748 +msgid "Files hidden by case insensitive comparison" +msgstr "" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:750 +msgid "" +"You are running a case insensitive comparison on a case sensitive " +"filesystem. The following files in this folder are hidden:" +msgstr "" +"Büyük/küçük harf duyarlı bir dosya sisteminde büyük/küçük harf duyarsız bir " +"karşılaştırma yapmaktasınız. Bu klasördeki bazı dosyalar gizlidir:" + +#: ../meld/dirdiff.py:761 +#, python-format +msgid "'%s' hidden by '%s'" +msgstr "" + +#: ../meld/dirdiff.py:786 ../meld/filediff.py:1095 ../meld/filediff.py:1381 +#: ../meld/filediff.py:1411 ../meld/filediff.py:1413 +msgid "Hi_de" +msgstr "" + +#: ../meld/dirdiff.py:817 +#, python-format +msgid "" +"'%s' exists.\n" +"Overwrite?" +msgstr "" +"'%s' mevcut.\n" +"Üzerine yazılsın mı?" + +#: ../meld/dirdiff.py:825 +msgid "Error copying file" +msgstr "" + +#: ../meld/dirdiff.py:826 +#, fuzzy, python-format +#| msgid "" +#| "Error copying '%s' to '%s'\n" +#| "\n" +#| "%s." +msgid "" +"Couldn't copy %s\n" +"to %s.\n" +"\n" +"%s" +msgstr "" +"'%s' , '%s' içine kopyalanırken hata\n" +"\n" +"%s." + +#: ../meld/dirdiff.py:849 +#, fuzzy, python-format +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error deleting %s" +msgstr "" +"Şunu kaldırırken hata %s\n" +"\n" +"%s." + +#: ../meld/dirdiff.py:980 +#, python-format +msgid "%i second" +msgid_plural "%i seconds" +msgstr[0] "%i saniye" + +#: ../meld/dirdiff.py:981 +#, python-format +msgid "%i minute" +msgid_plural "%i minutes" +msgstr[0] "%i dakika" + +#: ../meld/dirdiff.py:982 +#, python-format +msgid "%i hour" +msgid_plural "%i hours" +msgstr[0] "%i saat" + +#: ../meld/dirdiff.py:983 +#, python-format +msgid "%i day" +msgid_plural "%i days" +msgstr[0] "%i gün" + +#: ../meld/dirdiff.py:984 +#, python-format +msgid "%i week" +msgid_plural "%i weeks" +msgstr[0] "%i hafta" + +#: ../meld/dirdiff.py:985 +#, python-format +msgid "%i month" +msgid_plural "%i months" +msgstr[0] "%i ay" + +#: ../meld/dirdiff.py:986 +#, python-format +msgid "%i year" +msgid_plural "%i years" +msgstr[0] "%i yıl" + +#: ../meld/filediff.py:227 +msgid "Format as Patch..." +msgstr "" + +#: ../meld/filediff.py:228 +msgid "Create a patch using differences between files" +msgstr "" + +#: ../meld/filediff.py:230 +msgid "Save A_ll" +msgstr "" + +#: ../meld/filediff.py:231 +msgid "Save all files in the current comparison" +msgstr "" + +#: ../meld/filediff.py:234 +msgid "Revert files to their saved versions" +msgstr "" + +#: ../meld/filediff.py:236 +msgid "Add Synchronization Point" +msgstr "" + +#: ../meld/filediff.py:237 +msgid "Add a manual point for synchronization of changes between files" +msgstr "" + +#: ../meld/filediff.py:240 +msgid "Clear Synchronization Points" +msgstr "" + +#: ../meld/filediff.py:241 +msgid "Clear manual change sychronization points" +msgstr "" + +#: ../meld/filediff.py:243 +msgid "Previous Conflict" +msgstr "" + +#: ../meld/filediff.py:244 +msgid "Go to the previous conflict" +msgstr "" + +#: ../meld/filediff.py:246 +msgid "Next Conflict" +msgstr "" + +#: ../meld/filediff.py:247 +msgid "Go to the next conflict" +msgstr "" + +#: ../meld/filediff.py:249 +msgid "Push to Left" +msgstr "" + +#: ../meld/filediff.py:250 +msgid "Push current change to the left" +msgstr "" + +#: ../meld/filediff.py:253 +msgid "Push to Right" +msgstr "" + +#: ../meld/filediff.py:254 +msgid "Push current change to the right" +msgstr "" + +#: ../meld/filediff.py:258 +msgid "Pull from Left" +msgstr "" + +#: ../meld/filediff.py:259 +msgid "Pull change from the left" +msgstr "" + +#: ../meld/filediff.py:262 +msgid "Pull from Right" +msgstr "" + +#: ../meld/filediff.py:263 +msgid "Pull change from the right" +msgstr "" + +#: ../meld/filediff.py:265 +msgid "Copy Above Left" +msgstr "" + +#: ../meld/filediff.py:266 +msgid "Copy change above the left chunk" +msgstr "" + +#: ../meld/filediff.py:268 +msgid "Copy Below Left" +msgstr "" + +#: ../meld/filediff.py:269 +msgid "Copy change below the left chunk" +msgstr "" + +#: ../meld/filediff.py:271 +msgid "Copy Above Right" +msgstr "" + +#: ../meld/filediff.py:272 +msgid "Copy change above the right chunk" +msgstr "" + +#: ../meld/filediff.py:274 +msgid "Copy Below Right" +msgstr "" + +#: ../meld/filediff.py:275 +msgid "Copy change below the right chunk" +msgstr "" + +#: ../meld/filediff.py:277 +msgid "Delete" +msgstr "" + +#: ../meld/filediff.py:278 +msgid "Delete change" +msgstr "" + +#: ../meld/filediff.py:280 +msgid "Merge All from Left" +msgstr "" + +#: ../meld/filediff.py:281 +msgid "Merge all non-conflicting changes from the left" +msgstr "" + +#: ../meld/filediff.py:283 +msgid "Merge All from Right" +msgstr "" + +#: ../meld/filediff.py:284 +msgid "Merge all non-conflicting changes from the right" +msgstr "" + +#: ../meld/filediff.py:286 +msgid "Merge All" +msgstr "" + +#: ../meld/filediff.py:287 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "" + +#: ../meld/filediff.py:291 +msgid "Cycle Through Documents" +msgstr "" + +#: ../meld/filediff.py:292 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "" + +#: ../meld/filediff.py:298 +msgid "Lock Scrolling" +msgstr "" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:420 +msgid "INS" +msgstr "" + +#: ../meld/filediff.py:420 +msgid "OVR" +msgstr "" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:422 +#, python-format +msgid "Ln %i, Col %i" +msgstr "" + +#: ../meld/filediff.py:757 +#, python-format +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" + +#: ../meld/filediff.py:1083 +#, python-format +msgid "[%s] Set num panes" +msgstr "" + +#: ../meld/filediff.py:1089 +#, python-format +msgid "[%s] Opening files" +msgstr "" + +#: ../meld/filediff.py:1112 ../meld/filediff.py:1122 ../meld/filediff.py:1135 +#: ../meld/filediff.py:1141 +msgid "Could not read file" +msgstr "" + +#: ../meld/filediff.py:1113 +#, python-format +msgid "[%s] Reading files" +msgstr "" + +#: ../meld/filediff.py:1123 +#, python-format +msgid "%s appears to be a binary file." +msgstr "" + +#: ../meld/filediff.py:1136 +#, python-format +msgid "%s is not in encodings: %s" +msgstr "" + +#: ../meld/filediff.py:1170 +#, python-format +msgid "[%s] Computing differences" +msgstr "" + +#: ../meld/filediff.py:1370 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" + +#: ../meld/filediff.py:1376 +msgid "Files are identical" +msgstr "" + +#: ../meld/filediff.py:1384 +msgid "Show without filters" +msgstr "" + +#: ../meld/filediff.py:1406 +msgid "Change highlighting incomplete" +msgstr "" + +#: ../meld/filediff.py:1407 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" + +#: ../meld/filediff.py:1415 +msgid "Keep highlighting" +msgstr "" + +#: ../meld/filediff.py:1417 +msgid "_Keep highlighting" +msgstr "" + +#: ../meld/filediff.py:1549 +#, python-format +msgid "" +"\"%s\" exists!\n" +"Overwrite?" +msgstr "" + +#: ../meld/filediff.py:1562 +#, python-format +msgid "" +"Error writing to %s\n" +"\n" +"%s." +msgstr "" +"%s'e yazarken hata\n" +"\n" +"%s." + +#: ../meld/filediff.py:1573 +msgid "Save Left Pane As" +msgstr "" + +#: ../meld/filediff.py:1575 +msgid "Save Middle Pane As" +msgstr "" + +#: ../meld/filediff.py:1577 +msgid "Save Right Pane As" +msgstr "" + +#: ../meld/filediff.py:1598 +#, python-format +msgid "" +"This file '%s' contains a mixture of line endings.\n" +"\n" +"Which format would you like to use?" +msgstr "" + +#: ../meld/filediff.py:1614 +#, python-format +msgid "" +"'%s' contains characters not encodable with '%s'\n" +"Would you like to save as UTF-8?" +msgstr "" + +#: ../meld/filediff.py:1982 +msgid "Live comparison updating disabled" +msgstr "" + +#: ../meld/filediff.py:1983 +msgid "" +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." +msgstr "" + +#: ../meld/filemerge.py:51 +#, python-format +msgid "[%s] Merging files" +msgstr "" + +#: ../meld/meldapp.py:95 +msgid "wrong number of arguments supplied to --diff" +msgstr "" + +#: ../meld/meldapp.py:99 +msgid "Start with an empty window" +msgstr "" + +#: ../meld/meldapp.py:100 ../meld/meldapp.py:102 ../meld/meldapp.py:106 +msgid "file" +msgstr "file" + +#: ../meld/meldapp.py:100 ../meld/meldapp.py:104 ../meld/meldapp.py:106 +msgid "dir" +msgstr "" + +#: ../meld/meldapp.py:101 +msgid "Start a version control comparison" +msgstr "" + +#: ../meld/meldapp.py:103 +msgid "Start a 2- or 3-way file comparison" +msgstr "" + +#: ../meld/meldapp.py:105 +msgid "Start a 2- or 3-way directory comparison" +msgstr "" + +#: ../meld/meldapp.py:107 +msgid "Start a comparison between file and dir/file" +msgstr "" + +#: ../meld/meldapp.py:114 +msgid "Meld is a file and directory comparison tool." +msgstr "" + +#: ../meld/meldapp.py:117 +msgid "Set label to use instead of file name" +msgstr "" + +#: ../meld/meldapp.py:119 +msgid "Open a new tab in an already running instance" +msgstr "" + +#: ../meld/meldapp.py:122 +msgid "Automatically compare all differing files on startup" +msgstr "" + +#: ../meld/meldapp.py:124 +msgid "Ignored for compatibility" +msgstr "" + +#: ../meld/meldapp.py:127 +msgid "Set the target file for saving a merge result" +msgstr "" + +#: ../meld/meldapp.py:129 +msgid "Automatically merge files" +msgstr "" + +#: ../meld/meldapp.py:132 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "" + +#: ../meld/meldapp.py:135 +msgid "Create a diff tab for the supplied files or folders" +msgstr "" + +#: ../meld/meldapp.py:138 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "" + +#: ../meld/meldapp.py:141 +msgid "can't auto-merge less than 3 files" +msgstr "" + +#: ../meld/meldapp.py:143 +msgid "can't auto-merge directories" +msgstr "" + +#: ../meld/meldapp.py:149 +msgid "D-Bus error; comparisons will open in a new window." +msgstr "" + +#: ../meld/meldapp.py:167 +msgid "Error reading saved comparison file" +msgstr "" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:89 +msgid "" +msgstr "" + +#: ../meld/melddoc.py:58 ../meld/melddoc.py:59 +msgid "untitled" +msgstr "" + +#: ../meld/meldwindow.py:61 +msgid "_File" +msgstr "" + +#: ../meld/meldwindow.py:62 +msgid "_New Comparison..." +msgstr "" + +#: ../meld/meldwindow.py:63 +msgid "Start a new comparison" +msgstr "" + +#: ../meld/meldwindow.py:66 +msgid "Save the current file" +msgstr "" + +#: ../meld/meldwindow.py:68 +msgid "Save As..." +msgstr "" + +#: ../meld/meldwindow.py:69 +msgid "Save the current file with a different name" +msgstr "" + +#: ../meld/meldwindow.py:72 +msgid "Close the current file" +msgstr "" + +#: ../meld/meldwindow.py:75 +msgid "Quit the program" +msgstr "" + +#: ../meld/meldwindow.py:78 +msgid "_Edit" +msgstr "" + +#: ../meld/meldwindow.py:80 +msgid "Undo the last action" +msgstr "" + +#: ../meld/meldwindow.py:83 +msgid "Redo the last undone action" +msgstr "" + +#: ../meld/meldwindow.py:85 +msgid "Cut the selection" +msgstr "" + +#: ../meld/meldwindow.py:87 +msgid "Copy the selection" +msgstr "" + +#: ../meld/meldwindow.py:89 +msgid "Paste the clipboard" +msgstr "" + +#: ../meld/meldwindow.py:91 +msgid "Find..." +msgstr "" + +#: ../meld/meldwindow.py:91 +msgid "Search for text" +msgstr "" + +#: ../meld/meldwindow.py:93 +msgid "Find Ne_xt" +msgstr "" + +#: ../meld/meldwindow.py:94 +msgid "Search forwards for the same text" +msgstr "" + +#: ../meld/meldwindow.py:96 +msgid "Find _Previous" +msgstr "" + +#: ../meld/meldwindow.py:97 +msgid "Search backwards for the same text" +msgstr "" + +#: ../meld/meldwindow.py:100 +msgid "_Replace..." +msgstr "" + +#: ../meld/meldwindow.py:101 +msgid "Find and replace text" +msgstr "" + +#: ../meld/meldwindow.py:103 +msgid "Prefere_nces" +msgstr "" + +#: ../meld/meldwindow.py:104 +msgid "Configure the application" +msgstr "" + +#: ../meld/meldwindow.py:107 +msgid "_Changes" +msgstr "" + +#: ../meld/meldwindow.py:108 +msgid "Next Change" +msgstr "" + +#: ../meld/meldwindow.py:109 +msgid "Go to the next change" +msgstr "" + +#: ../meld/meldwindow.py:111 +msgid "Previous Change" +msgstr "" + +#: ../meld/meldwindow.py:112 +msgid "Go to the previous change" +msgstr "" + +#: ../meld/meldwindow.py:114 +msgid "Open Externally" +msgstr "" + +#: ../meld/meldwindow.py:115 +msgid "Open selected file or directory in the default external application" +msgstr "" + +#: ../meld/meldwindow.py:119 +msgid "_View" +msgstr "" + +#: ../meld/meldwindow.py:120 +msgid "File Status" +msgstr "" + +#: ../meld/meldwindow.py:121 +msgid "Version Status" +msgstr "" + +#: ../meld/meldwindow.py:124 +msgid "Stop the current action" +msgstr "" + +#: ../meld/meldwindow.py:127 +msgid "Refresh the view" +msgstr "" + +#: ../meld/meldwindow.py:130 +msgid "_Tabs" +msgstr "" + +#: ../meld/meldwindow.py:131 +msgid "_Previous Tab" +msgstr "" + +#: ../meld/meldwindow.py:132 +msgid "Activate previous tab" +msgstr "" + +#: ../meld/meldwindow.py:134 +msgid "_Next Tab" +msgstr "" + +#: ../meld/meldwindow.py:135 +msgid "Activate next tab" +msgstr "" + +#: ../meld/meldwindow.py:138 +msgid "Move Tab _Left" +msgstr "" + +#: ../meld/meldwindow.py:139 +msgid "Move current tab to left" +msgstr "" + +#: ../meld/meldwindow.py:142 +msgid "Move Tab _Right" +msgstr "" + +#: ../meld/meldwindow.py:143 +msgid "Move current tab to right" +msgstr "" + +#: ../meld/meldwindow.py:146 +msgid "_Help" +msgstr "_Yardım" + +#: ../meld/meldwindow.py:147 +msgid "_Contents" +msgstr "" + +#: ../meld/meldwindow.py:148 +msgid "Open the Meld manual" +msgstr "" + +#: ../meld/meldwindow.py:149 +msgid "Report _Bug" +msgstr "Hata _Bildir" + +#: ../meld/meldwindow.py:150 +msgid "Report a bug in Meld" +msgstr "" + +#: ../meld/meldwindow.py:153 +msgid "About this program" +msgstr "" + +#: ../meld/meldwindow.py:157 +msgid "Fullscreen" +msgstr "Tam Ekran" + +#: ../meld/meldwindow.py:158 +msgid "View the comparison in fullscreen" +msgstr "Karşılaştırmayı tam ekran görüntüle" + +#: ../meld/meldwindow.py:160 +msgid "_Toolbar" +msgstr "" + +#: ../meld/meldwindow.py:161 +msgid "Show or hide the toolbar" +msgstr "" + +#: ../meld/meldwindow.py:163 +msgid "_Statusbar" +msgstr "Durum _Çubuğu" + +#: ../meld/meldwindow.py:164 +msgid "Show or hide the statusbar" +msgstr "Durum çubuğunu göster veya gizle" + +#: ../meld/meldwindow.py:173 +msgid "Open Recent" +msgstr "En Son Açılanlar" + +#: ../meld/meldwindow.py:174 +msgid "Open recent files" +msgstr "Son açılan dosyaları aç" + +#: ../meld/meldwindow.py:601 +msgid "Switch to this tab" +msgstr "Bu sekmeye geçiş yap" + +#. exit at first non found directory + file +#: ../meld/meldwindow.py:734 +msgid "Cannot compare a mixture of files and directories.\n" +msgstr "" + +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:189 +msgid "[None]" +msgstr "" + +#: ../meld/preferences.py:49 +msgid "label" +msgstr "etiket" + +#: ../meld/preferences.py:49 +msgid "pattern" +msgstr "örüntü" + +#: ../meld/preferences.py:168 ../meld/preferences.py:240 +msgid "Only available if you have PyGtkSourceView 2 installed" +msgstr "Ancak PyGtkSourceView 2 yüklü olursa kullanılabilir" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:356 +msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +msgstr "Yedekler\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:358 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:360 +#, python-format +msgid "Version Control\t1\t%s\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:362 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:364 +msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:366 +msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:368 +msgid "C++ comment\t0\t//.*\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:370 +msgid "C comment\t0\t/\\*.*?\\*/\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:372 +msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:374 +msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +msgstr "" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:376 +msgid "Script comment\t0\t#.*" +msgstr "" + +#: ../meld/recent.py:104 +msgid "Version control:" +msgstr "" + +#: ../meld/vcview.py:205 ../meld/vcview.py:363 +msgid "Location" +msgstr "Konum" + +#: ../meld/vcview.py:206 +msgid "Status" +msgstr "Durum" + +#: ../meld/vcview.py:207 +msgid "Revision" +msgstr "" + +#: ../meld/vcview.py:208 +msgid "Options" +msgstr "Seçenekler" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:273 +#, python-format +msgid "%s not installed" +msgstr "%s yüklü değil" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:277 +msgid "Invalid repository" +msgstr "Geçersiz depo" + +#: ../meld/vcview.py:286 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: ../meld/vcview.py:288 ../meld/vcview.py:296 +msgid "None" +msgstr "" + +#: ../meld/vcview.py:307 +msgid "No valid version control system found in this folder" +msgstr "Bu klasörde geçerli bir sürüm denetim sistemi bulunamadı" + +#: ../meld/vcview.py:309 +msgid "Only one version control system found in this folder" +msgstr "Bu klasörde sadece bir sürüm denetim sistemi bulundu" + +#: ../meld/vcview.py:311 +msgid "Choose which version control system to use" +msgstr "Hangi sürüm denetim sistemini kullanacağınızı seçin" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:363 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" + +#: ../meld/vcview.py:377 ../meld/vcview.py:385 +#, python-format +msgid "Scanning %s" +msgstr "%s taranıyor" + +#: ../meld/vcview.py:418 +msgid "(Empty)" +msgstr "" + +#: ../meld/vcview.py:638 +#, fuzzy +msgid "Remove folder and all its files?" +msgstr "Klasörü ve tüm dosyaları?" + +#: ../meld/vcview.py:640 +#, fuzzy +msgid "" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." +msgstr "" +"Bu işlem, sürüm denetim sisteminden tüm seçili dosya ve klasörleri, ve " +"seçili herhangi bir klasör içindeki tüm dosyaları kaldıracak." + +#: ../meld/vcview.py:674 +#, fuzzy, python-format +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error removing %s" +msgstr "" +"Şunu kaldırırken hata %s\n" +"\n" +"%s." + +#: ../meld/ui/findbar.py:143 +msgid "Regular expression error" +msgstr "" + +#: ../meld/ui/historyentry.py:381 +msgid "_Browse..." +msgstr "" + +#: ../meld/ui/historyentry.py:389 +#, fuzzy +msgid "Path" +msgstr "Yama" + +#: ../meld/ui/historyentry.py:390 +msgid "Path to file" +msgstr "" + +#: ../meld/ui/historyentry.py:391 +msgid "Pop up a file selector to choose a file" +msgstr "" + +#: ../meld/ui/historyentry.py:529 +msgid "Select directory" +msgstr "Dizin seç" + +#: ../meld/ui/historyentry.py:533 +msgid "Select file" +msgstr "Dosya seç" + +#: ../meld/ui/notebooklabel.py:63 +msgid "Close tab" +msgstr "Sekmeyi kapat" + +#: ../meld/ui/vcdialogs.py:57 +msgid "No files will be committed" +msgstr "" + +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "" + +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "" + +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "Yerel" + +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "Uzak" + +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:62 +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" +msgstr "" + +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "" + +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "" +msgstr[1] "" + +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "" +msgstr[1] "" + +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "Kip %s'den %s'e değiştirildi" + +#~ msgid "Compare selected" +#~ msgstr "Seçileni karşılaştır" + +#~ msgid "The text '%s' was not found." +#~ msgstr "'%s' metni bulunamadı." + +#~ msgid "The error was:" +#~ msgstr "Hata:" + +#~ msgid "Save patch as..." +#~ msgstr "Yamayı farklı kaydet..." + +#~ msgid "Edit" +#~ msgstr "Düzenle" + +#~ msgid "Left" +#~ msgstr "Sol" + +#~ msgid "Right" +#~ msgstr "Sağ" + +#~ msgid "Match _entire word only" +#~ msgstr "Sadece _tam kelimeyi eşleştir" + +#~ msgid "CVS" +#~ msgstr "CVS" + +#~ msgid "CVS binary" +#~ msgstr "CVS ikili" + +#~ msgid "Choose Files" +#~ msgstr "Dosyaları Seç" + +#~ msgid "" +#~ "Choose how the central bar of the diff viewer is drawn. You may wish to " +#~ "choose a simpler mode if you find scrolling is slow." +#~ msgstr "" +#~ "Merkezi çubuğun nasıl görüntüleceğini seçin. Kaydırma işlemini yavaş " +#~ "buluyorsanız basit kipi tercih edebilirsiniz." + +#~ msgid "Copyright (C) 2002-2006 Stephen Kennedy" +#~ msgstr "Telif Hakkı (C) 2002-2006 Stephen Kennedy" + +#~ msgid "Create missing directories (-d)" +#~ msgstr "Eksik dizinleri oluştur (-d)" + +#~ msgid "Directory" +#~ msgstr "Dizin" + +#~ msgid "Icons Only" +#~ msgstr "Sadece Simgeler" + +#~ msgid "My Directory" +#~ msgstr "Dizinim" + +#~ msgid "Original" +#~ msgstr "Asıl" + +#~ msgid "Original Directory" +#~ msgstr "Asıl Dizin" + +#~ msgid "Original File" +#~ msgstr "Asıl Dosya" + +#~ msgid "Other" +#~ msgstr "Diğer" + +#~ msgid "Other Directory" +#~ msgstr "Diğer Dizin" + +#~ msgid "Other File" +#~ msgstr "Diğer Dosya" + +#~ msgid "Quiet mode (-q)" +#~ msgstr "Sessiz Kip (-q)" + +#~ msgid "Save in UTF-8 encoding" +#~ msgstr "UTF-8 kodlamasında kaydet" + +#~ msgid "Save in the files original encoding" +#~ msgstr "Dosyaları özgün kodlamasıyla kaydet" + +#, fuzzy +#~ msgid "Simple: Lines only" +#~ msgstr "Simple: Sadece satırlar" + +#~ msgid "Text Only" +#~ msgstr "Sadece Metin" + +#~ msgid "Text Under Icons" +#~ msgstr "Simgeler Altında Metin" + +#~ msgid "Three way directory" +#~ msgstr "Üç yönlü dizin" + +#~ msgid "Three way file" +#~ msgstr "Üç yönlü dosya" + +#~ msgid "Two way directory" +#~ msgstr "İki yönlü dizin" + +#~ msgid "Two way file" +#~ msgstr "İki yönlü dosya" + +#~ msgid "Use Compression (-z)" +#~ msgstr "Sıkıştırma Kullan (-z)" + +#~ msgid "Use custom font" +#~ msgstr "Özel font kullan" + +#~ msgid "_Logo" +#~ msgstr "_Simge" + +#~ msgid "_New..." +#~ msgstr "_Yeni.." + +#~ msgid "_Three Way Compare" +#~ msgstr "_Üç Yönlü Karşılaştırma" + +#~ msgid "Compare Options" +#~ msgstr "Karşılaştırma Seçenekleri" + +#~ msgid "Date" +#~ msgstr "Tarih" + +#~ msgid "" +#~ "Syntax highlighting is only available if you have gnome-python-desktop " +#~ "installed." +#~ msgstr "" +#~ "Söz dizimi vurgulama ancak gnome-python-desktop yüklü olursa gözükebilir." + +#~ msgid "" +#~ "Version Control\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory\n" +#~ msgstr "" +#~ "Sürüm Denetimi\t1\tCVS .svn MT [{]arch[}] .arch-ids .arch-inventory\n" + +#~ msgid "" +#~ "Meld %s\n" +#~ "Written by Stephen Kennedy " +#~ msgstr "" +#~ "Meld %s\n" +#~ "Stephen Kennedy tarafından yazılmıştır " + +#~ msgid "" +#~ "second,seconds:minute,minutes:hour,hours:day,days:week,weeks:month,months:" +#~ "year,years" +#~ msgstr "" +#~ "second,seconds:minute,minutes:hour,hours:day,days:week,weeks:month,months:" +#~ "year,years" + +#~ msgid "" +#~ "Could not open '%s' for reading.\n" +#~ "\n" +#~ "The error was:\n" +#~ "%s" +#~ msgstr "" +#~ "Could not open '%s' for reading.\n" +#~ "\n" +#~ "The error was:\n" +#~ "%s" + +#~ msgid "Meld requires a recent version of pygtk." +#~ msgstr "Meld requires a recent version of pygtk." + +#~ msgid "pygtk-%s or higher is recommended." +#~ msgstr "pygtk-%s or higher is recommended." + +#~ msgid "Meld works best with pygtk-%s or higher. (found %s)" +#~ msgstr "Meld works best with pygtk-%s or higher. (found %s)" + +#~ msgid "folder" +#~ msgstr "folder" + +#~ msgid "nonexistant" +#~ msgstr "nonexistant" + +#~ msgid "" +#~ "Meld is a file and directory comparison tool. Usage:\n" +#~ "\n" +#~ " meld Start with no windows open\n" +#~ " meld Start with CVS browser in 'dir'\n" +#~ " meld Start with CVS diff of 'file'\n" +#~ " meld [file] Start with 2 or 3 way file comparison\n" +#~ " meld [dir] Start with 2 or 3 way directory " +#~ "comparison\n" +#~ "\n" +#~ "For more information choose help -> contents.\n" +#~ "Report bugs at http://bugzilla.gnome.org/buglist.cgi?product=meld\n" +#~ "stevek@gnome.org\n" +#~ msgstr "" +#~ "Meld is a file and directory comparison tool. Usage:\n" +#~ "\n" +#~ " meld Start with no windows open\n" +#~ " meld Start with CVS browser in 'dir'\n" +#~ " meld Start with CVS diff of 'file'\n" +#~ " meld [file] Start with 2 or 3 way file comparison\n" +#~ " meld [dir] Start with 2 or 3 way directory " +#~ "comparison\n" +#~ "\n" +#~ "For more information choose help -> contents.\n" +#~ "Report bugs at http://bugzilla.gnome.org/buglist.cgi?product=meld\n" +#~ "stevek@gnome.org\n" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "Diff Options" +#~ msgstr "Diff Options" + +#~ msgid "Diff selected" +#~ msgstr "Diff selected" + +#~ msgid "Show non-CVS" +#~ msgstr "Show non-CVS" + +#~ msgid "_Diff" +#~ msgstr "_Diff" + +#~ msgid "Diff" +#~ msgstr "Diff" + +#~ msgid " spaces." +#~ msgstr " spaces." + +#~ msgid "Diff" +#~ msgstr "Diff" + +#~ msgid "CVS view" +#~ msgstr "CVS view" + +#~ msgid "Edit menu popup invokes" +#~ msgstr "Edit menu popup invokes" + +#~ msgid "New..." +#~ msgstr "New..." + +#~ msgid "SVN Directory" +#~ msgstr "SVN Directory" + +#~ msgid "SVN view" +#~ msgstr "SVN view" + +#~ msgid "Tabs equivalent to " +#~ msgstr "Tabs equivalent to " + +#~ msgid "_SVN Browser" +#~ msgstr "_SVN Browser" + +#~ msgid "http://meld.sourceforge.net" +#~ msgstr "http://meld.sourceforge.net" + +#~ msgid "utf8 iso8859" +#~ msgstr "utf8 iso8859" diff -Nru meld-1.5.3/po/vi.po meld-3.11.0/po/vi.po --- meld-1.5.3/po/vi.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/vi.po 2013-12-07 19:30:09.000000000 +0000 @@ -1,14 +1,16 @@ # Vietnamese translation for Meld. # Copyright © 2005-2006 Gnome i18n Project for Vietnamese. # Clytie Siddall , 2005-2006. -# +# Trương Ứng Minh , 2012. +# msgid "" -"" -msgstr "Project-Id-Version: meld 0.9 Gnome HEAD\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-04-10 12:15+0200\n" -"PO-Revision-Date: 2006-04-10 22:57+0930\n" -"Last-Translator: Clytie Siddall \n" +msgstr "" +"Project-Id-Version: meld 0.9 Gnome HEAD\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2011-12-09 23:15+0000\n" +"PO-Revision-Date: 2012-02-12 19:32+0700\n" +"Last-Translator: Trương Ứng Minh \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -16,1143 +18,1880 @@ "Plural-Forms: nplurals=1; plural=0\n" "X-Generator: LocFactoryEditor 1.6b36\n" -#:../dirdiff.py:252 ../dirdiff.py:267 -#,python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "Gặp lỗi khi chuyển đổi mẫu « %s » sang biểu thức chính quy." +#: ../bin/meld:96 +msgid "Cannot import: " +msgstr "Không thể nhập: " -#:../dirdiff.py:283 -#,python-format +#: ../bin/meld:99 +#, c-format +msgid "Meld requires %s or higher." +msgstr "Meld cần %s hay cao hơn." + +#: ../data/meld.desktop.in.h:1 +#| msgid "Compare and merge your files." +msgid "Compare and merge your files" +msgstr "So sánh và trộn các tập tin của bạn" + +#: ../data/meld.desktop.in.h:2 +#| msgid "Meld Diff Viewer" +msgid "Diff Viewer" +msgstr "Bộ so sánh sự khác biệt Meld" + +#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.ui.h:5 +msgid "Meld" +msgstr "Meld" + +#: ../data/meld.desktop.in.h:4 +msgid "Meld Diff Viewer" +msgstr "Bộ so sánh sự khác biệt Meld" + +#: ../data/ui/EditableList.ui.h:1 +msgid "Active" +msgstr "Hoạt động" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Add new filter" +msgstr "Thêm bộ lọc mới" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Editable List" +msgstr "Danh sách có thể sửa đổi" + +#: ../data/ui/EditableList.ui.h:4 +#| msgid "_Down" +msgid "Move _Down" +msgstr "Hạ _Xuống" + +#: ../data/ui/EditableList.ui.h:5 +msgid "Move _Up" +msgstr "Đưa _Lên" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item down" +msgstr "Hạ phần tử xuống" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move item up" +msgstr "Đưa phần tử lên" + +#: ../data/ui/EditableList.ui.h:8 ../meld/vcview.py:158 +msgid "Name" +msgstr "Tên" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Pattern" +msgstr "Mẫu" + +#: ../data/ui/EditableList.ui.h:10 +msgid "Remove selected filter" +msgstr "Xóa bỏ bộ lọc đã chọn" + +#: ../data/ui/EditableList.ui.h:11 ../meld/vcview.py:122 +msgid "_Add" +msgstr "_Thêm" + +#: ../data/ui/EditableList.ui.h:12 ../meld/vcview.py:124 +msgid "_Remove" +msgstr "Gỡ _bỏ" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save modified files?" +msgstr "Lưu tập tin bị sửa đổi không?" + +#: ../data/ui/filediff.ui.h:2 +#| msgid "" +#| "Some files have been modified.\n" +#| "Which ones would you like to save?" +msgid "" +"Some files have been modified.\n" +"Which ones would you like to save?" +msgstr "" +"Một số tập tin đã bị thay đổi.\n" +"Bạn muốn lưu lại cái nào?" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Discard Changes" +msgstr "_Hủy các thay đổi" + +#: ../data/ui/filediff.ui.h:5 +#| msgid "_Delete Selected" +msgid "_Save Selected" +msgstr "_Lưu lại phần chọn" + +#: ../data/ui/findbar.ui.h:1 +#| msgid "Regular e_xpression" +msgid "Regular E_xpression" +msgstr "Biểu _thức chính quy" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "Thay thế toàn _bộ" + +#: ../data/ui/findbar.ui.h:3 +msgid "Replace _With" +msgstr "Thay thế _với" + +#: ../data/ui/findbar.ui.h:4 +msgid "Who_le word" +msgstr "_Nguyên từ" + +#: ../data/ui/findbar.ui.h:5 +#| msgid "_Match case" +msgid "_Match Case" +msgstr "Khớp _chữ hoa/thường" + +#: ../data/ui/findbar.ui.h:6 +#| msgid "_None" +msgid "_Next" +msgstr "_Kế tiếp" + +#: ../data/ui/findbar.ui.h:7 +#| msgid "Previous Logs" +msgid "_Previous" +msgstr "_Trước đó" + +#: ../data/ui/findbar.ui.h:8 ../meld/meldwindow.py:141 +msgid "_Replace" +msgstr "_Thay thế" + +#: ../data/ui/findbar.ui.h:9 +#| msgid "Search for:" +msgid "_Search for" +msgstr "Tìm _kiếm" + +#: ../data/ui/meldapp.ui.h:1 +msgid "Choose Files" +msgstr "Chọn tập tin" + +#: ../data/ui/meldapp.ui.h:2 +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2011 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2011 Kai Willadsen" + +#: ../data/ui/meldapp.ui.h:4 +msgid "Directory" +msgstr "Thư mục" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:7 +msgid "Mine" +msgstr "Của tôi" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:9 +msgid "Original" +msgstr "Gốc" + +#. Refers to version of the file being compared +#: ../data/ui/meldapp.ui.h:11 +msgid "Other" +msgstr "Khác" + +#: ../data/ui/meldapp.ui.h:12 +#| msgid "CVS Directory" +msgid "Select VC Directory" +msgstr "Chọn thư mục ĐKPB" + +#: ../data/ui/meldapp.ui.h:13 +msgid "_Directory Comparison" +msgstr "So sánh thư _mục" + +#: ../data/ui/meldapp.ui.h:14 +msgid "_File Comparison" +msgstr "So sánh _tập tin" + +#: ../data/ui/meldapp.ui.h:15 +msgid "_Three Way Compare" +msgstr "So sánh _ba phương diện" + +#: ../data/ui/meldapp.ui.h:16 +msgid "_Version Control Browser" +msgstr "_Phiên Bản Bộ Duyệt Điều Khiển" + +#: ../data/ui/meldapp.ui.h:17 +msgid "translator-credits" +msgstr "Trương Ứng Minh " + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Copy to Clipboard" +msgstr "Chép vào bảng tạm" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Create Patch" +msgstr "Tạo bản vá" + +#: ../data/ui/patch-dialog.ui.h:3 +#| msgid "Create Patch" +msgid "Create a patch" +msgstr "Tạo bản vá" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Left and middle panes" +msgstr "Bản bên trái và giữa" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "Middle and right panes" +msgstr "Bản giữa và bên phải" + +#: ../data/ui/patch-dialog.ui.h:6 +#| msgid "No differences found." +msgid "Use differences between:" +msgstr "Dùng sự khác biệt giữa:" + +#: ../data/ui/patch-dialog.ui.h:7 +msgid "_Reverse patch direction" +msgstr "Đả_o ngược hướng của bản vá" + +#: ../data/ui/preferences.ui.h:1 +msgid "Display" +msgstr "Hiển thị" + +#: ../data/ui/preferences.ui.h:2 +msgid "Do not _split words over two lines" +msgstr "Đừng _tách các từ quá hai dòng" + +#: ../data/ui/preferences.ui.h:3 +#| msgid "Custom command" +msgid "Edito_r command:" +msgstr "_Lệnh bộ soạn thảo:" + +#: ../data/ui/preferences.ui.h:4 +msgid "Editor" +msgstr "Bộ hiệu chỉnh" + +#: ../data/ui/preferences.ui.h:5 +msgid "Enable text _wrapping" +msgstr "Bật _cuộn chữ" + +#: ../data/ui/preferences.ui.h:6 +msgid "Encoding" +msgstr "Mã hóa" + +#: ../data/ui/preferences.ui.h:7 +#| msgid "Internal editor" +msgid "External editor" +msgstr "Bộ soạn thảo bên ngoài" + +#: ../data/ui/preferences.ui.h:8 +msgid "File Filters" +msgstr "Bộ lọc tập tin" + +#: ../data/ui/preferences.ui.h:9 +msgid "Font" +msgstr "Phông chữ" + +#: ../data/ui/preferences.ui.h:10 +msgid "Ignore changes which insert or delete blank lines" +msgstr "Bỏ qua thay đổi chèn hay xóa bỏ dòng trắng." + +#: ../data/ui/preferences.ui.h:11 +msgid "Ignore symbolic links" +msgstr "Bỏ qua các liên kết biểu trưng" + +#: ../data/ui/preferences.ui.h:12 +#| msgid "Loading" +msgid "Loading" +msgstr "Đang tải" + +#: ../data/ui/preferences.ui.h:13 +#| msgid "Preferences : Meld" +msgid "Meld Preferences" +msgstr "Bộ tùy thích Meld" + +#: ../data/ui/preferences.ui.h:14 +#| msgid "Show line numbers" +msgid "Show _line numbers" +msgstr "Hiện số _dòng" + +#: ../data/ui/preferences.ui.h:15 +msgid "Show w_hitespace" +msgstr "Hiện khoảng _trắng" + +#: ../data/ui/preferences.ui.h:16 +msgid "Text Filters" +msgstr "Bộ lọc chữ" + +#: ../data/ui/preferences.ui.h:17 +#| msgid "Gnome default editor" +msgid "Use _default system editor" +msgstr "_Dùng bộ soạn thảo mặc định của hệ thống" + +#: ../data/ui/preferences.ui.h:18 +#| msgid "Use syntax highlighting" +msgid "Use s_yntax highlighting" +msgstr "Tô _sáng cú pháp" + +#: ../data/ui/preferences.ui.h:19 +msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +msgstr "Khi tải thì thử những codec theo thứ tự (v.d. utf8, iso8859)" + +#: ../data/ui/preferences.ui.h:20 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"Khi so sánh thư mục, bạn có thể lọc ra tập tin và thư mục theo tên. Mỗi mẫu " +"là danh sách ký tự đại diện kiểu hệ vỏ phân biệt bởi dấu cách." + +#: ../data/ui/preferences.ui.h:21 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"Khi so sánh tập tin, bạn có thể bỏ qua một số kiểu thay đổi. Tại đây, mỗi " +"mẫu là một biểu thức chính quy Python thay thế chuỗi khớp bằng chuỗi rỗng " +"trước khi so sánh. Nếu biểu thức chứa nhóm thì chỉ thay thế nhóm. Hãy xem sổ " +"tay người dùng để biết thêm chi tiết." + +#: ../data/ui/preferences.ui.h:22 +#| msgid "Editor" +msgid "_Editor font:" +msgstr "_Phông chữ soạn thảo:" + +#: ../data/ui/preferences.ui.h:23 +msgid "_Insert spaces instead of tabs" +msgstr "_Chèn khoảng trắng thay cho tab" + +#: ../data/ui/preferences.ui.h:24 +#| msgid "Tab width" +msgid "_Tab width:" +msgstr "Độ rộng _tab:" + +#: ../data/ui/preferences.ui.h:25 +msgid "_Use the system fixed width font" +msgstr "_Dùng độ rộng phông chữ độ rộng cố định của hệ thống" + +#: ../data/ui/vcview.ui.h:1 +msgid "Commit Files" +msgstr "Gài tập tin vào" + +#: ../data/ui/vcview.ui.h:2 +msgid "Log Message" +msgstr "Thông điệp ghi lưu" + +#: ../data/ui/vcview.ui.h:3 +msgid "Previous Logs" +msgstr "Bản ghi trước" + +#: ../data/ui/vcview.ui.h:4 +msgid "VC Log" +msgstr "Bản ghi ĐKPB" + +#: ../meld/dirdiff.py:226 ../meld/vcview.py:119 +msgid "_Compare" +msgstr "_So sánh" + +#: ../meld/dirdiff.py:226 ../meld/vcview.py:119 +msgid "Compare selected" +msgstr "So sánh vùng chọn" + +#: ../meld/dirdiff.py:227 +#| msgid "Copy To Left" +msgid "Copy _Left" +msgstr "Chép sang _trái" + +#: ../meld/dirdiff.py:227 +#| msgid "Copy To Left" +msgid "Copy to left" +msgstr "Chép sang trái" + +#: ../meld/dirdiff.py:228 +#| msgid "Copy To Right" +msgid "Copy _Right" +msgstr "Chép sang _phải" + +#: ../meld/dirdiff.py:228 +#| msgid "Copy To Right" +msgid "Copy to right" +msgstr "Chép sang phải" + +#: ../meld/dirdiff.py:229 +msgid "Delete selected" +msgstr "Xóa bỏ vùng chọn" + +#: ../meld/dirdiff.py:230 ../meld/filediff.py:1157 +#| msgid "Hide %s" +msgid "Hide" +msgstr "Ẩn" + +#: ../meld/dirdiff.py:230 +msgid "Hide selected" +msgstr "Ẩn vùng chọn" + +#: ../meld/dirdiff.py:234 +msgid "Case" +msgstr "Hoa/thường" + +#: ../meld/dirdiff.py:234 +msgid "Ignore case of entries" +msgstr "Bỏ qua hoa/thường trong mục nhập" + +#: ../meld/dirdiff.py:235 +msgid "Same" +msgstr "Trùng" + +#: ../meld/dirdiff.py:235 +msgid "Show identical" +msgstr "Hiển thị đồng nhất" + +#: ../meld/dirdiff.py:236 +msgid "New" +msgstr "Mới" + +#: ../meld/dirdiff.py:236 +msgid "Show new" +msgstr "Hiện mới" + +#: ../meld/dirdiff.py:237 +msgid "Modified" +msgstr "Bị sửa đổi" + +#: ../meld/dirdiff.py:237 ../meld/vcview.py:132 +msgid "Show modified" +msgstr "Hiện các thay đổi" + +#: ../meld/dirdiff.py:239 +#| msgid "File Filters" +msgid "Filters" +msgstr "Bộ lọc" + +#: ../meld/dirdiff.py:239 +#| msgid "File Filters" +msgid "Set active filters" +msgstr "Bật bộ lọc" + +#: ../meld/dirdiff.py:354 +#, python-format msgid "Hide %s" msgstr "Ẩn %s" -#:../dirdiff.py:363 ../dirdiff.py:372 ../vcview.py:212 ../vcview.py:240 -#,python-format +#: ../meld/dirdiff.py:457 ../meld/dirdiff.py:470 ../meld/vcview.py:306 +#: ../meld/vcview.py:334 +#, python-format msgid "[%s] Scanning %s" msgstr "[%s] Đang quét %s" -#:../dirdiff.py:405 -#,python-format -msgid "'%s' hidden by '%s'" -msgstr "« %s » do « %s » ẩn" +#: ../meld/dirdiff.py:569 +#, python-format +msgid "[%s] Done" +msgstr "[%s] Đã xong." -#:../dirdiff.py:411 -#,python-format +#: ../meld/dirdiff.py:573 +msgid "Multiple errors occurred while scanning this folder" +msgstr "Nhiều lỗi phát sinh trong lúc quét thư mục này" + +#: ../meld/dirdiff.py:574 +msgid "Files with invalid encodings found" +msgstr "Đã tìm thấy nhiều tập tin bị lỗi mã hóa đã tìm thấy" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:576 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "Một số tập tin bị lỗi mã hóa không đúng. Tên của chúng giống như:" + +#: ../meld/dirdiff.py:578 +msgid "Files hidden by case insensitive comparison" +msgstr "Các tập tin ẩn trong trường hợp so sánh không nhạy cảm" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:580 +#| msgid "" +#| "You are running a case insensitive comparison on a case sensitive " +#| "filesystem. Some files are not visible:\n" +#| "%s" msgid "" "You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" -msgstr "Bạn đang chạy việc so sánh không phân biệt chữ hoa/thường trong hệ thống tập " -"tin có phải phân biệt chữ hoa/thường. Như thế thì, bạn sẽ không thể thấy một " -"số tập tin:\n" -"%s" +"filesystem. The following files in this folder are hidden:" +msgstr "" +"Bạn đang chạy việc so sánh không phân biệt chữ hoa/thường trong hệ thống tập " +"tin có phải phân biệt chữ hoa/thường. Những tập tin sau đây sẽ bị ẩn:" -#:../dirdiff.py:480 -#,python-format -msgid "[%s] Done" -msgstr "[%s] Đã xong." +#: ../meld/dirdiff.py:591 +#, python-format +msgid "'%s' hidden by '%s'" +msgstr "« %s » do « %s » ẩn" + +#: ../meld/dirdiff.py:616 ../meld/filediff.py:1008 ../meld/filediff.py:1161 +#| msgid "Hide %s" +msgid "Hi_de" +msgstr "Ẩ_n" -#:../dirdiff.py:526 -#,python-format +#: ../meld/dirdiff.py:666 +#, python-format msgid "" "'%s' exists.\n" "Overwrite?" -msgstr "Tập tin « %s » đã có.\n" +msgstr "" +"Tập tin « %s » đã có.\n" "Ghi đè?" -#:../dirdiff.py:533 -#,python-format +#: ../meld/dirdiff.py:673 +#, python-format msgid "" "Error copying '%s' to '%s'\n" "\n" "%s." -msgstr "Gặp lỗi khi sao chép « %s » vào « %s »\n" +msgstr "" +"Gặp lỗi khi sao chép « %s » vào « %s »\n" "\n" "%s" -#:../dirdiff.py:551 ../vcview.py:404 -#,python-format +#: ../meld/dirdiff.py:691 ../meld/vcview.py:503 +#, python-format +#| msgid "" +#| "'%s' is a directory.\n" +#| "Remove recusively?" msgid "" "'%s' is a directory.\n" -"Remove recusively?" -msgstr "« %s » là một thư mục\n" +"Remove recursively?" +msgstr "" +"'%s' là một thư mục.\n" "Gỡ bỏ đệ qui không?" -#:../dirdiff.py:558 ../vcview.py:409 -#,python-format +#: ../meld/dirdiff.py:698 ../meld/vcview.py:508 +#, python-format msgid "" "Error removing %s\n" "\n" "%s." -msgstr "Gặp lỗi khi gỡ bỏ %s\n" +msgstr "" +"Gặp lỗi khi gỡ bỏ %s\n" "\n" "%s" -#:../dirdiff.py:569 -#,python-format +#: ../meld/dirdiff.py:723 +#, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i giây" -#:../dirdiff.py:570 -#,python-format +#: ../meld/dirdiff.py:724 +#, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i phút" -#:../dirdiff.py:571 -#,python-format +#: ../meld/dirdiff.py:725 +#, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i giờ" -#:../dirdiff.py:572 -#,python-format +#: ../meld/dirdiff.py:726 +#, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i ngày" -#:../dirdiff.py:573 -#,python-format +#: ../meld/dirdiff.py:727 +#, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i tuần" -#:../dirdiff.py:574 -#,python-format +#: ../meld/dirdiff.py:728 +#, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i tháng" -#:../dirdiff.py:575 -#,python-format +#: ../meld/dirdiff.py:729 +#, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i năm" -#.Abbreviation for insert,overwrite so that it will fit in the status bar -#:../filediff.py:215 -msgid "INS,OVR" -msgstr "CH,ĐÈ" - -#.Abbreviation for line, column so that it will fit in the status bar -#:../filediff.py:217 -#,python-format +#: ../meld/filediff.py:294 +msgid "Format as patch..." +msgstr "Định dạng như là bản vá..." + +#: ../meld/filediff.py:294 +msgid "Create a patch using differences between files" +msgstr "Dùng sự khác biệt giữa các tập tin để tạo một bản vá" + +#: ../meld/filediff.py:295 +#| msgid "Previous Logs" +msgid "Previous conflict" +msgstr "Xung đột vừa rồi" + +#: ../meld/filediff.py:295 +msgid "Go to the previous conflict" +msgstr "Đi tới xung đột vừa xảy ra" + +#: ../meld/filediff.py:296 +msgid "Next conflict" +msgstr "Xung đột tiếp theo" + +#: ../meld/filediff.py:296 +msgid "Go to the next conflict" +msgstr "Đi tới xung đột tiếp theo" + +#: ../meld/filediff.py:297 +msgid "Push to left" +msgstr "Đẩy qua bên trái" + +#: ../meld/filediff.py:297 +msgid "Push current change to the left" +msgstr "Đẩy thay đổi hiện có sang phía bên trái" + +#: ../meld/filediff.py:298 +msgid "Push to right" +msgstr "Đẩy sang phải" + +#: ../meld/filediff.py:298 +msgid "Push current change to the right" +msgstr "Đẩy thay đổi hiện có sang phía bên phải" + +#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse +#: ../meld/filediff.py:300 +msgid "Pull from left" +msgstr "Kéo sang trái" + +#: ../meld/filediff.py:300 +msgid "Pull change from the left" +msgstr "Kéo thay đổi sang phía bên trái" + +#: ../meld/filediff.py:301 +msgid "Pull from right" +msgstr "Kéo sang phải" + +#: ../meld/filediff.py:301 +msgid "Pull change from the right" +msgstr "Kéo thay đổi sang phía bên phải" + +#: ../meld/filediff.py:302 +#| msgid "Copy To Left" +msgid "Copy above left" +msgstr "Chép ở trên sang trái" + +#: ../meld/filediff.py:302 +msgid "Copy change above the left chunk" +msgstr "Chép thay đổi của đoạn dữ liệu phía trên bên trái" + +#: ../meld/filediff.py:303 +#| msgid "Copy To Left" +msgid "Copy below left" +msgstr "Chép ở dưới sang trái" + +#: ../meld/filediff.py:303 +msgid "Copy change below the left chunk" +msgstr "Chép thay đổi của đoạn dữ liệu phía dưới bên trái" + +#: ../meld/filediff.py:304 +#| msgid "Copy To Right" +msgid "Copy above right" +msgstr "Chép ở trên sang phải" + +#: ../meld/filediff.py:304 +msgid "Copy change above the right chunk" +msgstr "Chép thay đổi của đoạn dữ liệu phía trên bên phải" + +#: ../meld/filediff.py:305 +#| msgid "Copy To Right" +msgid "Copy below right" +msgstr "Chép ở dưới sang phải" + +#: ../meld/filediff.py:305 +msgid "Copy change below the right chunk" +msgstr "Chép thay đổi của đoạn dữ liệu phía dưới bên phải" + +#: ../meld/filediff.py:306 +#| msgid "Date" +msgid "Delete" +msgstr "Xóa" + +#: ../meld/filediff.py:306 +#| msgid "Delete locally" +msgid "Delete change" +msgstr "Xoá các thay đổi" + +#: ../meld/filediff.py:307 +msgid "Merge all changes from left" +msgstr "Hợp nhất các thay đổi từ bên trái" + +#: ../meld/filediff.py:307 +msgid "Merge all non-conflicting changes from the left" +msgstr "Hợp nhất những thay đổi không xung đột nhau từ bên trái" + +#: ../meld/filediff.py:308 +msgid "Merge all changes from right" +msgstr "Hợp nhất các thay đổi từ bên phải" + +#: ../meld/filediff.py:308 +msgid "Merge all non-conflicting changes from the right" +msgstr "Hợp nhất những thay đổi không xung đột nhau từ bên phải" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting" +msgstr "Hợp nhất các tương thích" + +#: ../meld/filediff.py:309 +msgid "Merge all non-conflicting changes from left and right panes" +msgstr "Hợp nhất tất cả thay đổi tương thích từ bản bên trái và bên phải" + +#: ../meld/filediff.py:310 +msgid "Cycle through documents" +msgstr "Quay vòng trong các tài liệu" + +#: ../meld/filediff.py:310 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "Chuyển tiêu điểm bàn phím qua tài liệu kế tiếp trong so sánh này" + +#: ../meld/filediff.py:314 +msgid "Lock scrolling" +msgstr "Khoá cuộn" + +#: ../meld/filediff.py:315 +msgid "Lock scrolling of all panes" +msgstr "Khoá cuộn trong tất cả các khung" + +#. Abbreviations for insert and overwrite that fit in the status bar +#: ../meld/filediff.py:396 +#| msgid "INS,OVR" +msgid "INS" +msgstr "CHÈN" + +#: ../meld/filediff.py:396 +#| msgid "INS,OVR" +msgid "OVR" +msgstr "ĐÈ" + +#. Abbreviation for line, column so that it will fit in the status bar +#: ../meld/filediff.py:398 +#, python-format msgid "Ln %i, Col %i" -msgstr "Dg %i, Cột %i" +msgstr "Dòng %i, Cột %i" -#:../filediff.py:275 -#,python-format -msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." -msgstr "Biểu thức chính quy « %s » đã thay đổi số dòng trong tập tin, thì việc so " +#: ../meld/filediff.py:722 +#, fuzzy, python-format +#| msgid "" +#| "Regular expression '%s' changed the number of lines in the file. " +#| "Comparison will be incorrect. See the user manual for more details." +msgid "" +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." +msgstr "" +"Biểu thức chính quy « %s » đã thay đổi số dòng trong tập tin, thì việc so " "sánh không chạy đúng. Hãy xem sổ tay người dùng để tìm chi tiết." -#:../filediff.py:523 -#,python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "Lỗi biểu thức chính quy\n" -"« %s »" - -#:../filediff.py:535 -#,python-format -msgid "The regular expression '%s' was not found." -msgstr "Không tìm thấy biểu thức chính quy « %s »." - -#:../filediff.py:537 -#,python-format -msgid "The text '%s' was not found." -msgstr "Không tìm thấy đoạn « %s »." +#. TRANSLATORS: this is the name of a new file which has not yet been saved +#: ../meld/filediff.py:809 +msgid "" +msgstr "" -#:../filediff.py:581 -#,python-format +#: ../meld/filediff.py:996 +#, python-format msgid "[%s] Set num panes" msgstr "[%s] Đặt ô số" -#:../filediff.py:588 -#,python-format +#: ../meld/filediff.py:1002 +#, python-format msgid "[%s] Opening files" msgstr "[%s] Đang mở tập tin" -#:../filediff.py:605 ../filediff.py:619 ../filediff.py:635 ../filediff.py:642 -#,python-format -msgid "Could not read from '%s'" -msgstr "Không đọc được từ « %s »" - -#:../filediff.py:606 ../filediff.py:643 -msgid "The error was:" -msgstr "Lỗi:" +#: ../meld/filediff.py:1026 ../meld/filediff.py:1035 ../meld/filediff.py:1047 +#: ../meld/filediff.py:1053 +#| msgid "Could not read from '%s'" +msgid "Could not read file" +msgstr "Không đọc được tập tin" -#:../filediff.py:611 -#,python-format +#: ../meld/filediff.py:1027 +#, python-format msgid "[%s] Reading files" msgstr "[%s] Đang đọc tập tin" -#:../filediff.py:620 -msgid "" -"It contains ascii nulls.\n" -"Perhaps it is a binary file." -msgstr "Nó chứa ký tự rỗng ASCII.\n" -"Có lẽ nó là tập tin nhị phân." - -#:../filediff.py:636 -#,python-format -msgid "I tried encodings %s." -msgstr "Trình này đã thử ra bảng mã %s." +#: ../meld/filediff.py:1036 +#, python-format +msgid "%s appears to be a binary file." +msgstr "%s hình như là một tập tin nhị phân." + +#: ../meld/filediff.py:1048 +#, python-format +#| msgid "I tried encodings %s." +msgid "%s is not in encodings: %s" +msgstr "%s không được mã hóa: %s" -#:../filediff.py:665 -#,python-format +#: ../meld/filediff.py:1078 ../meld/filemerge.py:67 +#, python-format msgid "[%s] Computing differences" -msgstr "[%s] Đang tính khác biệt" +msgstr "[%s] Đang tính sự khác biệt" + +#: ../meld/filediff.py:1148 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "" +"Bộ lọc chữ đang hoạt động và có thể che giấu sự khác biệt giữa các tập tin. " +"Bạn có muốn so sánh những tập tin chưa được lọc?" + +#: ../meld/filediff.py:1154 +#| msgid "Show identical" +msgid "Files are identical" +msgstr "Các tập tin đều giống nhau" + +#: ../meld/filediff.py:1164 +#| msgid "Show unversioned files" +msgid "Show without filters" +msgstr "Hiển thị nhưng không lọc" -#:../filediff.py:769 -#,python-format +#: ../meld/filediff.py:1354 +#, python-format msgid "" "\"%s\" exists!\n" "Overwrite?" -msgstr "Tập tin « %s » đã có.\n" +msgstr "" +"Tập tin « %s » đã có.\n" "Ghi đè?" -#:../filediff.py:782 -#,python-format +#: ../meld/filediff.py:1367 +#, python-format msgid "" "Error writing to %s\n" "\n" "%s." -msgstr "Gặp lỗi khi ghi vào « %s ».\n" +msgstr "" +"Gặp lỗi khi ghi vào « %s ».\n" "\n" "%s" -#:../filediff.py:791 -#,python-format +#: ../meld/filediff.py:1376 +#, python-format msgid "Choose a name for buffer %i." msgstr "Hãy chọn tên cho bộ đệm %i." -#:../filediff.py:804 -#,python-format +#: ../meld/filediff.py:1391 +#, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" "\n" "Which format would you like to use?" -msgstr "Tập tin « %s » chứa nhiều kiểu ký tự kết thúc dòng.\n" +msgstr "" +"Tập tin « %s » chứa nhiều kiểu ký tự kết thúc dòng.\n" "\n" -"Bạn có muốn sử dụng dạng thức nào?" +"Bạn muốn dùng định dạng nào?" -#:../filediff.py:820 -#,python-format +#: ../meld/filediff.py:1407 +#, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" "Would you like to save as UTF-8?" -msgstr "« %s » chứa ký tự không thể được mã hóa bằng « %s ».\n" +msgstr "" +"« %s » chứa ký tự không thể được mã hóa bằng « %s ».\n" "Bạn có muốn lưu nó dạng UTF-8 không?" -#.save as -#:../filediff.py:855 -msgid "Save patch as..." -msgstr "Lưu đắp vá dạng..." - # Type: boolean # Description -#:../filediff.py:909 -#,python-format +#: ../meld/filediff.py:1466 +#, python-format +#| msgid "" +#| "Refreshing will discard changes in:\n" +#| "%s\n" +#| "\n" +#| "You cannot undo this operation." msgid "" -"Refreshing will discard changes in:\n" +"Reloading will discard changes in:\n" "%s\n" "\n" "You cannot undo this operation." -msgstr "Việc làm tươi sẽ hủy bỏ thay đổi trong:\n" +msgstr "" +"Việc tải lại sẽ hủy bỏ các thay đổi trong:\n" "%s\n" "\n" "Không thể hoàn tác hành động này." -#:../glade2/dirdiff.glade.h:1 -msgid "Case" -msgstr "Hoa/thường" +#: ../meld/filemerge.py:82 +#, python-format +#| msgid "[%s] Opening files" +msgid "[%s] Merging files" +msgstr "[%s] Đang trộng tập tin" + +#: ../meld/meldapp.py:149 +#| msgid "Wrong number of arguments (Got %i)" +msgid "wrong number of arguments supplied to --diff" +msgstr "Đối số cung cấp cho --diff bị sai" + +#: ../meld/meldapp.py:153 +msgid "Start with an empty window" +msgstr "Bắt đầu với một cửa sổ rỗng" + +#: ../meld/meldapp.py:154 ../meld/meldapp.py:155 ../meld/meldapp.py:157 +msgid "file" +msgstr "tập tin" + +#: ../meld/meldapp.py:154 ../meld/meldapp.py:156 ../meld/meldapp.py:157 +#| msgid "Editor" +msgid "dir" +msgstr "dir" + +#: ../meld/meldapp.py:154 +msgid "Start a version control comparison" +msgstr "Bắt đầu với việc so sánh bộ điều khiển phiên bản" + +#: ../meld/meldapp.py:155 +msgid "Start a 2- or 3-way file comparison" +msgstr "Bắt đầu một so sánh 2 hoặc 3 phương diện" + +#: ../meld/meldapp.py:156 +msgid "Start a 2- or 3-way directory comparison" +msgstr "Bắt đầu so sánh 2 hoặc 3 phương diện của thư mục" + +#: ../meld/meldapp.py:157 +msgid "Start a comparison between file and dir/file" +msgstr "Bắt đầu so sánh giữa tập tin và địa chỉ/tập tin" + +#: ../meld/meldapp.py:163 +msgid "Meld is a file and directory comparison tool." +msgstr "Meld là một công cụ so sánh tập tin và thư mục." + +#: ../meld/meldapp.py:166 +msgid "Set label to use instead of file name" +msgstr "Đặt nhãn thay vì dùng tên tập tin" + +#: ../meld/meldapp.py:168 +msgid "Automatically compare all differing files on startup" +msgstr "Luôn tự động so sánh các tập tin khi khởi động" + +#: ../meld/meldapp.py:170 +msgid "Ignored for compatibility" +msgstr "Bỏ qua để tương thích" + +#: ../meld/meldapp.py:173 +msgid "Set the target file for saving a merge result" +msgstr "Đặt tập tin chỉ định để lưu lại kết quả hợp nhất" + +#: ../meld/meldapp.py:176 +msgid "Creates a diff tab for up to 3 supplied files or directories." +msgstr "" + +#: ../meld/meldapp.py:179 +#, python-format +msgid "too many arguments (wanted 0-4, got %d)" +msgstr "quá nhiều đối số (muốn 0-4, lấy %d)" + +#: ../meld/meldapp.py:181 ../meld/meldapp.py:185 +#| msgid "Cannot compare a mixture of files and directories.\n" +msgid "can't compare more than three directories" +msgstr "không thể so sánh nhiều hơn ba địa chỉ" -#:../glade2/dirdiff.glade.h:2 -msgid "Compare" -msgstr "So sánh" +#: ../meld/melddoc.py:56 ../meld/melddoc.py:57 +msgid "untitled" +msgstr "không tên" -#:../glade2/dirdiff.glade.h:3 ../glade2/vcview.glade.h:6 -msgid "Compare selected" -msgstr "So sánh vùng chọn" +#: ../meld/meldwindow.py:125 +#| msgid "My File" +msgid "_File" +msgstr "_Tập tin" -#:../glade2/dirdiff.glade.h:4 -msgid "Copy To Left" -msgstr "Chép sang trái" +#: ../meld/meldwindow.py:126 +msgid "_New..." +msgstr "_Mới..." -#:../glade2/dirdiff.glade.h:5 -msgid "Copy To Right" -msgstr "Chép sang phải" +#: ../meld/meldwindow.py:126 +msgid "Start a new comparison" +msgstr "Bắt đầu một so sánh mới" + +#: ../meld/meldwindow.py:127 +msgid "Save the current file" +msgstr "Lưu tập tin hiện tại" + +#: ../meld/meldwindow.py:129 +msgid "Close the current file" +msgstr "Đóng tập tin hiện tại" + +#: ../meld/meldwindow.py:130 +msgid "Quit the program" +msgstr "Thoát chương trình" -#:../glade2/dirdiff.glade.h:6 -msgid "Delete selected" -msgstr "Xóa bỏ vùng chọn" +#: ../meld/meldwindow.py:132 +msgid "_Edit" +msgstr "_Chỉnh sửa" -#:../glade2/dirdiff.glade.h:7 ../glade2/filediff.glade.h:7 -msgid "Edit" -msgstr "Hiệu chỉnh" +#: ../meld/meldwindow.py:133 +msgid "Undo the last action" +msgstr "Hoàn tác hành động gần nhất" + +#: ../meld/meldwindow.py:134 +msgid "Redo the last undone action" +msgstr "Làm lại hành động hoàn tác gần nhất" + +#: ../meld/meldwindow.py:135 +msgid "Cut the selection" +msgstr "Cắt vùng chọn" + +#: ../meld/meldwindow.py:136 +#| msgid "Compare selected" +msgid "Copy the selection" +msgstr "Sao chép vùng chọn" + +#: ../meld/meldwindow.py:137 +#| msgid "Copy to Clipboard" +msgid "Paste the clipboard" +msgstr "Chép vào bảng tạm" -#:../glade2/dirdiff.glade.h:8 -msgid "Hide selected" -msgstr "Ẩn vùng chọn" +#: ../meld/meldwindow.py:138 +#| msgid "Search for:" +msgid "Search for text" +msgstr "Tìm kiếm văn bản" + +#: ../meld/meldwindow.py:139 +msgid "Find Ne_xt" +msgstr "Tìm Kế _tiếp" + +#: ../meld/meldwindow.py:139 +msgid "Search forwards for the same text" +msgstr "Tìm ở phần tiếp theo cho những chuỗi tương tự" + +#: ../meld/meldwindow.py:140 +msgid "Find _Previous" +msgstr "Tìm Phần _trước" + +#: ../meld/meldwindow.py:140 +msgid "Search backwards for the same text" +msgstr "Tìm ngược về trước cho những chuỗi tương tự" + +#: ../meld/meldwindow.py:141 +msgid "Find and replace text" +msgstr "Tìm và thay thế văn bản" + +#: ../meld/meldwindow.py:142 +#| msgid "Preferences : Meld" +msgid "Prefere_nces" +msgstr "Tùy thích_nc" + +#: ../meld/meldwindow.py:142 +msgid "Configure the application" +msgstr "Cấu hình ứng dụng" + +#: ../meld/meldwindow.py:144 +msgid "_Changes" +msgstr "_Thay đổi" + +#: ../meld/meldwindow.py:145 +msgid "Next change" +msgstr "Thay đổi kế tiếp" + +#: ../meld/meldwindow.py:145 +msgid "Go to the next change" +msgstr "Đi tới thay đổi kế tiếp" + +#: ../meld/meldwindow.py:146 +#| msgid "Previous Logs" +msgid "Previous change" +msgstr "Thay đổi trước đó" + +#: ../meld/meldwindow.py:146 +msgid "Go to the previous change" +msgstr "Đi tới thay đổi vừa rồi" + +#: ../meld/meldwindow.py:147 +msgid "Open externally" +msgstr "Mở bên ngoài" + +#: ../meld/meldwindow.py:147 +msgid "Open selected file or directory in the default external application" +msgstr "Mở tập tin hoặc địa chỉ đã chọn trong ứng dụng bên ngoài mặc định" + +#: ../meld/meldwindow.py:149 +msgid "_View" +msgstr "_Xem" + +#: ../meld/meldwindow.py:150 +#| msgid "File Filters" +msgid "File status" +msgstr "Trạng thái tập tin" + +#: ../meld/meldwindow.py:151 +msgid "Version status" +msgstr "Trạng thái phiên bản" + +#: ../meld/meldwindow.py:152 +#| msgid "File Filters" +msgid "File filters" +msgstr "Bộ lọc tập tin" -#:../glade2/dirdiff.glade.h:9 -msgid "Hide..." -msgstr "Ẩn..." +#: ../meld/meldwindow.py:153 +msgid "Stop the current action" +msgstr "Dừng tác vụ hiện tại" + +#: ../meld/meldwindow.py:154 +msgid "Refresh the view" +msgstr "Làm mới góc nhìn" + +#: ../meld/meldwindow.py:155 +#| msgid "Meld" +msgid "Reload" +msgstr "Tải lại" + +#: ../meld/meldwindow.py:155 +#| msgid "_File Comparison" +msgid "Reload the comparison" +msgstr "Tải lại so sánh" + +#: ../meld/meldwindow.py:157 +msgid "_Tabs" +msgstr "_Thẻ" + +#: ../meld/meldwindow.py:158 +#| msgid "Previous Logs" +msgid "_Previous Tab" +msgstr "_Thẻ trước đó" + +#: ../meld/meldwindow.py:158 +msgid "Activate previous tab" +msgstr "Kích hoạt thẻ vừa rồi" + +#: ../meld/meldwindow.py:159 +msgid "_Next Tab" +msgstr "_Thẻ kế tiếp" + +#: ../meld/meldwindow.py:159 +msgid "Activate next tab" +msgstr "Kích hoạt thẻ kế tiếp" + +#: ../meld/meldwindow.py:160 +#| msgid "Copy To Left" +msgid "Move Tab _Left" +msgstr "Chép Thẻ sang _Trái" + +#: ../meld/meldwindow.py:160 +msgid "Move current tab to left" +msgstr "Chuyển thẻ hiện tại sang trái" + +#: ../meld/meldwindow.py:161 +#| msgid "Copy To Right" +msgid "Move Tab _Right" +msgstr "Chép Thẻ sang _Phải" + +#: ../meld/meldwindow.py:161 +msgid "Move current tab to right" +msgstr "Chuyển thẻ hiện tại sang phải" + +#: ../meld/meldwindow.py:163 +msgid "_Help" +msgstr "_Giúp đỡ" -#:../glade2/dirdiff.glade.h:10 -msgid "Ignore case of entries" -msgstr "Bỏ qua hoa/thường trong mục nhập" +#: ../meld/meldwindow.py:164 +msgid "_Contents" +msgstr "_Nội dung" -#:../glade2/dirdiff.glade.h:11 -msgid "Left" -msgstr "Trái" +#: ../meld/meldwindow.py:164 +msgid "Open the Meld manual" +msgstr "Mở sổ tay Meld" -#:../glade2/dirdiff.glade.h:12 -msgid "Modified" -msgstr "Bị sửa đổi" +#: ../meld/meldwindow.py:165 +msgid "Report _Bug" +msgstr "Thông báo _lỗi" -#:../glade2/dirdiff.glade.h:13 -msgid "New" -msgstr "Mới" +#: ../meld/meldwindow.py:165 +msgid "Report a bug in Meld" +msgstr "Báo cáo lỗi trong Meld" + +#: ../meld/meldwindow.py:166 +msgid "About this program" +msgstr "Về chương trình này" + +#: ../meld/meldwindow.py:169 +msgid "Full Screen" +msgstr "Toàn màn hình" + +#: ../meld/meldwindow.py:169 +msgid "View the comparison in full screen" +msgstr "Xem so sánh trong chế độ toàn màn hình" + +#: ../meld/meldwindow.py:170 +msgid "_Toolbar" +msgstr "_Thanh công cụ" + +#: ../meld/meldwindow.py:170 +msgid "Show or hide the toolbar" +msgstr "Hiện hoặc ẩn thanh công cụ" + +#: ../meld/meldwindow.py:171 +#| msgid "Status" +msgid "_Statusbar" +msgstr "_Thanh Trạng thái" + +#: ../meld/meldwindow.py:171 +msgid "Show or hide the statusbar" +msgstr "Hiện hay ẩn thanh trạng thái" + +#: ../meld/meldwindow.py:538 +msgid "Switch to this tab" +msgstr "Chuyển sang thẻ này" -#:../glade2/dirdiff.glade.h:14 -msgid "Right" -msgstr "Phải" +#. exit at first non found directory + file +#: ../meld/meldwindow.py:629 +msgid "Cannot compare a mixture of files and directories.\n" +msgstr "Không thể so sánh tập tin và thư mục với nhau.\n" -#:../glade2/dirdiff.glade.h:15 -msgid "Same" -msgstr "Trùng" +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:174 +msgid "[None]" +msgstr "[không có]" -#:../glade2/dirdiff.glade.h:16 -msgid "Show identical" -msgstr "Hiện trùng chính xác" +#: ../meld/patchdialog.py:122 +#| msgid "Save patch as..." +msgid "Save Patch As..." +msgstr "Lưu bản vá dạng..." -#:../glade2/dirdiff.glade.h:17 ../glade2/vcview.glade.h:18 -msgid "Show modified" -msgstr "Hiện đã sửa đổi" +#: ../meld/preferences.py:37 +msgid "label" +msgstr "nhãn" -#:../glade2/dirdiff.glade.h:18 -msgid "Show new" -msgstr "Hiện mới" +#: ../meld/preferences.py:37 +msgid "pattern" +msgstr "mẫu" -#:../glade2/dirdiff.glade.h:19 ../glade2/meldapp.glade.h:86 -#:../glade2/vcview.glade.h:25 -msgid "_Compare" -msgstr "_So sánh" +#: ../meld/preferences.py:105 +#| msgid "" +#| "Line numbers are only available if you have gnome-python-desktop " +#| "installed." +msgid "Only available if you have gnome-python-desktop installed" +msgstr "Chỉ có giá trị nếu bạn đã cài đặt gnome-python-desktop" -#:../glade2/dirdiff.glade.h:20 -msgid "_Delete Selected" -msgstr "_Xóa bỏ vùng chọn" - -#:../glade2/filediff.glade.h:1 -msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" -msgstr "Một số tập tin bị sửa đổi.\n" -"Bạn có muốn lưu tập tin nào?" - -#:../glade2/filediff.glade.h:3 -msgid "Copy All To _Left" -msgstr "Chép hết sang _trái" - -#:../glade2/filediff.glade.h:4 -msgid "Copy All To _Right" -msgstr "Chép hết sang _phải" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:233 +msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +msgstr "Sao lưu\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -#:../glade2/filediff.glade.h:5 -msgid "Copy to Clipboard" -msgstr "Chép vào bảng tạm" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:235 +msgid "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" +msgstr "" +"OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +"Desktop.ini\n" + +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:237 +#, python-format +#| msgid "_Version Control Browser" +msgid "Version Control\t1\t%s\n" +msgstr "Bộ Điều Khiển Phiên Bản\t1\t%s\n" -#:../glade2/filediff.glade.h:6 -msgid "Create Patch" -msgstr "Tạo đắp vá" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:239 +msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +msgstr "Nhị phân\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -#:../glade2/filediff.glade.h:8 -msgid "Find" -msgstr "Tìm" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:241 +msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +msgstr "Phương tiện\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -#:../glade2/filediff.glade.h:9 -msgid "Match _entire word only" -msgstr "Chỉ khớp với t_oàn bộ từ" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:243 +msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +msgstr "Từ khoá CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -#:../glade2/filediff.glade.h:10 -msgid "Regular e_xpression" -msgstr "_Biểu thức chính quy" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:245 +msgid "C++ comment\t0\t//.*\n" +msgstr "Ghi chú C++\t0\t//.*\n" -#:../glade2/filediff.glade.h:11 -msgid "Save modified files?" -msgstr "Lưu tập tin bị sửa đổi không?" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:247 +msgid "C comment\t0\t/\\*.*?\\*/\n" +msgstr "Ghi chú C\t0\t/\\*.*?\\*/\n" -#:../glade2/filediff.glade.h:12 -msgid "Search for:" -msgstr "Tìm kiếm:" - -#:../glade2/filediff.glade.h:13 -msgid "_Match case" -msgstr "_Khớp chữ hoa/thường" - -#:../glade2/filediff.glade.h:14 -msgid "_Wrap around" -msgstr "_Cuộn vòng" - -#:../glade2/meldapp.glade.h:1 -msgid "(gnome-default-editor)" -msgstr "(bộ hiệu chỉnh mặc định Gnome)" - -#:../glade2/meldapp.glade.h:2 -msgid "Drawing Style" -msgstr "Kiểu dáng vẽ" - -#:../glade2/meldapp.glade.h:3 -msgid "Edit Menu" -msgstr "Trình đơn Hiệu chỉnh" - -#:../glade2/meldapp.glade.h:4 -msgid "Font" -msgstr "Phông chữ" - -#:../glade2/meldapp.glade.h:5 -msgid "Global options" -msgstr "Tùy chọn toàn cục" - -#:../glade2/meldapp.glade.h:6 -msgid "Loading" -msgstr "Đang tải" - -#:../glade2/meldapp.glade.h:7 -msgid "Misc" -msgstr "Linh tinh" - -#:../glade2/meldapp.glade.h:8 -msgid "Saving" -msgstr "Đang lưu" - -#:../glade2/meldapp.glade.h:9 -msgid "Toolbar Appearance" -msgstr "Diện mạo thanh công cụ" - -#:../glade2/meldapp.glade.h:10 -msgid "Update Options" -msgstr "Tùy chọn cập nhật" - -#:../glade2/meldapp.glade.h:11 -msgid "Whitespace" -msgstr "Dấu cách trắng" - -#:../glade2/meldapp.glade.h:12 -msgid "CVS" -msgstr "CVS" - -#:../glade2/meldapp.glade.h:13 -msgid "Compare" -msgstr "So sánh" - -#:../glade2/meldapp.glade.h:14 -msgid "Display" -msgstr "Hiển thị" - -#:../glade2/meldapp.glade.h:15 -msgid "Editor" -msgstr "Bộ hiệu chỉnh" - -#:../glade2/meldapp.glade.h:16 -msgid "Encoding" -msgstr "Bảng mã" - -#:../glade2/meldapp.glade.h:17 -msgid "File Filters" -msgstr "Bộ lọc tập tin" - -#:../glade2/meldapp.glade.h:18 -msgid "Text Filters" -msgstr "Bộ lọc chữ" - -#:../glade2/meldapp.glade.h:19 -msgid "Automatically supply missing newline at end of file." -msgstr "Tự động cung cấp ký tự dòng mới thiếu tại kết thúc tập tin." - -#:../glade2/meldapp.glade.h:20 -msgid "CVS" -msgstr "CVS" - -#:../glade2/meldapp.glade.h:21 -msgid "CVS Directory" -msgstr "Thư mục CVS" - -#:../glade2/meldapp.glade.h:22 -msgid "CVS binary" -msgstr "Nhị phân CVS" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:249 +msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +msgstr "Mọi dấu cách\t0\t[ \\t\\r\\f\\v]*\n" -#:../glade2/meldapp.glade.h:23 -msgid "Choose Files" -msgstr "Chọn tập tin" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:251 +msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +msgstr "Dấu cách đi trước\t0\t^[ \\t\\r\\f\\v]*\n" -#:../glade2/meldapp.glade.h:24 -msgid "" -"Choose how the central bar of the diff viewer is drawn. You may wish to " -"choose a simpler mode if you find scrolling is slow." -msgstr "Hãy chọn cách vẽ thanh trung tâm trong bộ xem khác biệt. Bạn có lẽ sẽ muốn " -"chọn chế độ đơn giản hơn nếu bạn thấy nó cuộn chậm." - -#:../glade2/meldapp.glade.h:25 -msgid "Copyright (C) 2002-2006 Stephen Kennedy" -msgstr "Bản quyền © năm 2002-2006 Stephen Kennedy" - -#:../glade2/meldapp.glade.h:26 -msgid "Create missing directories (-d)" -msgstr "Tạo thư mục thiếu (-d)" - -#:../glade2/meldapp.glade.h:27 -msgid "Curved : Filled Curves" -msgstr "Cong: cong đặc" - -#:../glade2/meldapp.glade.h:28 -msgid "Custom command" -msgstr "Lệnh tự chọn" +#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact +#: ../meld/preferences.py:253 +msgid "Script comment\t0\t#.*" +msgstr "Ghi chú tập lệnh\t0\t#.*" -#:../glade2/meldapp.glade.h:29 -msgid "Directory" -msgstr "Thư mục" +#: ../meld/vcview.py:120 +#| msgid "Commit" +msgid "Co_mmit" +msgstr "Xác _nhận" -#:../glade2/meldapp.glade.h:30 -msgid "Display" -msgstr "Hiển thị" +#: ../meld/vcview.py:120 +msgid "Commit" +msgstr "Xác nhận" -#:../glade2/meldapp.glade.h:31 -msgid "Edit menu popup invokes" -msgstr "Trình đơn hiệu chỉnh mà bật lên gọi" +#: ../meld/vcview.py:121 +msgid "_Update" +msgstr "_Cập nhật" -#:../glade2/meldapp.glade.h:32 -msgid "Editor" -msgstr "Bộ hiệu chỉnh" +#: ../meld/vcview.py:121 +msgid "Update" +msgstr "Cập nhật" -#:../glade2/meldapp.glade.h:33 -msgid "Encoding" -msgstr "Bảng mã" +#: ../meld/vcview.py:122 +msgid "Add to VC" +msgstr "Thêm vào ĐKPB" -#:../glade2/meldapp.glade.h:34 -msgid "File Filters" -msgstr "Bộ lọc tập tin" +#: ../meld/vcview.py:123 +msgid "Add _Binary" +msgstr "Thêm _nhị phân" -#:../glade2/meldapp.glade.h:35 -msgid "Gnome Default" -msgstr "Mặc định Gnome" +#: ../meld/vcview.py:123 +#| msgid "Add to VC" +msgid "Add binary to VC" +msgstr "Thêm vào ĐKPB" -#:../glade2/meldapp.glade.h:36 -msgid "Gnome default editor" -msgstr "Bộ hiệu chỉnh mặc định Gnome" +#: ../meld/vcview.py:124 +msgid "Remove from VC" +msgstr "Gỡ bỏ ra ĐKPB" -#:../glade2/meldapp.glade.h:37 -msgid "Icons Only" -msgstr "Chỉ có hình" +#: ../meld/vcview.py:125 +#| msgid "_Remove" +msgid "_Resolved" +msgstr "Đã _giải quyết" + +#: ../meld/vcview.py:125 +msgid "Mark as resolved for VC" +msgstr "" + +#: ../meld/vcview.py:126 +msgid "Revert to original" +msgstr "Hoàn về bản gốc" -#:../glade2/meldapp.glade.h:38 -msgid "Ignore .cvsrc (-f)" -msgstr "Bỏ qua .cvsrc (-f)" +#: ../meld/vcview.py:127 +msgid "Delete locally" +msgstr "Xoá bỏ cục bộ" -#:../glade2/meldapp.glade.h:39 -msgid "Ignore changes in amount of white space" -msgstr "Bỏ qua số dấu cách thay đổi." +#: ../meld/vcview.py:131 +msgid "_Flatten" +msgstr "Làm _phẳng" -#:../glade2/meldapp.glade.h:40 -msgid "" -"Ignore changes in case; consider upper and lower-case letters equivalent" -msgstr "Bỏ qua chữ hoa/thường thay đổi: xem là trùng" +#: ../meld/vcview.py:131 +msgid "Flatten directories" +msgstr "Làm phẳng thư mục" -#:../glade2/meldapp.glade.h:41 -msgid "Ignore changes that just insert or delete blank lines" -msgstr "Bỏ qua thay đổi chỉ chèn hay xóa bỏ dòng trắng." +#: ../meld/vcview.py:132 +msgid "_Modified" +msgstr "Bị sửa _đổi" -#:../glade2/meldapp.glade.h:42 -msgid "Ignore changes which insert or delete blank lines" -msgstr "Bỏ qua thay đổi chèn hay xóa bỏ dòng trắng." +#: ../meld/vcview.py:133 +msgid "_Normal" +msgstr "_Bình thường" -#:../glade2/meldapp.glade.h:43 -msgid "Internal editor" -msgstr "Bộ hiệu chỉnh nội bộ" - -#:../glade2/meldapp.glade.h:44 -msgid "Line Wrapping " -msgstr "Cuộn dòng " - -#:../glade2/meldapp.glade.h:45 -msgid "Locate CVS binary : Meld" -msgstr "Định vị nhị phân CVS: Meld" +#: ../meld/vcview.py:133 +#| msgid "Show identical" +msgid "Show normal" +msgstr "Hiển thị bình thường" -#:../glade2/meldapp.glade.h:46 -msgid "Meld" -msgstr "Meld" +#: ../meld/vcview.py:134 +msgid "Non _VC" +msgstr "Không _ĐKPB" -#:../glade2/meldapp.glade.h:47 -msgid "Mine" -msgstr "Của tôi" +#: ../meld/vcview.py:134 +msgid "Show unversioned files" +msgstr "Hiện tập tin không ĐKPB" -#:../glade2/meldapp.glade.h:48 -msgid "My Directory" -msgstr "Thư mục tôi" - -#:../glade2/meldapp.glade.h:49 -msgid "My File" -msgstr "Tập tin tôi" - -#:../glade2/meldapp.glade.h:50 -msgid "New..." -msgstr "Mới..." +#: ../meld/vcview.py:135 +msgid "Ignored" +msgstr "Bị bỏ qua" -#:../glade2/meldapp.glade.h:51 -msgid "Original" -msgstr "Gốc" +#: ../meld/vcview.py:135 +#| msgid "Show unversioned files" +msgid "Show ignored files" +msgstr "Hiện các tập tin bị bỏ qua" -#:../glade2/meldapp.glade.h:52 -msgid "Original Directory" -msgstr "Thư mục gốc" - -#:../glade2/meldapp.glade.h:53 -msgid "Original File" -msgstr "Tập tin gốc" +#: ../meld/vcview.py:178 ../meld/vcview.py:302 +msgid "Location" +msgstr "Địa điểm" -#:../glade2/meldapp.glade.h:54 -msgid "Other" -msgstr "Khác" +#: ../meld/vcview.py:179 +msgid "Status" +msgstr "Trạng thái" -#:../glade2/meldapp.glade.h:55 -msgid "Other Directory" -msgstr "Thư mục khác" - -#:../glade2/meldapp.glade.h:56 -msgid "Other File" -msgstr "Tập tin khác" - -#:../glade2/meldapp.glade.h:57 -msgid "Preferences : Meld" -msgstr "Tùy thích: Meld" - -#:../glade2/meldapp.glade.h:58 -msgid "Prune empty directories (-P)" -msgstr "Xén bớt thư mục trống (-P)" - -#:../glade2/meldapp.glade.h:59 -msgid "Quiet mode (-q)" -msgstr "Chế độ im (-q)" +#: ../meld/vcview.py:180 +msgid "Rev" +msgstr "Phiên bản" -#:../glade2/meldapp.glade.h:60 -msgid "Report _Bug" -msgstr "Thông báo _lỗi" +#: ../meld/vcview.py:181 +msgid "Tag" +msgstr "Thẻ" -#:../glade2/meldapp.glade.h:61 -msgid "Save _As" -msgstr "Lưu _dạng" - -#:../glade2/meldapp.glade.h:62 -msgid "Save in UTF-8 encoding" -msgstr "Lưu bằng mã ký tự UTF-8" - -#:../glade2/meldapp.glade.h:63 -msgid "Save in the files original encoding" -msgstr "Lưu bằng mã ký tự gốc của tập tin" - -#:../glade2/meldapp.glade.h:64 -msgid "Show line numbers" -msgstr "Hiện số thứ tự dòng" - -#:../glade2/meldapp.glade.h:65 -msgid "Simple : Lines only" -msgstr "Đơn giản: chỉ dòng" - -#:../glade2/meldapp.glade.h:66 -msgid "Solid : Filled Quadilaterals" -msgstr "Đặc: hình bốn cạnh đặc" - -#:../glade2/meldapp.glade.h:67 -msgid "Tab width" -msgstr "Rộng _tab:" - -#:../glade2/meldapp.glade.h:68 -msgid "Text Beside Icons" -msgstr "Chữ cạnh hình" +#: ../meld/vcview.py:182 +msgid "Options" +msgstr "Tùy chọn" -#:../glade2/meldapp.glade.h:69 -msgid "Text Filters" -msgstr "Bộ lọc chữ" +#: ../meld/vcview.py:233 +#| msgid "Version control view" +msgid "Choose one Version Control" +msgstr "Chọn một bộ Điều khiển phiên bản" + +#: ../meld/vcview.py:234 +msgid "Only one Version Control in this directory" +msgstr "Chỉ có một bộ điều khiển phiên bản ở thư mục này" + +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:247 +#, python-format +msgid "%s Not Installed" +msgstr "%s Chưa cài đặt" + +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:251 +#| msgid "Internal editor" +msgid "Invalid Repository" +msgstr "Kho bị lỗi" + +#: ../meld/vcview.py:260 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:302 +#, python-format +msgid "%s: %s" +msgstr "%s: %s" -#:../glade2/meldapp.glade.h:70 -msgid "Text Only" -msgstr "Chỉ có chữ" - -#:../glade2/meldapp.glade.h:71 -msgid "Text Under Icons" -msgstr "Chữ dưới hình" - -#:../glade2/meldapp.glade.h:72 -msgid "Three way directory" -msgstr "Thư mục ba chiều" - -#:../glade2/meldapp.glade.h:73 -msgid "Three way file" -msgstr "Tập tin ba chiều" - -#:../glade2/meldapp.glade.h:74 -msgid "Two way directory" -msgstr "Thư mục hai chiều" - -#:../glade2/meldapp.glade.h:75 -msgid "Two way file" -msgstr "Tập tin hai chiều" - -#:../glade2/meldapp.glade.h:76 -msgid "Use Compression (-z)" -msgstr "Nén (-z)" - -#:../glade2/meldapp.glade.h:77 -msgid "Use GNOME monospace font." -msgstr "Dùng phông chữ đơn cách GNOME." - -#:../glade2/meldapp.glade.h:78 -msgid "Use custom font." -msgstr "Dụng phông chữ tự chọn." - -#:../glade2/meldapp.glade.h:79 -msgid "Use syntax highlighting" -msgstr "Tô sáng cú pháp" - -#:../glade2/meldapp.glade.h:80 -msgid "Version control view" -msgstr "Khung xem điều khiển phiên bản" +#: ../meld/vcview.py:350 +msgid "(Empty)" +msgstr "(Rỗng)" -#:../glade2/meldapp.glade.h:81 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "Khi tải thì thử ra những codec theo thứ tự (v.d. utf8, iso8859)" +#: ../meld/vcview.py:388 +#, python-format +msgid "[%s] Fetching differences" +msgstr "[%s] Đang tìm sự khác biệt" -#:../glade2/meldapp.glade.h:82 +#: ../meld/vcview.py:396 +#, python-format +msgid "[%s] Applying patch" +msgstr "[%s] Đang áp dụng bản vá" + +#: ../meld/vcview.py:478 +msgid "Select some files first." +msgstr "Chọn tập tin trước tiên." + +#: ../meld/vcview.py:551 +#, python-format msgid "" -"When performing directory comparisons, you may filter out files and " -"directories by name. Each pattern is a list of shell style wildcards " -"separated by spaces." -msgstr "Khi so sánh thư mục, bạn có thể lọc ra tập tin và thư mục theo tên. Mỗi mẫu " -"là danh sách ký tự đại diện kiểu hệ vỏ, định giới bằng dấu cách." +"\n" +" Invoking 'patch' failed.\n" +" \n" +" Maybe you don't have 'GNU patch' installed,\n" +" or you use an untested version of %s.\n" +" \n" +" Please send email bug report to:\n" +" meld-list@gnome.org\n" +" \n" +" Containing the following information:\n" +" \n" +" - meld version: '%s'\n" +" - source control software type: '%s'\n" +" - source control software version: 'X.Y.Z'\n" +" - the output of '%s somefile.txt'\n" +" - patch command: '%s'\n" +" (no need to actually run it, just provide\n" +" the command line) \n" +" \n" +" Replace 'X.Y.Z' by the actual version for the\n" +" source control software you use.\n" +" " +msgstr "" -#:../glade2/meldapp.glade.h:83 +#: ../meld/ui/findbar.py:127 +#, python-format msgid "" -"When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching " -"text with the empty string before comparison is performed. If the expression " -"contains groups, only the groups are replaced. See the user manual for more " -"details." -msgstr "Khi so sánh tập tin, bạn có thể bỏ qua một số kiểu thay đổi. Tại đây, mỗi " -"mẫu là biểu thức chính quy Python mà thay thế chuỗi khớp bằng chuỗi rỗng " -"trước khi so sánh. Nếu biểu thức chứa nhóm thì chỉ thay thế nhóm. Hãy xem sổ " -"tay người dùng để tìm chi tiết." +"Regular expression error\n" +"'%s'" +msgstr "" +"Lỗi biểu thức chính quy\n" +"« %s »" -#:../glade2/meldapp.glade.h:84 -msgid "Whitespace is significant" -msgstr "Dấu cách là dữ liệu" +#: ../meld/ui/historyentry.py:293 +msgid "_Browse..." +msgstr "_Duyệt..." + +#: ../meld/ui/historyentry.py:301 +msgid "Path" +msgstr "Đường dẫn" + +#: ../meld/ui/historyentry.py:302 +msgid "Path to file" +msgstr "Đường dẫn tới tập tin" + +#: ../meld/ui/historyentry.py:303 +msgid "Pop up a file selector to choose a file" +msgstr "" + +#: ../meld/ui/historyentry.py:441 +#| msgid "CVS Directory" +msgid "Select directory" +msgstr "Chọn thư mục" + +#: ../meld/ui/historyentry.py:445 +#| msgid "Select some files first." +msgid "Select file" +msgstr "Chọn tập tin" -#:../glade2/meldapp.glade.h:85 -msgid "_Character" -msgstr "_Ký tự" +#: ../meld/ui/notebooklabel.py:60 +msgid "Close tab" +msgstr "Đóng thẻ" + +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:40 +#, fuzzy +#| msgid "" +#| "Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" +#| "Missing" +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing" +msgstr "" +"Bị bỏ qua:Không DKPB:::Lỗi::Mới thêm:Bị sửa đổi:Xung đột:Bị gỡ bỏ:" +"Thiếu" -#:../glade2/meldapp.glade.h:87 -msgid "_Contents" -msgstr "_Nội dung" +#: ../meld/vc/cvs.py:163 +#, python-format +msgid "" +"Error converting to a regular expression\n" +"The pattern was '%s'\n" +"The error was '%s'" +msgstr "" +"Gặp lỗi khi chuyển đổi sang biểu thức chính quy.\n" +"Mẫu là « %s ».\n" +"Lỗi là « %s »." -#:../glade2/meldapp.glade.h:88 -msgid "_Directory Comparison" -msgstr "So sánh th_ư mục" +#~ msgid "Error converting pattern '%s' to regular expression" +#~ msgstr "Gặp lỗi khi chuyển đổi mẫu « %s » sang biểu thức chính quy." -#:../glade2/meldapp.glade.h:89 -msgid "_Down" -msgstr "_Xuống" +#~ msgid "The regular expression '%s' was not found." +#~ msgstr "Không tìm thấy biểu thức chính quy « %s »." -#:../glade2/meldapp.glade.h:90 -msgid "_File Comparison" -msgstr "So sánh _tập tin" +#~ msgid "The text '%s' was not found." +#~ msgstr "Không tìm thấy đoạn « %s »." -#:../glade2/meldapp.glade.h:91 -msgid "_Logo" -msgstr "_Biểu hình" +#~ msgid "The error was:" +#~ msgstr "Lỗi:" -#:../glade2/meldapp.glade.h:92 -msgid "_New..." -msgstr "_Mới..." +#~ msgid "" +#~ "It contains ascii nulls.\n" +#~ "Perhaps it is a binary file." +#~ msgstr "" +#~ "Nó chứa ký tự rỗng ASCII.\n" +#~ "Có lẽ nó là tập tin nhị phân." -#:../glade2/meldapp.glade.h:93 -msgid "_None" -msgstr "_Không có" - -#:../glade2/meldapp.glade.h:94 -msgid "_Save" -msgstr "_Lưu" +#~ msgid "Compare" +#~ msgstr "So sánh" -#:../glade2/meldapp.glade.h:95 -msgid "_Three Way Compare" -msgstr "So sánh _ba chiều" +#~ msgid "Edit" +#~ msgstr "Hiệu chỉnh" -#:../glade2/meldapp.glade.h:96 -msgid "_Up" -msgstr "_Lên" +#~ msgid "Hide..." +#~ msgstr "Ẩn..." -#:../glade2/meldapp.glade.h:97 -msgid "_Version Control Browser" -msgstr "Bộ Duyệt Điều Khiển _Phiên Bản" +#~ msgid "Left" +#~ msgstr "Trái" -#:../glade2/meldapp.glade.h:98 -msgid "_Word" -msgstr "_Từ" +#~ msgid "Right" +#~ msgstr "Phải" -#:../glade2/vcview.glade.h:1 -msgid "Add _Binary" -msgstr "Thêm _nhị phân" +#~ msgid "Copy All To _Left" +#~ msgstr "Chép hết sang _trái" -#:../glade2/vcview.glade.h:2 -msgid "Add to VC" -msgstr "Thêm vào ĐKPB" +#~ msgid "Copy All To _Right" +#~ msgstr "Chép hết sang _phải" -#:../glade2/vcview.glade.h:3 -msgid "Commit" -msgstr "Gài vào" +#~ msgid "Find" +#~ msgstr "Tìm" -#:../glade2/vcview.glade.h:4 -msgid "Commit Files" -msgstr "Gài tập tin vào" +#~ msgid "Match _entire word only" +#~ msgstr "Chỉ khớp với t_oàn bộ từ" -#:../glade2/vcview.glade.h:5 -msgid "Compare Options" -msgstr "So sánh tùy chọn" - -#:../glade2/vcview.glade.h:7 -msgid "Date" -msgstr "Ngày" +#~ msgid "_Wrap around" +#~ msgstr "_Cuộn vòng" -#:../glade2/vcview.glade.h:8 -msgid "Delete locally" -msgstr "Xoá bỏ cục bộ" +#~ msgid "(gnome-default-editor)" +#~ msgstr "(bộ hiệu chỉnh mặc định Gnome)" -#:../glade2/vcview.glade.h:9 -msgid "Flatten directories" -msgstr "Làm phẳng thư mục" +#~ msgid "Drawing Style" +#~ msgstr "Kiểu dáng vẽ" -#:../glade2/vcview.glade.h:10 -msgid "Ignored" -msgstr "Bị bỏ qua" +#~ msgid "Edit Menu" +#~ msgstr "Trình đơn Hiệu chỉnh" -#:../glade2/vcview.glade.h:11 -msgid "Local copy against other remote revision" -msgstr "Bản sao cục bộ với bản sửa đổi ở xa khác" - -#:../glade2/vcview.glade.h:12 -msgid "Local copy against same remote revision" -msgstr "Bản sao cục bộ với cùng bản sửa đổi ở xa" +#~ msgid "Font" +#~ msgstr "Phông chữ" -#:../glade2/vcview.glade.h:13 -msgid "Log Message" -msgstr "Thông điệp ghi lưu" +#~ msgid "Global options" +#~ msgstr "Tùy chọn toàn cục" -#:../glade2/vcview.glade.h:14 -msgid "Non _VC" -msgstr "Không _ĐKPB" +#~ msgid "Misc" +#~ msgstr "Linh tinh" -#:../glade2/vcview.glade.h:15 -msgid "Previous Logs" -msgstr "Bản ghi trước" +#~ msgid "Saving" +#~ msgstr "Đang lưu" -#:../glade2/vcview.glade.h:16 -msgid "Remove _Locally" -msgstr "Gỡ bỏ _cục bộ" +#~ msgid "Toolbar Appearance" +#~ msgstr "Diện mạo thanh công cụ" -#:../glade2/vcview.glade.h:17 -msgid "Remove from VC" -msgstr "Gỡ bỏ ra ĐKPB" +#~ msgid "Update Options" +#~ msgstr "Tùy chọn cập nhật" -#:../glade2/vcview.glade.h:19 -msgid "Show unversioned files" -msgstr "Hiện tập tin không ĐKPB" +#~ msgid "Whitespace" +#~ msgstr "Dấu cách trắng" -#:../glade2/vcview.glade.h:20 ../vcview.py:173 -msgid "Tag" -msgstr "Thẻ" +#~ msgid "CVS" +#~ msgstr "CVS" -#:../glade2/vcview.glade.h:21 -msgid "Update" -msgstr "Cập nhật" +#~ msgid "Compare" +#~ msgstr "So sánh" -#:../glade2/vcview.glade.h:22 -msgid "VC Log" -msgstr "Bản ghi ĐKPB" +#~ msgid "Display" +#~ msgstr "Hiển thị" -#:../glade2/vcview.glade.h:23 -msgid "_Add" -msgstr "Th_êm" +#~ msgid "Editor" +#~ msgstr "Bộ hiệu chỉnh" -#:../glade2/vcview.glade.h:24 -msgid "_Commit" -msgstr "_Gài vào" +#~ msgid "Encoding" +#~ msgstr "Bảng mã" -#:../glade2/vcview.glade.h:26 -msgid "_Edit" -msgstr "_Hiệu chỉnh" +#~ msgid "File Filters" +#~ msgstr "Bộ lọc tập tin" -#:../glade2/vcview.glade.h:27 -msgid "_Flatten" -msgstr "Làm _phẳng" +#~ msgid "Text Filters" +#~ msgstr "Bộ lọc chữ" -#:../glade2/vcview.glade.h:28 -msgid "_Modified" -msgstr "Bị sửa _đổi" +#~ msgid "Automatically supply missing newline at end of file." +#~ msgstr "Tự động cung cấp ký tự dòng mới thiếu tại kết thúc tập tin." -#:../glade2/vcview.glade.h:29 -msgid "_Normal" -msgstr "_Bình thường" +#~ msgid "CVS" +#~ msgstr "CVS" -#:../glade2/vcview.glade.h:30 -msgid "_Remove" -msgstr "Gỡ _bỏ" +#~ msgid "CVS binary" +#~ msgstr "Nhị phân CVS" -#:../glade2/vcview.glade.h:31 -msgid "_Update" -msgstr "_Cập nhật" +#~ msgid "" +#~ "Choose how the central bar of the diff viewer is drawn. You may wish to " +#~ "choose a simpler mode if you find scrolling is slow." +#~ msgstr "" +#~ "Hãy chọn cách vẽ thanh trung tâm trong bộ xem khác biệt. Bạn có lẽ sẽ " +#~ "muốn chọn chế độ đơn giản hơn nếu bạn thấy nó cuộn chậm." -#:../meld:60 ../meld:70 ../meld:80 -#,c-format -msgid "Meld requires %s or higher." -msgstr "Trình Meld cần thiết %s hay sau." +#~ msgid "Copyright (C) 2002-2006 Stephen Kennedy" +#~ msgstr "Bản quyền © năm 2002-2006 Stephen Kennedy" -#:../meld:81 -msgid "" -"Due to incompatible API changes some functions may not operate as expected." -msgstr "Một số chức năng có lẽ sẽ không hoạt động một cách được ngờ, vì thay đổi API " -"một cách không tương thích." +#~ msgid "Create missing directories (-d)" +#~ msgstr "Tạo thư mục thiếu (-d)" -#:../meld.desktop.in.h:1 -msgid "Compare and merge your files." -msgstr "So sánh và trộn tập tin của bạn." +#~ msgid "Curved : Filled Curves" +#~ msgstr "Cong: cong đặc" -#:../meld.desktop.in.h:2 -msgid "Meld Diff Viewer" -msgstr "Bộ xem khác biệt Meld" +#~ msgid "Edit menu popup invokes" +#~ msgstr "Trình đơn hiệu chỉnh mà bật lên gọi" -#:../meldapp.py:145 -msgid "label" -msgstr "nhãn" +#~ msgid "Gnome Default" +#~ msgstr "Mặc định Gnome" -#:../meldapp.py:146 -msgid "pattern" -msgstr "mẫu" +#~ msgid "Icons Only" +#~ msgstr "Chỉ có hình" -#.file filters -#.text filters -#:../meldapp.py:247 ../meldapp.py:251 ../vcview.py:153 -msgid "Name" -msgstr "Tên" +#~ msgid "Ignore .cvsrc (-f)" +#~ msgstr "Bỏ qua .cvsrc (-f)" -#:../meldapp.py:247 ../meldapp.py:251 -msgid "Active" -msgstr "Hoạt động" +#~ msgid "Ignore changes in amount of white space" +#~ msgstr "Bỏ qua số dấu cách thay đổi." -#:../meldapp.py:247 -msgid "Pattern" -msgstr "Mẫu" +#~ msgid "" +#~ "Ignore changes in case; consider upper and lower-case letters equivalent" +#~ msgstr "Bỏ qua chữ hoa/thường thay đổi: xem là trùng" -#:../meldapp.py:251 -msgid "Regex" -msgstr "Biểu thức c.q." +#~ msgid "Ignore changes that just insert or delete blank lines" +#~ msgstr "Bỏ qua thay đổi chỉ chèn hay xóa bỏ dòng trắng." -#:../meldapp.py:292 -msgid "Line numbers are only available if you have gnome-python-desktop installed." -msgstr "Chỉ có số thứ tự dòng có sẵn nếu bạn đã cài đặt gnome-python-desktop." +#~ msgid "Line Wrapping " +#~ msgstr "Cuộn dòng " -#:../meldapp.py:296 -msgid "" -"Syntax highlighting is only available if you have gnome-python-desktop installed." -msgstr "Chỉ có khả năng tô sáng cú pháp có sẵn nếu bạn đã cài đặt gnome-python-desktop." +#~ msgid "Locate CVS binary : Meld" +#~ msgstr "Định vị nhị phân CVS: Meld" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:435 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "Sao lưu\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgid "My Directory" +#~ msgstr "Thư mục tôi" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:437 -msgid "CVS\t1\tCVS\n" -msgstr "CVS\t1\tCVS\n" - -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:439 -msgid "SVN\t1\t.svn\n" -msgstr "SVN\t1\t.svn\n" - -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:441 -msgid "Monotone\t1\tMT\n" -msgstr "Monotone\t1\tMT\n" +#~ msgid "New..." +#~ msgstr "Mới..." -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:443 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "Nhị phân\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" +#~ msgid "Original Directory" +#~ msgstr "Thư mục gốc" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:445 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "Vật chứa\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" +#~ msgid "Original File" +#~ msgstr "Tập tin gốc" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:447 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "Từ khoá CVS\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgid "Other Directory" +#~ msgstr "Thư mục khác" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:449 -msgid "C++ comment\t0\t//.*\n" -msgstr "Ghi chú C++\t0\t//.*\n" +#~ msgid "Other File" +#~ msgstr "Tập tin khác" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:451 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "Ghi chú C\t0\t/\\*.*?\\*/\n" +#~ msgid "Prune empty directories (-P)" +#~ msgstr "Xén bớt thư mục trống (-P)" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:453 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "Mọi dấu cách\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgid "Quiet mode (-q)" +#~ msgstr "Chế độ im (-q)" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:455 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "Dấu cách đi trước\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgid "Save _As" +#~ msgstr "Lưu _dạng" -#.TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#:../meldapp.py:457 -msgid "Script comment\t0\t#.*" -msgstr "Ghi chú tập lệnh\t0\t#.*" +#~ msgid "Save in UTF-8 encoding" +#~ msgstr "Lưu bằng mã ký tự UTF-8" -#:../meldapp.py:762 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "Không thể so sánh tập tin và thư mục với nhau.\n" +#~ msgid "Save in the files original encoding" +#~ msgstr "Lưu bằng mã ký tự gốc của tập tin" -#.############################################################################### -#. -#.usage -#. -#.############################################################################### -#:../meldapp.py:808 -msgid "" -"Meld is a file and directory comparison tool. Usage:\n" -"\n" -" meld Start with no windows open\n" -" meld Start with VC browser in 'dir'\n" -" meld Start with VC diff of 'file'\n" -" meld [file] Start with 2 or 3 way file comparison\n" -" meld [dir] Start with 2 or 3 way directory comparison\n" -"\n" -"Options:\n" -" -h, --help Show this help text and exit\n" -" -v, --version Display the version and exit\n" -"\n" -"For more information choose help -> contents.\n" -"Report bugs at http://bugzilla.gnome.org/buglist.cgi?product=meld\n" -"Discuss meld at http://mail.gnome.org/mailman/listinfo/meld-list\n" -msgstr "Meld là công cụ so sánh tập tin và thư mục.\n" -"\n" -"Cách sử dụng:\n" -"\n" -" meld \tKhời chạy không có cửa sổ nào đang mở.\n" -" meld \tKhởi chạy có bộ duyệt ĐKPB trong thư mục này.\n" -" meld \tKhời chạy có việc phân biệt DKPB về tập tin này.\n" -" meld [tập_tin]\n" -"\t\t\t\t\tKhởi chạy có việc so sánh hai hoặc ba tập tin.\n" -" meld [thư_mục]\n" -"\t\t\t\t\tKhởi chạy có việc so sánh hai hoặc ba thư mục.\n" -"\n" -"Tùy chọn:\n" -" -h, --help \tHiển thị _trợ giúp_ này rồi thoát.\n" -" -v, --version \tHiển thị thông tin _phiên bản_ rồi thoát.\n" -"\n" -"Để tìm thông tin thêm, hãy chọn Trợ giúp → Nội dung.\n" -"Hãy thông báo lỗi tại\n" -"\t\n" -"Có thể bàn chuyện Meld trong hộp thư chung chúng tôi:\n" -"\t\n" -"[DKPB: Điều Khiển Phiên Bản]\n" - -#:../meldapp.py:825 -#,python-format -msgid "" -"Meld %s\n" -"Written by Stephen Kennedy " -msgstr "Meld %s\n" -"Tác giả: Stephen Kennedy " - -#:../meldapp.py:875 -#,python-format -msgid "Wrong number of arguments (Got %i)" -msgstr "Có số đối số không đúng (nhận %i)." +#~ msgid "Simple : Lines only" +#~ msgstr "Đơn giản: chỉ dòng" -#:../melddoc.py:45 -msgid "untitled" -msgstr "không tên" +#~ msgid "Solid : Filled Quadilaterals" +#~ msgstr "Đặc: hình bốn cạnh đặc" -#.no common path. empty names get changed to "[None]" -#:../misc.py:118 -msgid "[None]" -msgstr "[không có]" +#~ msgid "Text Beside Icons" +#~ msgstr "Chữ cạnh hình" -#:../vcview.py:170 -msgid "Location" -msgstr "Địa điểm" +#~ msgid "Text Only" +#~ msgstr "Chỉ có chữ" -#:../vcview.py:171 -msgid "Status" -msgstr "Trạng thái" +#~ msgid "Text Under Icons" +#~ msgstr "Chữ dưới hình" -#:../vcview.py:172 -msgid "Rev" -msgstr "Bản" +#~ msgid "Three way directory" +#~ msgstr "Thư mục ba chiều" -#:../vcview.py:174 -msgid "Options" -msgstr "Tùy chọn" +#~ msgid "Three way file" +#~ msgstr "Tập tin ba chiều" -#:../vcview.py:256 -msgid "(Empty)" -msgstr "(Rỗng)" +#~ msgid "Two way directory" +#~ msgstr "Thư mục hai chiều" -#:../vcview.py:293 -#,python-format -msgid "[%s] Fetching differences" -msgstr "[%s] Đang lấy khác biệt" +#~ msgid "Two way file" +#~ msgstr "Tập tin hai chiều" -#:../vcview.py:300 -#,python-format -msgid "[%s] Applying patch" -msgstr "[%s] Đang áp dụng đắp vá" +#~ msgid "Use Compression (-z)" +#~ msgstr "Nén (-z)" -#:../vcview.py:304 -msgid "No differences found." -msgstr "Không tìm thấy khác biệt." +#~ msgid "Use GNOME monospace font." +#~ msgstr "Dùng phông chữ đơn cách GNOME." -#:../vcview.py:381 -msgid "Select some files first." -msgstr "Chọn tập tin trước tiên." +#~ msgid "Use custom font." +#~ msgstr "Dụng phông chữ tự chọn." -#.These are the possible states of files. Be sure to get the colons correct. -#:../vc/_vc.py:37 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" -"Missing" -msgstr "Bị bỏ qua:Không DKPB:::Lỗi::Mới thêm:Bị sửa đổi:Xung đột:Bị gỡ bỏ:" -"Thiếu" +#~ msgid "Whitespace is significant" +#~ msgstr "Dấu cách là dữ liệu" -#:../vc/cvs.py:160 -#,python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "Gặp lỗi khi chuyển đổi sang biểu thức chính quy.\n" -"Mẫu là « %s ».\n" -"Lỗi là « %s »." +#~ msgid "_Character" +#~ msgstr "_Ký tự" + +#~ msgid "_Logo" +#~ msgstr "_Biểu hình" + +#~ msgid "_Save" +#~ msgstr "_Lưu" + +#~ msgid "_Up" +#~ msgstr "_Lên" + +#~ msgid "_Word" +#~ msgstr "_Từ" + +#~ msgid "Compare Options" +#~ msgstr "So sánh tùy chọn" + +#~ msgid "Local copy against other remote revision" +#~ msgstr "Bản sao cục bộ với bản sửa đổi ở xa khác" + +#~ msgid "Local copy against same remote revision" +#~ msgstr "Bản sao cục bộ với cùng bản sửa đổi ở xa" + +#~ msgid "Remove _Locally" +#~ msgstr "Gỡ bỏ _cục bộ" + +#~ msgid "_Commit" +#~ msgstr "_Gài vào" + +#~ msgid "" +#~ "Due to incompatible API changes some functions may not operate as " +#~ "expected." +#~ msgstr "" +#~ "Một số chức năng có lẽ sẽ không hoạt động một cách được ngờ, vì thay đổi " +#~ "API một cách không tương thích." + +#~ msgid "Regex" +#~ msgstr "Biểu thức c.q." + +#~ msgid "" +#~ "Syntax highlighting is only available if you have gnome-python-desktop " +#~ "installed." +#~ msgstr "" +#~ "Chỉ có khả năng tô sáng cú pháp có sẵn nếu bạn đã cài đặt gnome-python-" +#~ "desktop." + +#~ msgid "CVS\t1\tCVS\n" +#~ msgstr "CVS\t1\tCVS\n" + +#~ msgid "SVN\t1\t.svn\n" +#~ msgstr "SVN\t1\t.svn\n" + +#~ msgid "Monotone\t1\tMT\n" +#~ msgstr "Monotone\t1\tMT\n" + +#~ msgid "" +#~ "Meld is a file and directory comparison tool. Usage:\n" +#~ "\n" +#~ " meld Start with no windows open\n" +#~ " meld Start with VC browser in 'dir'\n" +#~ " meld Start with VC diff of 'file'\n" +#~ " meld [file] Start with 2 or 3 way file comparison\n" +#~ " meld [dir] Start with 2 or 3 way directory " +#~ "comparison\n" +#~ "\n" +#~ "Options:\n" +#~ " -h, --help Show this help text and exit\n" +#~ " -v, --version Display the version and exit\n" +#~ "\n" +#~ "For more information choose help -> contents.\n" +#~ "Report bugs at http://bugzilla.gnome.org/buglist.cgi?product=meld\n" +#~ "Discuss meld at http://mail.gnome.org/mailman/listinfo/meld-list\n" +#~ msgstr "" +#~ "Meld là công cụ so sánh tập tin và thư mục.\n" +#~ "\n" +#~ "Cách sử dụng:\n" +#~ "\n" +#~ " meld \tKhời chạy không có cửa sổ nào đang mở.\n" +#~ " meld \tKhởi chạy có bộ duyệt ĐKPB trong thư mục này.\n" +#~ " meld \tKhời chạy có việc phân biệt DKPB về tập tin này.\n" +#~ " meld [tập_tin]\n" +#~ "\t\t\t\t\tKhởi chạy có việc so sánh hai hoặc ba tập tin.\n" +#~ " meld [thư_mục]\n" +#~ "\t\t\t\t\tKhởi chạy có việc so sánh hai hoặc ba thư mục.\n" +#~ "\n" +#~ "Tùy chọn:\n" +#~ " -h, --help \tHiển thị _trợ giúp_ này rồi thoát.\n" +#~ " -v, --version \tHiển thị thông tin _phiên bản_ rồi thoát.\n" +#~ "\n" +#~ "Để tìm thông tin thêm, hãy chọn Trợ giúp → Nội dung.\n" +#~ "Hãy thông báo lỗi tại\n" +#~ "\t\n" +#~ "Có thể bàn chuyện Meld trong hộp thư chung chúng tôi:\n" +#~ "\t\n" +#~ "[DKPB: Điều Khiển Phiên Bản]\n" + +#~ msgid "" +#~ "Meld %s\n" +#~ "Written by Stephen Kennedy " +#~ msgstr "" +#~ "Meld %s\n" +#~ "Tác giả: Stephen Kennedy " diff -Nru meld-1.5.3/po/zh_CN.po meld-3.11.0/po/zh_CN.po --- meld-1.5.3/po/zh_CN.po 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/po/zh_CN.po 2014-02-16 20:23:22.000000000 +0000 @@ -5,437 +5,1065 @@ # Funda Wang , 2004, 2005. # Careone , 2009. # arccos , 2009. -# Tao Wang , 2010. +# Tao Wang , 2010, 2013. +# Wylmer Wang , 2013. # msgid "" msgstr "" "Project-Id-Version: meld master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=meld&component=general\n" -"POT-Creation-Date: 2010-07-01 22:40+0000\n" -"PO-Revision-Date: 2010-07-25 19:08+0800\n" +"product=meld&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2013-12-06 23:50+0000\n" +"PO-Revision-Date: 2013-12-07 17:20+0800\n" "Last-Translator: Tao Wang \n" "Language-Team: Chinese (simplified) \n" +"Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ../bin/meld:77 +#: ../bin/meld:115 msgid "Cannot import: " msgstr "无法导入:" -#: ../bin/meld:80 +#: ../bin/meld:118 #, c-format msgid "Meld requires %s or higher." msgstr "Meld 要求 %s 或更高版本。" -#: ../data/meld.desktop.in.h:1 -msgid "Compare and merge your files" -msgstr "比较和合并您的文件" +#: ../data/meld.desktop.in.h:1 ../data/ui/meldapp.ui.h:1 +msgid "Meld" +msgstr "Meld" #: ../data/meld.desktop.in.h:2 msgid "Diff Viewer" msgstr "差异查看器" -#: ../data/meld.desktop.in.h:3 ../data/ui/meldapp.glade.h:4 -msgid "Meld" -msgstr "Meld" - -#: ../data/meld.desktop.in.h:4 +#: ../data/meld.desktop.in.h:3 msgid "Meld Diff Viewer" msgstr "Meld Diff 差异查看器" -#: ../data/ui/filediff.glade.h:1 +#: ../data/meld.desktop.in.h:4 +msgid "Compare and merge your files" +msgstr "比较和合并您的文件" + +#: ../data/meld.appdata.xml.in.h:1 msgid "" -"Some files have been modified.\n" -"Which ones would you like to save?" +"Meld is a visual diff and merge tool targeted at developers. Meld helps you " +"compare files, directories, and version controlled projects. It provides " +"two- and three-way comparison of both files and directories, and supports " +"many version control systems including Git, Mercurial, Bazaar and Subversion." msgstr "" -"某些文件已经修改过。\n" -"您想要保存哪几个文件?" -#: ../data/ui/filediff.glade.h:3 -msgid "Copy to Clipboard" -msgstr "复制到剪贴板" +#: ../data/meld.appdata.xml.in.h:2 +msgid "" +"Meld helps you review code changes, understand patches, and makes enormous " +"merge conflicts slightly less painful." +msgstr "" -#: ../data/ui/filediff.glade.h:4 ../meld/filediff.py:180 -msgid "Create Patch" -msgstr "创建补丁" - -#: ../data/ui/filediff.glade.h:5 -msgid "Save modified files?" -msgstr "保存已修改的文件?" - -#: ../data/ui/filediff.glade.h:6 -msgid "_Discard Changes" -msgstr "丢弃更改(_D)" - -#: ../data/ui/filediff.glade.h:7 -msgid "_Save Selected" -msgstr "保存选中的(_S)" +#: ../data/mime/meld.xml.in.h:1 +msgid "Meld comparison description" +msgstr "Meld 比较描述" + +#: ../data/org.gnome.meld.gschema.xml.h:1 +msgid "Default window size" +msgstr "默认窗口大小" + +#: ../data/org.gnome.meld.gschema.xml.h:2 +#| msgid "Show or hide the toolbar" +msgid "Show toolbar" +msgstr "显示工具栏" -#: ../data/ui/findbar.glade.h:1 -msgid "Regular E_xpression" -msgstr "正则表达式(_X)" +#: ../data/org.gnome.meld.gschema.xml.h:3 +msgid "If true, the window toolbar is visible." +msgstr "" -#: ../data/ui/findbar.glade.h:2 -msgid "Replace _All" -msgstr "全部替换(_A)" +#: ../data/org.gnome.meld.gschema.xml.h:4 +#| msgid "_Statusbar" +msgid "Show statusbar" +msgstr "显示状态栏" -#: ../data/ui/findbar.glade.h:3 -msgid "Replace _With" -msgstr "替换为(_W)" +#: ../data/org.gnome.meld.gschema.xml.h:5 +msgid "If true, the window statusbar is visible." +msgstr "" -#: ../data/ui/findbar.glade.h:4 -msgid "Who_le word" -msgstr "匹配整个单词(_L)" +#: ../data/org.gnome.meld.gschema.xml.h:6 +#| msgid "Automatically merge files" +msgid "Automatically detected text encodings" +msgstr "自动检测到的文本编码" -#: ../data/ui/findbar.glade.h:5 -msgid "_Match Case" -msgstr "区分大小写(_M)" +#: ../data/org.gnome.meld.gschema.xml.h:7 +msgid "" +"These text encodings will be automatically used (in order) to try to decode " +"loaded text files." +msgstr "" -#: ../data/ui/findbar.glade.h:6 -msgid "_Next" -msgstr "下一个(_N)" +#: ../data/org.gnome.meld.gschema.xml.h:8 +msgid "Width of an indentation step" +msgstr "" -#: ../data/ui/findbar.glade.h:7 -msgid "_Previous" -msgstr "上一个(_P)" +#: ../data/org.gnome.meld.gschema.xml.h:9 +msgid "The number of spaces to use for a single indent step" +msgstr "" -#: ../data/ui/findbar.glade.h:8 ../meld/meldapp.py:154 -msgid "_Replace" -msgstr "替换(_R)" +#: ../data/org.gnome.meld.gschema.xml.h:10 +msgid "Whether to indent using spaces or tabs" +msgstr "" -#: ../data/ui/findbar.glade.h:9 -msgid "_Search for" -msgstr "搜索(_S)" +#: ../data/org.gnome.meld.gschema.xml.h:11 +msgid "If true, any new indentation will use spaces instead of tabs." +msgstr "" -#: ../data/ui/meldapp.glade.h:1 -msgid "Choose Files" -msgstr "选择文件" +#: ../data/org.gnome.meld.gschema.xml.h:12 +#| msgid "Show _line numbers" +msgid "Show line numbers" +msgstr "显示行号" -#: ../data/ui/meldapp.glade.h:2 -msgid "Copyright © 2002-2009 Stephen Kennedy" -msgstr "版权所有 © 2002-2009 Stephen Kennedy" +#: ../data/org.gnome.meld.gschema.xml.h:13 +msgid "If true, line numbers will be shown in the gutter of file comparisons." +msgstr "" -#: ../data/ui/meldapp.glade.h:3 -msgid "Directory" -msgstr "目录" +#: ../data/org.gnome.meld.gschema.xml.h:14 +#| msgid "Highlight _current line" +msgid "Highlight syntax" +msgstr "语法高亮" -#: ../data/ui/meldapp.glade.h:5 -msgid "Mine" -msgstr "我的" - -#: ../data/ui/meldapp.glade.h:6 -msgid "Original" -msgstr "原件" - -#: ../data/ui/meldapp.glade.h:7 -msgid "Other" -msgstr "其它" - -#: ../data/ui/meldapp.glade.h:8 -msgid "Three way directory" -msgstr "三向目录" - -#: ../data/ui/meldapp.glade.h:9 -msgid "Three way file" -msgstr "三向文件" - -#: ../data/ui/meldapp.glade.h:10 -msgid "Two way directory" -msgstr "两向目录" - -#: ../data/ui/meldapp.glade.h:11 -msgid "Two way file" -msgstr "两向文件" +#: ../data/org.gnome.meld.gschema.xml.h:15 +msgid "" +"Whether to highlight syntax in comparisons. Because of Meld's own color " +"highlighting, this is off by default." +msgstr "" -#: ../data/ui/meldapp.glade.h:12 -msgid "Version control view" -msgstr "版本控制查看" +#: ../data/org.gnome.meld.gschema.xml.h:16 +#| msgid "Show w_hitespace" +msgid "Displayed whitespace" +msgstr "显示的空白字符" -#: ../data/ui/meldapp.glade.h:13 -msgid "_Directory Comparison" -msgstr "目录比较(_D)" - -#: ../data/ui/meldapp.glade.h:14 -msgid "_File Comparison" -msgstr "文件比较(_F)" - -#: ../data/ui/meldapp.glade.h:15 -msgid "_Three Way Compare" -msgstr "三向比较(_T)" - -#: ../data/ui/meldapp.glade.h:16 -msgid "_Version Control Browser" -msgstr "版本控制浏览器(_V)" - -#: ../data/ui/preferences.glade.h:1 -msgid "Display" -msgstr "显示" - -#: ../data/ui/preferences.glade.h:2 -msgid "External editor" -msgstr "外部编辑器" - -#: ../data/ui/preferences.glade.h:3 -msgid "Font" -msgstr "字体" - -#: ../data/ui/preferences.glade.h:4 -msgid "Loading" -msgstr "载入" +#: ../data/org.gnome.meld.gschema.xml.h:17 +msgid "" +"Selector for individual whitespace character types to be shown. Possible " +"values are 'space', 'tab', 'newline' and 'nbsp'." +msgstr "" -#: ../data/ui/preferences.glade.h:5 -msgid "Do not _split words over two lines" -msgstr "不要将一个词拆成两行(_S)" +#: ../data/org.gnome.meld.gschema.xml.h:18 +#| msgid "Wrapped" +msgid "Wrap mode" +msgstr "折行模式" -#: ../data/ui/preferences.glade.h:6 -msgid "Edito_r command:" -msgstr "编辑命令(_R):" +#: ../data/org.gnome.meld.gschema.xml.h:19 +msgid "" +"Lines in file comparisons will be wrapped according to this setting, either " +"not at all ('none'), at any character ('char') or only at the end of words " +"('word')." +msgstr "" -#: ../data/ui/preferences.glade.h:7 -msgid "Editor" -msgstr "编辑器" +#: ../data/org.gnome.meld.gschema.xml.h:20 +#| msgid "Highlight _current line" +msgid "Highlight current line" +msgstr "高亮当前行" -#: ../data/ui/preferences.glade.h:8 -msgid "Enable text _wrapping" -msgstr "启用文本自动换行(_W)" +#: ../data/org.gnome.meld.gschema.xml.h:21 +msgid "" +"If true, the line containing the cursor will be highlighted in file " +"comparisons." +msgstr "" -#: ../data/ui/preferences.glade.h:9 -msgid "Encoding" -msgstr "文字编码" +#: ../data/org.gnome.meld.gschema.xml.h:22 +#| msgid "_Use the system fixed width font" +msgid "Use the system default monospace font" +msgstr "使用系统默认等宽字体" -#: ../data/ui/preferences.glade.h:10 -msgid "File Filters" -msgstr "文件过滤器" +#: ../data/org.gnome.meld.gschema.xml.h:23 +msgid "" +"If false, the defined custom font will be used instead of the system " +"monospace font." +msgstr "" -#: ../data/ui/preferences.glade.h:11 -msgid "Ignore changes which insert or delete blank lines" -msgstr "忽略多空行或少空行的差异" +#: ../data/org.gnome.meld.gschema.xml.h:24 +msgid "Custom font" +msgstr "自定义字体" + +#: ../data/org.gnome.meld.gschema.xml.h:25 +msgid "" +"The custom font to use, stored as a string and parsed as a Pango font " +"description" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:26 +msgid "Ignore blank lines when comparing files" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:27 +msgid "" +"If true, blank lines will be trimmed when highlighting changes between files." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:28 +#| msgid "Use _default system editor" +msgid "Use the system default editor" +msgstr "使用系统默认编辑器" + +#: ../data/org.gnome.meld.gschema.xml.h:29 +msgid "" +"If false, the defined custom editor will be used instead of the system " +"editor when opening files externally." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:30 +msgid "The custom editor launch command" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:31 +msgid "" +"The command used to launch a custom editor. Some limited templating is " +"supported here; at the moment '{file}' and '{line}' are recognised tokens." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:32 +msgid "Columns to display" +msgstr "" -#: ../data/ui/preferences.glade.h:12 +#: ../data/org.gnome.meld.gschema.xml.h:33 +msgid "" +"List of column names in folder comparison and whether they should be " +"displayed." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:34 ../data/ui/preferences.ui.h:28 msgid "Ignore symbolic links" msgstr "忽略符号链接" -#: ../data/ui/preferences.glade.h:13 -msgid "Meld Preferences" -msgstr "Meld 首选项" +#: ../data/org.gnome.meld.gschema.xml.h:35 +msgid "" +"If true, folder comparisons do not follow symbolic links when traversing the " +"folder tree." +msgstr "" -#: ../data/ui/preferences.glade.h:14 -msgid "Show _line numbers" -msgstr "显示行号(_L)" +#: ../data/org.gnome.meld.gschema.xml.h:36 +#| msgid "Shallow Comparison" +msgid "Use shallow comparison" +msgstr "使用粗浅比较" -#: ../data/ui/preferences.glade.h:15 -msgid "Text Filters" -msgstr "文字过滤器" +#: ../data/org.gnome.meld.gschema.xml.h:37 +msgid "" +"If true, folder comparisons compare files based solely on size and mtime, " +"considering files to be identical if their size and mtime match, and " +"different otherwise." +msgstr "" -#: ../data/ui/preferences.glade.h:16 -msgid "Use _default system editor" -msgstr "使用默认系统编辑器(_D)" +#: ../data/org.gnome.meld.gschema.xml.h:38 +#| msgid "_Timestamp resolution:" +msgid "File timestamp resolution" +msgstr "文件时间戳精细度:" -#: ../data/ui/preferences.glade.h:17 -msgid "Use s_yntax highlighting" -msgstr "使用语法高亮(_Y)" +#: ../data/org.gnome.meld.gschema.xml.h:39 +msgid "" +"When comparing based on mtime, this is the minimum difference in nanoseconds " +"between two files before they're considered to have different mtimes. This " +"is useful when comparing files between filesystems with different timestamp " +"resolution." +msgstr "" -#: ../data/ui/preferences.glade.h:18 -msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" -msgstr "载入时,按此顺序尝试编码。(如 utf8,gb2312,gbk,gb18030)" +#: ../data/org.gnome.meld.gschema.xml.h:40 +#| msgid "File Filters" +msgid "File status filters" +msgstr "文件状态过滤器" -#: ../data/ui/preferences.glade.h:19 +#: ../data/org.gnome.meld.gschema.xml.h:41 +msgid "List of statuses used to filter visible files in folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:42 +#| msgid "Choose which version control system to use" +msgid "Show the version control console output" +msgstr "选择版本控制终端输出" + +#: ../data/org.gnome.meld.gschema.xml.h:43 msgid "" -"When performing directory comparisons, you may filter out files and " -"directories by name. Each pattern is a list of shell style wildcards " -"separated by spaces." +"If true, a console output section will be shown in version control views, " +"showing the commands run for version control operations." msgstr "" -"进行目录比较时,您可以按名称过滤文件和目录。每种模式都是一个用空格隔开的 " -"Shell支持的通配符的列表。" -#: ../data/ui/preferences.glade.h:20 +#: ../data/org.gnome.meld.gschema.xml.h:44 +msgid "Present version comparisons as left-local/right-remote" +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:45 msgid "" -"When performing file comparisons, you may ignore certain types of changes. " -"Each pattern here is a python regular expression which replaces matching " -"text with the empty string before comparison is performed. If the expression " -"contains groups, only the groups are replaced. See the user manual for more " -"details." +"If true, version control comparisons will use a left-is-local, right-is-" +"remote scheme to determine what order to present files in panes. Otherwise, " +"a left-is-theirs, right-is-mine scheme is used." msgstr "" -"进行文件比较时,您可以忽略某些理所当然的差异。这时每种模式都是一个 python 正" -"则表达式,在开始比较前,用空字符串来替换匹配的文字。如果表达式包含“group”,只" -"有“group”被替换。更多信息请查看用户手册。" -#: ../data/ui/preferences.glade.h:21 -msgid "_Automatically supply missing newline at end of file" -msgstr "自动补齐文件末尾缺失的换行符(_A)" +#: ../data/org.gnome.meld.gschema.xml.h:46 +msgid "Show margin in commit message editor" +msgstr "" -#: ../data/ui/preferences.glade.h:22 -msgid "_Editor font:" -msgstr "编辑器字体(_E):" +#: ../data/org.gnome.meld.gschema.xml.h:47 +msgid "" +"If true, a guide will be displayed to show what column the margin is at in " +"the version control commit message editor." +msgstr "" -#: ../data/ui/preferences.glade.h:23 -msgid "_Insert spaces instead of tabs" -msgstr "用空格替换制表符(_I)" +#: ../data/org.gnome.meld.gschema.xml.h:48 +msgid "Margin column in commit message editor" +msgstr "" -#: ../data/ui/preferences.glade.h:24 -msgid "_Tab width:" -msgstr "制表符宽度(_T):" +#: ../data/org.gnome.meld.gschema.xml.h:49 +msgid "" +"The column of the margin is at in the version control commit message editor." +msgstr "" -#: ../data/ui/preferences.glade.h:25 -msgid "_Use the system fixed width font" -msgstr "使用系统固定宽度字体(_U)" +#: ../data/org.gnome.meld.gschema.xml.h:50 +msgid "Automatically hard-wrap commit messages" +msgstr "" -#: ../data/ui/vcview.glade.h:1 -msgid "Commit Files" -msgstr "提交文件" +#: ../data/org.gnome.meld.gschema.xml.h:51 +msgid "" +"If true, the version control commit message editor will hard-wrap (i.e., " +"insert line breaks) at the defined commit margin before commit." +msgstr "" -#: ../data/ui/vcview.glade.h:2 -msgid "Compare Options" -msgstr "比较选项" - -#: ../data/ui/vcview.glade.h:3 -msgid "Date" -msgstr "日期" - -#: ../data/ui/vcview.glade.h:4 -msgid "Local copy against other remote revision" -msgstr "针对其它远程校订的本地副本" - -#: ../data/ui/vcview.glade.h:5 -msgid "Local copy against same remote revision" -msgstr "针对相同的远程修订的本地副本" +#: ../data/org.gnome.meld.gschema.xml.h:52 +#| msgid "Version control view" +msgid "Version control status filters" +msgstr "版本控制状态过滤器" -#: ../data/ui/vcview.glade.h:6 -msgid "Log Message" -msgstr "日志信息" +#: ../data/org.gnome.meld.gschema.xml.h:53 +msgid "" +"List of statuses used to filter visible files in version control comparison." +msgstr "" -#: ../data/ui/vcview.glade.h:7 -msgid "Previous Logs" -msgstr "上次的日志" +#: ../data/org.gnome.meld.gschema.xml.h:54 +#| msgid "File Filters" +msgid "Filename-based filters" +msgstr "基于文件名的过滤器" -#: ../data/ui/vcview.glade.h:8 ../meld/vcview.py:183 -msgid "Tag" -msgstr "标签" +#: ../data/org.gnome.meld.gschema.xml.h:55 +msgid "" +"List of predefined filename-based filters that, if active, will remove " +"matching files from a folder comparison." +msgstr "" + +#: ../data/org.gnome.meld.gschema.xml.h:56 +#| msgid "Text Filters" +msgid "Text-based filters" +msgstr "基于文字的过滤器" + +#: ../data/org.gnome.meld.gschema.xml.h:57 +msgid "" +"List of predefined text-based regex filters that, if active, will remove " +"text from being used in a file comparison. The text will still be displayed, " +"but won't contribute to the comparison itself." +msgstr "" + +#: ../data/ui/application.ui.h:1 +msgid "About Meld" +msgstr "关于 Meld" + +#: ../data/ui/application.ui.h:2 +#| msgid "" +#| "Copyright © 2002-2009 Stephen Kennedy\n" +#| "Copyright © 2009-2013 Kai Willadsen" +msgid "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" +msgstr "" +"Copyright © 2002-2009 Stephen Kennedy\n" +"Copyright © 2009-2013 Kai Willadsen" + +#: ../data/ui/application.ui.h:4 +msgid "Website" +msgstr "网站" + +#: ../data/ui/application.ui.h:5 +msgid "translator-credits" +msgstr "" +"Funda Wang , 2004, 2005\n" +"Careone , 2009\n" +"arccos , 2009\n" +"Tao Wang , 2010, 2013\n" +"Wylmer Wang , 2013" + +#: ../data/ui/application.ui.h:6 +#| msgid "Prefere_nces" +msgid "_Preferences" +msgstr "首选项(_P)" -#: ../data/ui/vcview.glade.h:9 -msgid "VC Log" -msgstr "VC 日志" +#: ../data/ui/application.ui.h:7 +msgid "_Help" +msgstr "帮助(_H)" + +#: ../data/ui/application.ui.h:8 +msgid "_About Meld" +msgstr "关于 Meld (_A)" + +#: ../data/ui/application.ui.h:9 +msgid "_Quit" +msgstr "退出(_Q)" -#: ../meld/dirdiff.py:184 ../meld/vcview.py:125 +#: ../data/ui/dirdiff.ui.h:1 ../data/ui/vcview.ui.h:1 msgid "_Compare" msgstr "比较(_C)" -#: ../meld/dirdiff.py:184 ../meld/vcview.py:125 -msgid "Compare selected" -msgstr "比较选中的" - -#: ../meld/dirdiff.py:185 -msgid "Left" -msgstr "左侧" +#: ../data/ui/dirdiff.ui.h:2 ../data/ui/vcview.ui.h:2 +msgid "Compare selected files" +msgstr "比较选中的文件" + +#: ../data/ui/dirdiff.ui.h:3 +msgid "Copy _Left" +msgstr "复制左侧(_L)" -#: ../meld/dirdiff.py:185 -msgid "Copy To Left" +#: ../data/ui/dirdiff.ui.h:4 +msgid "Copy to left" msgstr "复制到左侧" -#: ../meld/dirdiff.py:186 -msgid "Right" -msgstr "右侧" +#: ../data/ui/dirdiff.ui.h:5 +msgid "Copy _Right" +msgstr "复制右侧(_R)" -#: ../meld/dirdiff.py:186 -msgid "Copy To Right" +#: ../data/ui/dirdiff.ui.h:6 +msgid "Copy to right" msgstr "复制到右侧" -#: ../meld/dirdiff.py:187 +#: ../data/ui/dirdiff.ui.h:7 msgid "Delete selected" msgstr "删除选中的" -#: ../meld/dirdiff.py:188 ../meld/filediff.py:841 +#: ../data/ui/dirdiff.ui.h:8 ../meld/filediff.py:1418 msgid "Hide" msgstr "隐藏" -#: ../meld/dirdiff.py:188 +#: ../data/ui/dirdiff.ui.h:9 msgid "Hide selected" msgstr "隐藏选中的" -#: ../meld/dirdiff.py:190 ../meld/filediff.py:179 ../meld/vcview.py:126 -msgid "Open selected" -msgstr "打开选中的" - -#: ../meld/dirdiff.py:194 -msgid "Case" -msgstr "大小写" - -#: ../meld/dirdiff.py:194 -msgid "Ignore case of entries" -msgstr "忽略条目的大小写" +#: ../data/ui/dirdiff.ui.h:10 +msgid "Ignore Filename Case" +msgstr "忽略文件名大小写" -#: ../meld/dirdiff.py:195 +#: ../data/ui/dirdiff.ui.h:11 +msgid "" +"Consider differently-cased filenames that are otherwise-identical to be the " +"same" +msgstr "将除了大小写不同、其他完全一致的文件名视为相同" + +#: ../data/ui/dirdiff.ui.h:12 msgid "Same" msgstr "相同" -#: ../meld/dirdiff.py:195 +#: ../data/ui/dirdiff.ui.h:13 msgid "Show identical" msgstr "显示完全相同的" -#: ../meld/dirdiff.py:196 +#: ../data/ui/dirdiff.ui.h:14 msgid "New" msgstr "新建" -#: ../meld/dirdiff.py:196 +#: ../data/ui/dirdiff.ui.h:15 msgid "Show new" msgstr "显示新建的" -#: ../meld/dirdiff.py:197 +#: ../data/ui/dirdiff.ui.h:16 msgid "Modified" msgstr "已修改" -#: ../meld/dirdiff.py:197 ../meld/vcview.py:139 +#: ../data/ui/dirdiff.ui.h:17 msgid "Show modified" msgstr "显示已修改的" -#: ../meld/dirdiff.py:199 +#: ../data/ui/dirdiff.ui.h:18 msgid "Filters" msgstr "过滤器" -#: ../meld/dirdiff.py:199 +#: ../data/ui/dirdiff.ui.h:19 msgid "Set active filters" msgstr "设定启用的过滤器" -#: ../meld/dirdiff.py:252 ../meld/dirdiff.py:298 -#, python-format -msgid "Error converting pattern '%s' to regular expression" -msgstr "将格式“%s”转换为正则表达式出错" +#: ../data/ui/EditableList.ui.h:1 +msgid "Editable List" +msgstr "可编辑的列表" + +#: ../data/ui/EditableList.ui.h:2 +msgid "Active" +msgstr "启用" + +#: ../data/ui/EditableList.ui.h:3 +msgid "Column Name" +msgstr "列名称" + +#: ../data/ui/EditableList.ui.h:4 ../data/ui/vcview.ui.h:9 +msgid "_Add" +msgstr "添加(_A)" + +#: ../data/ui/EditableList.ui.h:5 ../data/ui/vcview.ui.h:11 +#: ../meld/vcview.py:670 +msgid "_Remove" +msgstr "删除(_R)" + +#: ../data/ui/EditableList.ui.h:6 +msgid "Move item up" +msgstr "上移项目" + +#: ../data/ui/EditableList.ui.h:7 +msgid "Move _Up" +msgstr "上移(_U)" + +#: ../data/ui/EditableList.ui.h:8 +msgid "Move item down" +msgstr "下移项目" + +#: ../data/ui/EditableList.ui.h:9 +msgid "Move _Down" +msgstr "下移(_D)" + +#. Create icon and filename CellRenderer +#: ../data/ui/EditableList.ui.h:10 ../meld/dirdiff.py:365 +#: ../meld/vcview.py:186 +msgid "Name" +msgstr "过滤器名称" + +#: ../data/ui/EditableList.ui.h:11 +msgid "Pattern" +msgstr "模式" -#: ../meld/dirdiff.py:309 +#: ../data/ui/EditableList.ui.h:12 +msgid "Add new filter" +msgstr "添加新过滤器" + +#: ../data/ui/EditableList.ui.h:13 +msgid "Remove selected filter" +msgstr "移除选择的过滤器" + +#: ../data/ui/filediff.ui.h:1 +msgid "Save changes to documents before closing?" +msgstr "在关闭前将更改保存到文档?" + +#: ../data/ui/filediff.ui.h:2 +msgid "If you don't save, changes will be permanently lost." +msgstr "如果您不保存,更改将永久丢失。" + +#: ../data/ui/filediff.ui.h:3 +msgid "Close _without Saving" +msgstr "关闭但不保存(_W)" + +#: ../data/ui/filediff.ui.h:4 +msgid "_Cancel" +msgstr "取消(_C)" + +#: ../data/ui/filediff.ui.h:5 +msgid "_Save" +msgstr "保存(_S)" + +#: ../data/ui/filediff.ui.h:6 +msgid "" +"This file can not be written to. You may click here to unlock this file and " +"make changes anyway, but these changes must be saved to a new file." +msgstr "" +"无法写入此文件。您可以点击此处解锁此文件并强制写入,否则这些更改只能保存到一" +"个新文件中。" + +#: ../data/ui/filediff.ui.h:7 ../meld/filediff.py:301 +msgid "Lock scrolling of all panes" +msgstr "锁定所有窗格的滚动" + +#: ../data/ui/filediff.ui.h:8 +msgid "Revert unsaved changes to documents?" +msgstr "撤消对文档未保存的更改?" + +#: ../data/ui/filediff.ui.h:9 +msgid "Changes made to the following documents will be permanently lost:\n" +msgstr "对以下文档的更改将永久丢失:\n" + +#: ../data/ui/findbar.ui.h:1 +msgid "_Replace" +msgstr "替换(_R)" + +#: ../data/ui/findbar.ui.h:2 +msgid "Replace _All" +msgstr "全部替换(_A)" + +#: ../data/ui/findbar.ui.h:3 +msgid "_Previous" +msgstr "上一个(_P)" + +#: ../data/ui/findbar.ui.h:4 +msgid "_Next" +msgstr "下一个(_N)" + +#: ../data/ui/findbar.ui.h:5 +msgid "Find:" +msgstr "查找:" + +#: ../data/ui/findbar.ui.h:6 +msgid "Replace _with:" +msgstr "替换为(_W):" + +#: ../data/ui/findbar.ui.h:7 +msgid "_Match case" +msgstr "区分大小写(_M)" + +#: ../data/ui/findbar.ui.h:8 +msgid "Who_le word" +msgstr "匹配整个单词(_L)" + +#: ../data/ui/findbar.ui.h:9 +msgid "Regular e_xpression" +msgstr "正则表达式(_X)" + +#: ../data/ui/findbar.ui.h:10 +msgid "Wrapped" +msgstr "折行" + +#: ../data/ui/patch-dialog.ui.h:1 +msgid "Format as Patch" +msgstr "格式化为补丁" + +#: ../data/ui/patch-dialog.ui.h:2 +msgid "Use differences between:" +msgstr "使用以下之间的差异:" + +#: ../data/ui/patch-dialog.ui.h:3 +msgid "Left and middle panes" +msgstr "左侧和中间窗格" + +#: ../data/ui/patch-dialog.ui.h:4 +msgid "Middle and right panes" +msgstr "中间和右侧窗格" + +#: ../data/ui/patch-dialog.ui.h:5 +msgid "_Reverse patch direction" +msgstr "反转打补丁方向(_R)" + +#: ../data/ui/patch-dialog.ui.h:6 +msgid "Copy to Clipboard" +msgstr "复制到剪贴板" + +#: ../data/ui/patch-dialog.ui.h:7 ../meld/patchdialog.py:121 +msgid "Save Patch" +msgstr "保存补丁" + +#: ../data/ui/preferences.ui.h:1 +msgid "Left is remote, right is local" +msgstr "左侧为远端,右侧为本地" + +#: ../data/ui/preferences.ui.h:2 +msgid "Left is local, right is remote" +msgstr "左侧为本地,右侧为远端" + +#: ../data/ui/preferences.ui.h:3 +msgid "1ns (ext4)" +msgstr "1ns (ext4)" + +#: ../data/ui/preferences.ui.h:4 +msgid "100ns (NTFS)" +msgstr "100ns (NTFS)" + +#: ../data/ui/preferences.ui.h:5 +msgid "1s (ext2/ext3)" +msgstr "1s (ext2/ext3)" + +#: ../data/ui/preferences.ui.h:6 +msgid "2s (VFAT)" +msgstr "2s (VFAT)" + +#: ../data/ui/preferences.ui.h:7 +msgid "Meld Preferences" +msgstr "Meld 首选项" + +#: ../data/ui/preferences.ui.h:8 +msgid "Font" +msgstr "字体" + +#: ../data/ui/preferences.ui.h:9 +msgid "_Use the system fixed width font" +msgstr "使用系统固定宽度字体(_U)" + +#: ../data/ui/preferences.ui.h:10 +msgid "_Editor font:" +msgstr "编辑器字体(_E):" + +#: ../data/ui/preferences.ui.h:11 +msgid "Display" +msgstr "显示" + +#: ../data/ui/preferences.ui.h:12 +msgid "_Tab width:" +msgstr "制表符宽度(_T):" + +#: ../data/ui/preferences.ui.h:13 +msgid "_Insert spaces instead of tabs" +msgstr "用空格替换制表符(_I)" + +#: ../data/ui/preferences.ui.h:14 +msgid "Enable text _wrapping" +msgstr "启用文本自动换行(_W)" + +#: ../data/ui/preferences.ui.h:15 +msgid "Do not _split words over two lines" +msgstr "不要将一个词拆成两行(_S)" + +#: ../data/ui/preferences.ui.h:16 +msgid "Highlight _current line" +msgstr "高亮当前行(_C)" + +#: ../data/ui/preferences.ui.h:17 +msgid "Show _line numbers" +msgstr "显示行号(_L)" + +#: ../data/ui/preferences.ui.h:18 +msgid "Show w_hitespace" +msgstr "显示空白字符(_H)" + +#: ../data/ui/preferences.ui.h:19 +msgid "Use s_yntax highlighting" +msgstr "使用语法高亮(_Y)" + +#: ../data/ui/preferences.ui.h:20 +msgid "External Editor" +msgstr "外部编辑器" + +#: ../data/ui/preferences.ui.h:21 +msgid "Use _default system editor" +msgstr "使用默认系统编辑器(_D)" + +#: ../data/ui/preferences.ui.h:22 +msgid "Edito_r command:" +msgstr "编辑命令(_R):" + +#: ../data/ui/preferences.ui.h:23 +msgid "Editor" +msgstr "编辑器" + +#: ../data/ui/preferences.ui.h:24 +msgid "Shallow Comparison" +msgstr "粗浅比较" + +#: ../data/ui/preferences.ui.h:25 +msgid "C_ompare files based only on size and timestamp" +msgstr "只按大小和时间戳比较文件(_O)" + +#: ../data/ui/preferences.ui.h:26 +msgid "_Timestamp resolution:" +msgstr "时间戳精细度(_T):" + +#: ../data/ui/preferences.ui.h:27 +msgid "Symbolic Links" +msgstr "符号链接" + +#: ../data/ui/preferences.ui.h:29 +msgid "Visible Columns" +msgstr "可见列" + +#: ../data/ui/preferences.ui.h:30 +msgid "Folder Comparisons" +msgstr "文件夹比较" + +#: ../data/ui/preferences.ui.h:31 +msgid "Version Comparisons" +msgstr "版本比较" + +#: ../data/ui/preferences.ui.h:32 +msgid "_When comparing file revisions:" +msgstr "在比较文件版本时(_W):" + +#: ../data/ui/preferences.ui.h:33 +msgid "Commit Messages" +msgstr "提交信息" + +#: ../data/ui/preferences.ui.h:34 +msgid "Show _right margin at:" +msgstr "显示右侧边界的位置(_R):" + +#: ../data/ui/preferences.ui.h:35 +msgid "Automatically _break lines at right margin on commit" +msgstr "提交时自动在右侧边界处断行处理(_B)" + +#: ../data/ui/preferences.ui.h:36 +msgid "Version Control" +msgstr "版本控制" + +#: ../data/ui/preferences.ui.h:37 +msgid "" +"When performing directory comparisons, you may filter out files and " +"directories by name. Each pattern is a list of shell style wildcards " +"separated by spaces." +msgstr "" +"进行目录比较时,您可以按名称过滤文件和目录。每种模式都是一个用空格隔开的 " +"Shell支持的通配符的列表。" + +#: ../data/ui/preferences.ui.h:38 ../meld/meldwindow.py:106 +msgid "File Filters" +msgstr "文件过滤器" + +#: ../data/ui/preferences.ui.h:39 +msgid "" +"When performing file comparisons, you may ignore certain types of changes. " +"Each pattern here is a python regular expression which replaces matching " +"text with the empty string before comparison is performed. If the expression " +"contains groups, only the groups are replaced. See the user manual for more " +"details." +msgstr "" +"进行文件比较时,您可以忽略某些理所当然的差异。这时每种模式都是一个 python 正" +"则表达式,在开始比较前,用空字符串来替换匹配的文字。如果表达式包含“group”,只" +"有“group”被替换。更多信息请查看用户手册。" + +#: ../data/ui/preferences.ui.h:40 +msgid "Ignore changes which insert or delete blank lines" +msgstr "忽略多空行或少空行的差异" + +#: ../data/ui/preferences.ui.h:41 +msgid "Text Filters" +msgstr "文字过滤器" + +#: ../data/ui/tab-placeholder.ui.h:1 ../meld/meldwindow.py:616 +msgid "New comparison" +msgstr "新比较" + +#: ../data/ui/tab-placeholder.ui.h:2 +msgid "File comparison" +msgstr "文件比较" + +#: ../data/ui/tab-placeholder.ui.h:3 +msgid "Directory comparison" +msgstr "目录比较" + +#: ../data/ui/tab-placeholder.ui.h:4 +msgid "Version control view" +msgstr "版本控制查看" + +#: ../data/ui/tab-placeholder.ui.h:5 +msgid "_3-way comparison" +msgstr "_3 路比较" + +#: ../data/ui/tab-placeholder.ui.h:6 +msgid "Select Third File" +msgstr "选择第三个文件" + +#: ../data/ui/tab-placeholder.ui.h:7 +msgid "Select Second File" +msgstr "选择第二个文件" + +#: ../data/ui/tab-placeholder.ui.h:8 +msgid "Select First File" +msgstr "选择第一个文件" + +#: ../data/ui/tab-placeholder.ui.h:9 +msgid "Select First Folder" +msgstr "选择第一个文件夹" + +#: ../data/ui/tab-placeholder.ui.h:10 +msgid "Select Second Folder" +msgstr "选择第二个文件夹" + +#: ../data/ui/tab-placeholder.ui.h:11 +msgid "Select Third Folder" +msgstr "选择第三个文件夹" + +#: ../data/ui/tab-placeholder.ui.h:12 +msgid "Select A Version-Controlled Folder" +msgstr "选择版本控制文件夹" + +#: ../data/ui/tab-placeholder.ui.h:13 +msgid "_Blank comparison" +msgstr "空白比较(_B)" + +#: ../data/ui/tab-placeholder.ui.h:14 +msgid "C_ompare" +msgstr "比较(_C)" + +#: ../data/ui/vcview.ui.h:3 +msgid "Co_mmit..." +msgstr "提交(_M)..." + +#: ../data/ui/vcview.ui.h:4 +msgid "Commit changes to version control" +msgstr "提交(Commit)更改至版本控制" + +#: ../data/ui/vcview.ui.h:5 +msgid "_Update" +msgstr "更新(_U)" + +#: ../data/ui/vcview.ui.h:6 +msgid "Update working copy from version control" +msgstr "从版本控制更新工作副本" + +#: ../data/ui/vcview.ui.h:7 +msgid "_Push" +msgstr "推送(_P)" + +#: ../data/ui/vcview.ui.h:8 +msgid "Push local changes to remote" +msgstr "推送(push)本地更改至远端" + +#: ../data/ui/vcview.ui.h:10 +msgid "Add to version control" +msgstr "添加到版本控制" + +#: ../data/ui/vcview.ui.h:12 +msgid "Remove from version control" +msgstr "从版本控制中移除" + +#: ../data/ui/vcview.ui.h:13 +msgid "Mar_k as Resolved" +msgstr "标记为“已解决”(_K)" + +#: ../data/ui/vcview.ui.h:14 +msgid "Mark as resolved in version control" +msgstr "在版本控制中标记为“已解决”" + +#: ../data/ui/vcview.ui.h:15 +msgid "Re_vert" +msgstr "恢复(_V)" + +#: ../data/ui/vcview.ui.h:16 +msgid "Revert working copy to original state" +msgstr "将工作副本恢复为原始状态" + +#: ../data/ui/vcview.ui.h:17 +msgid "Delete from working copy" +msgstr "从工作副本删除" + +#: ../data/ui/vcview.ui.h:18 +msgid "_Flatten" +msgstr "展开(_F)" + +#: ../data/ui/vcview.ui.h:19 +msgid "Flatten directories" +msgstr "展开目录" + +#: ../data/ui/vcview.ui.h:20 +msgid "_Modified" +msgstr "已修改(_M)" + +#: ../data/ui/vcview.ui.h:21 +msgid "Show modified files" +msgstr "显示已修改的文件" + +#: ../data/ui/vcview.ui.h:22 +msgid "_Normal" +msgstr "正常(_N)" + +#: ../data/ui/vcview.ui.h:23 +msgid "Show normal files" +msgstr "显示正常文件" + +#: ../data/ui/vcview.ui.h:24 +msgid "Un_versioned" +msgstr "未版本控制(_V)" + +#: ../data/ui/vcview.ui.h:25 +msgid "Show unversioned files" +msgstr "显示未加入版本控制的文件" + +#: ../data/ui/vcview.ui.h:26 +msgid "Ignored" +msgstr "已忽略的" + +#: ../data/ui/vcview.ui.h:27 +msgid "Show ignored files" +msgstr "显示已忽略文件" + +#: ../data/ui/vcview.ui.h:28 +msgid "Commit" +msgstr "提交" + +#: ../data/ui/vcview.ui.h:29 +msgid "Commit Files" +msgstr "提交文件" + +#: ../data/ui/vcview.ui.h:30 +msgid "Log Message" +msgstr "日志信息" + +#: ../data/ui/vcview.ui.h:31 +msgid "Previous logs:" +msgstr "上次的日志" + +#: ../data/ui/vcview.ui.h:32 +msgid "Co_mmit" +msgstr "提交(_M)" + +#: ../data/ui/vcview.ui.h:33 +msgid "Push local commits to remote?" +msgstr "推送(push)本地提交到远端?" + +#: ../data/ui/vcview.ui.h:34 +msgid "The commits to be pushed are determined by your version control system." +msgstr "要推送的提交由您的版本控制系统决定。" + +#: ../data/ui/vcview.ui.h:35 +msgid "_Push commits" +msgstr "推送提交(_P)" + +#. Create file size CellRenderer +#: ../meld/dirdiff.py:383 +msgid "Size" +msgstr "大小" + +#. Create date-time CellRenderer +#: ../meld/dirdiff.py:391 +msgid "Modification time" +msgstr "更改时间" + +#. Create permissions CellRenderer +#: ../meld/dirdiff.py:399 +msgid "Permissions" +msgstr "权限" + +#: ../meld/dirdiff.py:558 #, python-format msgid "Hide %s" msgstr "隐藏 %s" -#: ../meld/dirdiff.py:394 ../meld/dirdiff.py:404 ../meld/vcview.py:276 -#: ../meld/vcview.py:304 +#: ../meld/dirdiff.py:686 ../meld/dirdiff.py:708 #, python-format msgid "[%s] Scanning %s" msgstr "[%s] 正在扫描 %s" -#: ../meld/dirdiff.py:433 +#: ../meld/dirdiff.py:808 #, python-format -msgid "'%s' hidden by '%s'" -msgstr "'%s' 已按“%s”隐藏" +msgid "[%s] Done" +msgstr "[%s] 完成" -#: ../meld/dirdiff.py:439 -#, python-format +#: ../meld/dirdiff.py:814 +msgid "Multiple errors occurred while scanning this folder" +msgstr "扫描此文件夹时出现了多个错误" + +#: ../meld/dirdiff.py:815 +msgid "Files with invalid encodings found" +msgstr "发现文件使用的编码不正确" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:817 +msgid "Some files were in an incorrect encoding. The names are something like:" +msgstr "某些文件编码不正确。名称是这样的:" + +#: ../meld/dirdiff.py:819 +msgid "Files hidden by case insensitive comparison" +msgstr "因比较区分大小写而隐藏的文件" + +#. TRANSLATORS: This is followed by a list of files +#: ../meld/dirdiff.py:821 msgid "" "You are running a case insensitive comparison on a case sensitive " -"filesystem. Some files are not visible:\n" -"%s" +"filesystem. The following files in this folder are hidden:" msgstr "" -"您正在区分大小写的文件系统上运行不区分大小写的比较。某些文件不可见:\n" -"%s" +"您正在区分大小写的文件系统上运行不区分大小写的比较。此文件夹中的以下文件是隐" +"藏的:" -#: ../meld/dirdiff.py:516 +#: ../meld/dirdiff.py:832 #, python-format -msgid "[%s] Done" -msgstr "[%s] 完成" +msgid "'%s' hidden by '%s'" +msgstr "'%s' 已按“%s”隐藏" + +#: ../meld/dirdiff.py:857 ../meld/filediff.py:1111 ../meld/filediff.py:1249 +#: ../meld/filediff.py:1420 ../meld/filediff.py:1450 ../meld/filediff.py:1452 +msgid "Hi_de" +msgstr "隐藏(_D)" -#: ../meld/dirdiff.py:562 +#: ../meld/dirdiff.py:888 #, python-format msgid "" "'%s' exists.\n" @@ -444,221 +1072,345 @@ "“%s”已存在。\n" "覆盖文件?" -#: ../meld/dirdiff.py:569 -#, python-format -msgid "" -"Error copying '%s' to '%s'\n" -"\n" -"%s." -msgstr "" -"复制“%s”到“%s”出错\n" -"\n" -"%s。" - -#: ../meld/dirdiff.py:587 ../meld/vcview.py:463 -#, python-format +#: ../meld/dirdiff.py:896 +#| msgid "Error reading saved comparison file" +msgid "Error copying file" +msgstr "复制文件出错" + +#: ../meld/dirdiff.py:897 +#, python-format +#| msgid "" +#| "Error copying '%s' to '%s'\n" +#| "\n" +#| "%s." msgid "" -"'%s' is a directory.\n" -"Remove recursively?" -msgstr "" -"“%s”是一个目录。\n" -"递归删除该目录下的子目录吗?" - -#: ../meld/dirdiff.py:594 ../meld/vcview.py:468 -#, python-format -msgid "" -"Error removing %s\n" +"Couldn't copy %s\n" +"to %s.\n" "\n" -"%s." +"%s" msgstr "" -"删除“%s”时出错\n" +"无法将 %s\n" +"复制到 %s。\n" "\n" -"%s。" +"%s" -#: ../meld/dirdiff.py:606 +#: ../meld/dirdiff.py:920 +#, python-format +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error deleting %s" +msgstr "删除 %s 出错" + +#: ../meld/dirdiff.py:1051 #, python-format msgid "%i second" msgid_plural "%i seconds" msgstr[0] "%i 秒" -#: ../meld/dirdiff.py:607 +#: ../meld/dirdiff.py:1052 #, python-format msgid "%i minute" msgid_plural "%i minutes" msgstr[0] "%i 分钟" -#: ../meld/dirdiff.py:608 +#: ../meld/dirdiff.py:1053 #, python-format msgid "%i hour" msgid_plural "%i hours" msgstr[0] "%i 小时" -#: ../meld/dirdiff.py:609 +#: ../meld/dirdiff.py:1054 #, python-format msgid "%i day" msgid_plural "%i days" msgstr[0] "%i 天" -#: ../meld/dirdiff.py:610 +#: ../meld/dirdiff.py:1055 #, python-format msgid "%i week" msgid_plural "%i weeks" msgstr[0] "%i 周" -#: ../meld/dirdiff.py:611 +#: ../meld/dirdiff.py:1056 #, python-format msgid "%i month" msgid_plural "%i months" msgstr[0] "%i 月" -#: ../meld/dirdiff.py:612 +#: ../meld/dirdiff.py:1057 #, python-format msgid "%i year" msgid_plural "%i years" msgstr[0] "%i 年" -#: ../meld/filediff.py:180 -msgid "Create a patch" -msgstr "创建一个补丁" - -#: ../meld/filediff.py:181 -msgid "Push to left" -msgstr "复制到左侧" +#: ../meld/filediff.py:229 +msgid "Format as Patch..." +msgstr "格式化为补丁..." + +#: ../meld/filediff.py:230 +msgid "Create a patch using differences between files" +msgstr "使用文件之前的差异创建补丁" + +#: ../meld/filediff.py:232 +msgid "Save A_ll" +msgstr "保存全部(_L)" + +#: ../meld/filediff.py:233 +msgid "Save all files in the current comparison" +msgstr "保存当前比较中的所有文件" + +#: ../meld/filediff.py:236 +msgid "Revert files to their saved versions" +msgstr "将文件恢复为其保存的版本" + +#: ../meld/filediff.py:238 +msgid "Add Synchronization Point" +msgstr "增加同步点" + +#: ../meld/filediff.py:239 +msgid "Add a manual point for synchronization of changes between files" +msgstr "添加一个手动文件差异同步点" + +#: ../meld/filediff.py:242 +msgid "Clear Synchronization Points" +msgstr "清除同步点" + +#: ../meld/filediff.py:243 +msgid "Clear manual change sychronization points" +msgstr "清除手动更改同步点" + +#: ../meld/filediff.py:245 +msgid "Previous Conflict" +msgstr "上一个冲突" + +#: ../meld/filediff.py:246 +msgid "Go to the previous conflict" +msgstr "转到上一个冲突" + +#: ../meld/filediff.py:248 +msgid "Next Conflict" +msgstr "下一个冲突" + +#: ../meld/filediff.py:249 +msgid "Go to the next conflict" +msgstr "转到下一个冲突" + +#: ../meld/filediff.py:251 +msgid "Push to Left" +msgstr "推送到左侧" -#: ../meld/filediff.py:181 +#: ../meld/filediff.py:252 msgid "Push current change to the left" msgstr "复制当前的更改到左侧" -#: ../meld/filediff.py:182 -msgid "Push to right" -msgstr "复制到右侧" +#: ../meld/filediff.py:255 +msgid "Push to Right" +msgstr "推送到右侧" -#: ../meld/filediff.py:182 +#: ../meld/filediff.py:256 msgid "Push current change to the right" -msgstr "复制当前的更改到右侧" +msgstr "推送(push)当前的更改到右侧" -#. FIXME: using LAST and FIRST is terrible and unreliable icon abuse -#: ../meld/filediff.py:184 -msgid "Pull from left" -msgstr "从左侧复制" +#: ../meld/filediff.py:260 +msgid "Pull from Left" +msgstr "从左侧拉取" -#: ../meld/filediff.py:184 +#: ../meld/filediff.py:261 msgid "Pull change from the left" -msgstr "从左侧复制更改" +msgstr "从左侧拉取(pull)更改" -#: ../meld/filediff.py:185 -msgid "Pull from right" -msgstr "从右侧复制" +#: ../meld/filediff.py:264 +msgid "Pull from Right" +msgstr "从右侧拉取(pull)" -#: ../meld/filediff.py:185 +#: ../meld/filediff.py:265 msgid "Pull change from the right" -msgstr "从右侧复制更改" +msgstr "从右侧拉取(pull)更改" + +#: ../meld/filediff.py:267 +msgid "Copy Above Left" +msgstr "复制左侧上方" -#: ../meld/filediff.py:186 +#: ../meld/filediff.py:268 +msgid "Copy change above the left chunk" +msgstr "从左侧块上方复制更改" + +#: ../meld/filediff.py:270 +msgid "Copy Below Left" +msgstr "复制左侧下方" + +#: ../meld/filediff.py:271 +msgid "Copy change below the left chunk" +msgstr "从左侧块下方复制更改" + +#: ../meld/filediff.py:273 +msgid "Copy Above Right" +msgstr "复制右侧上方" + +#: ../meld/filediff.py:274 +msgid "Copy change above the right chunk" +msgstr "从右侧块上方复制更改" + +#: ../meld/filediff.py:276 +msgid "Copy Below Right" +msgstr "复制右侧下方" + +#: ../meld/filediff.py:277 +msgid "Copy change below the right chunk" +msgstr "从右侧块下方复制更改" + +#: ../meld/filediff.py:279 msgid "Delete" msgstr "删除" -#: ../meld/filediff.py:186 +#: ../meld/filediff.py:280 msgid "Delete change" msgstr "删除更改" -#: ../meld/filediff.py:187 -msgid "Merge all changes from left" -msgstr "从左侧合并所有的更改" +#: ../meld/filediff.py:282 +msgid "Merge All from Left" +msgstr "从左侧合并所有更改" -#: ../meld/filediff.py:187 +#: ../meld/filediff.py:283 msgid "Merge all non-conflicting changes from the left" msgstr "从左侧合并所有非冲突的更改" -#: ../meld/filediff.py:188 -msgid "Merge all changes from right" -msgstr "从右侧合并所有的更改" +#: ../meld/filediff.py:285 +msgid "Merge All from Right" +msgstr "从右侧合并所有更改" -#: ../meld/filediff.py:188 +#: ../meld/filediff.py:286 msgid "Merge all non-conflicting changes from the right" msgstr "从右侧合并所有非冲突的更改" -#: ../meld/filediff.py:189 -msgid "Merge all non-conflicting" -msgstr "合并所有非冲突的更改" +#: ../meld/filediff.py:288 +msgid "Merge All" +msgstr "合并全部" -#: ../meld/filediff.py:189 +#: ../meld/filediff.py:289 msgid "Merge all non-conflicting changes from left and right panes" msgstr "从左侧和右侧窗口合并所有非冲突的更改" +#: ../meld/filediff.py:293 +msgid "Cycle Through Documents" +msgstr "在文档间循环" + +#: ../meld/filediff.py:294 +msgid "Move keyboard focus to the next document in this comparison" +msgstr "将键盘焦点转移到比较的下个文档" + +#: ../meld/filediff.py:300 +msgid "Lock Scrolling" +msgstr "锁定滚动" + #. Abbreviations for insert and overwrite that fit in the status bar -#: ../meld/filediff.py:258 +#: ../meld/filediff.py:472 msgid "INS" msgstr "插入" -#: ../meld/filediff.py:258 +#: ../meld/filediff.py:472 msgid "OVR" msgstr "覆盖" #. Abbreviation for line, column so that it will fit in the status bar -#: ../meld/filediff.py:260 +#: ../meld/filediff.py:474 #, python-format msgid "Ln %i, Col %i" msgstr "%i 行,%i 列" -#: ../meld/filediff.py:433 +#: ../meld/filediff.py:811 #, python-format msgid "" -"Regular expression '%s' changed the number of lines in the file. Comparison " -"will be incorrect. See the user manual for more details." +"Filter '%s' changed the number of lines in the file. Comparison will be " +"incorrect. See the user manual for more details." msgstr "" -"正则表达式“%s”在文件中的行号已改变。比较的结果不符合。更多细节请查看用户手" -"册。" - -#. TRANSLATORS: this is the name of a new file which has not yet been saved -#: ../meld/filediff.py:530 -msgid "" -msgstr "<未命名>" +"过滤器“%s”更改了文件的行数。比较的结果将不准确。更多细节请查看用户手册。" -#: ../meld/filediff.py:706 +#: ../meld/filediff.py:1099 #, python-format msgid "[%s] Set num panes" msgstr "[%s] 设定编号窗格" -#: ../meld/filediff.py:712 +#: ../meld/filediff.py:1105 #, python-format msgid "[%s] Opening files" msgstr "[%s] 打开文件" -#: ../meld/filediff.py:718 ../meld/filediff.py:845 -msgid "Hi_de" -msgstr "隐藏(_D)" - -#: ../meld/filediff.py:739 ../meld/filediff.py:750 ../meld/filediff.py:763 -#: ../meld/filediff.py:769 +#: ../meld/filediff.py:1128 ../meld/filediff.py:1138 ../meld/filediff.py:1151 +#: ../meld/filediff.py:1157 msgid "Could not read file" msgstr "无法读取文件" -#: ../meld/filediff.py:742 +#: ../meld/filediff.py:1129 #, python-format msgid "[%s] Reading files" msgstr "[%s] 读取文件" -#: ../meld/filediff.py:751 +#: ../meld/filediff.py:1139 #, python-format msgid "%s appears to be a binary file." msgstr "%s 看起来是二进制文件。" -#: ../meld/filediff.py:764 +#: ../meld/filediff.py:1152 #, python-format msgid "%s is not in encodings: %s" msgstr "%s 不是使用 %s 进行编码的。" -#: ../meld/filediff.py:790 ../meld/filemerge.py:70 +#: ../meld/filediff.py:1187 #, python-format msgid "[%s] Computing differences" msgstr "[%s] 计算差异" -#: ../meld/filediff.py:839 +#: ../meld/filediff.py:1244 +#, python-format +msgid "File %s has changed on disk" +msgstr "" + +#: ../meld/filediff.py:1245 +#| msgid "Could not read file" +msgid "Do you want to reload the file?" +msgstr "您想重新加载该文件吗?" + +#: ../meld/filediff.py:1248 +msgid "_Reload" +msgstr "重载(_R)" + +#: ../meld/filediff.py:1409 +msgid "" +"Text filters are being used, and may be masking differences between files. " +"Would you like to compare the unfiltered files?" +msgstr "正在使用文本过滤器,可能会屏蔽文件之间的不同。您想比较未过滤的文件吗?" + +#: ../meld/filediff.py:1415 msgid "Files are identical" msgstr "文件完全相同" -#: ../meld/filediff.py:973 +#: ../meld/filediff.py:1423 +msgid "Show without filters" +msgstr "显示不过滤的结果" + +#: ../meld/filediff.py:1445 +msgid "Change highlighting incomplete" +msgstr "更改高亮不完整" + +#: ../meld/filediff.py:1446 +msgid "" +"Some changes were not highlighted because they were too large. You can force " +"Meld to take longer to highlight larger changes, though this may be slow." +msgstr "" +"某些更改没有高亮,因为太大。您可以强制高亮显示大幅的更改,尽管这可能很慢。" + +#: ../meld/filediff.py:1454 +msgid "Keep highlighting" +msgstr "保持语法高亮" + +#: ../meld/filediff.py:1456 +msgid "_Keep highlighting" +msgstr "保持语法高亮(_K)" + +#: ../meld/filediff.py:1587 #, python-format msgid "" "\"%s\" exists!\n" @@ -667,7 +1419,7 @@ "“%s”已存在!\n" "覆盖文件?" -#: ../meld/filediff.py:986 +#: ../meld/filediff.py:1600 #, python-format msgid "" "Error writing to %s\n" @@ -678,12 +1430,38 @@ "\n" "%s。" -#: ../meld/filediff.py:995 +#: ../meld/filediff.py:1611 +msgid "Save Left Pane As" +msgstr "左侧窗格保存为" + +#: ../meld/filediff.py:1613 +msgid "Save Middle Pane As" +msgstr "中间窗格保存为" + +#: ../meld/filediff.py:1615 +msgid "Save Right Pane As" +msgstr "右侧窗格保存为" + +#: ../meld/filediff.py:1626 #, python-format -msgid "Choose a name for buffer %i." -msgstr "为缓冲区 %i 选择一个名称。" +msgid "File %s has changed on disk since it was opened" +msgstr "" + +#: ../meld/filediff.py:1628 +#| msgid "If you don't save, changes will be permanently lost." +msgid "If you save it, any external changes will be lost." +msgstr "如果您保存它,外部的更改将丢失。" + +#: ../meld/filediff.py:1631 +#| msgid "Save A_ll" +msgid "Save Anyway" +msgstr "依然保存" + +#: ../meld/filediff.py:1632 +msgid "Don't Save" +msgstr "不保存" -#: ../meld/filediff.py:1009 +#: ../meld/filediff.py:1656 #, python-format msgid "" "This file '%s' contains a mixture of line endings.\n" @@ -694,7 +1472,7 @@ "\n" "您想用哪种格式?" -#: ../meld/filediff.py:1025 +#: ../meld/filediff.py:1672 #, python-format msgid "" "'%s' contains characters not encodable with '%s'\n" @@ -703,641 +1481,627 @@ "“%s”包含无法用“%s”编码的字符\n" "要另存为 UTF-8 格式吗?" -#. save as -#: ../meld/filediff.py:1062 -msgid "Save patch as..." -msgstr "补丁另存为..." +#: ../meld/filediff.py:2043 +msgid "Live comparison updating disabled" +msgstr "实时比较更新已禁用" -#: ../meld/filediff.py:1109 -#, python-format +#: ../meld/filediff.py:2044 msgid "" -"Reloading will discard changes in:\n" -"%s\n" -"\n" -"You cannot undo this operation." +"Live updating of comparisons is disabled when synchronization points are " +"active. You can still manually refresh the comparison, and live updates will " +"resume when synchronization points are cleared." msgstr "" -"重新载入将丢弃以下文件中的更改:\n" -"%s\n" -"\n" -"您无法撤消此次操作。" +"同步点活动时实时比较更新会禁用。您仍然可以手动刷新比较。实时更新会在同步点清" +"除后恢复启用。" -#: ../meld/filemerge.py:78 +#: ../meld/filemerge.py:51 #, python-format msgid "[%s] Merging files" msgstr "[%s] 合并文件" -#: ../meld/meldapp.py:139 +#: ../meld/gutterrendererchunk.py:92 +#| msgid "Copy _Left" +msgid "Copy _up" +msgstr "复制上面(_U)" + +#: ../meld/gutterrendererchunk.py:93 +#| msgid "Copy _Left" +msgid "Copy _down" +msgstr "复制下面(_D)" + +#: ../meld/meldapp.py:138 +msgid "wrong number of arguments supplied to --diff" +msgstr "提供给 --diff 的参数个数错误。" + +#: ../meld/meldapp.py:143 +msgid "Start with an empty window" +msgstr "启动时打开空白窗口" + +#: ../meld/meldapp.py:144 ../meld/meldapp.py:146 +msgid "file" +msgstr "文件" + +#: ../meld/meldapp.py:144 ../meld/meldapp.py:148 +msgid "dir" +msgstr "目录" + +#: ../meld/meldapp.py:145 +msgid "Start a version control comparison" +msgstr "开始版本控制比较" + +#: ../meld/meldapp.py:147 +msgid "Start a 2- or 3-way file comparison" +msgstr "开始两向或三向文件比较" + +#: ../meld/meldapp.py:149 +msgid "Start a 2- or 3-way directory comparison" +msgstr "开始两向或三向目录比较" + +#: ../meld/meldapp.py:157 +msgid "Meld is a file and directory comparison tool." +msgstr "Meld 是一个文件和目录比较工具。" + +#: ../meld/meldapp.py:160 +msgid "Set label to use instead of file name" +msgstr "设置标签来代替文件名" + +#: ../meld/meldapp.py:162 +msgid "Open a new tab in an already running instance" +msgstr "在已经运行的实例中打开一个新标签页" + +#: ../meld/meldapp.py:165 +msgid "Automatically compare all differing files on startup" +msgstr "启动时自动比较所有不同的文件" + +#: ../meld/meldapp.py:167 +msgid "Ignored for compatibility" +msgstr "为保持兼容性而忽略" + +#: ../meld/meldapp.py:170 +msgid "Set the target file for saving a merge result" +msgstr "设置用于保存合并结果的目标文件" + +#: ../meld/meldapp.py:172 +msgid "Automatically merge files" +msgstr "自动合并文件" + +#: ../meld/meldapp.py:175 +msgid "Load a saved comparison from a Meld comparison file" +msgstr "从 Meld 比较文件加载保存的比较" + +#: ../meld/meldapp.py:178 +msgid "Create a diff tab for the supplied files or folders" +msgstr "为提供的文件或文件夹创建 diff 标签页" + +#: ../meld/meldapp.py:181 +#, python-format +msgid "too many arguments (wanted 0-3, got %d)" +msgstr "参数过多(需要 0-3 个,得到 %d 个)" + +#: ../meld/meldapp.py:184 +msgid "can't auto-merge less than 3 files" +msgstr "无法自动合并少于 3 个文件" + +#: ../meld/meldapp.py:186 +msgid "can't auto-merge directories" +msgstr "无法自动合并目录" + +#: ../meld/meldapp.py:196 +msgid "Error reading saved comparison file" +msgstr "读取保存的比较文件出错" + +#. TRANSLATORS: This is the label of a new, currently-unnamed file. +#: ../meld/meldbuffer.py:107 +msgid "" +msgstr "<未命名>" + +#: ../meld/melddoc.py:77 ../meld/melddoc.py:78 +msgid "untitled" +msgstr "无标题" + +#: ../meld/meldwindow.py:51 msgid "_File" msgstr "文件(_F)" -#: ../meld/meldapp.py:140 -msgid "_New..." -msgstr "新建(_N)..." +#: ../meld/meldwindow.py:52 +msgid "_New Comparison..." +msgstr "新比较(_N)..." -#: ../meld/meldapp.py:140 +#: ../meld/meldwindow.py:53 msgid "Start a new comparison" msgstr "开始新的比较" -#: ../meld/meldapp.py:141 +#: ../meld/meldwindow.py:56 msgid "Save the current file" msgstr "保存当前文件" -#: ../meld/meldapp.py:143 +#: ../meld/meldwindow.py:58 +msgid "Save As..." +msgstr "另存为..." + +#: ../meld/meldwindow.py:59 +msgid "Save the current file with a different name" +msgstr "以其他名字保存当前文件" + +#: ../meld/meldwindow.py:62 msgid "Close the current file" msgstr "关闭当前文件" -#: ../meld/meldapp.py:144 -msgid "Quit the program" -msgstr "退出程序" - -#: ../meld/meldapp.py:146 +#: ../meld/meldwindow.py:65 msgid "_Edit" msgstr "编辑(_E)" -#: ../meld/meldapp.py:147 +#: ../meld/meldwindow.py:67 msgid "Undo the last action" msgstr "撤消最后的操作" -#: ../meld/meldapp.py:148 +#: ../meld/meldwindow.py:70 msgid "Redo the last undone action" msgstr "重做最后撤消的操作" -#: ../meld/meldapp.py:149 +#: ../meld/meldwindow.py:72 msgid "Cut the selection" msgstr "剪切选中的内容" -#: ../meld/meldapp.py:150 +#: ../meld/meldwindow.py:74 msgid "Copy the selection" msgstr "复制选中的内容" -#: ../meld/meldapp.py:151 +#: ../meld/meldwindow.py:76 msgid "Paste the clipboard" msgstr "粘贴剪贴板" -#: ../meld/meldapp.py:152 +#: ../meld/meldwindow.py:78 +msgid "Find..." +msgstr "查找..." + +#: ../meld/meldwindow.py:78 msgid "Search for text" msgstr "搜索文字" -#: ../meld/meldapp.py:153 +#: ../meld/meldwindow.py:80 msgid "Find Ne_xt" msgstr "查找下一个(_X)" -#: ../meld/meldapp.py:153 +#: ../meld/meldwindow.py:81 msgid "Search forwards for the same text" msgstr "继续向前搜索相同的文字" -#: ../meld/meldapp.py:154 +#: ../meld/meldwindow.py:83 +msgid "Find _Previous" +msgstr "查找上一个(_P)" + +#: ../meld/meldwindow.py:84 +msgid "Search backwards for the same text" +msgstr "继续向前搜索相同的文字" + +#: ../meld/meldwindow.py:87 +msgid "_Replace..." +msgstr "替换(_R)" + +#: ../meld/meldwindow.py:88 msgid "Find and replace text" msgstr "查找并替换文字" -#: ../meld/meldapp.py:155 -msgid "Prefere_nces" -msgstr "首选项(_N)" - -#: ../meld/meldapp.py:155 -msgid "Configure the application" -msgstr "程序设置" - -#: ../meld/meldapp.py:157 +#: ../meld/meldwindow.py:91 msgid "_Changes" msgstr "更改(_C)" -#: ../meld/meldapp.py:158 -msgid "Next change" +#: ../meld/meldwindow.py:92 +msgid "Next Change" msgstr "下一个更改" -#: ../meld/meldapp.py:158 +#: ../meld/meldwindow.py:93 msgid "Go to the next change" msgstr "转到下一个更改" -#: ../meld/meldapp.py:159 -msgid "Previous change" +#: ../meld/meldwindow.py:95 +msgid "Previous Change" msgstr "上一个更改" -#: ../meld/meldapp.py:159 +#: ../meld/meldwindow.py:96 msgid "Go to the previous change" msgstr "转到上一个更改" -#: ../meld/meldapp.py:161 +#: ../meld/meldwindow.py:98 +msgid "Open Externally" +msgstr "使用外部工具打开" + +#: ../meld/meldwindow.py:99 +msgid "Open selected file or directory in the default external application" +msgstr "使用默认的外部程序打开选择的文件或目录" + +#: ../meld/meldwindow.py:103 msgid "_View" msgstr "查看(_V)" -#: ../meld/meldapp.py:162 -msgid "File status" +#: ../meld/meldwindow.py:104 +msgid "File Status" msgstr "文件状态" -#: ../meld/meldapp.py:163 -msgid "Version status" +#: ../meld/meldwindow.py:105 +msgid "Version Status" msgstr "版本状态" -#: ../meld/meldapp.py:164 -msgid "File filters" -msgstr "文件过滤器" - -#: ../meld/meldapp.py:165 +#: ../meld/meldwindow.py:108 msgid "Stop the current action" msgstr "停止当前操作" -#: ../meld/meldapp.py:166 +#: ../meld/meldwindow.py:111 msgid "Refresh the view" msgstr "刷新视图" -#: ../meld/meldapp.py:167 -msgid "Reload" -msgstr "重新载入" - -#: ../meld/meldapp.py:167 -msgid "Reload the comparison" -msgstr "重新载入比较" - -#: ../meld/meldapp.py:169 -msgid "_Help" -msgstr "帮助(_H)" - -#: ../meld/meldapp.py:170 -msgid "_Contents" -msgstr "内容(_C)" +#: ../meld/meldwindow.py:114 +msgid "_Tabs" +msgstr "标签页(_T)" + +#: ../meld/meldwindow.py:115 +msgid "_Previous Tab" +msgstr "上一标签页(_P)" + +#: ../meld/meldwindow.py:116 +msgid "Activate previous tab" +msgstr "激活上一标签页" + +#: ../meld/meldwindow.py:118 +msgid "_Next Tab" +msgstr "下一标签(_N)" + +#: ../meld/meldwindow.py:119 +msgid "Activate next tab" +msgstr "激活下一标签页" + +#: ../meld/meldwindow.py:122 +msgid "Move Tab _Left" +msgstr "左移标签页(_L)" -#: ../meld/meldapp.py:170 -msgid "Open the Meld manual" -msgstr "打开 Meld 帮助手册" +#: ../meld/meldwindow.py:123 +msgid "Move current tab to left" +msgstr "复制当前的更改到左侧" -#: ../meld/meldapp.py:171 -msgid "Report _Bug" -msgstr "报告错误(_B)" - -#: ../meld/meldapp.py:171 -msgid "Report a bug in Meld" -msgstr "报告 Meld 中的错误" +#: ../meld/meldwindow.py:126 +msgid "Move Tab _Right" +msgstr "移动到右侧(_R)" -#: ../meld/meldapp.py:172 -msgid "About this program" -msgstr "关于本程序" +#: ../meld/meldwindow.py:127 +msgid "Move current tab to right" +msgstr "复制当前的更改到右侧" -#: ../meld/meldapp.py:175 -msgid "Full Screen" +#: ../meld/meldwindow.py:131 +msgid "Fullscreen" msgstr "全屏" -#: ../meld/meldapp.py:175 -msgid "View the comparison in full screen" +#: ../meld/meldwindow.py:132 +msgid "View the comparison in fullscreen" msgstr "以全屏模式查看比较" -#: ../meld/meldapp.py:176 +#: ../meld/meldwindow.py:134 msgid "_Toolbar" msgstr "工具栏(_T)" -#: ../meld/meldapp.py:176 +#: ../meld/meldwindow.py:135 msgid "Show or hide the toolbar" msgstr "显示或隐藏工具栏" -#: ../meld/meldapp.py:177 +#: ../meld/meldwindow.py:137 msgid "_Statusbar" msgstr "状态栏(_S)" -#: ../meld/meldapp.py:177 +#: ../meld/meldwindow.py:138 msgid "Show or hide the statusbar" msgstr "显示或隐藏状态栏" -#. exit at first non found directory + file -#: ../meld/meldapp.py:533 -msgid "Cannot compare a mixture of files and directories.\n" -msgstr "无法对文件和目录的混合进行比较。\n" +#: ../meld/meldwindow.py:147 +msgid "Open Recent" +msgstr "最近打开的" -#: ../meld/meldapp.py:587 -msgid "wrong number of arguments supplied to --diff" -msgstr "提供给 --diff 的参数个数错误。" +#: ../meld/meldwindow.py:148 +msgid "Open recent files" +msgstr "选择文件" -#: ../meld/meldapp.py:591 -msgid "Start with an empty window" -msgstr "启动时打开空白窗口" +#: ../meld/meldwindow.py:537 +msgid "Switch to this tab" +msgstr "切换到此标签页" + +#: ../meld/meldwindow.py:660 +#| msgid "Cannot compare a mixture of files and directories.\n" +msgid "Cannot compare a mixture of files and directories" +msgstr "无法对文件和目录混合比较" -#: ../meld/meldapp.py:592 ../meld/meldapp.py:593 ../meld/meldapp.py:595 -msgid "file" -msgstr "文件" +#. no common path. empty names get changed to "[None]" +#: ../meld/misc.py:180 +msgid "[None]" +msgstr "[无]" -#: ../meld/meldapp.py:592 ../meld/meldapp.py:594 ../meld/meldapp.py:595 -msgid "dir" -msgstr "目录" +#: ../meld/preferences.py:36 +msgid "label" +msgstr "标签" -#: ../meld/meldapp.py:592 -msgid "Start a version control comparison" -msgstr "开始版本控制比较" +#: ../meld/preferences.py:36 +msgid "pattern" +msgstr "模式" -#: ../meld/meldapp.py:593 -msgid "Start a 2- or 3-way file comparison" -msgstr "开始两向或三向文件比较" +#: ../meld/recent.py:109 +msgid "Version control:" +msgstr "版本控制:" + +#: ../meld/ui/findbar.py:143 +#| msgid "" +#| "Regular expression error\n" +#| "'%s'" +msgid "Regular expression error" +msgstr "正则表达式错误" -#: ../meld/meldapp.py:594 -msgid "Start a 2- or 3-way directory comparison" -msgstr "开始两向或三向目录比较" +#: ../meld/ui/notebooklabel.py:65 +msgid "Close tab" +msgstr "关闭标签" -#: ../meld/meldapp.py:595 -msgid "Start a comparison between file and dir/file" -msgstr "在文件和文件夹/文件之间开始比较" +#: ../meld/ui/vcdialogs.py:63 +msgid "No files will be committed" +msgstr "没有文件会提交" -#: ../meld/meldapp.py:601 -msgid "Meld is a file and directory comparison tool." -msgstr "Meld 是一个文件和目录比较工具。" +#. Translators: First %s is replaced by translated "%d unpushed +#. commits", second %s is replaced by translated "%d branches" +#: ../meld/vc/git.py:126 +#, python-format +msgid "%s in %s" +msgstr "%s,位于 %s" -#: ../meld/meldapp.py:604 -msgid "Set label to use instead of file name" -msgstr "设置标签来代替文件名" +#. Translators: These messages cover the case where there is +#. only one branch, and are not part of another message. +#: ../meld/vc/git.py:127 ../meld/vc/git.py:134 +#, python-format +msgid "%d unpushed commit" +msgid_plural "%d unpushed commits" +msgstr[0] "%d 项未推送的提交" -#: ../meld/meldapp.py:606 -msgid "Automatically compare all differing files on startup" -msgstr "启动时自动比较所有不同的文件" +#: ../meld/vc/git.py:129 +#, python-format +msgid "%d branch" +msgid_plural "%d branches" +msgstr[0] "%d 个分支" -#: ../meld/meldapp.py:607 ../meld/meldapp.py:608 ../meld/meldapp.py:609 -#: ../meld/meldapp.py:610 -msgid "Ignored for compatibility" -msgstr "为保持兼容性而忽略" +#: ../meld/vc/git.py:341 +#, python-format +msgid "Mode changed from %s to %s" +msgstr "模式已从 %s 更改为 %s" -#: ../meld/meldapp.py:613 -msgid "Creates a diff tab for up to 3 supplied files or directories." -msgstr "为文件或目录创建 diff 表,最多支持三个文件或目录" +#: ../meld/vc/_vc.py:47 +msgid "Merged" +msgstr "已合并" -#: ../meld/meldapp.py:616 -#, python-format -msgid "too many arguments (wanted 0-4, got %d)" -msgstr "参数过多(需要 0-4 个,但得到了 %d 个)" +#: ../meld/vc/_vc.py:47 +msgid "Base" +msgstr "基" -#: ../meld/melddoc.py:47 -msgid "untitled" -msgstr "无标题" +#: ../meld/vc/_vc.py:47 +msgid "Local" +msgstr "本地" -#. no common path. empty names get changed to "[None]" -#: ../meld/misc.py:189 -msgid "[None]" -msgstr "[无]" +#: ../meld/vc/_vc.py:47 +msgid "Remote" +msgstr "远端" -#: ../meld/preferences.py:81 -msgid "label" -msgstr "标签" +#. These are the possible states of files. Be sure to get the colons correct. +#: ../meld/vc/_vc.py:62 +msgid "" +"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:Missing:" +"Not present" +msgstr "已忽略:未版本控制:::错误::新添加:已修改:冲突:已删除:丢失:不存在" -#: ../meld/preferences.py:81 -msgid "pattern" -msgstr "模式" +#: ../meld/vcview.py:216 ../meld/vcview.py:386 +msgid "Location" +msgstr "位置" -#: ../meld/preferences.py:143 -msgid "Only available if you have gnome-python-desktop installed" -msgstr "仅在安装 gnome-python-desktop 后才有效" - -#. file filters -#. text filters -#: ../meld/preferences.py:166 ../meld/preferences.py:171 ../meld/vcview.py:163 -msgid "Name" -msgstr "过滤器名称" +#: ../meld/vcview.py:217 +msgid "Status" +msgstr "状态" -#: ../meld/preferences.py:166 ../meld/preferences.py:171 -msgid "Active" -msgstr "启用" +#: ../meld/vcview.py:218 +msgid "Revision" +msgstr "修订" -#: ../meld/preferences.py:166 -msgid "Pattern" -msgstr "模式" +#: ../meld/vcview.py:219 +msgid "Options" +msgstr "选项" -#: ../meld/preferences.py:171 -msgid "Regex" -msgstr "正则语法" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:268 -msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -msgstr "备份 \t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:270 -#, python-format -msgid "Version Control\t1\t%s\n" -msgstr "版本控制 \t1\t%s\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:272 -msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -msgstr "二进制 \t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:274 -msgid "Media\t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -msgstr "多媒体 \t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:276 -msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -msgstr "CVS 关键字 \t0\t\\$\\w+(:[^\\n$]+)?\\$\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:278 -msgid "C++ comment\t0\t//.*\n" -msgstr "C++ 注释 \t0\t//.*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:280 -msgid "C comment\t0\t/\\*.*?\\*/\n" -msgstr "C 注释 \t0\t/\\*.*?\\*/\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:282 -msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" -msgstr "所有空白字符 \t0\t[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:284 -msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" -msgstr "开头空白字符 \t0\t^[ \\t\\r\\f\\v]*\n" - -#. TRANSLATORS: translate this string ONLY to the first "\t", leave it and the following parts intact -#: ../meld/preferences.py:286 -msgid "Script comment\t0\t#.*" -msgstr "脚本注释 \t0\t#.*" - -#: ../meld/vcview.py:127 -msgid "_Commit" -msgstr "提交(_C)" +#. TRANSLATORS: this is an error message when a version control +#. application isn't installed or can't be found +#: ../meld/vcview.py:297 +#, python-format +msgid "%s not installed" +msgstr "%s 未安装" -#: ../meld/vcview.py:127 -msgid "Commit" -msgstr "提交" +#. TRANSLATORS: this is an error message when a version +#. controlled repository is invalid or corrupted +#: ../meld/vcview.py:301 +msgid "Invalid repository" +msgstr "无效的仓库" -#. FIXME: popup used to use gtk.STOCK_GO_BACK -#: ../meld/vcview.py:128 -msgid "_Update" -msgstr "更新(_U)" +#: ../meld/vcview.py:310 +#, python-format +msgid "%s (%s)" +msgstr "%s (%s)" -#: ../meld/vcview.py:128 -msgid "Update" -msgstr "更新" +#: ../meld/vcview.py:312 ../meld/vcview.py:320 +msgid "None" +msgstr "无" -#. FIXME: popup used to use gtk.STOCK_GO_FORWARD -#: ../meld/vcview.py:129 -msgid "_Add" -msgstr "添加(_A)" +#: ../meld/vcview.py:331 +msgid "No valid version control system found in this folder" +msgstr "此文件夹中未找到有效的版本控制系统" -#: ../meld/vcview.py:129 -msgid "Add to VC" -msgstr "添加到 CV" - -#. FIXME: popup used to use gtk.STOCK_ADD -#: ../meld/vcview.py:130 -msgid "Add _Binary" -msgstr "添加二进制(_B)" - -#: ../meld/vcview.py:130 -msgid "Add binary to VC" -msgstr "添加二进制到 VC" +#: ../meld/vcview.py:333 +msgid "Only one version control system found in this folder" +msgstr "此目录中只找到一个版本控制系统" -#. FIXME: stock is inconsistent with other VC actions -#: ../meld/vcview.py:131 -msgid "_Remove" -msgstr "删除(_R)" +#: ../meld/vcview.py:335 +msgid "Choose which version control system to use" +msgstr "选择要使用的版本控制系统" -#: ../meld/vcview.py:131 -msgid "Remove from VC" -msgstr "从 VC 删除" - -#. FIXME: popup used to use gtk.STOCK_REMOVE -#: ../meld/vcview.py:132 -msgid "_Resolved" -msgstr "已处理(_R)" - -#: ../meld/vcview.py:132 -msgid "Mark as resolved for VC" -msgstr "在 VC 中标记为“已处理”" - -#: ../meld/vcview.py:133 -msgid "Revert to original" -msgstr "转换为原件" - -#: ../meld/vcview.py:134 -msgid "Delete locally" -msgstr "从本地删除" +#. TRANSLATORS: This is the location of the directory the user is diffing +#: ../meld/vcview.py:386 +#, python-format +msgid "%s: %s" +msgstr "%s:%s" -#: ../meld/vcview.py:138 -msgid "_Flatten" -msgstr "展开(_F)" +#: ../meld/vcview.py:400 ../meld/vcview.py:408 +#, python-format +msgid "Scanning %s" +msgstr "正在扫描 %s" -#: ../meld/vcview.py:138 -msgid "Flatten directories" -msgstr "展开目录" +#: ../meld/vcview.py:441 +msgid "(Empty)" +msgstr "(空)" -#: ../meld/vcview.py:139 -msgid "_Modified" -msgstr "已修改(_M)" +#: ../meld/vcview.py:664 +msgid "Remove folder and all its files?" +msgstr "移除文件夹及所有包含的文件?" -#: ../meld/vcview.py:140 -msgid "_Normal" -msgstr "正常(_N)" +#: ../meld/vcview.py:666 +msgid "" +"This will remove all selected files and folders, and all files within any " +"selected folders, from version control." +msgstr "这将从版本控制中移除所有选中的文件及文件夹,及选中文件夹中的所有文件。" + +#: ../meld/vcview.py:700 +#, python-format +#| msgid "" +#| "Error removing %s\n" +#| "\n" +#| "%s." +msgid "Error removing %s" +msgstr "删除 %s 出错" -#: ../meld/vcview.py:140 -msgid "Show normal" -msgstr "显示正常的" - -#: ../meld/vcview.py:141 -msgid "Non _VC" -msgstr "非 _VC" +#~ msgid "" +#~ "Meld 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.\n" +#~ "\n" +#~ "Meld 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. \n" +#~ "\n" +#~ "You should have received a copy of the GNU General Public License along " +#~ "with this program. If not, see ." +#~ msgstr "" +#~ "Meld 是自由软件;您可以在自由软件基金会发布的 GNU 公共许可证的条目下重新发" +#~ "布或修改它;许可证应当是第二版或由您选择的更高版本。Meld 发布是希望它有" +#~ "用,但没有任何担保;即使是商业性应用或其它任何目的。参见 GNU 公共许可证以" +#~ "获得更多细节。您应当在收到 Meld 的同时收到了 GNU 公共许可证的副本;如果没" +#~ "有的话,请访问 。" + +#~ msgid "Loading" +#~ msgstr "载入" -#: ../meld/vcview.py:141 -msgid "Show unversioned files" -msgstr "显示无版本文件" +#~ msgid "When loading, try these codecs in order. (e.g. utf8, iso8859)" +#~ msgstr "载入时,按此顺序尝试编码。(如 utf8,gb2312,gbk,gb18030)" -#: ../meld/vcview.py:142 -msgid "Ignored" -msgstr "已忽略的" +#~ msgid "Encoding" +#~ msgstr "文字编码" -#: ../meld/vcview.py:142 -msgid "Show ignored files" -msgstr "显示已忽略文件" +#~ msgid "Compare selected" +#~ msgstr "比较选中的" -#: ../meld/vcview.py:180 -msgid "Location" -msgstr "位置" +#~ msgid "" +#~ "'%s' is a directory.\n" +#~ "Remove recursively?" +#~ msgstr "" +#~ "“%s”是一个目录。\n" +#~ "递归删除该目录下的子目录吗?" -#: ../meld/vcview.py:181 -msgid "Status" -msgstr "状态" +#~ msgid "Start a comparison between file and dir/file" +#~ msgstr "在文件和文件夹/文件之间开始比较" -#: ../meld/vcview.py:182 -msgid "Rev" -msgstr "修订版本" +#~ msgid "D-Bus error; comparisons will open in a new window." +#~ msgstr "D-Bus 错误;比较将在新窗口打开。" -#: ../meld/vcview.py:184 -msgid "Options" -msgstr "选项" +#~ msgid "Quit the program" +#~ msgstr "退出程序" -#: ../meld/vcview.py:230 -msgid "Choose one Version Control" -msgstr "选择一个版本控制" - -#: ../meld/vcview.py:231 -msgid "Only one Version Control in this directory" -msgstr "此目录中只有一个版本控制文件" +#~ msgid "Configure the application" +#~ msgstr "程序设置" -#: ../meld/vcview.py:320 -msgid "(Empty)" -msgstr "(空)" +#~ msgid "_Contents" +#~ msgstr "内容(_C)" -#: ../meld/vcview.py:353 -#, python-format -msgid "[%s] Fetching differences" -msgstr "[%s] 获取差异" +#~ msgid "Open the Meld manual" +#~ msgstr "打开 Meld 帮助手册" -#: ../meld/vcview.py:360 -#, python-format -msgid "[%s] Applying patch" -msgstr "[%s] 应用补丁" +#~ msgid "Report _Bug" +#~ msgstr "报告错误(_B)" -#: ../meld/vcview.py:364 -msgid "No differences found." -msgstr "没有发现差异。" +#~ msgid "Report a bug in Meld" +#~ msgstr "报告 Meld 中的错误" -#: ../meld/vcview.py:438 -msgid "Select some files first." -msgstr "优先选择某些文件。" +#~ msgid "About this program" +#~ msgstr "关于本程序" -#: ../meld/vcview.py:504 -#, python-format -msgid "" -"\n" -" Invoking 'patch' failed.\n" -" \n" -" Maybe you don't have 'GNU patch' installed,\n" -" or you use an untested version of %s.\n" -" \n" -" Please send email bug report to:\n" -" meld-list@gnome.org\n" -" \n" -" Containing the following information:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (no need to actually run it, just provide\n" -" the command line) \n" -" \n" -" Replace 'X.Y.Z' by the actual version for the\n" -" source control software you use.\n" -" " -msgstr "" -"\n" -" 调用 patch 命令失败。\n" -" \n" -" 可能您还没有安装 GNU patch,\n" -" 或者您使用的是一个未经过测试的 %s 版本。\n" -" \n" -" 请发送电子邮件到这里报告错误:\n" -" meld-list@gnome.org\n" -" \n" -" 请在邮件中包含以下信息:\n" -" \n" -" - meld version: '%s'\n" -" - source control software type: '%s'\n" -" - source control software version: 'X.Y.Z'\n" -" - the output of '%s somefile.txt'\n" -" - patch command: '%s'\n" -" (并不需要真的运行命令,只要写出来就行) \n" -" \n" -" X.Y.Z 是您实际使用的源控制软件的版本号。\n" -" " - -#: ../meld/ui/findbar.py:119 -#, python-format -msgid "" -"Regular expression error\n" -"'%s'" -msgstr "" -"正则表达式错误\n" -"“%s”" - -#: ../meld/ui/historyentry.py:248 -msgid "_Browse..." -msgstr "浏览(_B)..." - -#: ../meld/ui/historyentry.py:256 -msgid "Path" -msgstr "路径" - -#: ../meld/ui/historyentry.py:257 -msgid "Path to file" -msgstr "文件路径" - -#: ../meld/ui/historyentry.py:258 -msgid "Pop up a file selector to choose a file" -msgstr "弹出文件选择器来选择一个文件" - -#: ../meld/ui/historyentry.py:379 -msgid "Select directory" -msgstr "选择目录" +#~ msgid "Only available if you have PyGtkSourceView 2 installed" +#~ msgstr "只有安装了 PyGtkSourceView 2 才能用" -#: ../meld/ui/historyentry.py:383 -msgid "Select file" -msgstr "选择文件" +#~ msgid "Backups\t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" +#~ msgstr "备份 \t1\t#*# .#* ~* *~ *.{orig,bak,swp}\n" -#: ../meld/ui/notebooklabel.py:61 -msgid "Close tab" -msgstr "关闭标签" +#~ msgid "" +#~ "OS-specific metadata\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +#~ "Desktop.ini\n" +#~ msgstr "" +#~ "操作系统特定元数据\t0\t.DS_Store ._* .Spotlight-V100 .Trashes Thumbs.db " +#~ "Desktop.ini\n" -#. These are the possible states of files. Be sure to get the colons correct. -#: ../meld/vc/_vc.py:40 -msgid "" -"Ignored:Unversioned:::Error::Newly added:Modified:Conflict:Removed:" -"Missing" -msgstr "忽略:版本不详:::错误::新添加:已修改:冲突:已删除:丢失" +#~ msgid "Version Control\t1\t%s\n" +#~ msgstr "版本控制 \t1\t%s\n" -#: ../meld/vc/cvs.py:151 -#, python-format -msgid "" -"Error converting to a regular expression\n" -"The pattern was '%s'\n" -"The error was '%s'" -msgstr "" -"转换为正则表达式时出错\n" -"模式为“%s”\n" -"错误为“%s”" +#~ msgid "Binaries\t1\t*.{pyc,a,obj,o,so,la,lib,dll,exe}\n" +#~ msgstr "二进制 \t1\t*.{pyc,a,obj,o,so,la,lib,dll}\n" -#~ msgid "Edit Menu" -#~ msgstr "编辑菜单" +#~ msgid "Media\t0\t*.{jpg,gif,png,bmp,wav,mp3,ogg,flac,avi,mpg,xcf,xpm}" +#~ msgstr "多媒体 \t0\t*.{jpg,gif,png,wav,mp3,ogg,xcf,xpm}" -#~ msgid "Edit files with:" -#~ msgstr "编辑文件的程序:" +#~ msgid "CVS keywords\t0\t\\$\\w+(:[^\\n$]+)?\\$\n" +#~ msgstr "CVS 关键字 \t0\t\\$\\w+(:[^\\n$]+)?\\$\n" -#~ msgid "Line Wrapping " -#~ msgstr "换行" +#~ msgid "C++ comment\t0\t//.*\n" +#~ msgstr "C++ 注释 \t0\t//.*\n" -#~ msgid "Preferences : Meld" -#~ msgstr "首选项:Meld" +#~ msgid "C comment\t0\t/\\*.*?\\*/\n" +#~ msgstr "C 注释 \t0\t/\\*.*?\\*/\n" -#~ msgid "Use GNOME monospace font" -#~ msgstr "使用 GNOME 等宽字体" +#~ msgid "All whitespace\t0\t[ \\t\\r\\f\\v]*\n" +#~ msgstr "所有空白字符 \t0\t[ \\t\\r\\f\\v]*\n" -#~ msgid "Use custom font" -#~ msgstr "使用自定义字体" +#~ msgid "Leading whitespace\t0\t^[ \\t\\r\\f\\v]*\n" +#~ msgstr "开头空白字符 \t0\t^[ \\t\\r\\f\\v]*\n" -#~ msgid "_Character" -#~ msgstr "字符(_C)" +#~ msgid "Script comment\t0\t#.*" +#~ msgstr "脚本注释 \t0\t#.*" -#~ msgid "_None" -#~ msgstr "无(_N)" +#~ msgid "_Browse..." +#~ msgstr "浏览(_B)..." -#~ msgid "_Word" -#~ msgstr "字(_W)" +#~ msgid "Path" +#~ msgstr "路径" -#~ msgid "The error was:" -#~ msgstr "错误:" +#~ msgid "Path to file" +#~ msgstr "文件路径" -#~ msgid "" -#~ "It contains ascii nulls.\n" -#~ "Perhaps it is a binary file." -#~ msgstr "" -#~ "包含 ASCII 空字符。\n" -#~ "可能这是一个二进制文件。" +#~ msgid "Pop up a file selector to choose a file" +#~ msgstr "弹出文件选择器来选择一个文件" -#~ msgid "Start with Version Control browser in '%s'" -#~ msgstr "用版本控制浏览器打开“%s”" +#~ msgid "Select directory" +#~ msgstr "选择目录" -#~ msgid "Start with Version Control diff of '%s'" -#~ msgstr "用版本控制浏览器比较“%s”的差异" +#~ msgid "Select file" +#~ msgstr "选择文件" -#~ msgid "Wrong number of arguments (Got %i)" -#~ msgstr "参数数字错误 (调用 %i)" +#~ msgid "" +#~ "Error converting to a regular expression\n" +#~ "The pattern was '%s'\n" +#~ "The error was '%s'" +#~ msgstr "" +#~ "转换为正则表达式时出错\n" +#~ "模式为“%s”\n" +#~ "错误为“%s”" diff -Nru meld-1.5.3/README meld-3.11.0/README --- meld-1.5.3/README 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/README 2014-02-22 21:20:05.000000000 +0000 @@ -0,0 +1,48 @@ + +About Meld +========== + +Meld is a visual diff and merge tool targeted at developers. Meld helps you +compare files, directories, and version controlled projects. It provides +two- and three-way comparison of both files and directories, and supports +many version control systems including Git, Mercurial, Bazaar and Subversion. + +Meld helps you review code changes, understand patches, and makes enormous +merge conflicts slightly less painful. + +Meld is licensed under the GPL v2 or later. + + +Requirements +------------ + +* GTK+ 3.6 +* GLib 2.34 +* PyGObject 3.8 +* GtkSourceView 3.6 + + +Running +------- + +Meld can be run directly from this directory. Just type: + + * `bin/meld` + +Alternatively, you can install Meld system-wide by running: + + * `python setup.py install` + +...but you should probably just get a RPM/deb/installer instead, depending on +your system. Meld packages are available for just about every *nix +distribution, and can be installed on OSX using MacPorts/Fink/etc. See the wiki +for options for getting Meld working on Windows. + + +Contacting +---------- + +Home page: http://meldmerge.org +Documentation: http://meldmerge.org/help +Wiki: https://wiki.gnome.org/Apps/Meld +Mailing list: https://mail.gnome.org/mailman/listinfo/meld-list diff -Nru meld-1.5.3/setup.py meld-3.11.0/setup.py --- meld-1.5.3/setup.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/setup.py 2014-02-22 21:06:19.000000000 +0000 @@ -0,0 +1,63 @@ +#!/usr/bin/env python + +from distutils.core import setup +import glob + +import meld.build_helpers +import meld.conf + + +setup( + name=meld.conf.__package__, + version=meld.conf.__version__, + description='Visual diff and merge tool', + author='Kai Willadsen', + author_email='kai.willadsen@gmail.com', + url='http://meldmerge.org', + classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Environment :: X11 Applications :: GTK', + 'Intended Audience :: Developers', + 'Intended Audience :: System Administrators', + 'License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)', + 'Programming Language :: Python', + 'Topic :: Desktop Environment :: Gnome', + 'Topic :: Software Development', + 'Topic :: Software Development :: Version Control', + ], + packages=[ + 'meld', + 'meld.ui', + 'meld.util', + 'meld.vc', + ], + package_data={ + 'meld.vc': ['README', 'COPYING', 'NEWS'] + }, + scripts=['bin/meld'], + data_files=[ + ('share/man/man1', + ['meld.1'] + ), + ('share/doc/meld-' + meld.conf.__version__, + ['COPYING', 'NEWS'] + ), + ('share/meld', + ['data/meld.css'] + ), + ('share/meld/icons', + glob.glob("data/icons/*.png") + + glob.glob("data/icons/COPYING*") + ), + ('share/meld/ui', + glob.glob("data/ui/*.ui") + glob.glob("data/ui/*.xml") + ), + ], + cmdclass={ + "build": meld.build_helpers.build_extra, + "build_i18n": meld.build_helpers.build_i18n, + "build_help": meld.build_helpers.build_help, + "build_icons": meld.build_helpers.build_icons, + "build_data": meld.build_helpers.build_data, + } +) diff -Nru meld-1.5.3/test/test_matchers.py meld-3.11.0/test/test_matchers.py --- meld-1.5.3/test/test_matchers.py 1970-01-01 00:00:00.000000000 +0000 +++ meld-3.11.0/test/test_matchers.py 2014-02-16 20:23:22.000000000 +0000 @@ -0,0 +1,68 @@ + +import unittest +import matchers + +class MatchersTests(unittest.TestCase): + + def testBasicMatcher(self): + a = list('abcbdefgabcdefg') + b = list('gfabcdefcd') + r = [(0, 2, 3), (4, 5, 3), (10, 8, 2), (15, 10, 0)] + matcher = matchers.MyersSequenceMatcher(None, a, b) + blocks = matcher.get_matching_blocks() + self.assertEqual(len(blocks), len(r)) + for i in range(len(blocks)): + self.assertEqual(blocks[i], r[i]) + + def testPostprocessingCleanup(self): + a = list('abcfabgcd') + b = list('afabcgabgcabcd') + r = [(0, 2, 3), (4, 6, 3), (7, 12, 2), (9, 14, 0)] + matcher = matchers.MyersSequenceMatcher(None, a, b) + blocks = matcher.get_matching_blocks() + self.assertEqual(len(blocks), len(r)) + for i in range(len(blocks)): + self.assertEqual(blocks[i], r[i]) + + def testInlineMatcher(self): + a = 'red, blue, yellow, white' + b = 'black green, hue, white' + r = [(17, 16, 7), (24, 23, 0)] + matcher = matchers.InlineMyersSequenceMatcher(None, a, b) + blocks = matcher.get_matching_blocks() + self.assertEqual(len(blocks), len(r)) + for i in range(len(blocks)): + self.assertEqual(blocks[i], r[i]) + + def testSyncPointMatcher0(self): + a = list('012a3456c789') + b = list('0a3412b5678') + r = [(0, 0, 1), (3, 1, 3), (6, 7, 2), (9, 9, 2), (12, 11, 0)] + matcher = matchers.SyncPointMyersSequenceMatcher(None, a, b) + blocks = matcher.get_matching_blocks() + self.assertEqual(len(blocks), len(r)) + for i in range(len(blocks)): + self.assertEqual(blocks[i], r[i]) + + def testSyncPointMatcher1(self): + a = list('012a3456c789') + b = list('0a3412b5678') + r = [(0, 0, 1), (1, 4, 2), (6, 7, 2), (9, 9, 2), (12, 11, 0)] + matcher = matchers.SyncPointMyersSequenceMatcher(None, a, b, [(3,6)]) + blocks = matcher.get_matching_blocks() + self.assertEqual(len(blocks), len(r)) + for i in range(len(blocks)): + self.assertEqual(blocks[i], r[i]) + + def testSyncPointMatcher2(self): + a = list('012a3456c789') + b = list('02a341b5678') + r = [(0, 0, 1), (2, 1, 4), (9, 9, 2), (12, 11, 0)] + matcher = matchers.SyncPointMyersSequenceMatcher(None, a, b, [(3,2), (8,6)]) + blocks = matcher.get_matching_blocks() + self.assertEqual(len(blocks), len(r)) + self.assertEqual(blocks[0], r[0]) + self.assertEqual(blocks[1], r[1]) + +if __name__ == '__main__': + unittest.main() diff -Nru meld-1.5.3/tools/check_release meld-3.11.0/tools/check_release --- meld-1.5.3/tools/check_release 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/tools/check_release 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -#! /usr/bin/env python - -### Copyright (C) 2002-2003 Stephen Kennedy - -### 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 glob -import re - -# check for tabs -for file in ["meld"] + glob.glob("*.py") + glob.glob("vc/*.py"): - txt = open(file).read() - firsttab = txt.find('\t') - if firsttab != -1: - line = len( txt[:firsttab].split("\n") ) - print "%s:%i:Tabs detected" % (file, line) - sys.exit(1) - -# fix glade files - glade strips directory names from icons :-( -def add_pixmap_dir(matchobj): - ret = matchobj.group(1) - ico = matchobj.group(2) - if ico.find("/") == -1: - print "Changed", ico, "to", - newico = "../icons/"+ico - ret = ret.replace(ico, newico) - print newico - return ret - -icon_re = re.compile(r'(([^<]+))') -for file in glob.glob("data/ui/*.glade"): - txt = open(file).read() - newtxt = icon_re.sub(add_pixmap_dir, txt) - if txt != newtxt: - open(file,"w").write(newtxt) - -version = re.search('^version\s*=\s*"([^"]+)"', open("meldapp.py").read(), re.M).group(1) -if open("NEWS").readline().find("meld-"+version) == -1: - print "No NEWS entry for", version diff -Nru meld-1.5.3/tools/install_paths meld-3.11.0/tools/install_paths --- meld-1.5.3/tools/install_paths 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/tools/install_paths 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -#! /usr/bin/env python - -import sys - -txt = sys.stdin.read() -for s in sys.argv[1:]: - a,b = s.split("=") - txt = txt.replace("#%s#"%a.upper(), '"%s"' % b) -print txt - diff -Nru meld-1.5.3/tools/make_release meld-3.11.0/tools/make_release --- meld-1.5.3/tools/make_release 2012-01-27 02:30:34.000000000 +0000 +++ meld-3.11.0/tools/make_release 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -#! /usr/bin/env python - -### Copyright (C) 2002-2003 Stephen Kennedy - -### 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 sys -import string - -SFORGE = 0 -GNOME = 1 - -host = GNOME - -if host == SFORGE: - cvsroot = ":pserver:anonymous@cvs1:2401/cvsroot/meld" - upload = 'lftp -c "open upload; cd incoming; put %s"' -else: - cvsroot = ":pserver:anonymous@anoncvs.gnome.org:/cvs/gnome" - upload = 'install-module %s' - -def system(s): - print s - if os.system(s) != 0: - raise "Command error!" - -# gnome release -tag = "release-%s" % string.replace(sys.argv[1], ".", "_") -release = "meld-" + sys.argv[1] -#export = "cvs -d %s -q -z3 export -r %s -d %s meld" % (cvsroot, tag, release) -export = "svn export http://svn.gnome.org/svn/meld/tags/%s %s" % (tag, release) -system(export) -targz = release + ".tar.gz" -tar = "tar cvfz %s %s" % (targz, release) -system(tar) -clean = "rm -rf " + release -system(clean) -system(upload % targz) -