Merge pull request #1244 from Nick-Hall/translator

This commit is contained in:
Nick Hall 2021-06-01 15:57:34 +01:00
commit 152d24fad1
56 changed files with 449 additions and 1001 deletions

View File

@ -445,7 +445,7 @@ class ArgHandler:
line_list = [(_('"%s"') % summary[_("Family Tree")])]
for item in sorted(summary):
if item != _("Family Tree"):
# translators: used in French+Russian, ignore otherwise
# Translators: used in French+Russian, ignore otherwise
line_list += [(_('"%s"') % summary[item])]
print("\t".join(line_list))
return

View File

@ -383,7 +383,7 @@ class ArgParser:
converter = get_type_converter(setting_value)
new_value = converter(new_value)
config.set(cfg_name, new_value)
# translators: indent "New" to match "Current"
# Translators: indent "New" to match "Current"
print(_(" New Gramps config setting: "
"%(name)s:%(value)s"
) % {'name' : cfg_name,

View File

@ -197,7 +197,7 @@ class CLIDbManager:
print(_('Family Tree "%s":') % summary[_("Family Tree")])
for item in sorted(summary):
if item != "Family Tree":
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
print(' ' + _("%(str1)s: %(str2)s"
) % {'str1' : item,
'str2' : summary[item]})

View File

@ -412,7 +412,7 @@ class CommandLineReport:
father = self.database.get_person_from_handle(fhandle)
if father:
fname = name_displayer.display(father)
# translators: needed for French, Hebrew and Arabic
# Translators: needed for French, Hebrew and Arabic
text = _("%(id)s:\t%(father)s, %(mother)s"
) % {'id': family.get_gramps_id(),
'father': fname, 'mother': mname}

View File

@ -262,7 +262,7 @@ NO_GIVEN = "(%s)" % _("none", "given-name")
ARABIC_COMMA = "،"
ARABIC_SEMICOLON = "؛"
DOCGEN_OPTIONS = 'Docgen Options'
COLON = _(':') # translators: needed for French, ignore otherwise
COLON = _(':') # Translators: needed for French, ignore otherwise
#-------------------------------------------------------------------------
#

View File

@ -67,25 +67,27 @@ class DateDisplay:
formats = (
# format 0 - must always be ISO
# Translators: Numeric year, month, day
_T_("YYYY-MM-DD (ISO)"),
# format # 1 - must always be locale-preferred numerical format
# such as YY.MM.DD, MM-DD-YY, or whatever your locale prefers.
# This should be the format that is used under the locale by
# strftime() for '%x'.
# You may translate this as "Numerical", "System preferred", or similar.
# Translators: You may translate this as "Numerical",
# "System preferred", or similar.
_T_("Numerical", "date format"),
# Full month name, day, year
# Translators: Full month name, day, year
_T_("Month Day, Year"),
# Abbreviated month name, day, year
# Translators: Abbreviated month name, day, year
_T_("MON DAY, YEAR"),
# Day, full month name, year
# Translators: Day, full month name, year
_T_("Day Month Year"),
# Day, abbreviated month name, year
# Translators: Day, abbreviated month name, year
_T_("DAY MON YEAR")
)
"""
@ -182,67 +184,67 @@ class DateDisplay:
"from"
# first date in a span
# If "from <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "from <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "from"),
"to"
# second date in a span
# If "to <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "to <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "to"),
"between"
# first date in a range
# If "between <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "between <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "between"),
"and"
# second date in a range
# If "and <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "and <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "and"),
"before"
# If "before <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "before <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "before"),
"after"
# If "after <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "after <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "after"),
"about"
# If "about <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "about <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "about"),
"estimated"
# If "estimated <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "estimated <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "estimated"),
"calculated"
# If "calculated <Month>" needs a special inflection in your
# language, translate this to "{long_month.f[X]} {year}"
# Translators: If "calculated <Month>" needs a special inflection
# in your language, translate to "{long_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{long_month} {year}", "calculated"),
@ -254,67 +256,67 @@ class DateDisplay:
"from"
# first date in a span
# If "from <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "from <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "from"),
"to"
# second date in a span
# If "to <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "to <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "to"),
"between"
# first date in a range
# If "between <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "between <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "between"),
"and"
# second date in a range
# If "and <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "and <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "and"),
"before"
# If "before <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "before <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "before"),
"after"
# If "after <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "after <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "after"),
"about"
# If "about <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "about <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "about"),
"estimated"
# If "estimated <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "estimated <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "estimated"),
"calculated"
# If "calculated <Month>" needs a special inflection in your
# language, translate this to "{short_month.f[X]} {year}"
# Translators: If "calculated <Month>" needs a special inflection
# in your language, translate to "{short_month.f[X]} {year}"
# (where X is one of the month-name inflections you defined)
# else leave it untranslated
: _("{short_month} {year}", "calculated"),
@ -421,14 +423,14 @@ class DateDisplay:
qual_str = self._qual_str[date.get_quality()]
scal = self.format_extras(cal, date.get_new_year())
d1 = self.display_cal[cal](date.get_start_date(),
# If there is no special inflection for "from <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "from" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "from <Month>" in your language, DON'T translate this.
# Otherwise, translate to "from" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "from-date"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "to <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "to" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "to <Month>" in your language, DON'T translate this.
# Otherwise, translate to "to" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "to-date"))
return self._("{date_quality}from {date_start} to {date_stop}"
"{nonstd_calendar_and_ny}").format(
@ -446,14 +448,14 @@ class DateDisplay:
qual_str = self._qual_str[date.get_quality()]
scal = self.format_extras(cal, date.get_new_year())
d1 = self.display_cal[cal](date.get_start_date(),
# If there is no special inflection for "between <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "between" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "between <Month>" in your language, DON'T translate this.
# Otherwise, translate to "between" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "between-date"))
d2 = self.display_cal[cal](date.get_stop_date(),
# If there is no special inflection for "and <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "and" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "and <Month>" in your language, DON'T translate this.
# Otherwise, translate to "and" in ENGLISH!!! ENGLISH!!!
inflect=self._("", "and-date"))
return self._("{date_quality}between {date_start} and {date_stop}"
"{nonstd_calendar_and_ny}").format(
@ -485,29 +487,29 @@ class DateDisplay:
return self.dd_range(date)
else:
if mod == Date.MOD_BEFORE:
# If there is no special inflection for "before <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "before" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "before <Month>" in your language, DON'T translate this.
# Otherwise, translate to "before" in ENGLISH!!! ENGLISH!!!
date_type = _("", "before-date")
elif mod == Date.MOD_AFTER:
# If there is no special inflection for "after <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "after" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "after <Month>" in your language, DON'T translate this.
# Otherwise, translate to "after" in ENGLISH!!! ENGLISH!!!
date_type = _("", "after-date")
elif mod == Date.MOD_ABOUT:
# If there is no special inflection for "about <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "about" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "about <Month>" in your language, DON'T translate this.
# Otherwise, translate to "about" in ENGLISH!!! ENGLISH!!!
date_type = _("", "about-date")
elif qual == Date.QUAL_ESTIMATED:
# If there is no special inflection for "estimated <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "estimated" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "estimated <Month>" in your language, DON'T translate this.
# Otherwise, translate to "estimated" in ENGLISH!!! ENGLISH!!!
date_type = _("", "estimated-date")
elif qual == Date.QUAL_CALCULATED:
# If there is no special inflection for "calculated <Month>"
# in your language, DON'T translate this string. Otherwise,
# "translate" this to "calculated" in ENGLISH!!! ENGLISH!!!
# Translators: If there is no special inflection for
# "calculated <Month>" in your language, DON'T translate this.
# Otherwise, translate to "calculated" in ENGLISH!!! ENGLISH!!!
date_type = _("", "calculated-date")
else:
date_type = ""
@ -645,7 +647,7 @@ class DateDisplay:
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
# Translators: this month is ALREADY inflected: ignore it
return _("{long_month} {day:d}, {year}").format(
long_month = self.format_long_month(date_val[1],
inflect,
@ -671,7 +673,7 @@ class DateDisplay:
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
# Translators: this month is ALREADY inflected: ignore it
return _("{short_month} {day:d}, {year}").format(
short_month = self.format_short_month(date_val[1],
inflect,
@ -697,7 +699,7 @@ class DateDisplay:
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
# Translators: this month is ALREADY inflected: ignore it
return _("{day:d} {long_month} {year}").format(
day = date_val[0],
long_month = self.format_long_month(date_val[1],
@ -723,7 +725,7 @@ class DateDisplay:
elif date_val[1] == 0: # month is zero but day is not (see 8477)
return self.display_iso(date_val)
else:
# TRANSLATORS: this month is ALREADY inflected: ignore it
# Translators: this month is ALREADY inflected: ignore it
return _("{day:d} {short_month} {year}").format(
day = date_val[0],
short_month = self.format_short_month(date_val[1],
@ -761,7 +763,8 @@ class DateDisplay:
# day month_abbreviation year
value = self.dd_dformat05(date_val, inflect, short_months)
if date_val[2] < 0:
# TODO fix BUG 7064: non-Gregorian calendars wrongly use BCE notation for negative dates
# TODO fix BUG 7064: non-Gregorian calendars wrongly use BCE notation
# for negative dates
return self._bce_str % value
else:
return value

View File

@ -72,7 +72,7 @@ class DateStrings:
_ = locale.translation.lexgettext
self.long_months = ( "",
# TRANSLATORS: see
# Translators: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
@ -90,7 +90,7 @@ class DateStrings:
_("|December", "localized lexeme inflections") )
self.short_months = ( "",
# TRANSLATORS: see
# Translators: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
@ -109,7 +109,7 @@ class DateStrings:
_ = locale.translation.sgettext
self.alt_long_months = ( "",
# TRANSLATORS: see
# Translators: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to add proper alternatives to be recognized in your localized
# DateParser code!
@ -139,7 +139,7 @@ class DateStrings:
self.hebrew = (
"",
# TRANSLATORS: see
# Translators: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
@ -160,7 +160,7 @@ class DateStrings:
self.french = (
"",
# TRANSLATORS: see
# Translators: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
@ -181,7 +181,7 @@ class DateStrings:
self.islamic = (
"",
# TRANSLATORS: see
# Translators: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
@ -201,7 +201,7 @@ class DateStrings:
self.persian = (
"",
# TRANSLATORS: see
# Translators: see
# http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates
# to learn how to select proper inflection to be used in your localized
# DateDisplayer code!
@ -220,13 +220,13 @@ class DateStrings:
)
self.modifiers = ("",
# TRANSLATORS: if the modifier is after the date
# Translators: if the modifier is after the date
# put the space ahead of the word instead of after it
_("before ", "date modifier"),
# TRANSLATORS: if the modifier is after the date
# Translators: if the modifier is after the date
# put the space ahead of the word instead of after it
_("after ", "date modifier"),
# TRANSLATORS: if the modifier is after the date
# Translators: if the modifier is after the date
# put the space ahead of the word instead of after it
_("about ", "date modifier"),
"", "", "")

View File

@ -345,7 +345,7 @@ class NameDisplay:
global WITH_GRAMPS_CONFIG
global PAT_AS_SURN
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
COMMAGLYPH = xlocale.translation.gettext(',')
self.STANDARD_FORMATS = [
@ -358,7 +358,7 @@ class NameDisplay:
(Name.FNLN, _("Given Surname Suffix"),
'%f %l %s', _ACT),
# primary name primconnector other, given pa/matronynic suffix, primprefix
# translators: long string, have a look at Preferences dialog
# Translators: long string, have a look at Preferences dialog
(Name.LNFNP, _("Main Surnames, Given Patronymic Suffix Prefix"),
'%1m %2m %o' + COMMAGLYPH + ' %f %1y %s %0m', _ACT),
# DEPRECATED FORMATS

View File

@ -423,23 +423,23 @@ class Span:
retval = ""
detail = 0
if diff_tuple[0] != 0:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
retval += ngettext("{number_of} year", "{number_of} years",
diff_tuple[0]
).format(number_of=diff_tuple[0])
detail += 1
if self.precision == detail:
if diff_tuple[1] >= 6: # round up years
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
retval = ngettext("{number_of} year", "{number_of} years",
diff_tuple[0] + 1
).format(number_of=diff_tuple[0] + 1)
return retval
if diff_tuple[1] != 0:
if retval != "":
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
retval += trans_text(", ")
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
retval += ngettext("{number_of} month", "{number_of} months",
diff_tuple[1]
).format(number_of=diff_tuple[1])
@ -448,9 +448,9 @@ class Span:
return retval
if diff_tuple[2] != 0:
if retval != "":
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
retval += trans_text(", ")
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
retval += ngettext("{number_of} day", "{number_of} days",
diff_tuple[2]
).format(number_of=diff_tuple[2])

View File

@ -457,11 +457,11 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
first = self.first_name
surname = self.get_surname()
if self.suffix:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
return _("%(surname)s, %(first)s %(suffix)s"
) % {'surname':surname, 'first':first, 'suffix':self.suffix}
else:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
return _("%(str1)s, %(str2)s") % {'str1':surname, 'str2':first}
def get_upper_name(self):
@ -472,11 +472,11 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
first = self.first_name
surname = self.get_surname().upper()
if self.suffix:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
return _("%(surname)s, %(first)s %(suffix)s"
) % {'surname':surname, 'first':first, 'suffix':self.suffix}
else:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
return _("%(str1)s, %(str2)s") % {'str1':surname, 'str2':first}
def get_regular_name(self):
@ -489,7 +489,7 @@ class Name(SecondaryObject, PrivacyBase, SurnameBase, CitationBase, NoteBase,
if self.suffix == "":
return "%s %s" % (first, surname)
else:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
return _("%(first)s %(surname)s, %(suffix)s"
) % {'surname':surname, 'first':first, 'suffix':self.suffix}

View File

@ -114,7 +114,7 @@ def cite_source(bibliography, database, obj, elocale=glocale):
first = True
for ref in slist:
if not first:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
txt += trans_text(', ')
first = False
citation = database.get_citation_from_handle(ref)
@ -171,7 +171,7 @@ def write_endnotes(bibliography, database, doc, printnotes=False, links=False,
'Endnotes-Source-Notes', links)
for key, ref in citation.get_ref_list():
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
doc.start_paragraph('Endnotes-Ref', trans_text('%s:') % key)
doc.write_text(_format_ref_text(ref, key, elocale), links=links)
doc.end_paragraph()
@ -193,20 +193,20 @@ def _format_source_text(source, elocale):
if source.get_title():
if src_txt:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
src_txt += trans_text(', ')
# translators: used in French+Russian, ignore otherwise
# Translators: used in French+Russian, ignore otherwise
src_txt += trans_text('"%s"') % source.get_title()
if source.get_publication_info():
if src_txt:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
src_txt += trans_text(', ')
src_txt += source.get_publication_info()
if source.get_abbreviation():
if src_txt:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
src_txt += trans_text(', ')
src_txt += "(%s)" % source.get_abbreviation()

View File

@ -252,7 +252,7 @@ def get_address_str(addr):
if addr_str == "":
addr_str = info
else:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
addr_str = _("%(str1)s, %(str2)s"
) % {'str1' : addr_str, 'str2' : info}
return addr_str

View File

@ -116,7 +116,7 @@ class GrampsAboutDialog(Gtk.AboutDialog):
if len(contributors) > 0:
self.add_credit_section(_('Contributions by'), contributors)
# TRANSLATORS: Translate this to your name in your native language
# Translators: Translate this to your name in your native language
self.set_translator_credits(_("translator-credits"))
self.set_documenters(DOCUMENTERS)

View File

@ -410,7 +410,7 @@ class ConfigureDialog(ManagedWindow):
if not callback:
callback = self.update_entry
if label:
lwidget = BasicLabel(_("%s: ") % label) # translators: for French
lwidget = BasicLabel(_("%s: ") % label) # Translators: for French
entry = Gtk.Entry()
if localized_config:
entry.set_text(config.get(constant))

View File

@ -991,14 +991,14 @@ class EditFamily(EditPrimary):
if birth:
#if event changes it view needs to update
self.callman.register_handles({'event': [birth.get_handle()]})
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
birth_label.set_label(_("%s:") % birth.get_type())
death = get_death_or_fallback(db, person)
if death:
#if event changes it view needs to update
self.callman.register_handles({'event': [death.get_handle()]})
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
death_label.set_label(_("%s:") % death.get_type())
btn_edit.set_tooltip_text(_('Edit %s') % name)

View File

@ -209,12 +209,12 @@ class EditPlace(EditPrimary):
def _validate_coordinate(self, widget, text, typedeg):
if (typedeg == 'lat') and not conv_lat_lon(text, "0", "ISO-D"):
return ValidationError(
# translators: translate the "S" too (and the "or" of course)
# Translators: translate the "S" too (and the "or" of course)
_('Invalid latitude\n(syntax: '
'18\u00b09\'48.21"S, -18.2412 or -18:9:48.21)'))
elif (typedeg == 'lon') and not conv_lat_lon("0", text, "ISO-D"):
return ValidationError(
# translators: translate the "E" too (and the "or" of course)
# Translators: translate the "E" too (and the "or" of course)
_('Invalid longitude\n(syntax: '
'18\u00b09\'48.21"E, -18.2412 or -18:9:48.21)'))

View File

@ -203,12 +203,12 @@ class EditPlaceRef(EditReference):
def _validate_coordinate(self, widget, text, typedeg):
if (typedeg == 'lat') and not conv_lat_lon(text, "0", "ISO-D"):
return ValidationError(
# translators: translate the "S" too (and the "or" of course)
# Translators: translate the "S" too (and the "or" of course)
_('Invalid latitude\n(syntax: '
'18\u00b09\'48.21"S, -18.2412 or -18:9:48.21)'))
elif (typedeg == 'lon') and not conv_lat_lon("0", text, "ISO-D"):
return ValidationError(
# translators: translate the "E" too (and the "or" of course)
# Translators: translate the "E" too (and the "or" of course)
_('Invalid longitude\n(syntax: '
'18\u00b09\'48.21"E, -18.2412 or -18:9:48.21)'))

View File

@ -58,7 +58,7 @@ WIKI_HELP_PAGE = URL_MANUAL_SECT3
WIKI_HELP_SEC = _("Merge_People", "manual")
_GLADE_FILE = "mergeperson.glade"
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
KEYVAL = _("%(key)s:\t%(value)s")
sex = ( _("female"), _("male"), _("unknown") )
@ -214,7 +214,7 @@ class MergePerson(ManagedWindow):
self.add(tobj, normal,
KEYVAL % {'key': name, 'value': ev_info})
else:
self.add(tobj, normal, # translators: needed for French
self.add(tobj, normal, # Translators: needed for French
"%(name)s (%(role)s):\t%(info)s"
% {'name': name, 'role': role,
'info': ev_info})

View File

@ -1117,7 +1117,7 @@ class UpdateAddons(ManagedWindow):
last_category = None
for (status,plugin_url,plugin_dict) in addon_update_list:
count = get_count(addon_update_list, plugin_dict["t"])
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
category = _("%(str1)s: %(str2)s") % {'str1' : status,
'str2' : _(plugin_dict["t"])}
if last_category != category:
@ -1220,7 +1220,7 @@ class UpdateAddons(ManagedWindow):
if count:
self.rescan = True
OkDialog(_("Done downloading and installing addons"),
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
"%s %s" % (ngettext("{number_of} addon was installed.",
"{number_of} addons were installed.",
count).format(number_of=count),

View File

@ -163,7 +163,7 @@ class WriterOptionBox:
label = Gtk.Label(label=_("Unfiltered Family Tree:"))
full_database_row.pack_start(label, True, True, 0)
people_count = len(self.dbstate.db.get_person_handles())
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
button = Gtk.Button(label=ngettext("{number_of} Person",
"{number_of} People", people_count
).format(number_of=people_count))
@ -270,7 +270,7 @@ class WriterOptionBox:
# Make a box and put the option in it:
from gi.repository import Gtk
from ...widgets import SimpleButton
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
button = Gtk.Button(label=ngettext("{number_of} Person",
"{number_of} People", 0
).format(number_of=0))
@ -578,7 +578,7 @@ class WriterOptionBox:
self.preview_proxy_button[proxy_name].set_sensitive(1)
people_count = len(dbase.get_person_handles())
self.preview_proxy_button[proxy_name].set_label(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{number_of} Person",
"{number_of} People", people_count
).format(number_of=people_count) )

View File

@ -373,7 +373,7 @@ class ReportDialog(ManagedWindow):
for (text, widget) in self.widgets:
widget.set_hexpand(True)
if text:
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text_widget = Gtk.Label(label=_("%s:") % text)
text_widget.set_halign(Gtk.Align.START)
grid.attach(text_widget, 1, row, 1, 1)

View File

@ -361,7 +361,7 @@ class Calendar(Report):
text = self._('%(person)s, birth') % {
'person' : short_name }
else:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
text = ngettext('{person}, {age}',
'{person}, {age}',
nyears).format(person=short_name,
@ -423,7 +423,7 @@ class Calendar(Report):
'person' : short_name,
}
else:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
text = ngettext("{spouse} and\n {person}, {nyears}",
"{spouse} and\n {person}, {nyears}",
nyears).format(spouse=spouse_name, person=short_name, nyears=nyears)

View File

@ -354,7 +354,7 @@ class TitleC(DescendantTitleBase):
for kid in family.get_child_ref_list()]
#ok we have the children. Make a title off of them
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
cousin_names = self._(', ').join(self._get_names(kids, self._nd))
self.text = self._(

View File

@ -268,7 +268,7 @@ class PedigreeGramplet(Gramplet):
tooltip=_("Double-click to see people in generation %d") % g)
percent = glocale.format('%.2f', float(count)/2**(g-1) * 100) + percent_sign
self.append_text(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(" has {count_person} of {max_count_person} "
"individuals ({percent} complete)\n",
" has {count_person} of {max_count_person} "
@ -279,7 +279,7 @@ class PedigreeGramplet(Gramplet):
self.link(_("All generations"), 'PersonList', all,
tooltip=_("Double-click to see all generations"))
self.append_text(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(" have {number_of} individual\n",
" have {number_of} individuals\n", len(all)
).format(number_of=len(all)))

View File

@ -234,7 +234,7 @@ class PersonDetails(Gramplet):
if attr.get_type() == attr_key:
values.append(attr.get_value())
if values:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
self.add_row(attr_key, _(', ').join(values))
def display_type(self, active_person, event_type):

View File

@ -86,7 +86,7 @@ class LogGramplet(Gramplet):
continue
self.last_log = (ltype, action, handle)
self.timestamp()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
self.append_text(_("%s: ") % _(action))
if action == 'Deleted':
transaction = self.dbstate.db.transaction

View File

@ -490,7 +490,7 @@ class WhatNextGramplet(Gramplet):
missingbits.append(_("place unknown"))
if missingbits:
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
return [_("%(str1)s: %(str2)s"
) % {'str1' : event.get_type(),
'str2' : _(", ").join(missingbits)}] # Arabic OK

View File

@ -487,7 +487,7 @@ class FamilyLinesReport(Report):
person = self._db.get_person_from_handle(handle)
gid = person.get_gramps_id()
name = person.get_primary_name().get_regular_name()
# translators: needed for Arabic, ignore othewise
# Translators: needed for Arabic, ignore otherwise
id_n = self._("%(str1)s, %(str2)s") % {'str1':gid, 'str2':name}
self.doc.add_comment('# -> ' + id_n)
@ -978,7 +978,7 @@ class FamilyLinesReport(Report):
if self._incchildcount:
child_count = len(family.get_child_ref_list())
if child_count >= 1:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
children_str = ngettext("{number_of} child",
"{number_of} children", child_count
).format(number_of=child_count)

View File

@ -370,7 +370,7 @@ class CSVParser:
self.db.enable_signals()
self.db.request_rebuild()
tym = time.time() - tym
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
msg = ngettext('Import Complete: {number_of} second',
'Import Complete: {number_of} seconds', tym
).format(number_of=tym)

View File

@ -270,7 +270,7 @@ class GeneWebParser:
self.errmsg(str(err))
t = time.time() - t
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
msg = ngettext('Import Complete: {number_of} second',
'Import Complete: {number_of} seconds', t
).format(number_of=t)
@ -906,7 +906,7 @@ class GeneWebParser:
date.set(Date.QUAL_NONE,mod, cal1,
(sub1[0],sub1[1],sub1[2],0,sub2[0],sub2[1],sub2[2],0))
except DateError as e:
# TRANSLATORS: leave the {date} and {gw_snippet} untranslated
# Translators: leave the {date} and {gw_snippet} untranslated
# in the format string, but you may re-order them if needed.
LOG.warning(_(
"Invalid date {date} in {gw_snippet}, "

View File

@ -245,7 +245,7 @@ class VCardParser:
self.database.enable_signals()
self.database.request_rebuild()
tym = time.time() - tym
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
msg = ngettext('Import Complete: {number_of} second',
'Import Complete: {number_of} seconds', tym
).format(number_of=tym)
@ -511,7 +511,7 @@ class VCardParser:
try:
date.set(value=(d, m, y, False))
except DateError:
# TRANSLATORS: leave the {vcard_snippet} untranslated
# Translators: leave the {vcard_snippet} untranslated
# in the format string, but you may re-order it if needed.
self.__add_msg(_(
"Invalid date in BDAY {vcard_snippet}, "
@ -520,7 +520,7 @@ class VCardParser:
date.set(modifier=Date.MOD_TEXTONLY, text=data)
else:
if date_str:
# TRANSLATORS: leave the {vcard_snippet} untranslated.
# Translators: leave the {vcard_snippet} untranslated.
self.__add_msg(_(
"Date {vcard_snippet} not in appropriate format "
"yyyy-mm-dd, preserving date as text."

View File

@ -2523,7 +2523,7 @@ class GrampsParser(UpdateCallback):
attrs = " ".join(
['{}="{}"'.format(k,escape(v, entities={'"' : "&quot;"}))
for k,v in xml_attrs.items()]))
# TRANSLATORS: leave the {date} and {xml} untranslated in the format string,
# Translators: leave the {date} and {xml} untranslated in the format string,
# but you may re-order them if needed.
LOG.warning(_("Invalid date {date} in XML {xml}, preserving XML as text"
).format(date=date_error.date.__dict__, xml=xml))

View File

@ -513,7 +513,7 @@ def _get_styled(name, callname, placeholder=False,
elif callname == CALLNAME_UNDERLINE_ADD:
if n.call not in n.first_name:
# Add call name to first name.
# translators: used in French+Russian, ignore otherwise
# Translators: used in French+Russian, ignore otherwise
n.first_name = trans_text('"%(callname)s" (%(firstname)s)') % {
'callname': n.call,
'firstname': n.first_name }

View File

@ -703,7 +703,7 @@ class PageNumberBox(BoxBase):
def __calc_position(self, page):
""" calculate where I am to print on the page(s) """
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
self.text = "(%d" + self._(',') + "%d)"
style_sheet = self.doc.get_style_sheet()

View File

@ -416,7 +416,7 @@ def run(database, document, filter_name, *args, **kwargs):
else:
raise AttributeError("invalid filter name: '%s'" % filter_name)
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
sdoc.paragraph(ngettext("Filter matched {number_of} record.",
"Filter matched {number_of} records.", matches
).format(number_of=matches) )

View File

@ -131,7 +131,7 @@ def run(database, document, person):
document.has_data = matches > 0
sdoc.paragraph(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("There is {number_of} person "
"with a matching name, or alternate name.\n",
"There are {number_of} people "
@ -176,7 +176,7 @@ def run_given(database, document, person):
document.has_data = matches > 0
sdoc.paragraph(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("There is {number_of} person "
"with a matching name, or alternate name.\n",
"There are {number_of} people "

View File

@ -334,7 +334,7 @@ class BirthdayReport(Report):
'person' : short_name,
'relation' : comment}
else:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
text = ngettext('* {year}{person}{dead}, {age}{relation}',
'* {year}{person}{dead}, {age}{relation}',
nyears).format(year=yeartxt,
@ -403,7 +403,7 @@ class BirthdayReport(Report):
'spouse' : spouse_name,
'person' : short_name}
else:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
text = ngettext("{year}{spouse}{deadtxt2} and\n {person}{deadtxt1}, {nyears}",
"{year}{spouse}{deadtxt2} and\n {person}{deadtxt1}, {nyears}",
nyears).format(year=yeartxt, spouse=spouse_name, deadtxt2=deadtxt2, person=short_name, deadtxt1=deadtxt1, nyears=nyears)

View File

@ -413,7 +413,7 @@ class DetAncestorReport(Report):
date = addr.get_date_object().get_year()
if date:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
self.doc.write_text(self._('%s, ') % date)
self.doc.write_text(text)
self.doc.write_text_citation(self.endnotes(addr))
@ -426,7 +426,7 @@ class DetAncestorReport(Report):
for attr in attrs:
self.doc.start_paragraph('DAR-MoreDetails')
attr_name = attr.get_type().type2base()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text = self._("%(type)s: %(value)s%(endnotes)s"
) % {'type' : self._(attr_name),
'value' : attr.get_value(),
@ -450,7 +450,7 @@ class DetAncestorReport(Report):
self.doc.start_paragraph('DAR-MoreDetails')
if date and place:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
text += self._('%(str1)s, %(str2)s'
) % {'str1' : date, 'str2' : place}
elif date:
@ -471,7 +471,7 @@ class DetAncestorReport(Report):
event_name = self._(self._get_type(event.get_type()))
role = event_ref.get_role()
if role in (EventRoleType.PRIMARY, EventRoleType.FAMILY):
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text = self._('%(str1)s: %(str2)s'
) % {'str1' : event_name, 'str2' : text}
else:
@ -491,10 +491,10 @@ class DetAncestorReport(Report):
attr_list.extend(event_ref.get_attribute_list())
for attr in attr_list:
if text:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
text += self._("; ")
attr_name = attr.get_type().type2base()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text += self._("%(type)s: %(value)s%(endnotes)s"
) % {'type' : self._(attr_name),
'value' : attr.get_value(),

View File

@ -411,7 +411,7 @@ class DetDescendantReport(Report):
if index == 1:
self.doc.write_text(name + "-" + str(index) + ") ")
else:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
self.doc.write_text(name + "-" + str(index) + self._("; "))
index -= 1
@ -483,7 +483,7 @@ class DetDescendantReport(Report):
self.doc.start_paragraph('DDR-MoreDetails')
event_name = self._get_type(event.get_type())
if date and place:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
text += self._('%(str1)s, %(str2)s'
) % {'str1' : date, 'str2' : place}
elif date:
@ -501,7 +501,7 @@ class DetDescendantReport(Report):
if text:
text += ". "
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text = self._('%(str1)s: %(str2)s'
) % {'str1' : self._(event_name),
'str2' : text}
@ -514,10 +514,10 @@ class DetDescendantReport(Report):
attr_list.extend(event_ref.get_attribute_list())
for attr in attr_list:
if text:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
text += self._("; ")
attr_name = attr.get_type().type2base()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text += self._("%(type)s: %(value)s%(endnotes)s"
) % {'type' : self._(attr_name),
'value' : attr.get_value(),
@ -935,7 +935,7 @@ class DetDescendantReport(Report):
self.doc.write_text(self._('Address: '))
if date:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
self.doc.write_text(self._('%s, ') % date)
self.doc.write_text(text)
self.doc.write_text_citation(self.endnotes(addr))
@ -954,7 +954,7 @@ class DetDescendantReport(Report):
for attr in attrs:
self.doc.start_paragraph('DDR-MoreDetails')
attr_name = attr.get_type().type2base()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text = self._("%(type)s: %(value)s%(endnotes)s"
) % {'type' : self._(attr_name),
'value' : attr.get_value(),

View File

@ -133,10 +133,10 @@ class FamilyGroup(Report):
if self.include_attrs:
for attr in event.get_attribute_list():
if descr:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
descr += self._("; ")
attr_type = self._get_type(attr.get_type())
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
descr += self._("%(str1)s: %(str2)s"
) % {'str1' : self._(attr_type),
'str2' : attr.get_value()}
@ -302,7 +302,7 @@ class FamilyGroup(Report):
self.doc.start_cell('FGR-ParentHead', 3)
self.doc.start_paragraph('FGR-ParentName')
mark = utils.get_person_mark(self.db, person)
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
self.doc.write_text(self._("%(str1)s: %(str2)s"
) % {'str1' : title,
'str2' : name},
@ -406,7 +406,7 @@ class FamilyGroup(Report):
header = self._("Marriage")
if self.gramps_ids:
header += " (%s)" % family.get_gramps_id()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
self.doc.write_text(self._("%s:") % header)
self.doc.end_paragraph()
self.doc.end_cell()

View File

@ -199,7 +199,7 @@ class IndivCompleteReport(Report):
column_1 = self._(self._get_type(event.get_type()))
if role not in (EventRoleType.PRIMARY, EventRoleType.FAMILY):
column_1 = column_1 + ' (' + self._(role.xml_str()) + ')'
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
# make sure it's translated, so it can be used below, in "combine"
ignore = _('%(str1)s, %(str2)s') % {'str1' : '', 'str2' : ''}
column_2 = self.combine('%(str1)s, %(str2)s', '%s',
@ -207,7 +207,7 @@ class IndivCompleteReport(Report):
else:
# Groups with a single type (remove event type from first column)
column_1 = date
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
# make sure it's translated, so it can be used below, in "combine"
ignore = _('%(str1)s, %(str2)s') % {'str1' : '', 'str2' : ''}
column_2 = self.combine('%(str1)s, %(str2)s', '%s',
@ -247,7 +247,7 @@ class IndivCompleteReport(Report):
self.doc.start_row()
self.write_cell(label)
if parent_name:
# for example (a stepfather): John Smith, relationship: Step
# Translators: e.g. (a stepfather): John Smith, relationship: Step
text = self._('%(parent-name)s, relationship: %(rel-type)s'
) % {'parent-name' : parent_name,
'rel-type' : self._(rel_type)}
@ -919,7 +919,7 @@ class IndivCompleteReport(Report):
p_style = 'IDS-PersonTable' # this is tested for, also
else:
self._user.warn(_("Could not add photo to page"),
# translators: for French, else ignore
# Translators: for French, else ignore
_("%(str1)s: %(str2)s"
) % {'str1' : image_filename,
'str2' : _('File does not exist')})
@ -927,7 +927,7 @@ class IndivCompleteReport(Report):
self.doc.start_table('person', p_style)
self.doc.start_row()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
ignore = self._("%s:")
self.doc.start_cell('IDS-NormalCell')
self.write_paragraph(self._("%s:") % self._("Name"))
@ -959,7 +959,7 @@ class IndivCompleteReport(Report):
else:
for attr in attr_list:
attr_type = attr.get_type().type2base()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text = self._("%(str1)s: %(str2)s"
) % {'str1' : self._(attr_type),
'str2' : attr.get_value()}
@ -1020,7 +1020,7 @@ class IndivCompleteReport(Report):
if not txt:
return prior
if prior:
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
txt = self._('%(str1)s, %(str2)s') % {'str1':prior, 'str2':txt}
return txt
@ -1030,7 +1030,7 @@ class IndivCompleteReport(Report):
return
for attr in attr_list:
attr_type = attr.get_type().type2base()
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
text = self._("%(str1)s: %(str2)s"
) % {'str1' : self._(attr_type),
'str2' : attr.get_value()}

View File

@ -120,7 +120,7 @@ class NumberOfAncestorsReport(Report):
# TC # English return something like:
# Generation 3 has 2 individuals. (50.00%)
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
text = ngettext(
"Generation {number} has {count} individual. {percent}",
"Generation {number} has {count} individuals. {percent}",

View File

@ -181,7 +181,7 @@ class PlaceReport(Report):
place_details = [self._("Gramps ID: %s ") % place.get_gramps_id()]
for level in get_location_list(self._db, place):
# translators: needed for French, ignore otherwise
# Translators: needed for French, ignore otherwise
place_details.append(self._("%(str1)s: %(str2)s"
) % {'str1': self._(level[1].xml_str()),
'str2': level[0]})
@ -191,7 +191,7 @@ class PlaceReport(Report):
if len(all_names) > 1 or __debug__:
for place_name in all_names:
if place_names != '':
# translators: needed for Arabic, ignore otherwise
# Translators: needed for Arabic, ignore otherwise
place_names += self._(", ")
place_names += '%s' % place_name.get_value()
if place_name.get_language() != '' or __debug__:

View File

@ -133,7 +133,7 @@ class ChangeTypes(tool.BatchTool, ManagedWindow):
if modified == 0:
msg = _("No event record was modified.")
else:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
msg = ngettext("{number_of} event record was modified.",
"{number_of} event records were modified.", modified
).format(number_of=modified)

View File

@ -2458,7 +2458,7 @@ class CheckIntegrity:
if blink > 0:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} broken child/family link was fixed\n",
"{quantity} broken child/family links were fixed\n",
blink).format(quantity=blink)
@ -2484,7 +2484,7 @@ class CheckIntegrity:
if plink > 0:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} broken spouse/family link was fixed\n",
"{quantity} broken spouse/family links were fixed\n",
plink).format(quantity=plink)
@ -2510,7 +2510,7 @@ class CheckIntegrity:
if slink > 0:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} duplicate "
"spouse/family link was found\n",
"{quantity} duplicate "
@ -2538,7 +2538,7 @@ class CheckIntegrity:
if efam:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} family "
"with no parents or children found, removed.\n",
"{quantity} families "
@ -2550,7 +2550,7 @@ class CheckIntegrity:
if rel:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} corrupted family relationship fixed\n",
"{quantity} corrupted family relationships fixed\n",
rel).format(quantity=rel)
@ -2558,7 +2558,7 @@ class CheckIntegrity:
if self.place_errors:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} place alternate name fixed\n",
"{quantity} place alternate names fixed\n",
self.place_errors).format(quantity=self.place_errors)
@ -2566,7 +2566,7 @@ class CheckIntegrity:
if person_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(
"{quantity} person was referenced but not found\n",
"{quantity} persons were referenced, but not found\n",
@ -2575,7 +2575,7 @@ class CheckIntegrity:
if family_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} family was "
"referenced but not found\n",
"{quantity} families were "
@ -2585,7 +2585,7 @@ class CheckIntegrity:
if invalid_dates:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} date was corrected\n",
"{quantity} dates were corrected\n",
invalid_dates).format(quantity=invalid_dates)
@ -2593,7 +2593,7 @@ class CheckIntegrity:
if repo_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(
"{quantity} repository was "
"referenced but not found\n",
@ -2604,7 +2604,7 @@ class CheckIntegrity:
if photos:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} media object was "
"referenced but not found\n",
"{quantity} media objects were "
@ -2614,7 +2614,7 @@ class CheckIntegrity:
if bad_photos:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(
"Reference to {quantity} missing media object was kept\n",
"References to {quantity} missing media objects were kept\n",
@ -2623,7 +2623,7 @@ class CheckIntegrity:
if replaced_photos:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} missing media object was replaced\n",
"{quantity} missing media objects were replaced\n",
replaced_photos).format(quantity=replaced_photos)
@ -2631,7 +2631,7 @@ class CheckIntegrity:
if removed_photos:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} missing media object was removed\n",
"{quantity} missing media objects were removed\n",
removed_photos).format(quantity=removed_photos)
@ -2639,7 +2639,7 @@ class CheckIntegrity:
if event_invalid:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} event was referenced but not found\n",
"{quantity} events were referenced, but not found\n",
event_invalid).format(quantity=event_invalid)
@ -2647,7 +2647,7 @@ class CheckIntegrity:
if birth_invalid:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} invalid birth event name was fixed\n",
"{quantity} invalid birth event names were fixed\n",
birth_invalid).format(quantity=birth_invalid)
@ -2655,7 +2655,7 @@ class CheckIntegrity:
if death_invalid:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} invalid death event name was fixed\n",
"{quantity} invalid death event names were fixed\n",
death_invalid).format(quantity=death_invalid)
@ -2663,7 +2663,7 @@ class CheckIntegrity:
if place_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} place was referenced but not found\n",
"{quantity} places were referenced, but not found\n",
place_references).format(quantity=place_references)
@ -2671,7 +2671,7 @@ class CheckIntegrity:
if citation_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(
"{quantity} citation was referenced but not found\n",
"{quantity} citations were referenced, but not found\n",
@ -2681,7 +2681,7 @@ class CheckIntegrity:
if source_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(
"{quantity} source was referenced but not found\n",
"{quantity} sources were referenced, but not found\n",
@ -2690,7 +2690,7 @@ class CheckIntegrity:
if media_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(
"{quantity} media object was referenced but not found\n",
"{quantity} media objects were referenced,"
@ -2700,7 +2700,7 @@ class CheckIntegrity:
if note_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} note object was "
"referenced but not found\n",
"{quantity} note objects were "
@ -2710,7 +2710,7 @@ class CheckIntegrity:
if tag_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} tag object was "
"referenced but not found\n",
"{quantity} tag objects were "
@ -2720,7 +2720,7 @@ class CheckIntegrity:
if tag_references:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} tag object was "
"referenced but not found\n",
"{quantity} tag objects were "
@ -2730,7 +2730,7 @@ class CheckIntegrity:
if name_format:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} invalid name format "
"reference was removed\n",
"{quantity} invalid name format "
@ -2740,7 +2740,7 @@ class CheckIntegrity:
if replaced_sourcerefs:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext(
"{quantity} invalid source citation was fixed\n",
"{quantity} invalid source citations were fixed\n",
@ -2750,7 +2750,7 @@ class CheckIntegrity:
if dup_gramps_ids > 0:
self.text.write(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{quantity} Duplicated Gramps ID fixed\n",
"{quantity} Duplicated Gramps IDs fixed\n",
dup_gramps_ids).format(quantity=dup_gramps_ids)

View File

@ -116,7 +116,7 @@ class EventNames(tool.BatchTool):
else:
parent_window = None
if self.change == True:
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
message = ngettext("{quantity} event description has been added",
"{quantity} event descriptions have been added",
counter).format(quantity=counter)

View File

@ -231,7 +231,7 @@ class MergeCitations(tool.BatchTool,ManagedWindow):
db.request_rebuild()
self.progress.close()
OkDialog(_("Number of merges done"),
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("{number_of} citation merged",
"{number_of} citations merged", num_merges
).format(number_of=num_merges),

View File

@ -257,7 +257,7 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow):
progress = ProgressMeter(self.title, _('Starting'),
parent=self.window)
progress.set_pass(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
#TRANS: no singular form needed, as rows is always > 1
ngettext("Setting tag for {number_of} person",
"Setting tag for {number_of} people",
@ -300,7 +300,7 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow):
def findRelatedPeople(self):
self.progress.set_pass(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
#TRANS: No singular form is needed.
ngettext("Finding relationships between {number_of} person",
"Finding relationships between {number_of} people",
@ -381,7 +381,7 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow):
# we have at least 1 "unrelated" person to find
self.progress.set_pass(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("Looking for {number_of} person",
"Looking for {number_of} people",
self.numberOfUnrelatedPeople
@ -409,7 +409,7 @@ class NotRelated(tool.ActivePersonTool, ManagedWindow):
def populateModel(self):
self.progress.set_pass(
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext("Looking up the name of {number_of} person",
"Looking up the names of {number_of} people",
self.numberOfUnrelatedPeople

View File

@ -314,7 +314,7 @@ class Verify(tool.Tool, ManagedWindow, UpdateCallback):
severity_str = 'W'
elif severity == Rule.ERROR:
severity_str = 'E'
# translators: needed for French+Arabic, ignore otherwise
# Translators: needed for French+Arabic, ignore otherwise
print(_("%(severity)s: %(msg)s, %(type)s: %(gid)s, %(name)s"
) % {'severity' : severity_str, 'msg' : msg, 'type' : the_type,
'gid' : gramps_id, 'name' : name})

View File

@ -1040,7 +1040,7 @@ class RelationshipView(NavigationView):
else:
count = 0
if count > 1 :
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
childmsg = ngettext(" ({number_of} sibling)",
" ({number_of} siblings)", count
).format(number_of=count)
@ -1095,7 +1095,7 @@ class RelationshipView(NavigationView):
else:
count = 0
if count > 1 :
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
childmsg = ngettext(" ({number_of} sibling)",
" ({number_of} siblings)", count
).format(number_of=count)
@ -1560,7 +1560,7 @@ class RelationshipView(NavigationView):
else:
count = 0
if count >= 1 :
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
childmsg = ngettext(" ({number_of} child)",
" ({number_of} children)", count
).format(number_of=count)
@ -1606,7 +1606,7 @@ class RelationshipView(NavigationView):
else:
count = 0
if count >= 1 :
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
childmsg = ngettext(" ({number_of} child)",
" ({number_of} children)", count
).format(number_of=count)

View File

@ -197,7 +197,7 @@ class BasePage:
else:
self.rlocale = report.set_locale(report.options['trans'])
self._ = self.rlocale.translation.sgettext
self.colon = self._(':') # translators: needed for French, else ignore
self.colon = self._(':') # Translators: needed for French, else ignore
if report.options['securesite']:
self.secure_mode = HTTPS

View File

@ -1359,7 +1359,7 @@ def get_day_list(event_date, holiday_list, bday_anniv_list, rlocale=glocale):
age = ", <font size='+1' ><b>%s</b></font> <em>%s (%s)" % (
death_symbol, mess, age_at_death)
else:
# TRANSLATORS: expands to smth like "12 years old",
# Translators: expands to smth like "12 years old",
# where "12 years" is already localized to your language
age = ', <em>'
date_y = date.get_year()
@ -1397,7 +1397,7 @@ def get_day_list(event_date, holiday_list, bday_anniv_list, rlocale=glocale):
txt_str += "</em>"
else:
age = '<em>%s' % nyears
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext = rlocale.translation.ngettext
txt_str = ngettext("{couple}, {years} year anniversary",
"{couple}, {years} year anniversary",

View File

@ -2177,7 +2177,7 @@ def get_day_list(event_date, holiday_list, bday_anniv_list, rlocale=glocale):
age = ", <font size='+1' ><b>%s</b></font> <em>%s (%s)" % (
death_symbol, mess, age_at_death)
else:
# TRANSLATORS: expands to smth like "12 years old",
# Translators: expands to smth like "12 years old",
# where "12 years" is already localized to your language
age = ', <em>'
date_y = date.get_year()
@ -2215,7 +2215,7 @@ def get_day_list(event_date, holiday_list, bday_anniv_list, rlocale=glocale):
txt_str += "</em>"
else:
age = '<em>%s' % nyears
# translators: leave all/any {...} untranslated
# Translators: leave all/any {...} untranslated
ngettext = rlocale.translation.ngettext
txt_str = ngettext("{couple}, {years} year anniversary",
"{couple}, {years} year anniversary",

View File

@ -57,31 +57,31 @@ def load_on_reg(dbstate, uistate, plugin):
# "default" is used as default
# default style sheet in the options
# Basic Ash style sheet
# Translators: Basic Ash style sheet
["Basic-Ash", 1, _("Basic-Ash"),
path_css('Web_Basic-Ash.css'), None, [], []],
# Basic Blue style sheet with navigation menus
# Translators: Basic Blue style sheet with navigation menus
["Basic-Blue", 1, _("Basic-Blue"),
path_css('Web_Basic-Blue.css'), None, [], []],
# Basic Cypress style sheet
# Translators: Basic Cypress style sheet
["Basic-Cypress", 1, _("Basic-Cypress"),
path_css('Web_Basic-Cypress.css'), None, [], []],
# basic Lilac style sheet
# Translators: Basic Lilac style sheet
["Basic-Lilac", 1, _("Basic-Lilac"),
path_css('Web_Basic-Lilac.css'), None, [], []],
# basic Peach style sheet
# Translators: Basic Peach style sheet
["Basic-Peach", 1, _("Basic-Peach"),
path_css('Web_Basic-Peach.css'), None, [], []],
# basic Spruce style sheet
# Translators: Basic Spruce style sheet
["Basic-Spruce", 1, _("Basic-Spruce"),
path_css('Web_Basic-Spruce.css'), None, [], []],
# Mainz style sheet with its images
# Translators: Mainz style sheet with its images
["Mainz", 1, _("Mainz"),
path_css('Web_Mainz.css'), None,
[path_img("Web_Mainz_Bkgd.png"),
@ -89,11 +89,11 @@ def load_on_reg(dbstate, uistate, plugin):
path_img("Web_Mainz_Mid.png"),
path_img("Web_Mainz_MidLight.png")], []],
# Nebraska style sheet
# Translators: Nebraska style sheet
["Nebraska", 1, _("Nebraska"),
path_css('Web_Nebraska.css'), None, [], []],
# Visually Impaired style sheet with its navigation menus
# Translators: Visually Impaired style sheet with its navigation menus
["Visually Impaired", 1, _("Visually Impaired"),
path_css('Web_Visually.css'), "narrative-menus.css", [], []],

File diff suppressed because it is too large Load Diff

View File

@ -423,8 +423,9 @@ def retrieve():
listing('python.txt', ['.py', '.py.in'])
# additional keywords must always be kept in sync with those in genpot.sh
os.system('''%(xgettext)s -F -c -j --directory=./ -d gramps '''
'''-L Python -o gramps.pot --files-from=python.txt '''
os.system('''%(xgettext)s -F --add-comments=Translators -j '''
'''--directory=./ -d gramps -L Python '''
'''-o gramps.pot --files-from=python.txt '''
'''--debug --keyword=_ --keyword=ngettext '''
'''--keyword=_T_ --keyword=trans_text:1,2c '''
'''--keyword=_:1,2c --keyword=_T_:1,2c '''
@ -437,8 +438,8 @@ def retrieve():
# C format header (.h extension)
for h in headers():
print ('xgettext for %s' % h)
os.system('''%(xgettext)s -F --add-comments -j -o gramps.pot '''
'''--keyword=N_ --from-code=UTF-8 %(head)s'''
os.system('''%(xgettext)s -F --add-comments=Translators -j '''
'''-o gramps.pot --keyword=N_ --from-code=UTF-8 %(head)s'''
% {'xgettext': xgettextCmd, 'head': h}
)
clean()