Esempio n. 1
0
def fixupLocales(params, files):
  global defaultLocale

  # Read in default locale data, it might not be included in files
  defaultLocaleDir = os.path.join(getLocalesDir(params['baseDir']), defaultLocale)
  reference = {}
  ignoredFiles = getIgnoredFiles(params)
  for file in os.listdir(defaultLocaleDir):
    path = os.path.join(defaultLocaleDir, file)
    if file in ignoredFiles or not os.path.isfile(path):
      continue
    data = localeTools.readFile(path)
    if data:
      reference[file] = data

  for locale in params['locales']:
    for file in reference.iterkeys():
      path = 'chrome/locale/%s/%s' % (locale, file)
      if path in files:
        data = localeTools.parseString(files[path].decode('utf-8'), path)
        for key, value in reference[file].iteritems():
          if not key in data:
            files[path] += localeTools.generateStringEntry(key, value, path).encode('utf-8')
      else:
        files[path] = reference[file]['_origData'].encode('utf-8')
def updateLocale(localeDir, remove, rename):
    for source, target in rename.iteritems():
        sourceFile, sourceKey = source.split(' ', 1)
        targetFile, targetKey = target.split(' ', 1)

        sourceFile = os.path.join(localeDir, sourceFile)
        targetFile = os.path.join(localeDir, targetFile)
        if not os.path.exists(sourceFile):
            continue

        sourceData = localeTools.readFile(sourceFile)
        if sourceKey in sourceData:
            localeTools.appendToFile(targetFile, targetKey,
                                     sourceData[sourceKey])
        localeTools.removeFromFile(sourceFile, sourceKey)

    for entry in remove:
        if ' ' in entry:
            file, key = entry.split(' ', 1)
            file = os.path.join(localeDir, file)
            if os.path.exists(file):
                localeTools.removeFromFile(file, key)
        else:
            file = os.path.join(localeDir, entry)
            if os.path.exists(file):
                os.remove(file)
Esempio n. 3
0
def updateLocale(localeDir, remove, rename):
  for source, target in rename.iteritems():
    sourceFile, sourceKey = source.split(' ', 1)
    targetFile, targetKey = target.split(' ', 1)

    sourceFile = os.path.join(localeDir, sourceFile)
    targetFile = os.path.join(localeDir, targetFile)
    if not os.path.exists(sourceFile):
      continue

    sourceData = localeTools.readFile(sourceFile)
    if sourceKey in sourceData:
      localeTools.appendToFile(targetFile, targetKey, sourceData[sourceKey])
    localeTools.removeFromFile(sourceFile, sourceKey)

  for entry in remove:
    if ' ' in entry:
      file, key = entry.split(' ', 1)
      file = os.path.join(localeDir, file)
      if os.path.exists(file):
        localeTools.removeFromFile(file, key)
    else:
      file = os.path.join(localeDir, entry)
      if os.path.exists(file):
        os.remove(file)
def fixupLocales(params, files):
  global defaultLocale

  # Read in default locale data, it might not be included in files
  defaultLocaleDir = os.path.join(getLocalesDir(params['baseDir']), defaultLocale)
  reference = {}
  ignoredFiles = getIgnoredFiles(params)
  for file in os.listdir(defaultLocaleDir):
    path = os.path.join(defaultLocaleDir, file)
    if file in ignoredFiles or not os.path.isfile(path):
      continue
    data = localeTools.readFile(path)
    if data:
      reference[file] = data

  for locale in params['locales']:
    for file in reference.iterkeys():
      path = 'chrome/locale/%s/%s' % (locale, file)
      if path in files:
        data = localeTools.parseString(files[path].decode('utf-8'), path)
        for key, value in reference[file].iteritems():
          if not key in data:
            files[path] += localeTools.generateStringEntry(key, value, path).encode('utf-8')
      else:
        files[path] = reference[file]['_origData'].encode('utf-8')
Esempio n. 5
0
def syncLocales(sourceLocales, targetLocales, removed, imported):
  for source, target in firefoxToChrome.iteritems():
    targetFile = os.path.join(targetLocales, target, 'messages.json')
    hasSource = os.path.exists(os.path.join(sourceLocales, source))
    if hasSource and os.path.exists(os.path.join(sourceLocales, source, '.incomplete')):
      hasSource = False
    if not hasSource and not os.path.exists(targetFile):
      continue

    data = {}
    if os.path.exists(targetFile):
      file = codecs.open(targetFile, 'rb', encoding='utf-8')
      data = json.load(file)
      file.close()

    for entry in removed:
      if entry in data:
        del data[entry]

    if hasSource:
      for fileName, stringIDs in imported:
        sourceFile = os.path.join(sourceLocales, source, fileName)
        try:
          sourceData = localeTools.readFile(sourceFile)
          for stringID in stringIDs:
            if stringID in sourceData:
              key = re.sub(r'\..*', '', fileName) + '_' + re.sub(r'\W', '_', stringID)
              data[key] = {'message': sourceData[stringID]}
        except:
          pass

      sourceFile = os.path.join(sourceLocales, source, 'meta.properties')
      try:
        sourceData = localeTools.readFile(sourceFile)
        if 'name' in sourceData:
          data['name'] = {'message': sourceData['name']}
      except:
        pass

    try:
      os.makedirs(os.path.dirname(targetFile))
    except:
      pass
    file = codecs.open(targetFile, 'wb', encoding='utf-8')
    json.dump(data, file, ensure_ascii=False, sort_keys=True, indent=2, separators=(',', ': '))
    print >>file
    file.close()
def read_gecko_locale_strings(locale):
    locale_strings = {}
    locale_files = set([key.split("/")[0] for key in strings_to_import.keys()])
    for locale_file in locale_files:
        locale_file_path = os.path.join(gecko_locale_base_path, locale, locale_file)
        if os.path.exists(locale_file_path):
            locale_strings[locale_file] = localeTools.readFile(locale_file_path)
        else:
            locale_strings[locale_file] = {}
    return locale_strings
Esempio n. 7
0
def read_gecko_locale_strings(locale):
    locale_strings = {}
    locale_files = set([key.split("/")[0] for key in strings_to_import.keys()])
    for locale_file in locale_files:
        locale_file_path = os.path.join(gecko_locale_base_path, locale,
                                        locale_file)
        if os.path.exists(locale_file_path):
            locale_strings[locale_file] = localeTools.readFile(
                locale_file_path)
        else:
            locale_strings[locale_file] = {}
    return locale_strings
Esempio n. 8
0
def readLocaleMetadata(baseDir, locales):
  result = {}

  # Make sure we always have fallback data even if the default locale isn't part
  # of the build
  locales = list(locales)
  if not defaultLocale in locales:
    locales.append(defaultLocale)

  for locale in locales:
    data = SafeConfigParser()
    try:
      result[locale] = localeTools.readFile(os.path.join(getLocalesDir(baseDir), locale, 'meta.properties'))
    except:
      result[locale] = {}
  return result
def readLocaleMetadata(baseDir, locales):
  result = {}

  # Make sure we always have fallback data even if the default locale isn't part
  # of the build
  locales = list(locales)
  if not defaultLocale in locales:
    locales.append(defaultLocale)

  for locale in locales:
    data = SafeConfigParser()
    data.optionxform = str
    try:
      result[locale] = localeTools.readFile(os.path.join(getLocalesDir(baseDir), locale, 'meta.properties'))
    except:
      result[locale] = {}
  return result