From fbdefe6bcc0a0b36bdcbd53670b3faeccd5a1e93 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 24 Aug 2017 10:52:39 +0530 Subject: [PATCH] Use localized website links in the update notification --- src/calibre/gui2/update.py | 13 +++++++------ src/calibre/utils/localization.py | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/calibre/gui2/update.py b/src/calibre/gui2/update.py index 9ce55d06b3..829e4f9453 100644 --- a/src/calibre/gui2/update.py +++ b/src/calibre/gui2/update.py @@ -12,6 +12,7 @@ from calibre.constants import (__appname__, __version__, iswindows, isosx, isportable, is64bit, numeric_version) from calibre import prints, as_unicode from calibre.utils.config import prefs +from calibre.utils.localization import localize_website_link from calibre.utils.https import get_https_resource_securely from calibre.gui2 import config, dynamic, open_url from calibre.gui2.dialogs.plugin_updater import get_plugin_updates_available @@ -26,7 +27,7 @@ def get_download_url(): else 'osx' if isosx else 'linux') if which == 'windows' and is64bit: which += '64' - return 'https://calibre-ebook.com/download_' + which + return localize_website_link('https://calibre-ebook.com/download_' + which) def get_newest_version(): @@ -114,11 +115,11 @@ class UpdateNotification(QDialog): ver = calibre_version if ver.endswith('.0'): ver = ver[:-2] - self.label = QLabel(('

'+ - _('New version %(ver)s of %(app)s is available for download. ' - 'See the new features.'))%dict( - app=__appname__, ver=ver)) + self.label = QLabel(('

'+ _( + 'New version {ver} of {app} is available for download. ' + 'See the new features.').format( + url=localize_website_link('https://calibre-ebook.com/whats-new'), + app=__appname__, ver=ver))) self.label.setOpenExternalLinks(True) self.label.setWordWrap(True) self.setWindowTitle(_('Update available!')) diff --git a/src/calibre/utils/localization.py b/src/calibre/utils/localization.py index 081cb9b5f0..a601a72824 100644 --- a/src/calibre/utils/localization.py +++ b/src/calibre/utils/localization.py @@ -485,3 +485,27 @@ def localize_user_manual_link(url): parts = list(parts) parts[2] = path return urlunparse(parts) + + +def website_languages(): + stats = getattr(website_languages, 'stats', None) + if stats is None: + try: + stats = frozenset(P('localization/website-languages.txt', allow_user_override=False, data=True).split()) + except EnvironmentError: + stats = frozenset() + website_languages.stats = stats + return stats + + +def localize_website_link(url): + lc = lang_as_iso639_1(get_lang()) + langs = website_languages() + if lc == 'en' or lc not in langs: + return url + from urlparse import urlparse, urlunparse + parts = urlparse(url) + path = '/{}{}'.format(lc, parts.path) + parts = list(parts) + parts[2] = path + return urlunparse(parts)