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