def move_srts(lang_code): """ Srts live in the locale directory, but that's not exposed at any URL. So instead, we have to move the srts out to /static/subtitles/[lang_code]/ """ lang_code_ietf = lcode_to_ietf(lang_code) lang_code_django = lcode_to_django_dir(lang_code) subtitles_static_dir = os.path.join(settings.STATIC_ROOT, "subtitles") src_dir = os.path.join(LOCALE_ROOT, lang_code_django, "subtitles") dest_dir = get_srt_path(lang_code_django) ensure_dir(dest_dir) lang_subtitles = glob.glob(os.path.join(src_dir, "*.srt")) logging.info("Moving %d subtitles from %s to %s" % (len(lang_subtitles), src_dir, dest_dir)) for fil in lang_subtitles: srt_dest_path = os.path.join(dest_dir, os.path.basename(fil)) if os.path.exists(srt_dest_path): os.remove(srt_dest_path ) # we're going to replace any srt with a newer version shutil.move(fil, srt_dest_path) if not os.path.exists(src_dir): logging.info("No subtitles for language pack %s" % lang_code) elif os.listdir(src_dir): logging.warn( "%s is not empty; will not remove. Please check that all subtitles were moved." % src_dir) else: logging.info("Removing empty source directory (%s)." % src_dir) shutil.rmtree(src_dir)
def move_srts(lang_code): """ Srts live in the locale directory, but that's not exposed at any URL. So instead, we have to move the srts out to /static/subtitles/[lang_code]/ """ lang_code_ietf = lcode_to_ietf(lang_code) lang_code_django = lcode_to_django_dir(lang_code) subtitles_static_dir = os.path.join(settings.USER_STATIC_FILES, "subtitles") src_dir = os.path.join(settings.USER_WRITABLE_LOCALE_DIR, lang_code_django, "subtitles") dest_dir = get_srt_path(lang_code_django) ensure_dir(dest_dir) lang_subtitles = glob.glob(os.path.join(src_dir, "*.srt")) logging.info("Moving %d subtitles from %s to %s" % (len(lang_subtitles), src_dir, dest_dir)) for fil in lang_subtitles: srt_dest_path = os.path.join(dest_dir, os.path.basename(fil)) if os.path.exists(srt_dest_path): os.remove(srt_dest_path) # we're going to replace any srt with a newer version shutil.move(fil, srt_dest_path) if not os.path.exists(src_dir): logging.info("No subtitles for language pack %s" % lang_code) elif os.listdir(src_dir): logging.warn("%s is not empty; will not remove. Please check that all subtitles were moved." % src_dir) else: logging.info("Removing empty source directory (%s)." % src_dir) shutil.rmtree(src_dir)
def unpack_language(lang_code, zip_filepath=None, zip_fp=None, zip_data=None): """Unpack zipped language pack into locale directory""" lang_code = lcode_to_django_dir(lang_code) logging.info("Unpacking new translations") ensure_dir(get_po_filepath(lang_code=lang_code)) ## Unpack into temp dir z = zipfile.ZipFile(zip_fp or (zip_data and StringIO(zip_data)) or open(zip_filepath, "rb")) z.extractall(os.path.join(LOCALE_ROOT, lang_code))
def scrub_locale_paths(): # Used in update_language_packs for locale_root in settings.LOCALE_PATHS: if not os.path.exists(locale_root): continue for lang in os.listdir(locale_root): # Skips if not a directory if not os.path.isdir(os.path.join(locale_root, lang)): continue # If it isn't crowdin/django format, keeeeeeellllllll if lang != lcode_to_django_dir(lang): logging.info("Deleting %s directory because it does not fit our language code format standards" % lang) shutil.rmtree(os.path.join(locale_root, lang))
def get_srt_path(lang_code=None, youtube_id=None): """Central server must make srts available at a web-accessible location. Now, they share that location, which was published in 0.10.2, and so cannot be changed (at least, not from the central-server side) Note also that it must use the django-version language code. """ srt_path = os.path.join(settings.STATIC_ROOT, "srt") if lang_code: srt_path = os.path.join(srt_path, lcode_to_django_dir(lang_code), "subtitles") if youtube_id: srt_path = os.path.join(srt_path, youtube_id + ".srt") return srt_path
def unpack_language(lang_code, zip_filepath=None, zip_fp=None, zip_data=None): """Unpack zipped language pack into locale directory""" lang_code = lcode_to_django_dir(lang_code) logging.info("Unpacking new translations") ensure_dir(get_po_filepath(lang_code=lang_code)) # # Unpack into temp dir try: z = zipfile.ZipFile(zip_fp or (zip_data and StringIO(zip_data)) or open(zip_filepath, "rb")) except zipfile.BadZipfile as e: # Need to add more information on the errror message. # See http://stackoverflow.com/questions/6062576/adding-information-to-a-python-exception raise type(e), type(e)(e.message + _("Language pack corrupted. Please try downloading the language pack again in a few minutes.")) z.extractall(os.path.join(settings.USER_WRITABLE_LOCALE_DIR, lang_code))
def unpack_language(lang_code, zip_filepath=None, zip_fp=None, zip_data=None): """Unpack zipped language pack into locale directory""" lang_code = lcode_to_django_dir(lang_code) logging.info("Unpacking new translations") ensure_dir(get_po_filepath(lang_code=lang_code)) # # Unpack into temp dir try: z = zipfile.ZipFile(zip_fp or (zip_data and StringIO(zip_data)) or open(zip_filepath, "rb")) except zipfile.BadZipfile as e: # Need to add more information on the errror message. # See http://stackoverflow.com/questions/6062576/adding-information-to-a-python-exception raise type(e), type(e)(e.message + _( "Language pack corrupted. Please try downloading the language pack again in a few minutes." )) z.extractall(os.path.join(settings.USER_WRITABLE_LOCALE_DIR, lang_code))