def uploadTranslations(baseDir, scriptName, opts, args, type):
  if len(args) < 1:
    print 'Project key is required to upload existing translations.'
    usage(scriptName, type, 'uploadtrans')
    return

  key = args[0]

  if type == 'chrome' or type == 'opera':
    import buildtools.packagerChrome as packager
    localesDir = os.path.join(baseDir, '_locales')
    locales = os.listdir(localesDir)
    locales = map(lambda locale: (locale.replace('_', '-'), os.path.join(localesDir, locale)), locales)
    metadata = packager.readMetadata(baseDir, type)
    basename = metadata.get('general', 'basename')
  else:
    import buildtools.packagerGecko as packager
    localesDir = packager.getLocalesDir(baseDir)
    locales = packager.getLocales(baseDir, True)
    locales = map(lambda locale: (locale, os.path.join(localesDir, locale)), locales)
    metadata = packager.readMetadata(baseDir, type)
    basename = metadata.get('general', 'basename')

  import buildtools.localeTools as localeTools
  for locale, localeDir in locales:
    if locale != packager.defaultLocale:
      localeTools.uploadTranslations(type, metadata, localeDir, locale, basename, key)
def getTranslations(baseDir, scriptName, opts, args, type):
  if len(args) < 1:
    print 'Project key is required to update translation master files.'
    usage(scriptName, type, 'translate')
    return

  key = args[0]
  if type == 'chrome' or type == 'opera':
    import buildtools.packagerChrome as packager
    localesDir = os.path.join(baseDir, '_locales')
  else:
    import buildtools.packagerGecko as packager
    localesDir = packager.getLocalesDir(baseDir)

  import buildtools.localeTools as localeTools
  basename = packager.readMetadata(baseDir, type).get('general', 'basename')
  localeTools.getTranslations(type, localesDir, packager.defaultLocale.replace('_', '-'), basename, key)
Example #3
0
def readLocaleConfig(baseDir, type, metadata):
    if type == 'gecko':
        import buildtools.packagerGecko as packager
        localeDir = packager.getLocalesDir(baseDir)
        localeConfig = {
            'name_format': 'BCP-47',
            'file_format': 'gecko-dtd',
            'target_platforms': {'gecko'},
            'default_locale': packager.defaultLocale
        }
    elif type == 'chrome':
        import buildtools.packagerChrome as packager
        localeDir = os.path.join(baseDir, '_locales')
        localeConfig = {
            'name_format': 'ISO-15897',
            'file_format': 'chrome-json',
            'target_platforms': {'chrome'},
            'default_locale': packager.defaultLocale,
        }
    else:
        localeDir = os.path.join(
            baseDir,
            *metadata.get('locales', 'base_path').split('/'))
        localeConfig = {
            'name_format':
            metadata.get('locales', 'name_format'),
            'file_format':
            metadata.get('locales', 'file_format'),
            'target_platforms':
            set(metadata.get('locales', 'target_platforms').split()),
            'default_locale':
            metadata.get('locales', 'default_locale')
        }

    localeConfig['base_path'] = localeDir

    locales = [(locale, os.path.join(localeDir, locale))
               for locale in os.listdir(localeDir)]
    if localeConfig['name_format'] == 'ISO-15897':
        locales = [(locale.replace('_', '-'), localePath)
                   for locale, localePath in locales]
    localeConfig['locales'] = dict(locales)

    return localeConfig
Example #4
0
def readLocaleConfig(baseDir, type, metadata):
    if type == 'gecko':
        import buildtools.packagerGecko as packager
        localeDir = packager.getLocalesDir(baseDir)
        localeConfig = {
            'name_format': 'BCP-47',
            'file_format': 'gecko-dtd',
            'target_platforms': {'gecko'},
            'default_locale': packager.defaultLocale
        }
    elif type in {'chrome', 'gecko-webext'}:
        import buildtools.packagerChrome as packager
        localeDir = os.path.join(baseDir, '_locales')
        localeConfig = {
            'name_format': 'ISO-15897',
            'file_format': 'chrome-json',
            'target_platforms': {'chrome'},
            'default_locale': packager.defaultLocale,
        }
    else:
        localeDir = os.path.join(
            baseDir, *metadata.get('locales', 'base_path').split('/')
        )
        localeConfig = {
            'name_format': metadata.get('locales', 'name_format'),
            'file_format': metadata.get('locales', 'file_format'),
            'target_platforms': set(metadata.get('locales',
                                                 'target_platforms').split()),
            'default_locale': metadata.get('locales', 'default_locale')
        }

    localeConfig['base_path'] = localeDir

    locales = [(locale, os.path.join(localeDir, locale))
               for locale in os.listdir(localeDir)]
    if localeConfig['name_format'] == 'ISO-15897':
        locales = [(locale.replace('_', '-'), localePath)
                   for locale, localePath in locales]
    localeConfig['locales'] = dict(locales)

    return localeConfig
def updateTranslationMaster(baseDir, scriptName, opts, args, type):
  if len(args) < 1:
    print 'Project key is required to update translation master files.'
    usage(scriptName, type, 'translate')
    return

  key = args[0]

  if type == 'chrome' or type == 'opera':
    import buildtools.packagerChrome as packager
    defaultLocaleDir = os.path.join(baseDir, '_locales', packager.defaultLocale)
    metadata = packager.readMetadata(baseDir, type)
    basename = metadata.get('general', 'basename')
  else:
    import buildtools.packagerGecko as packager
    defaultLocaleDir = os.path.join(packager.getLocalesDir(baseDir), packager.defaultLocale)
    metadata = packager.readMetadata(baseDir, type)
    basename = metadata.get('general', 'basename')

  import buildtools.localeTools as localeTools
  localeTools.updateTranslationMaster(type, metadata, defaultLocaleDir, basename, key)
def run(baseDir, sourceDir):
  import buildtools.packagerGecko as packagerGecko
  import buildtools.packagerChrome as packagerChrome

  sourceLocales = packagerGecko.getLocalesDir(sourceDir)
  if not os.path.isdir(sourceLocales):
    raise IOError('Directory %s not found' % sourceLocales)
  targetLocales = os.path.join(baseDir, '_locales')

  metadata = packagerChrome.readMetadata(baseDir)
  removed = []
  if metadata.has_option('locale_sync', 'remove'):
    for key in re.split(r'\s+', metadata.get('locale_sync', 'remove')):
      removed.append(key)

  imported = []
  for file, keys in metadata.items('locale_sync'):
    if file == 'remove':
      continue
    imported.append((file, re.split(r'\s+', keys)))
  syncLocales(sourceLocales, targetLocales, removed, imported)