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)
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
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
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