yt-dlp
This commit is contained in:
95
manage_translations.py
Normal file
95
manage_translations.py
Normal file
@@ -0,0 +1,95 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Translation management script for yt-local
|
||||
|
||||
Usage:
|
||||
python manage_translations.py extract # Extract strings to messages.pot
|
||||
python manage_translations.py init es # Initialize Spanish translation
|
||||
python manage_translations.py update # Update all translations
|
||||
python manage_translations.py compile # Compile translations to .mo files
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
def run_command(cmd):
|
||||
"""Run a shell command and print output"""
|
||||
print(f"Running: {' '.join(cmd)}")
|
||||
result = subprocess.run(cmd, capture_output=True, text=True)
|
||||
if result.stdout:
|
||||
print(result.stdout)
|
||||
if result.stderr:
|
||||
print(result.stderr, file=sys.stderr)
|
||||
return result.returncode
|
||||
|
||||
|
||||
def extract():
|
||||
"""Extract translatable strings from source code"""
|
||||
print("Extracting translatable strings...")
|
||||
return run_command([
|
||||
'pybabel', 'extract',
|
||||
'-F', 'babel.cfg',
|
||||
'-k', 'lazy_gettext',
|
||||
'-k', '_l',
|
||||
'-o', 'translations/messages.pot',
|
||||
'.'
|
||||
])
|
||||
|
||||
|
||||
def init(language):
|
||||
"""Initialize a new language translation"""
|
||||
print(f"Initializing {language} translation...")
|
||||
return run_command([
|
||||
'pybabel', 'init',
|
||||
'-i', 'translations/messages.pot',
|
||||
'-d', 'translations',
|
||||
'-l', language
|
||||
])
|
||||
|
||||
|
||||
def update():
|
||||
"""Update existing translations with new strings"""
|
||||
print("Updating translations...")
|
||||
return run_command([
|
||||
'pybabel', 'update',
|
||||
'-i', 'translations/messages.pot',
|
||||
'-d', 'translations'
|
||||
])
|
||||
|
||||
|
||||
def compile_translations():
|
||||
"""Compile .po files to .mo files"""
|
||||
print("Compiling translations...")
|
||||
return run_command([
|
||||
'pybabel', 'compile',
|
||||
'-d', 'translations'
|
||||
])
|
||||
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 2:
|
||||
print(__doc__)
|
||||
sys.exit(1)
|
||||
|
||||
command = sys.argv[1]
|
||||
|
||||
if command == 'extract':
|
||||
sys.exit(extract())
|
||||
elif command == 'init':
|
||||
if len(sys.argv) < 3:
|
||||
print("Error: Please specify a language code (e.g., es, fr, de)")
|
||||
sys.exit(1)
|
||||
sys.exit(init(sys.argv[2]))
|
||||
elif command == 'update':
|
||||
sys.exit(update())
|
||||
elif command == 'compile':
|
||||
sys.exit(compile_translations())
|
||||
else:
|
||||
print(f"Unknown command: {command}")
|
||||
print(__doc__)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user