GrampsLocale: Integrate libtranslate functions into GrampsLocale
And remove libtranslate svn: r21967
This commit is contained in:
parent
665206df85
commit
56254d4a14
@ -28,7 +28,7 @@
|
|||||||
# Report
|
# Report
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from gramps.plugins.lib.libtranslate import Translator
|
from gramps.gen.utils.grampslocale import GrampsLocale
|
||||||
|
|
||||||
class Report(object):
|
class Report(object):
|
||||||
"""
|
"""
|
||||||
@ -56,18 +56,18 @@ class Report(object):
|
|||||||
def begin_report(self):
|
def begin_report(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def set_translation(self, language):
|
def set_locale(self, language):
|
||||||
"""
|
"""
|
||||||
Set the translator to one selected with
|
Set the translator to one selected with
|
||||||
stdoptions.add_localization_option().
|
stdoptions.add_localization_option().
|
||||||
"""
|
"""
|
||||||
if not language:
|
if language == GrampsLocale.DEFAULT_TRANSLATION_STR:
|
||||||
return
|
language = None
|
||||||
trans = Translator(lang=language)
|
locale = GrampsLocale(lang=language)
|
||||||
self._ = trans.gettext
|
self._ = locale.translation.gettext
|
||||||
self.__get_date = trans.get_date
|
self.__get_date = locale.get_date
|
||||||
self.__get_type = trans.get_type
|
self.__get_type = locale.get_type
|
||||||
return trans
|
return locale
|
||||||
|
|
||||||
def write_report(self):
|
def write_report(self):
|
||||||
pass
|
pass
|
||||||
|
@ -477,9 +477,6 @@ class GrampsLocale(object):
|
|||||||
else:
|
else:
|
||||||
self._init_secondary_locale()
|
self._init_secondary_locale()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
self.icu_locales = {}
|
self.icu_locales = {}
|
||||||
self.collator = None
|
self.collator = None
|
||||||
if HAVE_ICU:
|
if HAVE_ICU:
|
||||||
@ -496,14 +493,15 @@ class GrampsLocale(object):
|
|||||||
|
|
||||||
self.translation = self._get_translation(self.localedomain,
|
self.translation = self._get_translation(self.localedomain,
|
||||||
self.localedir, self.language)
|
self.localedir, self.language)
|
||||||
|
# This is a no-op for secondaries but needs the translation
|
||||||
|
# set, so it needs to be here.
|
||||||
self._set_dictionaries()
|
self._set_dictionaries()
|
||||||
|
|
||||||
|
|
||||||
if _hdlr:
|
if _hdlr:
|
||||||
LOG.removeHandler(_hdlr)
|
LOG.removeHandler(_hdlr)
|
||||||
|
|
||||||
self._dd = self._dp = None
|
self._dd = self._dp = None
|
||||||
|
#Guards against running twice on the first instance.
|
||||||
self.initialized = True
|
self.initialized = True
|
||||||
|
|
||||||
def _get_translation(self, domain = None,
|
def _get_translation(self, domain = None,
|
||||||
|
@ -42,7 +42,7 @@ from gramps.gen.lib.familyreltype import FamilyRelType
|
|||||||
from gramps.gen.display.name import displayer as _nd
|
from gramps.gen.display.name import displayer as _nd
|
||||||
from gramps.gen.utils.alive import probably_alive
|
from gramps.gen.utils.alive import probably_alive
|
||||||
from gramps.gen.plug.report import utils as ReportUtils
|
from gramps.gen.plug.report import utils as ReportUtils
|
||||||
from gramps.plugins.lib.libtranslate import Translator
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -1349,7 +1349,7 @@ class Narrator(object):
|
|||||||
|
|
||||||
def __init__(self, dbase, verbose=True, use_call_name=False,use_fulldate=False,
|
def __init__(self, dbase, verbose=True, use_call_name=False,use_fulldate=False,
|
||||||
empty_date="", empty_place="",
|
empty_date="", empty_place="",
|
||||||
translator=None,
|
locale=None,
|
||||||
get_endnote_numbers=_get_empty_endnote_numbers):
|
get_endnote_numbers=_get_empty_endnote_numbers):
|
||||||
"""
|
"""
|
||||||
Initialize the narrator class.
|
Initialize the narrator class.
|
||||||
@ -1386,12 +1386,11 @@ class Narrator(object):
|
|||||||
self.__person = None
|
self.__person = None
|
||||||
self.__first_name = ""
|
self.__first_name = ""
|
||||||
self.__first_name_used = False
|
self.__first_name_used = False
|
||||||
|
|
||||||
if translator is None:
|
if locale is None:
|
||||||
translator = Translator(Translator.DEFAULT_TRANSLATION_STR)
|
locale = glocale
|
||||||
|
self.__translate_text = locale.translation.gettext
|
||||||
self.__translate_text = translator.gettext
|
self.__get_date = locale.get_date
|
||||||
self.__get_date = translator.get_date
|
|
||||||
|
|
||||||
def set_subject(self, person):
|
def set_subject(self, person):
|
||||||
"""
|
"""
|
||||||
|
@ -198,23 +198,6 @@ authors = ["The Gramps project"],
|
|||||||
authors_email = ["http://gramps-project.org"],
|
authors_email = ["http://gramps-project.org"],
|
||||||
)
|
)
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# libtranslate
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
register(GENERAL,
|
|
||||||
id = 'libtranslate',
|
|
||||||
name = "translation lib",
|
|
||||||
description = _("Provides Textual Translation.") ,
|
|
||||||
version = '1.0',
|
|
||||||
gramps_target_version = '4.1',
|
|
||||||
status = STABLE,
|
|
||||||
fname = 'libtranslate.py',
|
|
||||||
authors = ["Brian Matherly"],
|
|
||||||
authors_email = ["brian@gramps-project.org"],
|
|
||||||
)
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
#------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# libpersonview
|
# libpersonview
|
||||||
|
@ -1,166 +0,0 @@
|
|||||||
#
|
|
||||||
# Gramps - a GTK+/GNOME based genealogy program
|
|
||||||
#
|
|
||||||
# Copyright (C) 2009 Brian G. Matherly
|
|
||||||
#
|
|
||||||
# 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$
|
|
||||||
|
|
||||||
"""
|
|
||||||
Translator class for use by plugins.
|
|
||||||
"""
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# python modules
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# GRAMPS modules
|
|
||||||
#
|
|
||||||
#------------------------------------------------------------------------
|
|
||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
|
||||||
_ = glocale.get_translation().gettext
|
|
||||||
from gramps.gen.datehandler import displayer, LANG_TO_DISPLAY
|
|
||||||
from gramps.gen.config import config
|
|
||||||
from gramps.gen.lib.grampstype import GrampsType
|
|
||||||
from gramps.gen.constfunc import cuni
|
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# Translator
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
class Translator(object):
|
|
||||||
"""
|
|
||||||
This class provides translated strings for the configured language.
|
|
||||||
"""
|
|
||||||
DEFAULT_TRANSLATION_STR = "default"
|
|
||||||
|
|
||||||
def __init__(self, lang=DEFAULT_TRANSLATION_STR):
|
|
||||||
"""
|
|
||||||
:param lang: The language to translate to.
|
|
||||||
The language can be:
|
|
||||||
* The name of any installed .mo file
|
|
||||||
* "en" to use the message strings in the code
|
|
||||||
* "default" to use the default translation being used by gettext.
|
|
||||||
:type lang: string
|
|
||||||
:return: nothing
|
|
||||||
|
|
||||||
"""
|
|
||||||
if lang == Translator.DEFAULT_TRANSLATION_STR:
|
|
||||||
self.__trans = glocale.get_translation()
|
|
||||||
self.__dd = displayer
|
|
||||||
else:
|
|
||||||
# If lang isn't supported, this will fallback to the
|
|
||||||
# current global language
|
|
||||||
self.__trans = glocale.get_translation(languages=[lang])
|
|
||||||
val = config.get('preferences.date-format')
|
|
||||||
if lang in LANG_TO_DISPLAY:
|
|
||||||
self.__dd = LANG_TO_DISPLAY[lang](val)
|
|
||||||
else:
|
|
||||||
self.__dd = displayer
|
|
||||||
|
|
||||||
def gettext(self, message):
|
|
||||||
"""
|
|
||||||
Return the unicode translated string.
|
|
||||||
|
|
||||||
:param message: The message to be translated.
|
|
||||||
:type message: string
|
|
||||||
:returns: The translated message
|
|
||||||
:rtype: unicode
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self.__trans.gettext(message)
|
|
||||||
|
|
||||||
def ngettext(self, singular, plural, n):
|
|
||||||
"""
|
|
||||||
Return the unicode translated singular/plural string.
|
|
||||||
|
|
||||||
The translation of singular/plural is returned unless the translation is
|
|
||||||
not available and the singular contains the separator. In that case,
|
|
||||||
the returned value is the portion of singular following the last
|
|
||||||
separator. Default separator is '|'.
|
|
||||||
|
|
||||||
:param singular: The singular form of the string to be translated.
|
|
||||||
may contain a context separator
|
|
||||||
:type singular: unicode
|
|
||||||
:param plural: The plural form of the string to be translated.
|
|
||||||
:type plural: unicode
|
|
||||||
:param n: the amount for which to decide the translation
|
|
||||||
:type n: int
|
|
||||||
:returns: The translated singular/plural message
|
|
||||||
:rtype: unicode
|
|
||||||
|
|
||||||
"""
|
|
||||||
return self.__trans.ngettext(singular, plural, n)
|
|
||||||
|
|
||||||
def sgettext(self, msgid, sep='|'):
|
|
||||||
"""
|
|
||||||
Strip the context used for resolving translation ambiguities.
|
|
||||||
|
|
||||||
The translation of msgid is returned unless the translation is
|
|
||||||
not available and the msgid contains the separator. In that case,
|
|
||||||
the returned value is the portion of msgid following the last
|
|
||||||
separator. Default separator is '|'.
|
|
||||||
|
|
||||||
:param msgid: The string to translated.
|
|
||||||
:type msgid: unicode
|
|
||||||
:param sep: The separator marking the context.
|
|
||||||
:type sep: unicode
|
|
||||||
:returns: Translation or the original with context stripped.
|
|
||||||
:rtype: unicode
|
|
||||||
|
|
||||||
"""
|
|
||||||
try:
|
|
||||||
return self.__trans.sgettext(msgid)
|
|
||||||
except AttributeError:
|
|
||||||
return self.__trans.gettext(msgid)
|
|
||||||
|
|
||||||
def get_date(self, date):
|
|
||||||
"""
|
|
||||||
Return a string representing the date appropriate for the language being
|
|
||||||
translated.
|
|
||||||
|
|
||||||
:param date: The date to be represented.
|
|
||||||
:type date: :class:`~gen.lib.date.Date`
|
|
||||||
:returns: The date as text in the proper language.
|
|
||||||
:rtype: unicode
|
|
||||||
"""
|
|
||||||
return self.__dd.display(date)
|
|
||||||
|
|
||||||
def get_type(self, name):
|
|
||||||
"""
|
|
||||||
Return a string representing the name appropriate for the language being
|
|
||||||
translated.
|
|
||||||
|
|
||||||
:param name: The name type to be represented.
|
|
||||||
:returns: The name as text in the proper language.
|
|
||||||
:rtype: unicode
|
|
||||||
"""
|
|
||||||
return GrampsType.xml_str(name)
|
|
||||||
|
|
||||||
# List of translated strings used here
|
|
||||||
# Dead code for l10n; added on translation template
|
|
||||||
# Translation string should be same as key name
|
|
||||||
# ex: AttributeType
|
|
||||||
#(FATHER_AGE , _("Father's Age"), "Father Age"),
|
|
||||||
#(MOTHER_AGE , _("Mother's Age"), "Mother Age"),
|
|
||||||
_("Father Age"), _("Mother Age")
|
|
@ -113,9 +113,9 @@ class AncestorReport(Report):
|
|||||||
self._name_display.set_default_format(name_format)
|
self._name_display.set_default_format(name_format)
|
||||||
|
|
||||||
lang = menu.get_option_by_name('trans').get_value()
|
lang = menu.get_option_by_name('trans').get_value()
|
||||||
translator = self.set_translation(lang)
|
locale = self.set_locale(lang)
|
||||||
self.__narrator = Narrator(self.database, use_fulldate=True,
|
self.__narrator = Narrator(self.database, use_fulldate=True,
|
||||||
translator=translator)
|
locale=locale)
|
||||||
|
|
||||||
def apply_filter(self, person_handle, index, generation=1):
|
def apply_filter(self, person_handle, index, generation=1):
|
||||||
"""
|
"""
|
||||||
|
@ -159,10 +159,10 @@ class DetAncestorReport(Report):
|
|||||||
empty_place = ""
|
empty_place = ""
|
||||||
|
|
||||||
lang = menu.get_option_by_name('trans').get_value()
|
lang = menu.get_option_by_name('trans').get_value()
|
||||||
translator = self.set_translation(lang)
|
locale = self.set_locale(lang)
|
||||||
self.__narrator = Narrator(self.database, self.verbose, use_call,
|
self.__narrator = Narrator(self.database, self.verbose, use_call,
|
||||||
use_fulldate, empty_date, empty_place,
|
use_fulldate, empty_date, empty_place,
|
||||||
translator=translator,
|
locale=locale,
|
||||||
get_endnote_numbers=self.endnotes)
|
get_endnote_numbers=self.endnotes)
|
||||||
|
|
||||||
self.bibli = Bibliography(Bibliography.MODE_DATE|Bibliography.MODE_PAGE)
|
self.bibli = Bibliography(Bibliography.MODE_DATE|Bibliography.MODE_PAGE)
|
||||||
|
@ -180,11 +180,11 @@ class DetDescendantReport(Report):
|
|||||||
if name_format != 0:
|
if name_format != 0:
|
||||||
self._name_display.set_default_format(name_format)
|
self._name_display.set_default_format(name_format)
|
||||||
|
|
||||||
translator = self.set_translation(get_value('trans'))
|
locale = self.set_locale(get_value('trans'))
|
||||||
self.__narrator = Narrator(self.database, self.verbose,
|
self.__narrator = Narrator(self.database, self.verbose,
|
||||||
use_call, use_fulldate,
|
use_call, use_fulldate,
|
||||||
empty_date, empty_place,
|
empty_date, empty_place,
|
||||||
translator=translator,
|
locale=locale,
|
||||||
get_endnote_numbers=self.endnotes)
|
get_endnote_numbers=self.endnotes)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user