From 6eebd80dfc78a2e870649823e73d6de0f4627b1f Mon Sep 17 00:00:00 2001 From: Vassilii Khachaturov Date: Fri, 20 Sep 2013 12:33:00 +0000 Subject: [PATCH] 6926: display genitive/nominative months as needed First proof of concept, fixing the original bug for Russian. Added gramps/gen/datehandler/_datestrings.py, to hold all the localized strings, with genitive/nominative context as appropriate. Remaining TODO: 1) other languages 2) expand the localized string into RE-style concat via |, so that displayer uses the 1st instance, and the parser uses the whole RE. Write the corresponding _(). 3) same with short names as with long names 4) harmonize with _grampslocale code reading the names from elsewhere for Julian/Gregorian months 5) expand to other calendars (non-Julian/non-Gregorian) 6) obsolete the public attributes in dd and replace with accessors svn: r23173 --- gramps/gen/datehandler/__init__.py | 1 + gramps/gen/datehandler/_date_ru.py | 4 - gramps/gen/datehandler/_datedisplay.py | 16 +- gramps/gen/datehandler/_datestrings.py | 90 ++++ gramps/gen/datehandler/_grampslocale.py | 7 + gramps/plugins/drawreport/calendarreport.py | 2 +- gramps/plugins/drawreport/statisticschart.py | 2 +- gramps/plugins/lib/libsubstkeyword.py | 2 +- gramps/plugins/textreport/birthdayreport.py | 2 +- gramps/plugins/webreport/webcal.py | 12 +- po/POTFILES.in | 1 + po/gramps.pot | 411 +++++++++++++------ po/ru.po | 191 +++++++++ 13 files changed, 608 insertions(+), 133 deletions(-) create mode 100644 gramps/gen/datehandler/_datestrings.py diff --git a/gramps/gen/datehandler/__init__.py b/gramps/gen/datehandler/__init__.py index 5e23a6406..e5b5ece81 100644 --- a/gramps/gen/datehandler/__init__.py +++ b/gramps/gen/datehandler/__init__.py @@ -36,6 +36,7 @@ _ = glocale.translation.sgettext # import prerequisites for localized handlers from ._datehandler import (LANG, LANG_SHORT, LANG_TO_PARSER, LANG_TO_DISPLAY, register_datehandler) +from . import _datestrings # Import all the localized handlers from . import _date_bg diff --git a/gramps/gen/datehandler/_date_ru.py b/gramps/gen/datehandler/_date_ru.py index da429f812..5bb039b36 100644 --- a/gramps/gen/datehandler/_date_ru.py +++ b/gramps/gen/datehandler/_date_ru.py @@ -238,10 +238,6 @@ class DateDisplayRU(DateDisplay): """ Russian language date display class. """ - long_months = ( "", "января", "февраля", "марта", "апреля", "мая", - "июня", "июля", "августа", "сентября", "октября", - "ноября", "декабря" ) - short_months = ( "", "янв", "фев", "мар", "апр", "мая", "июн", "июл", "авг", "сен", "окт", "ноя", "дек" ) diff --git a/gramps/gen/datehandler/_datedisplay.py b/gramps/gen/datehandler/_datedisplay.py index 71c53cc1d..0c08a2716 100644 --- a/gramps/gen/datehandler/_datedisplay.py +++ b/gramps/gen/datehandler/_datedisplay.py @@ -41,6 +41,7 @@ log = logging.getLogger(".DateDisplay") #------------------------------------------------------------------------- from ..lib.date import Date from . import _grampslocale +from ._datestrings import DateStrings #------------------------------------------------------------------------- # @@ -51,9 +52,18 @@ class DateDisplay(object): """ Base date display class. """ - long_months = ( "", "January", "February", "March", "April", "May", - "June", "July", "August", "September", "October", - "November", "December" ) + # compatibility definition, to be removed when + # long_months no longer is used directly... + long_months = DateStrings.long_months_genitive + + # TODO do we need multiple languages active at the same time? + # if so, we'd need to have an instance of localized date strings + # per date displayer, instead of the following global retrieval + def get_long_month_nom(self, month): + return DateStrings.long_months_nominative[month] + + def get_long_month_gen(self, month): + return DateStrings.long_months_genitive[month] short_months = ( "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ) diff --git a/gramps/gen/datehandler/_datestrings.py b/gramps/gen/datehandler/_datestrings.py new file mode 100644 index 000000000..0547ebd1e --- /dev/null +++ b/gramps/gen/datehandler/_datestrings.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2004-2006 Donald N. Allingham +# Copyright (C) 2013 Vassilii Khachaturov +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# $Id$ + +""" +U.S. English date strings for display and parsing. +""" +from __future__ import print_function, unicode_literals + +#------------------------------------------------------------------------- +# +# set up logging +# +#------------------------------------------------------------------------- +import logging +log = logging.getLogger(".DateStrings") + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- +if __name__ == '__main__': + _ = lambda x: x +else: + from gramps.gen.const import GRAMPS_LOCALE as glocale + _ = lambda x: glocale.translation.sgettext(x) + +#------------------------------------------------------------------------- +# +# DateStrings +# +#------------------------------------------------------------------------- +class DateStrings(object): + """ + Base date display class. + """ + long_months_genitive = ( "", + _("genitive||January"), + _("genitive||February"), + _("genitive||March"), + _("genitive||April"), + _("genitive||May"), + _("genitive||June"), + _("genitive||July"), + _("genitive||August"), + _("genitive||September"), + _("genitive||October"), + _("genitive||November"), + _("genitive||December") ) + + long_months_nominative = ( "", + _("nominative||January"), + _("nominative||February"), + _("nominative||March"), + _("nominative||April"), + _("nominative||May"), + _("nominative||June"), + _("nominative||July"), + _("nominative||August"), + _("nominative||September"), + _("nominative||October"), + _("nominative||November"), + _("nominative||December") ) + + # TODO the above is just a proof of concept, + # needs to be expanded with all the relevant strings... + +if __name__ == '__main__': + for i in range(1, 12): + print (DateStrings.long_months_nominative[i], "\t", DateStrings.long_months_genitive[i]) diff --git a/gramps/gen/datehandler/_grampslocale.py b/gramps/gen/datehandler/_grampslocale.py index 235b80f23..74944b3f3 100644 --- a/gramps/gen/datehandler/_grampslocale.py +++ b/gramps/gen/datehandler/_grampslocale.py @@ -44,6 +44,13 @@ else: to_uni = lambda x, y: x codeset = glocale.encoding +# NOTE: depending on the system and versions, the names +# can be either in genitive or in nominative here. +# %B and %b, for example, are inconsistent in inflection +# on some linux systems. +# Should probably use _datestrings.py instead! +# See bug# 6926 for more. + try: month_to_int = { diff --git a/gramps/plugins/drawreport/calendarreport.py b/gramps/plugins/drawreport/calendarreport.py index 53ddabd9c..cf29d564d 100644 --- a/gramps/plugins/drawreport/calendarreport.py +++ b/gramps/plugins/drawreport/calendarreport.py @@ -193,7 +193,7 @@ class Calendar(Report): self.doc.draw_box("CAL-Title", "", 0, 0, width, header, mark) self.doc.draw_line("CAL-Border", 0, header, width, header) year = self.year - title = "%s %d" % (_dd.long_months[month].capitalize(), year) + title = "%s %d" % (_dd.get_long_month_nom(month).capitalize(), year) mark = IndexMark(title, INDEX_TYPE_TOC, 2) font_height = pt2cm(ptitle.get_font().get_size()) self.doc.center_text("CAL-Title", title, diff --git a/gramps/plugins/drawreport/statisticschart.py b/gramps/plugins/drawreport/statisticschart.py index 1625a50e5..b74ad02ad 100644 --- a/gramps/plugins/drawreport/statisticschart.py +++ b/gramps/plugins/drawreport/statisticschart.py @@ -418,7 +418,7 @@ class Extract(object): if date: month = date.get_month() if month: - return [self._locale.date_displayer.long_months[month]] + return [self._locale.date_displayer.get_long_month_nom(month)] return [_T_("Date(s) missing")] def get_place(self, event): diff --git a/gramps/plugins/lib/libsubstkeyword.py b/gramps/plugins/lib/libsubstkeyword.py index cd9774c34..e65b5c687 100644 --- a/gramps/plugins/lib/libsubstkeyword.py +++ b/gramps/plugins/lib/libsubstkeyword.py @@ -256,7 +256,7 @@ class DateFormat(GenericFormat): elif count == 3: # found 'mmm' return displayer.short_months[int(month)] else: # found 'mmmm' - return displayer.long_months[int(month)] + return displayer.get_long_month_gen(int(month)) def month_up(): return month("M").upper() diff --git a/gramps/plugins/textreport/birthdayreport.py b/gramps/plugins/textreport/birthdayreport.py index 365e28f15..62a9b0055 100644 --- a/gramps/plugins/textreport/birthdayreport.py +++ b/gramps/plugins/textreport/birthdayreport.py @@ -227,7 +227,7 @@ class BirthdayReport(Report): year = self.year dd = self._locale.date_displayer self.doc.start_paragraph('BIR-Monthstyle') - self.doc.write_text(dd.long_months[month].capitalize()) + self.doc.write_text(dd.get_long_month_nom(month).capitalize()) self.doc.end_paragraph() current_date = datetime.date(year, month, 1) current_ord = current_date.toordinal() diff --git a/gramps/plugins/webreport/webcal.py b/gramps/plugins/webreport/webcal.py index 1a72caa96..e5991eaac 100644 --- a/gramps/plugins/webreport/webcal.py +++ b/gramps/plugins/webreport/webcal.py @@ -499,7 +499,7 @@ class WebCalReport(Report): # each year will link to current month. # this will always need an extension added - full_month_name = _dd.long_months[self.today.get_month() ] + full_month_name = _dd.get_long_month_nom(self.today.get_month() ) # Note. We use '/' here because it is a URL, not a OS dependent # pathname. @@ -536,7 +536,7 @@ class WebCalReport(Report): if self.home_link: navs.append((self.home_link, _('Home'), add_home)) navs.extend( - (_dd.long_months[month], _dd.short_months[month], True) for month in range(1, 13) ) + (_dd.get_long_month_nom(month), _dd.short_months[month], True) for month in range(1, 13) ) # Add a link for year_glance() if requested navs.append(('fullyearlinked', _('Year Glance'), self.fullyear)) @@ -602,7 +602,7 @@ class WebCalReport(Report): """ # define names for long and short month names - full_month_name = _dd.long_months[month] + full_month_name = _dd.get_long_month_nom(month) abbr_month_name = _dd.short_months[month] # dow (day-of-week) uses Gramps numbering, sunday => 1, etc @@ -842,7 +842,7 @@ class WebCalReport(Report): _('Formatting months ...'), 12) as step: for month in range(1, 13): - cal_fname = _dd.long_months[month] + cal_fname = _dd.get_long_month_nom(month) of = self.create_file(cal_fname, str(year)) # Add xml, doctype, meta and stylesheets @@ -855,7 +855,7 @@ class WebCalReport(Report): # Create Month Navigation Menu # identify currentsection for proper highlighting - currentsection = _dd.long_months[month] + currentsection = _dd.get_long_month_nom(month) body += self.month_navigation(nr_up, year, currentsection, True) # build the calendar @@ -982,7 +982,7 @@ class WebCalReport(Report): # Create Month Navigation Menu # identify currentsection for proper highlighting - currentsection = _dd.long_months[month] + currentsection = _dd.get_long_month_nom(month) body += self.month_navigation(nr_up, year, currentsection, True) # set date display as in user prevferences diff --git a/po/POTFILES.in b/po/POTFILES.in index d29a17fb8..c90f599ec 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -9,6 +9,7 @@ gramps/cli/user.py gramps/gen/config.py gramps/gen/const.py gramps/gen/datehandler/__init__.py +gramps/gen/datehandler/_datestrings.py gramps/gen/db/base.py gramps/gen/db/exceptions.py gramps/gen/db/undoredo.py diff --git a/po/gramps.pot b/po/gramps.pot index 146d5fcb5..389305d5d 100644 --- a/po/gramps.pot +++ b/po/gramps.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-28 19:37+0300\n" +"POT-Creation-Date: 2013-08-26 17:21+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,14 +18,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: ../gramps/cli/arghandler.py:225 +#: ../gramps/cli/arghandler.py:221 #, python-format msgid "" "Error: Family Tree '%s' already exists.\n" "The '-C' option cannot be used." msgstr "" -#: ../gramps/cli/arghandler.py:234 +#: ../gramps/cli/arghandler.py:230 #, python-format msgid "" "Error: Input Family Tree \"%s\" does not exist.\n" @@ -33,17 +33,17 @@ msgid "" "Tree instead." msgstr "" -#: ../gramps/cli/arghandler.py:250 +#: ../gramps/cli/arghandler.py:246 #, python-format msgid "Error: Import file %s not found." msgstr "" -#: ../gramps/cli/arghandler.py:268 +#: ../gramps/cli/arghandler.py:264 #, python-format msgid "Error: Unrecognized type: \"%(format)s\" for import file: %(filename)s" msgstr "" -#: ../gramps/cli/arghandler.py:290 +#: ../gramps/cli/arghandler.py:286 #, python-format msgid "" "WARNING: Output file already exists!\n" @@ -51,38 +51,34 @@ msgid "" " %s" msgstr "" -#: ../gramps/cli/arghandler.py:293 -msgid "OK to overwrite?" +#: ../gramps/cli/arghandler.py:294 +msgid "OK to overwrite? (yes/no) " msgstr "" -#: ../gramps/cli/arghandler.py:294 ../gramps/cli/clidbman.py:215 -msgid "yes" +#: ../gramps/cli/arghandler.py:298 +msgid "YES" msgstr "" -#: ../gramps/cli/arghandler.py:294 ../gramps/cli/clidbman.py:217 -msgid "no" -msgstr "" - -#: ../gramps/cli/arghandler.py:296 +#: ../gramps/cli/arghandler.py:299 #, python-format msgid "Will overwrite the existing file: %s" msgstr "" -#: ../gramps/cli/arghandler.py:316 +#: ../gramps/cli/arghandler.py:319 #, python-format msgid "ERROR: Unrecognized format for export file %s" msgstr "" -#: ../gramps/cli/arghandler.py:399 +#: ../gramps/cli/arghandler.py:402 msgid "List of known Family Trees in your database path\n" msgstr "" -#: ../gramps/cli/arghandler.py:404 +#: ../gramps/cli/arghandler.py:407 #, python-format msgid "%(full_DB_path)s with name \"%(f_t_name)s\"" msgstr "" -#: ../gramps/cli/arghandler.py:409 ../gramps/cli/arghandler.py:420 +#: ../gramps/cli/arghandler.py:412 ../gramps/cli/arghandler.py:423 msgid "Gramps Family Trees:" msgstr "" @@ -91,124 +87,125 @@ msgstr "" #. constants #. #. ------------------------------------------------------------------------- -#: ../gramps/cli/arghandler.py:412 ../gramps/cli/arghandler.py:413 -#: ../gramps/cli/arghandler.py:422 ../gramps/cli/arghandler.py:429 -#: ../gramps/cli/arghandler.py:430 ../gramps/cli/arghandler.py:432 +#: ../gramps/cli/arghandler.py:415 ../gramps/cli/arghandler.py:416 +#: ../gramps/cli/arghandler.py:425 ../gramps/cli/arghandler.py:432 +#: ../gramps/cli/arghandler.py:433 ../gramps/cli/arghandler.py:435 #: ../gramps/cli/clidbman.py:74 ../gramps/cli/clidbman.py:221 #: ../gramps/cli/clidbman.py:223 ../gramps/gui/clipboard.py:936 #: ../gramps/gui/configure.py:1337 msgid "Family Tree" msgstr "" -#: ../gramps/cli/arghandler.py:413 +#: ../gramps/cli/arghandler.py:416 #, python-format msgid "Family Tree \"%s\":" msgstr "" -#: ../gramps/cli/arghandler.py:442 +#: ../gramps/cli/arghandler.py:445 #, python-format msgid "Performing action: %s." msgstr "" -#: ../gramps/cli/arghandler.py:444 +#: ../gramps/cli/arghandler.py:447 #, python-format msgid "Using options string: %s" msgstr "" -#: ../gramps/cli/arghandler.py:449 +#: ../gramps/cli/arghandler.py:452 #, python-format msgid "Exporting: file %(filename)s, format %(format)s." msgstr "" -#: ../gramps/cli/arghandler.py:456 +#: ../gramps/cli/arghandler.py:459 msgid "Exiting." msgstr "" -#: ../gramps/cli/arghandler.py:460 +#: ../gramps/cli/arghandler.py:463 msgid "Cleaning up." msgstr "" -#: ../gramps/cli/arghandler.py:489 +#: ../gramps/cli/arghandler.py:492 msgid "Created empty Family Tree successfully" msgstr "" -#: ../gramps/cli/arghandler.py:492 ../gramps/cli/arghandler.py:517 +#: ../gramps/cli/arghandler.py:495 ../gramps/cli/arghandler.py:520 msgid "Error opening the file." msgstr "" -#: ../gramps/cli/arghandler.py:493 ../gramps/cli/arghandler.py:518 +#: ../gramps/cli/arghandler.py:496 ../gramps/cli/arghandler.py:521 msgid "Exiting..." msgstr "" -#: ../gramps/cli/arghandler.py:497 +#: ../gramps/cli/arghandler.py:500 #, python-format msgid "Importing: file %(filename)s, format %(format)s." msgstr "" -#: ../gramps/cli/arghandler.py:515 +#: ../gramps/cli/arghandler.py:518 msgid "Opened successfully!" msgstr "" -#: ../gramps/cli/arghandler.py:529 +#: ../gramps/cli/arghandler.py:532 msgid "Database is locked, cannot open it!" msgstr "" -#: ../gramps/cli/arghandler.py:530 +#: ../gramps/cli/arghandler.py:533 #, python-format msgid " Info: %s" msgstr "" -#: ../gramps/cli/arghandler.py:533 +#: ../gramps/cli/arghandler.py:536 msgid "Database needs recovery, cannot open it!" msgstr "" -#: ../gramps/cli/arghandler.py:590 ../gramps/cli/arghandler.py:638 -#: ../gramps/cli/arghandler.py:679 +#: ../gramps/cli/arghandler.py:593 ../gramps/cli/arghandler.py:641 +#: ../gramps/cli/arghandler.py:682 msgid "Ignoring invalid options string." msgstr "" #. name exists, but is not in the list of valid report names -#: ../gramps/cli/arghandler.py:614 +#: ../gramps/cli/arghandler.py:617 msgid "Unknown report name." msgstr "" -#: ../gramps/cli/arghandler.py:616 +#: ../gramps/cli/arghandler.py:619 #, python-format msgid "Report name not given. Please use one of %(donottranslate)s=reportname" msgstr "" -#: ../gramps/cli/arghandler.py:620 ../gramps/cli/arghandler.py:662 -#: ../gramps/cli/arghandler.py:695 +#: ../gramps/cli/arghandler.py:623 ../gramps/cli/arghandler.py:665 +#: ../gramps/cli/arghandler.py:698 #, python-format msgid "" "%s\n" " Available names are:" msgstr "" -#: ../gramps/cli/arghandler.py:656 +#: ../gramps/cli/arghandler.py:659 msgid "Unknown tool name." msgstr "" -#: ../gramps/cli/arghandler.py:658 +#: ../gramps/cli/arghandler.py:661 #, python-format msgid "Tool name not given. Please use one of %(donottranslate)s=toolname." msgstr "" -#: ../gramps/cli/arghandler.py:689 +#: ../gramps/cli/arghandler.py:692 msgid "Unknown book name." msgstr "" -#: ../gramps/cli/arghandler.py:691 +#: ../gramps/cli/arghandler.py:694 #, python-format msgid "Book name not given. Please use one of %(donottranslate)s=bookname." msgstr "" -#: ../gramps/cli/arghandler.py:700 +#: ../gramps/cli/arghandler.py:703 #, python-format msgid "Unknown action: %s." msgstr "" -#: ../gramps/cli/argparser.py:56 +#. Note: Make sure to edit const.py.in POPT_TABLE too! +#: ../gramps/cli/argparser.py:57 msgid "" "\n" "Usage: gramps.py [OPTION...]\n" @@ -234,14 +231,10 @@ msgid "" " -s, --show Show config settings\n" " -c, --config=[config.setting[:value]] Set config setting(s) and start " "Gramps\n" -" -y, --yes Don't ask to confirm dangerous " -"actions (non-GUI mode only)\n" -" -q, --quiet Suppress progress indication output " -"(non-GUI mode only)\n" " -v, --version Show versions\n" msgstr "" -#: ../gramps/cli/argparser.py:84 +#: ../gramps/cli/argparser.py:83 msgid "" "\n" "Example of usage of Gramps command line interface\n" @@ -300,58 +293,58 @@ msgid "" "Syntax may be different for other shells and for Windows.\n" msgstr "" -#: ../gramps/cli/argparser.py:241 ../gramps/cli/argparser.py:376 +#: ../gramps/cli/argparser.py:236 ../gramps/cli/argparser.py:367 msgid "Error parsing the arguments" msgstr "" -#: ../gramps/cli/argparser.py:243 +#: ../gramps/cli/argparser.py:238 #, python-format msgid "" "Error parsing the arguments: %s \n" "Type gramps --help for an overview of commands, or read the manual pages." msgstr "" -#: ../gramps/cli/argparser.py:252 +#: ../gramps/cli/argparser.py:247 #, python-format msgid "Trying to open: %s ..." msgstr "" -#: ../gramps/cli/argparser.py:286 +#: ../gramps/cli/argparser.py:281 #, python-format msgid "Unknown action: %s. Ignoring." msgstr "" -#: ../gramps/cli/argparser.py:295 +#: ../gramps/cli/argparser.py:290 msgid "setup debugging" msgstr "" -#: ../gramps/cli/argparser.py:306 +#: ../gramps/cli/argparser.py:301 #, python-format msgid "Gramps config settings from %s:" msgstr "" -#: ../gramps/cli/argparser.py:324 +#: ../gramps/cli/argparser.py:319 #, python-format msgid "Current Gramps config setting: %s:%s" msgstr "" #. does a user want the default config value? -#: ../gramps/cli/argparser.py:329 +#: ../gramps/cli/argparser.py:324 msgid "DEFAULT" msgstr "" #. translators: indent "New" to match "Current" -#: ../gramps/cli/argparser.py:336 +#: ../gramps/cli/argparser.py:331 #, python-format msgid " New Gramps config setting: %s:%s" msgstr "" -#: ../gramps/cli/argparser.py:343 +#: ../gramps/cli/argparser.py:338 #, python-format msgid "Gramps: no such config setting: '%s'" msgstr "" -#: ../gramps/cli/argparser.py:377 +#: ../gramps/cli/argparser.py:368 #, python-format msgid "" "Error parsing the arguments: %s \n" @@ -373,6 +366,14 @@ msgstr "" msgid "Locked?" msgstr "" +#: ../gramps/cli/clidbman.py:215 +msgid "yes" +msgstr "" + +#: ../gramps/cli/clidbman.py:217 +msgid "no" +msgstr "" + #: ../gramps/cli/clidbman.py:218 msgid "Bsddb version" msgstr "" @@ -491,12 +492,12 @@ msgstr "" msgid "ERROR: %s" msgstr "" -#: ../gramps/cli/grampscli.py:103 ../gramps/cli/user.py:187 +#: ../gramps/cli/grampscli.py:103 ../gramps/cli/user.py:174 #: ../gramps/gui/dialog.py:224 msgid "Low level database corruption detected" msgstr "" -#: ../gramps/cli/grampscli.py:105 ../gramps/cli/user.py:188 +#: ../gramps/cli/grampscli.py:105 ../gramps/cli/user.py:175 #: ../gramps/gui/dialog.py:225 msgid "" "Gramps has detected a problem in the underlying Berkeley database. This can " @@ -731,16 +732,194 @@ msgstr "" msgid "none" msgstr "" -#: ../gramps/gen/datehandler/__init__.py:71 +#: ../gramps/gen/datehandler/__init__.py:72 #, python-format msgid "Date parser for '%s' not available, using default" msgstr "" -#: ../gramps/gen/datehandler/__init__.py:87 +#: ../gramps/gen/datehandler/__init__.py:88 #, python-format msgid "Date displayer for '%s' not available, using default" msgstr "" +#. TRANSLATORS: see +#. http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates +#. to learn how to select proper inflection for your language. +#: ../gramps/gen/datehandler/_datedisplay.py:251 +#: ../gramps/gen/datehandler/_datedisplay.py:278 +msgid "{long_month} {year}" +msgstr "" + +#. TRANSLATORS: see +#. http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates +#. to learn how to select proper inflection for your language. +#: ../gramps/gen/datehandler/_datedisplay.py:258 +msgid "{long_month} {day:d}, {year}" +msgstr "" + +#. TRANSLATORS: see +#. http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates +#. to learn how to select proper inflection for your language. +#: ../gramps/gen/datehandler/_datedisplay.py:285 +msgid "{day:d} {long_month} {year}" +msgstr "" + +#. 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! +#: ../gramps/gen/datehandler/_datestrings.py:53 +msgid "localized lexeme inflections||January" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:54 +msgid "localized lexeme inflections||February" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:55 +msgid "localized lexeme inflections||March" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:56 +msgid "localized lexeme inflections||April" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:57 +msgid "localized lexeme inflections||May" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:58 +msgid "localized lexeme inflections||June" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:59 +msgid "localized lexeme inflections||July" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:60 +msgid "localized lexeme inflections||August" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:61 +msgid "localized lexeme inflections||September" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:62 +msgid "localized lexeme inflections||October" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:63 +msgid "localized lexeme inflections||November" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:64 +msgid "localized lexeme inflections||December" +msgstr "" + +#. 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! +#: ../gramps/gen/datehandler/_datestrings.py:71 +msgid "localized lexeme inflections - short month form||Jan" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:72 +msgid "localized lexeme inflections - short month form||Feb" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:73 +msgid "localized lexeme inflections - short month form||Mar" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:74 +msgid "localized lexeme inflections - short month form||Apr" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:75 +msgid "localized lexeme inflections - short month form||May" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:76 +msgid "localized lexeme inflections - short month form||Jun" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:77 +msgid "localized lexeme inflections - short month form||Jul" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:78 +msgid "localized lexeme inflections - short month form||Aug" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:79 +msgid "localized lexeme inflections - short month form||Sep" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:80 +msgid "localized lexeme inflections - short month form||Oct" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:81 +msgid "localized lexeme inflections - short month form||Nov" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:82 +msgid "localized lexeme inflections - short month form||Dec" +msgstr "" + +#. 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! +#: ../gramps/gen/datehandler/_datestrings.py:90 +msgid "alternative month names for January||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:91 +msgid "alternative month names for February||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:92 +msgid "alternative month names for March||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:93 +msgid "alternative month names for April||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:94 +msgid "alternative month names for May||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:95 +msgid "alternative month names for June||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:96 +msgid "alternative month names for July||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:97 +msgid "alternative month names for August||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:98 +msgid "alternative month names for September||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:99 +msgid "alternative month names for October||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:100 +msgid "alternative month names for November||" +msgstr "" + +#: ../gramps/gen/datehandler/_datestrings.py:101 +msgid "alternative month names for December||" +msgstr "" + #: ../gramps/gen/db/base.py:1624 msgid "Add child to family" msgstr "" @@ -5884,200 +6063,200 @@ msgid "" "available." msgstr "" -#: ../gramps/gen/utils/grampslocale.py:64 +#: ../gramps/gen/utils/grampslocale.py:65 msgid "Arabic" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:65 +#: ../gramps/gen/utils/grampslocale.py:66 msgid "Bulgarian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:66 +#: ../gramps/gen/utils/grampslocale.py:67 msgid "Breton" msgstr "" #. Windows has no translation for Breton -#: ../gramps/gen/utils/grampslocale.py:67 +#: ../gramps/gen/utils/grampslocale.py:68 msgid "Catalan" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:68 +#: ../gramps/gen/utils/grampslocale.py:69 msgid "Czech" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:69 +#: ../gramps/gen/utils/grampslocale.py:70 msgid "Danish" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:70 +#: ../gramps/gen/utils/grampslocale.py:71 msgid "German" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:71 +#: ../gramps/gen/utils/grampslocale.py:72 msgid "Greek" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:72 +#: ../gramps/gen/utils/grampslocale.py:73 msgid "English (USA)" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:73 +#: ../gramps/gen/utils/grampslocale.py:74 msgid "English" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:74 +#: ../gramps/gen/utils/grampslocale.py:75 msgid "Esperanto" msgstr "" #. Windows has no translation for Esperanto -#: ../gramps/gen/utils/grampslocale.py:75 +#: ../gramps/gen/utils/grampslocale.py:76 msgid "Spanish" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:76 +#: ../gramps/gen/utils/grampslocale.py:77 msgid "Finnish" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:77 +#: ../gramps/gen/utils/grampslocale.py:78 msgid "French" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:78 +#: ../gramps/gen/utils/grampslocale.py:79 msgid "Gaelic" msgstr "" #. Windows has no translation for Gaelic -#: ../gramps/gen/utils/grampslocale.py:79 +#: ../gramps/gen/utils/grampslocale.py:80 msgid "Hebrew" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:80 +#: ../gramps/gen/utils/grampslocale.py:81 msgid "Croatian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:81 +#: ../gramps/gen/utils/grampslocale.py:82 msgid "Hungarian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:82 +#: ../gramps/gen/utils/grampslocale.py:83 msgid "Italian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:83 +#: ../gramps/gen/utils/grampslocale.py:84 msgid "Japanese" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:84 +#: ../gramps/gen/utils/grampslocale.py:85 msgid "Lithuanian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:85 +#: ../gramps/gen/utils/grampslocale.py:86 msgid "Macedonian" msgstr "" #. Windows has no translation for Macedonian -#: ../gramps/gen/utils/grampslocale.py:86 +#: ../gramps/gen/utils/grampslocale.py:87 msgid "Norwegian Bokmal" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:87 +#: ../gramps/gen/utils/grampslocale.py:88 msgid "Dutch" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:88 +#: ../gramps/gen/utils/grampslocale.py:89 msgid "Norwegian Nynorsk" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:89 +#: ../gramps/gen/utils/grampslocale.py:90 msgid "Polish" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:90 +#: ../gramps/gen/utils/grampslocale.py:91 msgid "Portuguese (Brazil)" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:91 +#: ../gramps/gen/utils/grampslocale.py:92 msgid "Portuguese (Portugal)" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:92 +#: ../gramps/gen/utils/grampslocale.py:93 msgid "Romanian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:93 +#: ../gramps/gen/utils/grampslocale.py:94 msgid "Russian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:94 +#: ../gramps/gen/utils/grampslocale.py:95 msgid "Slovak" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:95 +#: ../gramps/gen/utils/grampslocale.py:96 msgid "Slovenian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:96 +#: ../gramps/gen/utils/grampslocale.py:97 msgid "Albanian" msgstr "" #. Gramps's Serbian translation is not yet ready -#: ../gramps/gen/utils/grampslocale.py:98 +#: ../gramps/gen/utils/grampslocale.py:99 msgid "Swedish" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:99 +#: ../gramps/gen/utils/grampslocale.py:100 msgid "Turkish" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:100 +#: ../gramps/gen/utils/grampslocale.py:101 msgid "Ukrainian" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:101 +#: ../gramps/gen/utils/grampslocale.py:102 msgid "Vietnamese" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:102 +#: ../gramps/gen/utils/grampslocale.py:103 msgid "Chinese Simplified" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:804 +#: ../gramps/gen/utils/grampslocale.py:806 msgid "the person" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:806 +#: ../gramps/gen/utils/grampslocale.py:808 msgid "the family" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:808 +#: ../gramps/gen/utils/grampslocale.py:810 msgid "the place" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:810 +#: ../gramps/gen/utils/grampslocale.py:812 msgid "the event" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:812 +#: ../gramps/gen/utils/grampslocale.py:814 msgid "the repository" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:814 +#: ../gramps/gen/utils/grampslocale.py:816 msgid "the note" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:816 +#: ../gramps/gen/utils/grampslocale.py:818 msgid "the media" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:818 +#: ../gramps/gen/utils/grampslocale.py:820 msgid "the source" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:820 +#: ../gramps/gen/utils/grampslocale.py:822 msgid "the filter" msgstr "" -#: ../gramps/gen/utils/grampslocale.py:822 +#: ../gramps/gen/utils/grampslocale.py:824 msgid "See details" msgstr "" diff --git a/po/ru.po b/po/ru.po index d2f0b6bcd..99fa85ff2 100644 --- a/po/ru.po +++ b/po/ru.po @@ -890,6 +890,197 @@ msgstr "" msgid "Date displayer for '%s' not available, using default" msgstr "" +#. TRANSLATORS: see +#. http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates +#. to learn how to select proper inflection for your language. +#: ../gramps/gen/datehandler/_datedisplay.py:251 +#: ../gramps/gen/datehandler/_datedisplay.py:278 +msgid "{long_month} {year}" +msgstr "{long_month} {year}" + +#. TRANSLATORS: see +#. http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates +#. to learn how to select proper inflection for your language. +#: ../gramps/gen/datehandler/_datedisplay.py:258 +msgid "{long_month} {day:d}, {year}" +msgstr "{long_month[Р]} {day:d}, {year}" + +#. TRANSLATORS: see +#. http://gramps-project.org/wiki/index.php?title=Translating_Gramps#Translating_dates +#. to learn how to select proper inflection for your language. +#: ../gramps/gen/datehandler/_datedisplay.py:285 +msgid "{day:d} {long_month} {year}" +msgstr "{day:d} {long_month[Р]} {year}" + +#. 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! +#: ../gramps/gen/datehandler/_datestrings.py:53 +msgid "localized lexeme inflections||January" +msgstr "И=январь|Р=января|Т=январём" + +#: ../gramps/gen/datehandler/_datestrings.py:54 +msgid "localized lexeme inflections||February" +msgstr "И=февраль|Р=февраля|Т=февралём" + +#: ../gramps/gen/datehandler/_datestrings.py:55 +msgid "localized lexeme inflections||March" +msgstr "И=март|Р=марта|Т=мартом" + +#: ../gramps/gen/datehandler/_datestrings.py:56 +msgid "localized lexeme inflections||April" +msgstr "И=апрель|Р=апреля|Т=апрелем" + +#: ../gramps/gen/datehandler/_datestrings.py:57 +msgid "localized lexeme inflections||May" +msgstr "И=май|Р=мая|Т=маем" + +#: ../gramps/gen/datehandler/_datestrings.py:58 +msgid "localized lexeme inflections||June" +msgstr "И=июнь|Р=июня|Т=июнем" + +#: ../gramps/gen/datehandler/_datestrings.py:59 +msgid "localized lexeme inflections||July" +msgstr "И=июль|Р=июля|Т=июлем" + +#: ../gramps/gen/datehandler/_datestrings.py:60 +msgid "localized lexeme inflections||August" +msgstr "И=август|Р=августа|Т=августом" + +#: ../gramps/gen/datehandler/_datestrings.py:61 +msgid "localized lexeme inflections||September" +msgstr "И=сентябрь|Р=сентября|Т=сентябрём" + +#: ../gramps/gen/datehandler/_datestrings.py:62 +msgid "localized lexeme inflections||October" +msgstr "И=октябрь|Р=октября|Т=октябрём" + +#: ../gramps/gen/datehandler/_datestrings.py:63 +msgid "localized lexeme inflections||November" +msgstr "И=ноябрь|Р=ноября|Т=ноябрём" + +#: ../gramps/gen/datehandler/_datestrings.py:64 +msgid "localized lexeme inflections||December" +msgstr "И=декабрь|Р=декабря|Т=декабрём" + +#. 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! +#: ../gramps/gen/datehandler/_datestrings.py:71 +msgid "localized lexeme inflections - short month form||Jan" +msgstr "И=янв|Р=янв|Т=янв" + +#: ../gramps/gen/datehandler/_datestrings.py:72 +msgid "localized lexeme inflections - short month form||Feb" +msgstr "И=фев|Р=фев|Т=фев" + +#: ../gramps/gen/datehandler/_datestrings.py:73 +msgid "localized lexeme inflections - short month form||Mar" +msgstr "И=мар|Р=мар|Т=мар" + +#: ../gramps/gen/datehandler/_datestrings.py:74 +msgid "localized lexeme inflections - short month form||Apr" +msgstr "И=апр|Р=апр|Т=апр" + +#: ../gramps/gen/datehandler/_datestrings.py:75 +msgid "localized lexeme inflections - short month form||May" +msgstr "И=май|Р=мая|Т=маем" + +#: ../gramps/gen/datehandler/_datestrings.py:76 +msgid "localized lexeme inflections - short month form||Jun" +msgstr "И=июн|Р=июн|Т=июн" + +#: ../gramps/gen/datehandler/_datestrings.py:77 +msgid "localized lexeme inflections - short month form||Jul" +msgstr "И=июл|Р=июл|Т=июл" + +#: ../gramps/gen/datehandler/_datestrings.py:78 +msgid "localized lexeme inflections - short month form||Aug" +msgstr "И=авг|Р=авг|Т=авг" + +#: ../gramps/gen/datehandler/_datestrings.py:79 +msgid "localized lexeme inflections - short month form||Sep" +msgstr "И=сен|Р=сен|Т=сен" + +#: ../gramps/gen/datehandler/_datestrings.py:80 +msgid "localized lexeme inflections - short month form||Oct" +msgstr "И=окт|Р=окт|Т=окт" + +#: ../gramps/gen/datehandler/_datestrings.py:81 +msgid "localized lexeme inflections - short month form||Nov" +msgstr "И=ноя|Р=ноя|Т=ноя" + +#: ../gramps/gen/datehandler/_datestrings.py:82 +msgid "localized lexeme inflections - short month form||Dec" +msgstr "И=дек|Р=дек|Т=дек" + +#. 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! +#: ../gramps/gen/datehandler/_datestrings.py:90 +#, fuzzy +msgid "alternative month names for January||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:91 +#, fuzzy +msgid "alternative month names for February||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:92 +#, fuzzy +msgid "alternative month names for March||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:93 +#, fuzzy +msgid "alternative month names for April||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:94 +#, fuzzy +msgid "alternative month names for May||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:95 +#, fuzzy +msgid "alternative month names for June||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:96 +#, fuzzy +msgid "alternative month names for July||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:97 +#, fuzzy +msgid "alternative month names for August||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:98 +#, fuzzy +msgid "alternative month names for September||" +msgstr "сентября" + +#: ../gramps/gen/datehandler/_datestrings.py:99 +#, fuzzy +msgid "alternative month names for October||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:100 +#, fuzzy +msgid "alternative month names for November||" +msgstr "Альтернативные имена" + +#: ../gramps/gen/datehandler/_datestrings.py:101 +#, fuzzy +msgid "alternative month names for December||" +msgstr "Альтернативные имена" + + #: ../gramps/gen/db/base.py:1624 msgid "Add child to family" msgstr "Добавить ребёнка в семью"