summaryrefslogtreecommitdiff
path: root/sphinx/application.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/application.py')
-rw-r--r--sphinx/application.py15
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