[options/utils] Add --default-language

This commit is contained in:
Yen Chi Hsuan 2015-12-13 05:00:26 +08:00
parent 7969009f00
commit 7da2b9e3bc
3 changed files with 42 additions and 20 deletions

View File

@ -27,6 +27,7 @@ from .utils import (
decodeOption,
DEFAULT_OUTTMPL,
DownloadError,
i18n_service,
match_filter_func,
MaxDownloadsReached,
preferredencoding,
@ -56,6 +57,9 @@ def _real_main(argv=None):
parser, opts, args = parseOpts(argv)
if opts.default_language is not None:
i18n_service.set_default_language(opts.default_language)
# Set user agent
if opts.user_agent is not None:
std_headers['User-Agent'] = opts.user_agent

View File

@ -175,6 +175,10 @@ def parseOpts(overrideArguments=None):
action='store_true', dest='no_color',
default=False,
help='Do not emit color codes in output')
general.add_option(
'--default-language',
dest='default_language', metavar='LANG_CODE',
help='Specify the default user interface language. Language codes should correspond to RFC 1766 standard, such as en_US or zh_TW.UTF-8. Default is en_US.')
network = optparse.OptionGroup(parser, 'Network Options')
network.add_option(

View File

@ -2527,11 +2527,19 @@ def _load_exe_resource(res_type, res_name):
return res_arr
def tr(s):
DOMAIN = 'youtube_dl'
class I18N(object):
def __init__(self):
self.default_lang = None
self.domain = 'youtube_dl'
def translate(self, s):
if self.default_lang is not None:
lang = self.default_lang
else:
lang, _ = locale.getdefaultlocale()
try:
t = gettext.translation(DOMAIN, find_file_in_root('share/locale/'), [lang])
t = gettext.translation(self.domain, find_file_in_root('share/locale/'), [lang])
except (OSError, IOError): # OSError for 3.3+ and IOError otherwise
t = None
@ -2539,7 +2547,7 @@ def tr(s):
locale_data_zip = _load_exe_resource('LOCALE_DATA', 'LOCALE_DATA.ZIP')
f = io.BytesIO(locale_data_zip)
zipf = zipfile.ZipFile(f)
with zipf.open('share/locale/%s/LC_MESSAGES/%s.mo' % (lang, DOMAIN)) as mo_file:
with zipf.open('share/locale/%s/LC_MESSAGES/%s.mo' % (lang, self.domain)) as mo_file:
t = gettext.GNUTranslations(mo_file)
zipf.close()
@ -2551,6 +2559,12 @@ def tr(s):
ret = ret.decode('utf-8')
return ret
def set_default_language(self, default_lang):
self.default_lang = default_lang
i18n_service = I18N()
tr = i18n_service.translate
def get_root_dirs():
ret = []