build¶
動作
sphinx.locale.__init__.py
sphinx.util.i18n.CatalogRepository
sphinx.application.Sphinx
mo
ファイルの更新
gettext の msgfmt コマンドを使い、バイナリ形式で効率良い バイナリカタログ
def compile_catalogs(self, catalogs: Set[CatalogInfo], message: str) -> None:
if not self.config.gettext_auto_build:
return
def cat2relpath(cat: CatalogInfo) -> str:
return relpath(cat.mo_path, self.env.srcdir).replace(path.sep, SEP)
logger.info(bold(__('building [mo]: ')) + message)
for catalog in status_iterator(catalogs, __('writing output... '), "darkgreen",
len(catalogs), self.app.verbosity,
stringify_func=cat2relpath):
catalog.write_mo(self.config.language,
self.config.gettext_allow_fuzzy_translations)
sphinx.transforms.i18n¶
read phase に
sphinx.transforms.i18n.Locale
により翻訳を適用している?
sphinx.io.SphinxI18nReader
def setup(app: "Sphinx") -> Dict[str, Any]:
app.add_transform(PreserveTranslatableMessages)
app.add_transform(Locale) # 👈 これ
app.add_transform(RemoveTranslatableInline)
return {
'version': 'builtin',
'parallel_read_safe': True,
'parallel_write_safe': True,
}