1
0
mirror of https://github.com/webrecorder/pywb.git synced 2025-03-14 15:53:28 +01:00

more locale fixes: (#653)

* more locale fixes:
- fix running wb-manager w/o i18n dependencies
- dependencies: move babel to extra_requires, show warning if locale used or 'wb-manager i18n' called and i18n are not installed
- not found page: don't language switch header banner on nested content frame
This commit is contained in:
Ilya Kreymer 2021-06-18 14:58:21 -07:00 committed by GitHub
parent 3ca765f847
commit cff2a9efc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 33 additions and 11 deletions

View File

@ -3,8 +3,14 @@ pywb 2.6.0b2 changelist
* Update documentation for CDX Server API (by @sebastian-nagel) `#651 <https://github.com/webrecorder/pywb/pull/651>`_
Localization fixes: `#653 <https://github.com/webrecorder/pywb/pull/653>`_
* Ensure banner template is not autoescaped
* Don't show locale switch on not found pages (redundant with banner)
* Ensure wb-manager works when optional i18n dependencies are not installed
pywb 2.6.0b1 changelist
~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -5,4 +5,5 @@ uwsgi
ujson
pysocks
lxml
babel
translate_toolkit

View File

@ -685,7 +685,7 @@ class RewriterApp(object):
return self._error_response(environ, wbe)
def _not_found_response(self, environ, url):
resp = self.not_found_view.render_to_string(environ, url=url)
resp = self.not_found_view.render_to_string(environ, url=url, err_msg="Not Found")
return WbResponse.text_response(resp, status='404 Not Found', content_type='text/html')

View File

@ -442,13 +442,24 @@ Create manage file based web archive collections
acl.set_defaults(func=do_acl)
# LOC
loc_avail = False
try:
from pywb.manager.locmanager import LocManager
loc_avail = True
except:
pass
def do_loc(r):
if not loc_avail:
print("You must install i18n extensions with 'pip install pywb[i18n]' to use localization features")
return
loc = LocManager()
loc.process(r)
loc_help = 'Generate strings for i18n/localization'
loc = subparsers.add_parser('i18n', help=loc_help)
if loc_avail:
LocManager.init_parser(loc)
loc.set_defaults(func=do_loc)

View File

@ -8,8 +8,6 @@ from six.moves.urllib.parse import urlsplit, quote
from jinja2 import Environment, TemplateNotFound, contextfunction, select_autoescape
from jinja2 import FileSystemLoader, PackageLoader, ChoiceLoader
from babel.support import Translations
from webassets.ext.jinja2 import AssetsExtension
from webassets.loaders import YAMLLoader
from webassets.env import Resolver
@ -17,6 +15,7 @@ from webassets.env import Resolver
from pkg_resources import resource_filename
import os
import logging
try:
import ujson as json
@ -128,9 +127,12 @@ class JinjaEnv(object):
self.default_locale = default_locale
if locales_root_dir:
try:
from babel.support import Translations
for loc in locales:
loc_map[loc] = Translations.load(locales_root_dir, [loc, default_locale])
#jinja_env.jinja_env.install_gettext_translations(translations)
except:
logging.warn("Ignoring Locales. You must install i18n extensions with 'pip install pywb[i18n]' to use localization features")
def get_translate(context):
loc = context.get('env', {}).get('pywb_lang', default_locale)

View File

@ -1,5 +1,5 @@
<header>
{% if locales|length > 1 %}
{% if not err_msg and locales|length > 1 %}
<div class="language-select">
{{ _('Language:') }}
<ul role="listbox" aria-activedescendant="{{ env.pywb_lang | default(default_locale) }}" aria-labelledby="{{ _('Language select') }}">

View File

@ -14,5 +14,4 @@ portalocker
wsgiprox>=1.5.1
fakeredis<1.0
tldextract
babel
python-dateutil

View File

@ -108,7 +108,10 @@ setup(
],
install_requires=load_requirements('requirements.txt'),
extras_require={
"i18n": ["translate_toolkit"],
"i18n": [
"babel",
"translate_toolkit"
],
},
tests_require=[
'pytest',