# figure out the language
available_languages = ['ar', 'ca', 'da', 'de', 'en-US', 'es-ES', 'fa', 'fr', 'ga-IE', 'he', 'id', 'is', 'it', 'ja', 'ko', 'nb-NO', 'nl', 'pl', 'pt-BR', 'ru', 'sv-SE', 'tr', 'vi', 'zh-CN', 'zh-TW']
+
+ # a list of manually configured language fallback overriding
+ language_overrides = {
+ 'zh-HK': 'zh-TW',
+ }
+
default_locale = locale.getlocale()[0]
if default_locale is None:
self.language = 'en-US'
else:
self.language = default_locale.replace('_', '-')
+ if self.language in language_overrides:
+ self.language = language_overrides[self.language]
if self.language not in available_languages:
self.language = self.language.split('-')[0]
if self.language not in available_languages:
if self.language not in available_languages:
self.language = 'en-US'
+ # get value of environment variable, if it is not set return the default value
+ @staticmethod
+ def get_env(var_name, default_value):
+ value = os.getenv(var_name)
+ if not value:
+ value = default_value
+ return value
+
# build all relevant paths
def build_paths(self, tbb_version=None):
homedir = os.getenv('HOME')
if not os.access(homedir, os.W_OK):
self.set_gui('error', _("{0} is not writable").format(homedir), [], False)
- tbb_config = '{0}/.config/torbrowser'.format(homedir)
- tbb_cache = '{0}/.cache/torbrowser'.format(homedir)
- tbb_local = '{0}/.local/share/torbrowser'.format(homedir)
+ tbb_config = '{0}/torbrowser'.format(self.get_env('XDG_CONFIG_HOME', '{0}/.config'.format(homedir)))
+ tbb_cache = '{0}/torbrowser'.format(self.get_env('XDG_CACHE_HOME', '{0}/.cache'.format(homedir)))
+ tbb_local = '{0}/torbrowser'.format(self.get_env('XDG_DATA_HOME', '{0}/.local/share'.format(homedir)))
old_tbb_data = '{0}/.torbrowser'.format(homedir)
if tbb_version:
'tbl_bin': sys.argv[0],
'icon_file': os.path.join(os.path.dirname(SHARE), 'pixmaps/torbrowser.png'),
'torproject_pem': os.path.join(SHARE, 'torproject.pem'),
- 'keyserver_ca': os.path.join(SHARE, 'sks-keyservers.netCA.pem'),
'signing_keys': {
'tor_browser_developers': os.path.join(SHARE, 'tor-browser-developers.asc')
},
p = subprocess.Popen(['/usr/bin/gpg2', '--status-fd', '2',
'--homedir', self.paths['gnupg_homedir'],
- '--keyserver', 'hkps://hkps.pool.sks-keyservers.net',
- '--keyserver-options', 'ca-cert-file=' + self.paths['keyserver_ca']
- + ',include-revoked,no-honor-keyserver-url,no-honor-pka-record',
+ '--keyserver', 'hkps://keys.openpgp.org',
'--refresh-keys'], stderr=subprocess.PIPE)
p.wait()