Skip to content

Commit

Permalink
Move build / sync helpers to i18ntools module.
Browse files Browse the repository at this point in the history
  • Loading branch information
jone committed Feb 6, 2014
1 parent 5dc9225 commit f516dae
Show file tree
Hide file tree
Showing 2 changed files with 71 additions and 67 deletions.
69 changes: 69 additions & 0 deletions ftw/recipe/translations/i18ntools.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
from ftw.recipe.translations import discovery
from ftw.recipe.translations.utils import chdir
from i18ndude.catalog import MessageCatalog
from i18ndude.catalog import POWriter
import i18ndude.script
import os.path


class Arguments(dict):
def __init__(self, *args, **kwargs):
super(Arguments, self).__init__(*args, **kwargs)
self.__dict__ = self


def rebuild_pot(package_dir, sourcedir, domain, potpath, manual):
arguments = Arguments({'pot_fn': potpath,
'create_domain': domain,
'path': [sourcedir],
'exclude': '',
'merge_fn': manual,
'merge2_fn': ''})

with chdir(package_dir):
i18ndude.script.rebuild_pot(arguments)


def sync_pofiles(sources_directory, languages):
for group in discovery.discover(sources_directory):
if not group['pot']:
continue

sync_pofile_group(sources_directory, group, languages)


def sync_pofile_group(sources_directory, group, languages):
pofiles = []
for lang, popath in group['languages'].items():
if languages is not None and lang not in languages:
continue
pofiles.append(os.path.join(sources_directory,
group['package'],
popath))

for lang in set(languages or []) - set(group['languages'].keys()):
path = os.path.join(sources_directory,
group['package'],
group['locales'],
lang,
'LC_MESSAGES',
'%s.po' % group['domain'])
create_new_pofile(path, group['domain'])
pofiles.append(path)

potpath = os.path.join(sources_directory,
group['package'],
group['pot'])


arguments = Arguments({'pot_fn': potpath,
'files': pofiles})
i18ndude.script.sync(arguments)

def create_new_pofile(path, domain):
catalog = MessageCatalog(domain=domain)
if not os.path.exists(os.path.dirname(path)):
os.makedirs(os.path.dirname(path))
with open(path, 'w+') as file_:
POWriter(file_, catalog).write(msgstrToComment=False,
sync=True)
69 changes: 2 additions & 67 deletions ftw/recipe/translations/masstranslate/sync.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
from StringIO import StringIO
from ftw.recipe.translations import discovery
from ftw.recipe.translations.i18ntools import rebuild_pot
from ftw.recipe.translations.i18ntools import sync_pofiles
from ftw.recipe.translations.utils import capture_streams
from ftw.recipe.translations.utils import chdir
from i18ndude.catalog import MessageCatalog
from i18ndude.catalog import POWriter
import i18ndude.script
import os.path
import sys

Expand Down Expand Up @@ -33,12 +31,6 @@ def synchronize(sources_directory, languages=None, output=sys.stdout):
sync_pofiles(sources_directory, languages)


class Arguments(dict):
def __init__(self, *args, **kwargs):
super(Arguments, self).__init__(*args, **kwargs)
self.__dict__ = self


def rebuild_primary_domain_group_potfiles(sources_directory):
for group in discovery.discover(sources_directory):
if not group['pot']:
Expand All @@ -60,60 +52,3 @@ def rebuild_primary_domain_group_potfiles(sources_directory):
manual = os.path.join(package_dir, group['manual'])

rebuild_pot(package_dir, sourcedir, group['domain'], potpath, manual)


def rebuild_pot(package_dir, sourcedir, domain, potpath, manual):
arguments = Arguments({'pot_fn': potpath,
'create_domain': domain,
'path': [sourcedir],
'exclude': '',
'merge_fn': manual,
'merge2_fn': ''})

with chdir(package_dir):
i18ndude.script.rebuild_pot(arguments)


def sync_pofiles(sources_directory, languages):
for group in discovery.discover(sources_directory):
if not group['pot']:
continue

sync_pofile_group(sources_directory, group, languages)


def sync_pofile_group(sources_directory, group, languages):
pofiles = []
for lang, popath in group['languages'].items():
if languages is not None and lang not in languages:
continue
pofiles.append(os.path.join(sources_directory,
group['package'],
popath))

for lang in set(languages or []) - set(group['languages'].keys()):
path = os.path.join(sources_directory,
group['package'],
group['locales'],
lang,
'LC_MESSAGES',
'%s.po' % group['domain'])
create_new_pofile(path, group['domain'])
pofiles.append(path)

potpath = os.path.join(sources_directory,
group['package'],
group['pot'])


arguments = Arguments({'pot_fn': potpath,
'files': pofiles})
i18ndude.script.sync(arguments)

def create_new_pofile(path, domain):
catalog = MessageCatalog(domain=domain)
if not os.path.exists(os.path.dirname(path)):
os.makedirs(os.path.dirname(path))
with open(path, 'w+') as file_:
POWriter(file_, catalog).write(msgstrToComment=False,
sync=True)

0 comments on commit f516dae

Please sign in to comment.