diff options
Diffstat (limited to 'sphinx/application.py')
-rw-r--r-- | sphinx/application.py | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/sphinx/application.py b/sphinx/application.py index a833816f1..e82719d77 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -44,6 +44,7 @@ from sphinx.util.osutil import ENOENT from sphinx.util.logging import is_suppressed_warning from sphinx.util.console import bold, lightgray, darkgray, darkgreen, \ term_width_line +from sphinx.util.i18n import find_catalog_source_files if hasattr(sys, 'intern'): intern = sys.intern @@ -207,13 +208,17 @@ class Sphinx(object): if self.config.language is not None: self.info(bold('loading translations [%s]... ' % self.config.language), nonl=True) - locale_dirs = [None, path.join(package_dir, 'locale')] + \ - [path.join(self.srcdir, x) for x in self.config.locale_dirs] + user_locale_dirs = [ + path.join(self.srcdir, x) for x in self.config.locale_dirs] + # compile mo files if sphinx.po file in user locale directories are updated + for catinfo in find_catalog_source_files( + user_locale_dirs, self.config.language, domains=['sphinx'], + charset=self.config.source_encoding): + catinfo.write_mo(self.config.language) + locale_dirs = [None, path.join(package_dir, 'locale')] + user_locale_dirs else: locale_dirs = [] - self.translator, has_translation = locale.init(locale_dirs, - self.config.language, - charset=self.config.source_encoding) + self.translator, has_translation = locale.init(locale_dirs, self.config.language) if self.config.language is not None: if has_translation or self.config.language == 'en': # "en" never needs to be translated |