Source code for summer.l10n

# Copyright (C) 2009-2016 Martin Slouf <martin.slouf@sourceforge.net>
#
# This file is a part of Summer.
#
# Summer is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 3 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 Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser 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
"""Based on *Python*'s :py:mod:`gettext` module."""

import gettext
import logging

from .ex import SummerConfigurationException

logger = logging.getLogger(__name__)


[docs]class Localization(object): """Provides localization (l10n) services. If instance is provided to :py:class:`summer.context.Context`, context will load all the defined languages and will install :py:func:`gettext._` function into global namespace. """
[docs] def __init__(self, domain: str, l10n_dir: str, languages: list): """Creates :py:class:`Localization` instance. Args: domain: gettext domain l10n_dir: directory path for gettext compiled data languages: list of supported languages """ self.domain = domain self.l10n_dir = l10n_dir self.languages = languages
[docs] def init(self): """Installs defined languages.""" try: self.lang = gettext.translation(self.domain, self.l10n_dir, self.languages) self.lang.install() logger.info("l10n installed with lang %s", self.lang) except Exception as ex: msg = "l10n not installed, check your settings, ex == %s" % (ex,) raise SummerConfigurationException(msg)