mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-11-21 22:07:59 -05:00
feat: translations support
This commit is contained in:
55
files/management/commands/process_translations.py
Normal file
55
files/management/commands/process_translations.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import importlib
|
||||
import os
|
||||
from collections import OrderedDict
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.management.base import BaseCommand
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Process translation files to add missing keys and sort them'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
translations_dir = os.path.join(settings.BASE_DIR, 'files', 'frontend_translations')
|
||||
self.process_translation_files(translations_dir)
|
||||
self.stdout.write(self.style.SUCCESS('Successfully processed translation files'))
|
||||
|
||||
def process_translation_files(self, translations_dir):
|
||||
files = os.listdir(translations_dir)
|
||||
files = [f for f in files if f.endswith('.py') and f not in ('__init__.py', 'en.py')]
|
||||
# Import the original English translations
|
||||
from files.frontend_translations.en import replacement_strings, translation_strings
|
||||
|
||||
for file in files:
|
||||
file_path = os.path.join(translations_dir, file)
|
||||
module_name = f"files.frontend_translations.{file[:-3]}"
|
||||
|
||||
module = importlib.import_module(module_name)
|
||||
|
||||
translation_strings_wip = getattr(module, 'translation_strings', {})
|
||||
replacement_strings_wip = getattr(module, 'replacement_strings', {})
|
||||
|
||||
for key in translation_strings:
|
||||
if key not in translation_strings_wip:
|
||||
translation_strings_wip[key] = translation_strings[key]
|
||||
|
||||
translation_strings_wip = OrderedDict(sorted(translation_strings_wip.items()))
|
||||
|
||||
for key in replacement_strings:
|
||||
if key not in replacement_strings_wip:
|
||||
replacement_strings_wip[key] = replacement_strings[key]
|
||||
|
||||
replacement_strings_wip = OrderedDict(sorted(replacement_strings_wip.items()))
|
||||
|
||||
with open(file_path, 'w') as f:
|
||||
f.write("translation_strings = {\n")
|
||||
for key, value in translation_strings_wip.items():
|
||||
f.write(f' "{key}": "{value}",\n')
|
||||
f.write("}\n\n")
|
||||
|
||||
f.write("replacement_strings = {\n")
|
||||
for key, value in replacement_strings_wip.items():
|
||||
f.write(f' "{key}": "{value}",\n')
|
||||
f.write("}\n")
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(f'Processed {file}'))
|
||||
Reference in New Issue
Block a user