Merge branch 'master' of github.com:gramps-project/gramps

This commit is contained in:
erikdrgm 2015-05-29 22:41:22 +02:00
commit 7022c9af5a
5 changed files with 134 additions and 930 deletions

View File

@ -1,246 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkListStore" id="model1">
<columns>
<!-- column-name gchararray -->
<column type="gchararray"/>
</columns>
<data>
<row>
<col id="0" translatable="yes">- default -</col>
</row>
</data>
</object>
<object class="GtkDialog" id="phpgedview">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title" translatable="yes">phpGedView import</property>
<property name="window_position">mouse</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox" id="vbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child internal-child="action_area">
<object class="GtkButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<object class="GtkButton" id="button1">
<property name="label">gtk-cancel</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">False</property>
<property name="use_stock">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="ok_button">
<property name="label">gtk-apply</property>
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="receives_default">False</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_ok_button_activate" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkGrid" id="table2">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="border_width">12</property>
<property name="row_spacing">9</property>
<property name="column_spacing">9</property>
<child>
<object class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">phpGedView import</property>
<property name="justify">center</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">2</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="url_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="width_chars">25</property>
<property name="text" translatable="yes">http://</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="username_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="editable">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">4</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="password_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hexpand">True</property>
<property name="editable">False</property>
<property name="visibility">False</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">5</property>
</packing>
</child>
<child>
<object class="GtkComboBox" id="file_combo">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="model">model1</property>
<child>
<object class="GtkCellRendererText" id="renderer1"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label10">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">File:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label11">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Username:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">4</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">Password:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">5</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="version_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="halign">start</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">URL:</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
</packing>
</child>
<child>
<object class="GtkProgressBar" id="progressbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="pulse_step">0.10000000149</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">6</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="padding">5</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<action-widgets>
<action-widget response="-6">button1</action-widget>
<action-widget response="-10">ok_button</action-widget>
</action-widgets>
</object>
</interface>

View File

@ -1,433 +0,0 @@
#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2000-2005 Donald N. Allingham, Martin Hawlisch
#
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"Download a GEDCOM file from a phpGedView server"
import http.client as hcl
from urllib.request import Request, urlopen
from urllib.error import URLError
from gi.repository import Gtk
import os
from tempfile import mkstemp
from gramps.gen.const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
from gramps.gui.glade import Glade
import gramps.plugins.lib.libgedcom as libgedcom
#
# Interface to phpGedView
#
# See http://phpgedview.sourceforge.net/racp.php
#
class PHPGedViewConnector(object):
TYPE_INDI = 1
TYPE_FAM = 2
TYPE_SOUR = 3
TYPE_REPO = 4
TYPE_NOTE = 5
TYPE_OBJE = 6
TYPE_OTHER = 7
TYPE_ALL = 99
POS_NEW = 1
POS_FIRST = 2
POS_NEXT = 3
POS_PREV = 4
POS_LAST = 5
POS_ALL = 6
type_trans = {
TYPE_INDI: "INDI",
TYPE_FAM: "FAM",
TYPE_SOUR: "SOUR",
TYPE_REPO: "REPO",
TYPE_NOTE: "NOTE",
TYPE_OBJE: "OBJE",
TYPE_OTHER: "OTHER",
}
pos_trans = {
POS_NEW: "new",
POS_FIRST: "first",
POS_NEXT: "next",
POS_PREV: "prev",
POS_LAST: "last",
POS_ALL: "all",
}
def __init__(self,url,progressbar_cb=None):
self.url = url
self.sessionname = None
self.sessionid = None
self.connected = False
self.progressbar_cb = progressbar_cb
def update_progressbar(self,text=None,pos=0,max=0):
if self.progressbar_cb:
self.progressbar_cb(text,pos,max)
def get_version(self):
response = self.fetch_url_to_array( [("action","version",),])
if response and response[0] == "SUCCESS":
version = response[1]
return version
return None
def list_gedcoms(self):
response = self.fetch_url_to_array( [("action","listgedcoms",),])
if response and response[0] == "SUCCESS":
gedcoms = []
for i in range(1,len(response)):
if not response[i].strip():
break
gedcoms.append(response[i].split("\t"))
return gedcoms
return None
def connect_to_gedcom(self, filename=None, username=None, password=None):
self.gedname = None
params = []
params.append( ("action","connect",))
if filename:
params.append( ("ged",filename,))
if username:
params.append( ("username",username,))
if password:
params.append( ("password",password,))
response = self.fetch_url_to_array( params)
if response and response[0] == "SUCCESS":
session = response[1].split("\t")
self.sessionname = session[0]
self.sessionid = session[1]
self.connected = True
if filename:
self.gedname = filename
return True
return False
def list_xrefs(self, type = TYPE_ALL, pos=POS_ALL, xref=None):
result = []
types = []
if type == self.TYPE_ALL:
types.extend(self.type_trans)
else:
types.append(type)
for entry in types:
request = []
request.append( ("action", "getxref"))
request.append( ("type", self.type_trans[entry]))
request.append( ("position", self.pos_trans[pos]))
if xref:
request.append( ("xref", xref))
result_part = self.fetch_url_to_array( request)
if result_part[0] == "SUCCESS":
for x in range(1,len(result_part)):
txt = result_part[x]
if txt:
txt = txt.strip()
if len(txt) > 0:
result.append( txt)
else:
break
else:
break
return result
def get_records(self, xref):
if not xref or len(xref) == 0:
return None
# merge xref list to a semicolon separated string
xref_str = ""
try:
for x in xref:
xref_str += x+";"
except TypeError:
xref_str = xref
result = []
request = []
request.append( ("action", "get"))
request.append( ("xref", xref_str))
result_part = self.fetch_url_to_array( request)
#print result_part
if result_part[0] == "SUCCESS":
for x in range(1,len(result_part)):
txt = result_part[x].strip()
if txt and txt != "":
result.append( txt)
return result
def fetch_full_gedcom( self, outfile=None):
print(outfile)
if outfile is None:
gedname = self.gedname
if not gedname:
gedname = "temp.ged"
filenameparts = gedname.split(".")
(outfiled, outfilename) = mkstemp("."+filenameparts[1],filenameparts[0]+"_")
outfile = os.fdopen(outfiled,"w")
else:
outfilename = outfile.name
print(outfile)
outfile.write("0 HEAD\n")
outfile.write("1 SOUR phpGedView\n")
outfile.write("2 VERS %s\n" % self.get_version())
outfile.write("2 NAME phpGedView\n")
outfile.write("2 DATA %s\n" % self.url)
outfile.write("1 CHAR UTF-8\n")
outfile.write("1 GEDC\n")
outfile.write("2 VERS 5.5\n")
outfile.write("2 FORM LINEAGE-LINKED\n")
outfile.write("1 NOTE Dowloaded using GRAMPS PHPGedViewConnector\n")
self.update_progressbar(_("Fetching index list..."))
steps = ( self.TYPE_INDI,
self.TYPE_FAM,
self.TYPE_SOUR,
self.TYPE_REPO,
self.TYPE_NOTE,
self.TYPE_OBJE
)
xref_list = []
i = 0
for type in steps:
self.update_progressbar( _("Fetching index list..."), i, len(steps))
xref_list += self.list_xrefs( type)
i += 1
self.update_progressbar( _("Fetching records..."))
i = 0
junk_size = 100
for i in range(len(xref_list)/junk_size+1):
self.update_progressbar( _("Fetching records..."), i*junk_size, len(xref_list))
record = self.get_records(xref_list[i*junk_size:(i+1)*junk_size])
if record:
for r in record:
outfile.write(r+"\n")
outfile.flush()
i += 1
outfile.write("0 TRLR\n")
outfile.flush()
outfile.close()
return outfilename
def get_variable(self, name="PEDIGREE_ROOT_ID"):
if not name:
return None
result = []
request = []
request.append( ("action", "getvar"))
request.append( ("var", name))
result_part = self.fetch_url_to_array( request)
if result_part[0] == "SUCCESS":
for x in range(1,len(result_part)):
txt = result_part[x].strip()
if txt and txt != "":
result.append( txt)
return result
def fetch_url_to_array(self, params):
request_url = self.url + "gdbi.php?"
for param in params:
request_url += "%s=%s&" % (param)
if self.sessionname and self.sessionid:
request_url += "%s=%s&" % (self.sessionname,self.sessionid)
print("fetching %s" % request_url)
request = Request(request_url)
request.add_header("User-Agent", "Mozilla 1.2 (Win 98 jp)")
f = urlopen(request)
result = []
line = f.readline()
while line:
result.append(line.strip())
line = f.readline()
if len(result) > 0:
return result
return None
#
# Wrapper that uses the PHPGedViewConnector to download
# the GEDCOM file and import it into the database.
#
class phpGedViewImporter(object):
def __init__(self, database):
self.db = database
self.url = None
self.connector = None
top = Glade("phpgedview.glade")
self.url_entry = top.get_object('url_entry')
self.version_label = top.get_object('version_label')
self.version_label.set_text("")
self.file_combo = top.get_object('file_combo')
self.file_combo.hide()
self.username_entry = top.get_object('username_entry')
self.username_entry.hide()
self.password_entry = top.get_object('password_entry')
self.password_entry.hide()
self.ok_button = top.get_object('ok_button')
self.ok_button.connect("activate", self.on_next_pressed_cb)
self.ok_button.connect("button_release_event", self.on_next_pressed_cb)
self.progressbar = top.get_object('progressbar')
self.dialog = top.toplevel
self.dialog.show()
def filter_url(self, url):
if url[:7] != "http://":
url = "http://"+url
if url[-1:] != "/":
url = url + "/"
print(url)
return url
def update_progressbar(self,text,step=0,max=0):
self.progressbar.set_text(text)
if max > 0:
self.progressbar.set_fraction( 1.0 * step / max)
else:
self.progressbar.set_fraction( 0.0)
while Gtk.events_pending():
Gtk.main_iteration()
def on_next_pressed_cb(self, widget, event=None, data=None):
if event:
print(event.type)
if not self.url or self.url != self.url_entry.get_text():
# url entered the first time or url changed
self.url = self.filter_url( self.url_entry.get_text())
if self.validate_server():
self.url_entry.set_text( self.url)
else:
self.update_progressbar(_("Logging in..."))
if self.connector.connect_to_gedcom(self.file_combo.get_active_text(), self.username_entry.get_text(), self.password_entry.get_text()):
self.update_progressbar( _("Fetching GEDCOM..."))
fn = self.connector.fetch_full_gedcom()
self.update_progressbar( _("Importing GEDCOM..."))
libgedcom.GedcomParser.importData(self.db, fn)
# done. bye.
self.dialog.destroy()
else:
self.version_label.set_text(_("Error: login failed"))
self.update_progressbar( _("done."))
return 1
def validate_server(self):
try:
self.update_progressbar(_("Connecting..."))
self.connector = PHPGedViewConnector(self.url,self.update_progressbar)
self.update_progressbar(_("Get version..."))
version = self.connector.get_version()
if version:
self.version_label.set_text(_("Version %s") % version)
self.update_progressbar(_("Reading file list..."))
files = self.connector.list_gedcoms()
list_store = self.file_combo.get_model()
list_store.clear()
for file in files:
list_store.append([file[0],])
self.file_combo.show()
self.username_entry.show()
self.password_entry.show()
return True
except (ValueError, URLError, hcl.InvalidURL) as e:
print(e)
self.version_label.set_text(_("Error: Invalid URL"))
self.update_progressbar(_("done."))
return False
# TODO: This should go into PHPGedViewConnector
def filter_url( url):
url = url.split("?")[0] # strip params
if url[-1:] == "/": # strip trailing slash
url = url[:-1]
if url[-4:] in (".php",".htm") or url[-5:] in (".html"): # strip script name
idx = url.rfind("/")
if idx > 1:
url = url[:idx]
if url[:7] != "http://": # add protocol
url = "http://"+url
if url[-1:] != "/": # readd trailing slash
url = url + "/"
return url
## # for Testing
## if __name__ == "__main__":
## def dummy_progress( text,pos=0,max=0):
## if max > 0:
## percent = pos*100/max
## print "%s: %d%%" % (text,percent)
## else:
## print text
## try:
## f = open("/tmp/sites.txt")
## l = f.readline()
## while l:
## l = filter_url(l.strip())
## print l
## try:
## c = PHPGedViewConnector(l,dummy_progress)
## c.connect_to_gedcom()
## v = c.get_version()
## if v:
## print("%s\t\t%s" % (v,l))
## c.fetch_full_gedcom()
## except KeyboardInterrupt:
## exit
## l = f.readline()
## except IOError:
## phpGedViewImporter(None)
## Gtk.main()
## else:
## #-------------------------------------------------------------------------
## #
## #
## #
## #-------------------------------------------------------------------------
## def phpGedViewImporterCaller(database,active_person,callback,parent=None):
## phpGedViewImporter(database)
## register_tool(
## phpGedViewImporterCaller,
## _("Import the gedcom from a phpGedView driven website"),
## category=_("Import"),
## description=_("phpGedView is an open source web application that generates dynamic webpages"
## " out of a GEDCOM file. This plugin uses the gedcom access protocol to"
## " retrieve the gedcom file from the webserver.")
## )

View File

@ -692,8 +692,6 @@ gramps/plugins/tool/ownereditor.glade
gramps/plugins/tool/ownereditor.py
gramps/plugins/tool/patchnames.glade
gramps/plugins/tool/patchnames.py
gramps/plugins/tool/phpgedview.glade
gramps/plugins/tool/phpgedviewconnector.py
gramps/plugins/tool/populatesources.py
gramps/plugins/tool/rebuild.py
gramps/plugins/tool/rebuildgenderstat.py

266
po/fr.po
View File

@ -26,8 +26,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 4.1.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-05-28 18:27+0200\n"
"PO-Revision-Date: 2015-05-28 19:15+0100\n"
"POT-Creation-Date: 2015-05-29 16:26+0200\n"
"PO-Revision-Date: 2015-05-29 16:37+0100\n"
"Last-Translator: \n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
@ -3023,8 +3023,8 @@ msgstr "Correspond aux citations ayant un nombre de références"
#: ../gramps/gui/glade/mergedata.glade:775
#: ../gramps/gui/glade/mergemedia.glade:213
#: ../gramps/gui/glade/mergemedia.glade:229
#: ../gramps/gui/glade/mergeplace.glade:208
#: ../gramps/gui/glade/mergeplace.glade:223
#: ../gramps/gui/glade/mergeplace.glade:206
#: ../gramps/gui/glade/mergeplace.glade:221
#: ../gramps/gui/glade/mergesource.glade:213
#: ../gramps/gui/glade/mergesource.glade:229
msgid "Title:"
@ -3847,8 +3847,8 @@ msgstr "Correspond à un objet medium avec l'identifiant Gramps spécifié"
#: ../gramps/gui/glade/mergeevent.glade:229
#: ../gramps/gui/glade/mergenote.glade:246
#: ../gramps/gui/glade/mergenote.glade:262
#: ../gramps/gui/glade/mergeplace.glade:488
#: ../gramps/gui/glade/mergeplace.glade:505
#: ../gramps/gui/glade/mergeplace.glade:486
#: ../gramps/gui/glade/mergeplace.glade:503
#: ../gramps/gui/glade/mergerepository.glade:246
#: ../gramps/gui/glade/mergerepository.glade:262
msgid "Type:"
@ -4978,6 +4978,8 @@ msgstr "Correspond aux lieux ayant une donnée de citation particulière"
#: ../gramps/gui/glade/editplaceref.glade:214
#: ../gramps/gui/glade/mergeperson.glade:224
#: ../gramps/gui/glade/mergeperson.glade:240
#: ../gramps/gui/glade/mergeplace.glade:426
#: ../gramps/gui/glade/mergeplace.glade:443
#: ../gramps/plugins/gramplet/soundgen.py:65
msgid "Name:"
msgstr "Nom :"
@ -4992,8 +4994,8 @@ msgstr "Type de lieu :"
#: ../gramps/gen/filters/rules/place/_hasdata.py:50
#: ../gramps/gui/glade/editplace.glade:213
#: ../gramps/gui/glade/editplaceref.glade:444
#: ../gramps/gui/glade/mergeplace.glade:548
#: ../gramps/gui/glade/mergeplace.glade:565
#: ../gramps/gui/glade/mergeplace.glade:546
#: ../gramps/gui/glade/mergeplace.glade:563
msgid "Code:"
msgstr "Code :"
@ -5150,15 +5152,15 @@ msgstr "Correspond aux lieux avec un titre précis "
#: ../gramps/gen/filters/rules/place/_inlatlonneighborhood.py:49
#: ../gramps/gui/glade/editplaceref.glade:244
#: ../gramps/gui/glade/mergeplace.glade:239
#: ../gramps/gui/glade/mergeplace.glade:254
#: ../gramps/gui/glade/mergeplace.glade:237
#: ../gramps/gui/glade/mergeplace.glade:252
msgid "Latitude:"
msgstr "Latitude :"
#: ../gramps/gen/filters/rules/place/_inlatlonneighborhood.py:49
#: ../gramps/gui/glade/editplaceref.glade:317
#: ../gramps/gui/glade/mergeplace.glade:270
#: ../gramps/gui/glade/mergeplace.glade:285
#: ../gramps/gui/glade/mergeplace.glade:268
#: ../gramps/gui/glade/mergeplace.glade:283
msgid "Longitude:"
msgstr "Longitude :"
@ -5298,7 +5300,6 @@ msgid "Address:"
msgstr "Adresse :"
#: ../gramps/gen/filters/rules/repository/_hasrepo.py:49
#: ../gramps/plugins/tool/phpgedview.glade:206
msgid "URL:"
msgstr "URL :"
@ -6999,7 +7000,7 @@ msgid "Multiple families get merged. This is unusual, the merge is aborted."
msgstr "Plusieurs familles ont été fusionnées. Ce n'est pas habituel, la fusion est annulée."
#: ../gramps/gen/merge/mergeplacequery.py:60
#: ../gramps/gui/merge/mergeplace.py:76
#: ../gramps/gui/merge/mergeplace.py:78
msgid "Merge Places"
msgstr "Fusionner les lieux"
@ -12054,9 +12055,7 @@ msgstr "Vous devriez plutôt sélectionner un individu ou annuler l'édition"
#: ../gramps/gui/editors/editplace.py:84
#: ../gramps/gui/glade/editplace.glade:288
#: ../gramps/gui/glade/mergeplace.glade:428
#: ../gramps/gui/glade/mergeplace.glade:445
#: ../gramps/gui/merge/mergeplace.py:54
#: ../gramps/gui/merge/mergeplace.py:56
msgid "place|Name:"
msgstr "Nom du lieu"
@ -14293,8 +14292,8 @@ msgstr "Source 2 "
#: ../gramps/gui/glade/mergenote.glade:328
#: ../gramps/gui/glade/mergeperson.glade:290
#: ../gramps/gui/glade/mergeperson.glade:306
#: ../gramps/gui/glade/mergeplace.glade:301
#: ../gramps/gui/glade/mergeplace.glade:316
#: ../gramps/gui/glade/mergeplace.glade:299
#: ../gramps/gui/glade/mergeplace.glade:314
#: ../gramps/gui/glade/mergerepository.glade:279
#: ../gramps/gui/glade/mergerepository.glade:295
#: ../gramps/gui/glade/mergesource.glade:345
@ -14314,7 +14313,7 @@ msgstr "Les notes, objets media et données des deux citations seront combinés.
#: ../gramps/gui/glade/mergemedia.glade:472
#: ../gramps/gui/glade/mergenote.glade:487
#: ../gramps/gui/glade/mergeperson.glade:427
#: ../gramps/gui/glade/mergeplace.glade:638
#: ../gramps/gui/glade/mergeplace.glade:636
#: ../gramps/gui/glade/mergerepository.glade:415
#: ../gramps/gui/glade/mergesource.glade:529
msgid "Detailed Selection"
@ -14348,12 +14347,12 @@ msgid "Title selection"
msgstr "Sélection du titre"
#: ../gramps/gui/glade/mergedata.glade:576
#: ../gramps/gui/glade/mergeplace.glade:182
#: ../gramps/gui/glade/mergeplace.glade:180
msgid "Place 1"
msgstr "Lieu 1"
#: ../gramps/gui/glade/mergedata.glade:593
#: ../gramps/gui/glade/mergeplace.glade:196
#: ../gramps/gui/glade/mergeplace.glade:194
msgid "Place 2"
msgstr "Lieu 2"
@ -14528,9 +14527,9 @@ msgstr ""
" utilisées en priorité pour le lieu fusionné."
# trunk
#: ../gramps/gui/glade/mergeplace.glade:622
msgid "Alternate locations, sources, urls, media objects and notes of both places will be combined."
msgstr "Emplacements alternatifs, sources, urls, objets media et notes des deux lieux vont être rassemblés."
#: ../gramps/gui/glade/mergeplace.glade:620
msgid "Alternative names, sources, urls, media objects and notes of both places will be combined."
msgstr "Noms alternatifs, sources, urls, objets media et notes des deux lieux vont être rassemblés."
# trunk
#: ../gramps/gui/glade/mergerepository.glade:98
@ -15459,7 +15458,7 @@ msgid "Addresses"
msgstr "Adresses"
# manuel wiki
#: ../gramps/gui/merge/mergeplace.py:52
#: ../gramps/gui/merge/mergeplace.py:54
msgid "manual|Merge_Places"
msgstr "Fusion des lieux"
@ -16923,7 +16922,6 @@ msgstr "Sauvegarde Gramps XML"
#: ../gramps/gui/viewmanager.py:1249
#: ../gramps/plugins/importer/importgedcom.glade:289
#: ../gramps/plugins/tool/phpgedview.glade:158
msgid "File:"
msgstr "Fichier :"
@ -29973,22 +29971,22 @@ msgstr "Vérifier et réparer"
# master
#: ../gramps/plugins/tool/dateparserdisplaytest.py:67
msgid "Start date test?"
msgstr ""
msgstr "Démarrer le test sur la date ?"
# master
#: ../gramps/plugins/tool/dateparserdisplaytest.py:68
msgid "This test will create many persons and events in the current database. Do you really want to run this test?"
msgstr ""
msgstr "Ce test va créer de nombreuses personnes et événements dans votre base de données actuelle. Voulez-vous vraiment lancer ce test ?"
# master
#: ../gramps/plugins/tool/dateparserdisplaytest.py:71
msgid "Run test"
msgstr ""
msgstr "Lancer le test"
# master
#: ../gramps/plugins/tool/dateparserdisplaytest.py:80
msgid "Running Date Test"
msgstr ""
msgstr "Lancement du test sur la date"
# master
#: ../gramps/plugins/tool/dateparserdisplaytest.py:82
@ -30044,16 +30042,14 @@ msgstr "Génération des dates"
#. (4,7,1789,False,5,88,1876,False),"Text comment")
#. dates.append( d)
#: ../gramps/plugins/tool/dateparserdisplaytest.py:181
#, fuzzy
msgid "Date Test Plugin"
msgstr "Greffons chargés"
msgstr "Greffon de test sur les dates"
# master
#. create pass and fail tags
#: ../gramps/plugins/tool/dateparserdisplaytest.py:187
#, fuzzy
msgid "Pass"
msgstr "Pâque juive"
msgstr "Processus"
# trunk
#: ../gramps/plugins/tool/dumpgenderstats.py:46
@ -30684,104 +30680,6 @@ msgstr "Nom de famille composé"
msgid "Extract information from names"
msgstr "Extraire les données depuis les noms"
# master
#: ../gramps/plugins/tool/phpgedview.glade:19
#: ../gramps/plugins/tool/phpgedview.glade:85
#, fuzzy
msgid "phpGedView import"
msgstr "Importation GeneWeb"
# master
#: ../gramps/plugins/tool/phpgedview.glade:103
msgid "http://"
msgstr "http://"
# master
#: ../gramps/plugins/tool/phpgedview.glade:170
#, fuzzy
msgid "Username:"
msgstr "Nom de famille"
# master
#: ../gramps/plugins/tool/phpgedview.glade:182
#, fuzzy
msgid "Password:"
msgstr "Pâque juive"
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:204
#: ../gramps/plugins/tool/phpgedviewconnector.py:215
msgid "Fetching index list..."
msgstr ""
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:218
#: ../gramps/plugins/tool/phpgedviewconnector.py:222
#, fuzzy
msgid "Fetching records..."
msgstr "Enregistrement manquant "
# Substantif (GNOME fr)
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:327
#, fuzzy
msgid "Logging in..."
msgstr "Chargement des greffons..."
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:330
msgid "Fetching GEDCOM..."
msgstr ""
# Substantif (GNOME fr)
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:334
#, fuzzy
msgid "Importing GEDCOM..."
msgstr "Importation des données..."
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:341
#, fuzzy
msgid "Error: login failed"
msgstr "Erreur à l'ouverture du fichier."
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:342
#: ../gramps/plugins/tool/phpgedviewconnector.py:367
msgid "done."
msgstr "fait."
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:347
#, fuzzy
msgid "Connecting..."
msgstr "Sélection en cours..."
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:349
#, fuzzy
msgid "Get version..."
msgstr "Version du schéma"
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:352
#, fuzzy, python-format
msgid "Version %s"
msgstr "Version"
# Substantif (GNOME fr)
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:353
#, fuzzy
msgid "Reading file list..."
msgstr "Lecture des données..."
# master
#: ../gramps/plugins/tool/phpgedviewconnector.py:366
msgid "Error: Invalid URL"
msgstr ""
# trunk
# Substantif (GNOME fr)
#: ../gramps/plugins/tool/rebuild.py:77
@ -31045,9 +30943,8 @@ msgstr "Trier les événements familiaux de l'individu"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:195
#: ../gramps/plugins/tool/testcasegenerator.py:200
#, fuzzy
msgid "Generate testcases"
msgstr "Filtres généraux"
msgstr "Génère des tests de cas"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:204
@ -31055,42 +30952,38 @@ msgid ""
"Generate low level database errors\n"
"Correction needs database reload"
msgstr ""
"Génère des erreurs de bas niveau sur la base\n"
"La correction nécessite de relancer la base de données."
# master
#: ../gramps/plugins/tool/testcasegenerator.py:209
#, fuzzy
msgid "Generate database errors"
msgstr "Erreur de donnée Pro-Gen"
msgstr "Génère des erreurs dans la base de données"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:213
#, fuzzy
msgid "Generate dummy data"
msgstr "Généré par"
msgstr "Génère des données"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:218
#, fuzzy
msgid "Generate long names"
msgstr "Générations "
msgstr "Génération de noms longs"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:222
#, fuzzy
msgid "Add special characters"
msgstr "Caractère %s illégal"
msgstr "Ajout d'un caractère spécial"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:226
#, fuzzy
msgid "Add serial number"
msgstr "Numéro d'identifiant"
msgstr "Ajout d'un numéro d'identifiant"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:230
#, fuzzy
msgid "Add line break"
msgstr "Ajouter un retrait après le nom"
msgstr "Ajout d'une coupure de ligne"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:234
@ -31098,30 +30991,29 @@ msgid ""
"Number of people to generate\n"
"(Number is approximate because families are generated)"
msgstr ""
"Nombre d'individus à générer\n"
"(le nombre est approximatif car des familles sont générées)"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:284
#, fuzzy
msgid "Generating testcases"
msgstr "Création du rapport"
msgstr "Génération de tests de cas"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:289
msgid "Generating low level database errors"
msgstr ""
msgstr "Génération d'erreurs de bas niveau sur la base de données"
# Substantif (GNOME fr)
# master
#: ../gramps/plugins/tool/testcasegenerator.py:301
#, fuzzy
msgid "Generating families"
msgstr "Écriture des familles"
msgstr "Génération de familles"
# master
#: ../gramps/plugins/tool/testcasegenerator.py:332
#, fuzzy
msgid "Generating database errors"
msgstr "Création du rapport"
msgstr "Génération d'erreurs dans la base de données"
# master
#. Creates a media object with character encoding errors. This tests
@ -31193,7 +31085,7 @@ msgstr "Création du rapport"
#: ../gramps/plugins/tool/testcasegenerator.py:1449
#, python-format
msgid "Testcase generator step %d"
msgstr ""
msgstr "Générateur de test de cas, étape %d"
#: ../gramps/plugins/tool/tools.gpr.py:35
msgid "Fix Capitalization of Family Names"
@ -34239,6 +34131,70 @@ msgstr "Au moins une règle doit correspondre"
msgid "Exactly one rule must apply"
msgstr "Une seule règle doit correspondre"
# master
#, fuzzy
#~ msgid "phpGedView import"
#~ msgstr "Importation GeneWeb"
# master
#~ msgid "http://"
#~ msgstr "http://"
# master
#, fuzzy
#~ msgid "Username:"
#~ msgstr "Nom de famille"
# master
#, fuzzy
#~ msgid "Password:"
#~ msgstr "Pâque juive"
# master
#, fuzzy
#~ msgid "Fetching records..."
#~ msgstr "Enregistrement manquant "
# Substantif (GNOME fr)
# master
#, fuzzy
#~ msgid "Logging in..."
#~ msgstr "Chargement des greffons..."
# Substantif (GNOME fr)
# master
#, fuzzy
#~ msgid "Importing GEDCOM..."
#~ msgstr "Importation des données..."
# master
#, fuzzy
#~ msgid "Error: login failed"
#~ msgstr "Erreur à l'ouverture du fichier."
# master
#~ msgid "done."
#~ msgstr "fait."
# master
#, fuzzy
#~ msgid "Connecting..."
#~ msgstr "Sélection en cours..."
# master
#, fuzzy
#~ msgid "Get version..."
#~ msgstr "Version du schéma"
# master
#, fuzzy
#~ msgid "Version %s"
#~ msgstr "Version"
# Substantif (GNOME fr)
# master
#, fuzzy
#~ msgid "Reading file list..."
#~ msgstr "Lecture des données..."
#~ msgid "Cannot save place"
#~ msgstr "Impossible d'enregistrer le lieu"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-05-28 18:27+0200\n"
"POT-Creation-Date: 2015-05-29 16:26+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -2925,8 +2925,8 @@ msgstr ""
#: ../gramps/gui/glade/mergedata.glade:775
#: ../gramps/gui/glade/mergemedia.glade:213
#: ../gramps/gui/glade/mergemedia.glade:229
#: ../gramps/gui/glade/mergeplace.glade:208
#: ../gramps/gui/glade/mergeplace.glade:223
#: ../gramps/gui/glade/mergeplace.glade:206
#: ../gramps/gui/glade/mergeplace.glade:221
#: ../gramps/gui/glade/mergesource.glade:213
#: ../gramps/gui/glade/mergesource.glade:229
msgid "Title:"
@ -3708,8 +3708,8 @@ msgstr ""
#: ../gramps/gui/glade/mergeevent.glade:229
#: ../gramps/gui/glade/mergenote.glade:246
#: ../gramps/gui/glade/mergenote.glade:262
#: ../gramps/gui/glade/mergeplace.glade:488
#: ../gramps/gui/glade/mergeplace.glade:505
#: ../gramps/gui/glade/mergeplace.glade:486
#: ../gramps/gui/glade/mergeplace.glade:503
#: ../gramps/gui/glade/mergerepository.glade:246
#: ../gramps/gui/glade/mergerepository.glade:262
msgid "Type:"
@ -4771,6 +4771,8 @@ msgstr ""
#: ../gramps/gui/glade/editplaceref.glade:214
#: ../gramps/gui/glade/mergeperson.glade:224
#: ../gramps/gui/glade/mergeperson.glade:240
#: ../gramps/gui/glade/mergeplace.glade:426
#: ../gramps/gui/glade/mergeplace.glade:443
#: ../gramps/plugins/gramplet/soundgen.py:65
msgid "Name:"
msgstr ""
@ -4784,8 +4786,8 @@ msgstr ""
#: ../gramps/gen/filters/rules/place/_hasdata.py:50
#: ../gramps/gui/glade/editplace.glade:213
#: ../gramps/gui/glade/editplaceref.glade:444
#: ../gramps/gui/glade/mergeplace.glade:548
#: ../gramps/gui/glade/mergeplace.glade:565
#: ../gramps/gui/glade/mergeplace.glade:546
#: ../gramps/gui/glade/mergeplace.glade:563
msgid "Code:"
msgstr ""
@ -4926,15 +4928,15 @@ msgstr ""
#: ../gramps/gen/filters/rules/place/_inlatlonneighborhood.py:49
#: ../gramps/gui/glade/editplaceref.glade:244
#: ../gramps/gui/glade/mergeplace.glade:239
#: ../gramps/gui/glade/mergeplace.glade:254
#: ../gramps/gui/glade/mergeplace.glade:237
#: ../gramps/gui/glade/mergeplace.glade:252
msgid "Latitude:"
msgstr ""
#: ../gramps/gen/filters/rules/place/_inlatlonneighborhood.py:49
#: ../gramps/gui/glade/editplaceref.glade:317
#: ../gramps/gui/glade/mergeplace.glade:270
#: ../gramps/gui/glade/mergeplace.glade:285
#: ../gramps/gui/glade/mergeplace.glade:268
#: ../gramps/gui/glade/mergeplace.glade:283
msgid "Longitude:"
msgstr ""
@ -5070,7 +5072,6 @@ msgid "Address:"
msgstr ""
#: ../gramps/gen/filters/rules/repository/_hasrepo.py:49
#: ../gramps/plugins/tool/phpgedview.glade:206
msgid "URL:"
msgstr ""
@ -6644,7 +6645,7 @@ msgid "Multiple families get merged. This is unusual, the merge is aborted."
msgstr ""
#: ../gramps/gen/merge/mergeplacequery.py:60
#: ../gramps/gui/merge/mergeplace.py:76
#: ../gramps/gui/merge/mergeplace.py:78
msgid "Merge Places"
msgstr ""
@ -11371,9 +11372,7 @@ msgstr ""
#: ../gramps/gui/editors/editplace.py:84
#: ../gramps/gui/glade/editplace.glade:288
#: ../gramps/gui/glade/mergeplace.glade:428
#: ../gramps/gui/glade/mergeplace.glade:445
#: ../gramps/gui/merge/mergeplace.py:54
#: ../gramps/gui/merge/mergeplace.py:56
msgid "place|Name:"
msgstr ""
@ -13521,8 +13520,8 @@ msgstr ""
#: ../gramps/gui/glade/mergenote.glade:328
#: ../gramps/gui/glade/mergeperson.glade:290
#: ../gramps/gui/glade/mergeperson.glade:306
#: ../gramps/gui/glade/mergeplace.glade:301
#: ../gramps/gui/glade/mergeplace.glade:316
#: ../gramps/gui/glade/mergeplace.glade:299
#: ../gramps/gui/glade/mergeplace.glade:314
#: ../gramps/gui/glade/mergerepository.glade:279
#: ../gramps/gui/glade/mergerepository.glade:295
#: ../gramps/gui/glade/mergesource.glade:345
@ -13540,7 +13539,7 @@ msgstr ""
#: ../gramps/gui/glade/mergemedia.glade:472
#: ../gramps/gui/glade/mergenote.glade:487
#: ../gramps/gui/glade/mergeperson.glade:427
#: ../gramps/gui/glade/mergeplace.glade:638
#: ../gramps/gui/glade/mergeplace.glade:636
#: ../gramps/gui/glade/mergerepository.glade:415
#: ../gramps/gui/glade/mergesource.glade:529
msgid "Detailed Selection"
@ -13573,12 +13572,12 @@ msgid "Title selection"
msgstr ""
#: ../gramps/gui/glade/mergedata.glade:576
#: ../gramps/gui/glade/mergeplace.glade:182
#: ../gramps/gui/glade/mergeplace.glade:180
msgid "Place 1"
msgstr ""
#: ../gramps/gui/glade/mergedata.glade:593
#: ../gramps/gui/glade/mergeplace.glade:196
#: ../gramps/gui/glade/mergeplace.glade:194
msgid "Place 2"
msgstr ""
@ -13709,9 +13708,9 @@ msgid ""
"primary data for the merged place."
msgstr ""
#: ../gramps/gui/glade/mergeplace.glade:622
#: ../gramps/gui/glade/mergeplace.glade:620
msgid ""
"Alternate locations, sources, urls, media objects and notes of both places "
"Alternative names, sources, urls, media objects and notes of both places "
"will be combined."
msgstr ""
@ -14569,7 +14568,7 @@ msgstr ""
msgid "Addresses"
msgstr ""
#: ../gramps/gui/merge/mergeplace.py:52
#: ../gramps/gui/merge/mergeplace.py:54
msgid "manual|Merge_Places"
msgstr ""
@ -15930,7 +15929,6 @@ msgstr ""
#: ../gramps/gui/viewmanager.py:1249
#: ../gramps/plugins/importer/importgedcom.glade:289
#: ../gramps/plugins/tool/phpgedview.glade:158
msgid "File:"
msgstr ""
@ -29251,75 +29249,6 @@ msgstr ""
msgid "Extract information from names"
msgstr ""
#: ../gramps/plugins/tool/phpgedview.glade:19
#: ../gramps/plugins/tool/phpgedview.glade:85
msgid "phpGedView import"
msgstr ""
#: ../gramps/plugins/tool/phpgedview.glade:103
msgid "http://"
msgstr ""
#: ../gramps/plugins/tool/phpgedview.glade:170
msgid "Username:"
msgstr ""
#: ../gramps/plugins/tool/phpgedview.glade:182
msgid "Password:"
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:204
#: ../gramps/plugins/tool/phpgedviewconnector.py:215
msgid "Fetching index list..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:218
#: ../gramps/plugins/tool/phpgedviewconnector.py:222
msgid "Fetching records..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:327
msgid "Logging in..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:330
msgid "Fetching GEDCOM..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:334
msgid "Importing GEDCOM..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:341
msgid "Error: login failed"
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:342
#: ../gramps/plugins/tool/phpgedviewconnector.py:367
msgid "done."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:347
msgid "Connecting..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:349
msgid "Get version..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:352
#, python-format
msgid "Version %s"
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:353
msgid "Reading file list..."
msgstr ""
#: ../gramps/plugins/tool/phpgedviewconnector.py:366
msgid "Error: Invalid URL"
msgstr ""
#: ../gramps/plugins/tool/rebuild.py:77
msgid "Rebuilding secondary indexes..."
msgstr ""