# Copyright (C) 2016-2023 RhodeCode GmbH # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License, version 3 # (only), as published by the Free Software Foundation. # # 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 Affero General Public License # along with this program. If not, see . # # This program is dual-licensed. If you wish to learn more about the # RhodeCode Enterprise Edition, including its added features, Support services, # and proprietary license terms, please see https://rhodecode.com/licenses/ from translationstring import TranslationString # Create a translation string factory for the 'rhodecode' domain. # This is extracted from pyramid.i18n and uses its code to be gevent safe def TranslationStringFactory(factory_domain): # noqa def create(msgid, mapping=None, default=None, context=None): if isinstance(msgid, TranslationString): domain = msgid.domain or factory_domain else: domain = factory_domain return TranslationString(msgid, domain=domain, default=default, mapping=mapping, context=context) return create _ = TranslationStringFactory('rhodecode') class _LazyString(object): def __init__(self, *args, **kw): self.args = args self.kw = kw self._request = kw.pop('request', None) def _get_request(self): from pyramid.threadlocal import get_current_request return self._request or get_current_request() def eval(self): req = self._get_request() translator = _ if req: translator = req.translate return translator(*self.args, **self.kw) def __str__(self): return self.eval() def __repr__(self): return self.__str__() def __mod__(self, other): return self.eval() % other def format(self, *args): return self.eval().format(*args) def lazy_ugettext(*args, **kw): """ Lazily evaluated version of _() """ return _LazyString(*args, **kw) def _pluralize(msgid1, msgid2, n, mapping=None): if n == 1: return _(msgid1, mapping=mapping) else: return _(msgid2, mapping=mapping)