From b67d69d2996da1a3bcde0dedc1f487aa263fb304 Mon Sep 17 00:00:00 2001 From: Benny Malengier Date: Wed, 10 Oct 2007 19:38:47 +0000 Subject: [PATCH] 2007-10-10 Duarte Loreto * src/DateHandler/_Date_pt.py: portugese datehandler accompanying translation * po/POTFILES.in: new file in POTFILE * src/DateHandler/Makefile.am: add new file for distribution svn: r9130 --- ChangeLog | 5 ++ po/POTFILES.in | 2 + src/DateHandler/Makefile.am | 1 + src/DateHandler/_Date_pt.py | 161 ++++++++++++++++++++++++++++++++++++ 4 files changed, 169 insertions(+) create mode 100644 src/DateHandler/_Date_pt.py diff --git a/ChangeLog b/ChangeLog index 1f3c4a62c..0ffedf764 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-10 Duarte Loreto + * src/DateHandler/_Date_pt.py: portugese datehandler accompanying translation + * po/POTFILES.in: new file in POTFILE + * src/DateHandler/Makefile.am: add new file for distribution + 2007-10-09 Don Allingham * src/GrampsDb/Makefile.am: update * src/gen/db/Makefile.am: update diff --git a/po/POTFILES.in b/po/POTFILES.in index e5b1e71cd..0fcd3e40a 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -90,6 +90,8 @@ src/DateHandler/_Date_fr.py src/DateHandler/_DateHandler.py src/DateHandler/_Date_lt.py src/DateHandler/_Date_nl.py +src/DateHandler/_Date_pl.py +src/DateHandler/_Date_pt.py src/DateHandler/_DateParser.py src/DateHandler/_Date_ru.py src/DateHandler/_Date_sk.py diff --git a/src/DateHandler/Makefile.am b/src/DateHandler/Makefile.am index 4ab6b17a1..c115ee2bb 100644 --- a/src/DateHandler/Makefile.am +++ b/src/DateHandler/Makefile.am @@ -16,6 +16,7 @@ pkgdata_PYTHON = \ _Date_nl.py\ _Date_sk.py\ _Date_pl.py\ + _Date_pt.py\ _DateDisplay.py\ _DateParser.py\ _DateHandler.py\ diff --git a/src/DateHandler/_Date_pt.py b/src/DateHandler/_Date_pt.py new file mode 100644 index 000000000..ac94adcca --- /dev/null +++ b/src/DateHandler/_Date_pt.py @@ -0,0 +1,161 @@ +# -*- coding: utf-8 -*- +# +# Gramps - a GTK+/GNOME based genealogy program +# +# Copyright (C) 2004-2006 Donald N. Allingham +# +# 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 +# +# Portuguese version translated by Duarte Loreto , 2007. +# Based on the Spanish file. + +# $Id: _Date_es.py 6504 2006-05-01 21:11:26Z rshura $ + +""" +Portuguese-specific classes for parsing and displaying dates. +""" + +#------------------------------------------------------------------------- +# +# Python modules +# +#------------------------------------------------------------------------- +import re + +#------------------------------------------------------------------------- +# +# GRAMPS modules +# +#------------------------------------------------------------------------- +from gen.lib import Date +from _DateParser import DateParser +from _DateDisplay import DateDisplay +from _DateHandler import register_datehandler + +#------------------------------------------------------------------------- +# +# Portuguese parser +# +#------------------------------------------------------------------------- +class DateParserPT(DateParser): + + modifier_to_int = { + u'antes de' : Date.MOD_BEFORE, + u'antes' : Date.MOD_BEFORE, + u'ant.' : Date.MOD_BEFORE, + u'ant' : Date.MOD_BEFORE, + u'após' : Date.MOD_AFTER, + u'aprox.' : Date.MOD_ABOUT, + u'aprox' : Date.MOD_ABOUT, + u'apr.' : Date.MOD_ABOUT, + u'apr' : Date.MOD_ABOUT, + u'cerca de' : Date.MOD_ABOUT, + u'ca.' : Date.MOD_ABOUT, + u'ca' : Date.MOD_ABOUT, + u'c.' : Date.MOD_ABOUT, + u'até' : Date.MOD_ABOUT, + } + + calendar_to_int = { + u'gregoriano' : Date.CAL_GREGORIAN, + u'g' : Date.CAL_GREGORIAN, + u'juliano' : Date.CAL_JULIAN, + u'j' : Date.CAL_JULIAN, + u'hebreu' : Date.CAL_HEBREW, + u'h' : Date.CAL_HEBREW, + u'islâmico' : Date.CAL_ISLAMIC, + u'i' : Date.CAL_ISLAMIC, + u'revolucionário' : Date.CAL_FRENCH, + u'r' : Date.CAL_FRENCH, + u'persa' : Date.CAL_PERSIAN, + u'p' : Date.CAL_PERSIAN, + } + + quality_to_int = { + u'estimado' : Date.QUAL_ESTIMATED, + u'est.' : Date.QUAL_ESTIMATED, + u'est' : Date.QUAL_ESTIMATED, + u'calc.' : Date.QUAL_CALCULATED, + u'calc' : Date.QUAL_CALCULATED, + u'calculado' : Date.QUAL_CALCULATED, + } + + def init_strings(self): + DateParser.init_strings(self) + _span_1 = [u'de'] + _span_2 = [u'a'] + _range_1 = [u'entre',u'ent\.',u'ent'] + _range_2 = [u'e'] + self._span = re.compile("(%s)\s+(?P.+)\s+(%s)\s+(?P.+)" % + ('|'.join(_span_1),'|'.join(_span_2)), + re.IGNORECASE) + self._range = re.compile("(%s)\s+(?P.+)\s+(%s)\s+(?P.+)" % + ('|'.join(_range_1),'|'.join(_range_2)), + re.IGNORECASE) + +#------------------------------------------------------------------------- +# +# Portuguese display +# +#------------------------------------------------------------------------- +class DateDisplayPT(DateDisplay): + + calendar = ( + "", u" (Juliano)", u" (Hebreu)", + u" (Revolucionário)", u" (Persa)", u" (Islâmico)" + ) + + _mod_str = ("",u"antes de ",u"depois de ",u"até ","","","") + + _qual_str = ("","estimado ","calculado ") + + formats = ( + "AAAA-MM-DD (ISO)", "Numérica", "Mês Dia, Ano", + "MÊS Dia, Ano", "Dia Mês, Ano", "Dia MÊS, Ano" + ) + + def display(self,date): + """ + Returns a text string representing the date. + """ + mod = date.get_modifier() + cal = date.get_calendar() + qual = date.get_quality() + start = date.get_start_date() + + qual_str = self._qual_str[qual] + + if mod == Date.MOD_TEXTONLY: + return date.get_text() + elif start == Date.EMPTY: + return "" + elif mod == Date.MOD_SPAN: + d1 = self.display_cal[cal](start) + d2 = self.display_cal[cal](date.get_stop_date()) + return "%s%s %s %s %s%s" % (qual_str, u'de', d1, u'a', d2,self.calendar[cal]) + elif mod == Date.MOD_RANGE: + d1 = self.display_cal[cal](start) + d2 = self.display_cal[cal](date.get_stop_date()) + return "%s%s %s %s %s%s" % (qual_str, u'entre', d1, u'e', d2, self.calendar[cal]) + else: + text = self.display_cal[date.get_calendar()](start) + return "%s%s%s%s" % (qual_str, self._mod_str[mod], text, self.calendar[cal]) + +#------------------------------------------------------------------------- +# +# Register classes +# +#------------------------------------------------------------------------- +register_datehandler(('pt', 'pt_PT', 'pt_PT.UTF-8', 'pt_BR', 'pt_BR.UTF-8', 'pt', 'portuguese'), DateParserPT, DateDisplayPT)