diff --git a/gramps/gen/plug/report/endnotes.py b/gramps/gen/plug/report/endnotes.py index 4bbf93979..2d6742dda 100644 --- a/gramps/gen/plug/report/endnotes.py +++ b/gramps/gen/plug/report/endnotes.py @@ -1,11 +1,12 @@ ## # Gramps - a GTK+/GNOME based genealogy program # -# Copyright (C) 2007 Brian G. Matherly -# Copyright (C) 2010 Peter Landgren -# Copyright (C) 2010 Jakim Friant -# Copyright (C) 2011 Adam Stein +# Copyright (C) 2007 Brian G. Matherly +# Copyright (C) 2010 Peter Landgren +# Copyright (C) 2010 Jakim Friant +# Copyright (C) 2011 Adam Stein # Copyright (C) 2011 Tim G L Lyons +# Copyright (C) 2013 Paul Franklin # # 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 @@ -31,7 +32,6 @@ from ...lib import NoteType, Citation from ...const import GRAMPS_LOCALE as glocale _ = glocale.translation.gettext from ...utils.string import confidence -from ...datehandler import displayer def add_endnote_styles(style_sheet): """ @@ -103,10 +103,13 @@ def cite_source(bibliography, database, obj): return txt def write_endnotes(bibliography, database, doc, printnotes=False, links=False, - trans_text=glocale.translation.gettext): + elocale=glocale): """ Write all the entries in the bibliography as endnotes. + If elocale is passed in (a GrampsLocale), then (insofar as possible) + the translated values will be returned instead. + @param bibliography: The bibliography that contains the citations. @type bibliography: L{Bibliography} @param database: The database that the sources come from. @@ -118,12 +121,14 @@ def write_endnotes(bibliography, database, doc, printnotes=False, links=False, @type printnotes: bool @param links: Indicate if URL links should be makde 'clickable'. @type links: bool - @param trans_text: allow deferred translation of "Endnotes" Endnotes-Header - @type trans_text: a GrampsLocale gettext instance + @param elocale: allow deferred translation of dates and strings + @type elocale: a GrampsLocale instance """ if bibliography.get_citation_count() == 0: return + trans_text = elocale.translation.gettext + doc.start_paragraph('Endnotes-Header') doc.write_text(trans_text('Endnotes')) doc.end_paragraph() @@ -143,7 +148,7 @@ def write_endnotes(bibliography, database, doc, printnotes=False, links=False, for key, ref in citation.get_ref_list(): doc.start_paragraph('Endnotes-Ref', "%s:" % key) - doc.write_text(_format_ref_text(ref, key), links=links) + doc.write_text(_format_ref_text(ref, key, elocale), links=links) doc.end_paragraph() if printnotes: @@ -174,7 +179,7 @@ def _format_source_text(source): return src_txt -def _format_ref_text(ref, key): +def _format_ref_text(ref, key, elocale): if not ref: return "" ref_txt = "" @@ -185,14 +190,27 @@ def _format_ref_text(ref, key): datepresent = True if datepresent: if ref.get_page(): - ref_txt = "%s - %s" % (ref.get_page(), displayer.display(date)) + ref_txt = "%s - %s" % (ref.get_page(), elocale.get_date(date)) else: - ref_txt = displayer.display(date) + ref_txt = elocale.get_date(date) else: ref_txt = ref.get_page() # Print only confidence level if it is not Normal - if ref.get_confidence_level() != Citation.CONF_NORMAL: + if (ref.get_confidence_level() != Citation.CONF_NORMAL + and elocale == glocale): # FIXME + # the correct fix would be to enable deferred translation for at + # least the "confidence" list of strings (in gen/utils/string.py), + # and possibly others too if they need deferred translation, but that + # would require searching out every use of a "confidence" string and + # translating it there, either to the UI language or to a "deferred" + # language (e.g. when used in a report, as here in this module), but + # that would require an immense amount of time and testing and since + # a release is imminent this is not the time to consider that, so I + # have instead added the above line, which will disable the typeout + # of any "confidence" rating /if/ a translated value is needed, while + # continuing to show the "confidence" for the normal case of a user + # running a report in their own language (when elocale==glocale) ref_txt += " [" + confidence[ref.get_confidence_level()] + "]" return ref_txt diff --git a/gramps/plugins/lib/libnarrate.py b/gramps/plugins/lib/libnarrate.py index 18e25dab4..268cc7b9f 100644 --- a/gramps/plugins/lib/libnarrate.py +++ b/gramps/plugins/lib/libnarrate.py @@ -1350,13 +1350,17 @@ class Narrator(object): Narrator is a class which provides narration text. """ - def __init__(self, dbase, verbose=True, use_call_name=False,use_fulldate=False, + def __init__(self, dbase, verbose=True, + use_call_name=False, use_fulldate=False, empty_date="", empty_place="", - locale=None, + nlocale=glocale, get_endnote_numbers=_get_empty_endnote_numbers): """ Initialize the narrator class. + If nlocale is passed in (a GrampsLocale), then + the translated values will be returned instead. + :param dbase: The database that contains the data to be narrated. :type dbase: :class:`~gen.db.base,DbBase` :param verbose: Specifies whether complete sentences should be used. @@ -1368,9 +1372,6 @@ class Narrator(object): :type empty_date: str :param empty_place: String to use when a place is not known. :type empty_place: str - :param translate_text: A function that returns a translated message - string given a message id (similar to gettext). - :type translate_text: callable(str) :param get_endnote_numbers: A callable to use for getting a string representing endnote numbers. The function takes a :class:`~gen.lib.CitationBase` instance. @@ -1378,6 +1379,8 @@ class Narrator(object): would represent a reference to an endnote in a document. :type get_endnote_numbers: callable( :class:`~gen.lib.CitationBase` ) + @param nlocale: allow deferred translation of dates and strings + @type nlocale: a GrampsLocale instance """ self.__db = dbase self.__verbose = verbose @@ -1390,11 +1393,9 @@ class Narrator(object): self.__first_name = "" self.__first_name_used = False - if locale is None: - locale = glocale - self.__translate_text = locale.translation.gettext - self.__get_date = locale.get_date - self._locale = locale + self.__translate_text = nlocale.translation.gettext + self.__get_date = nlocale.get_date + self._locale = nlocale def set_subject(self, person): """ diff --git a/gramps/plugins/textreport/ancestorreport.py b/gramps/plugins/textreport/ancestorreport.py index 3c90fdeb1..c97b60135 100644 --- a/gramps/plugins/textreport/ancestorreport.py +++ b/gramps/plugins/textreport/ancestorreport.py @@ -4,7 +4,7 @@ # Copyright (C) 2000-2007 Donald N. Allingham # Copyright (C) 2007-2009 Brian G. Matherly # Copyright (C) 2010 Jakim Friant -# Copyright (C) 2012 Paul Franklin +# Copyright (C) 2012-2013 Paul Franklin # # 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 @@ -43,8 +43,7 @@ _ = glocale.translation.gettext from gramps.gen.display.name import displayer as global_name_display from gramps.gen.errors import ReportError from gramps.gen.lib import ChildRefType -from gramps.gen.plug.menu import (BooleanOption, NumberOption, PersonOption, - StringOption) +from gramps.gen.plug.menu import (BooleanOption, NumberOption, PersonOption) from gramps.gen.plug.docgen import (IndexMark, FontStyle, ParagraphStyle, FONT_SANS_SERIF, INDEX_TYPE_TOC, PARA_ALIGN_CENTER) @@ -113,13 +112,10 @@ class AncestorReport(Report): self._name_display.set_default_format(name_format) lang = menu.get_option_by_name('trans').get_value() - locale = self.set_locale(lang) - self.__narrator = Narrator(self.database, use_fulldate=True, - locale=locale) + rlocale = self.set_locale(lang) - title_name = self._name_display.display_formal(self.center_person) - title_format = menu.get_option_by_name('title_format').get_value() - self.title = self._(title_format) % title_name + self.__narrator = Narrator(self.database, use_fulldate=True, + nlocale=rlocale) def apply_filter(self, person_handle, index, generation=1): """ @@ -190,9 +186,12 @@ class AncestorReport(Report): # Write the title line. Set in INDEX marker so that this section will be # identified as a major category if this is included in a Book report. - mark = IndexMark(self.title, INDEX_TYPE_TOC, 1) + name = self._name_display.display_formal(self.center_person) + # feature request 2356: avoid genitive form + title = self._("Ahnentafel Report for %s") % name + mark = IndexMark(title, INDEX_TYPE_TOC, 1) self.doc.start_paragraph("AHN-Title") - self.doc.write_text(self.title, mark) + self.doc.write_text(title, mark) self.doc.end_paragraph() # get the entries out of the map, and sort them. @@ -288,11 +287,6 @@ class AncestorOptions(MenuReportOptions): namebrk.set_help(_("Indicates if a line break should follow the name.")) menu.add_option(category_name, "namebrk", namebrk) - title_format_string = _("Ahnentafel Report for %s") - title_format = StringOption(_('Title format'), title_format_string) - title_format.set_help(_("How the title will be shown.")) - menu.add_option(category_name, "title_format", title_format) - stdoptions.add_localization_option(menu, category_name) def make_default_style(self, default_style): diff --git a/gramps/plugins/textreport/detancestralreport.py b/gramps/plugins/textreport/detancestralreport.py index 82f94c262..1343d1d91 100644 --- a/gramps/plugins/textreport/detancestralreport.py +++ b/gramps/plugins/textreport/detancestralreport.py @@ -8,7 +8,8 @@ # Copyright (C) 2009 Benny Malengier # Copyright (C) 2010 Jakim Friant # Copyright (C) 2010 Vlada Peri\u0107 -# Copyright (C) 2011 Tim G L Lyons +# Copyright (C) 2011 Tim G L Lyons +# Copyright (C) 2013 Paul Franklin # # 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 @@ -159,10 +160,11 @@ class DetAncestorReport(Report): empty_place = "" lang = menu.get_option_by_name('trans').get_value() - locale = self.set_locale(lang) + self._locale = self.set_locale(lang) + self.__narrator = Narrator(self.database, self.verbose, use_call, use_fulldate, empty_date, empty_place, - locale=locale, + nlocale=self._locale, get_endnote_numbers=self.endnotes) self.bibli = Bibliography(Bibliography.MODE_DATE|Bibliography.MODE_PAGE) @@ -231,7 +233,7 @@ class DetAncestorReport(Report): # it ignores language set for Note type (use locale) endnotes.write_endnotes(self.bibli, self.database, self.doc, printnotes=self.inc_srcnotes, - trans_text=self._) + elocale=self._locale) def write_person(self, key): """Output birth, death, parentage, marriage and notes information """ diff --git a/gramps/plugins/textreport/detdescendantreport.py b/gramps/plugins/textreport/detdescendantreport.py index cf23b30c8..cc3f2f2b7 100644 --- a/gramps/plugins/textreport/detdescendantreport.py +++ b/gramps/plugins/textreport/detdescendantreport.py @@ -10,7 +10,8 @@ # Copyright (C) 2010 Jakim Friant # Copyright (C) 2010 Vlada Peri\u0107 # Copyright (C) 2011 Matt Keenan -# Copyright (C) 2011 Tim G L Lyons +# Copyright (C) 2011 Tim G L Lyons +# Copyright (C) 2013 Paul Franklin # # 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 @@ -171,7 +172,6 @@ class DetDescendantReport(Report): else: empty_place = "" - # Copy the global NameDisplay so that we don't change application # defaults. self._name_display = copy.deepcopy(global_name_display) @@ -179,14 +179,14 @@ class DetDescendantReport(Report): if name_format != 0: self._name_display.set_default_format(name_format) - locale = self.set_locale(get_value('trans')) + self._locale = self.set_locale(get_value('trans')) + self.__narrator = Narrator(self.database, self.verbose, use_call, use_fulldate, empty_date, empty_place, - locale=locale, + nlocale=self._locale, get_endnote_numbers=self.endnotes) - self.bibli = Bibliography(Bibliography.MODE_DATE|Bibliography.MODE_PAGE) def apply_henry_filter(self,person_handle, index, pid, cur_gen=1): @@ -311,7 +311,7 @@ class DetDescendantReport(Report): # it ignores language set for Note type (use locale) endnotes.write_endnotes(self.bibli, self.database, self.doc, printnotes=self.inc_srcnotes, - trans_text=self._) + elocale=self._locale) def write_path(self, person): path = [] diff --git a/gramps/plugins/textreport/indivcomplete.py b/gramps/plugins/textreport/indivcomplete.py index 5dfd7b50d..8dcae8cac 100644 --- a/gramps/plugins/textreport/indivcomplete.py +++ b/gramps/plugins/textreport/indivcomplete.py @@ -199,7 +199,8 @@ class IndivCompleteReport(Report): if name_format != 0: self._name_display.set_default_format(name_format) - self.set_locale(menu.get_option_by_name('trans').get_value()) + lang = menu.get_option_by_name('trans').get_value() + self._locale = self.set_locale(lang) def write_fact(self, event_ref, event, event_group): """ @@ -671,7 +672,7 @@ class IndivCompleteReport(Report): self.doc.page_break() Endnotes.write_endnotes(self.bibli, self.database, self.doc, printnotes=self.use_srcs_notes, - trans_text=self._) + elocale=self._locale) #------------------------------------------------------------------------ #