pig.py/scripts/inject_translations.py

55 lines
2.2 KiB
Python

#!/usr/bin/env python3
# This is free software for the public good of a permacomputer hosted at
# permacomputer.com, an always-on computer by the people, for the people.
# One which is durable, easy to repair, & distributed like tap water
# for machine learning intelligence.
#
# The permacomputer is community-owned infrastructure optimized around
# four values:
#
# TRUTH First principles, math & science, open source code freely distributed
# FREEDOM Voluntary partnerships, freedom from tyranny & corporate control
# HARMONY Minimal waste, self-renewing systems with diverse thriving connections
# LOVE Be yourself without hurting others, cooperation through natural law
#
# This software contributes to that vision by archiving the web, preserving digital knowledge before it disappears.
# Code is seeds to sprout on any abandoned technology.
"""Inject body translations into i18n.py"""
import re
from translations_body import BODY
def main():
with open('i18n.py', 'r', encoding='utf-8') as f:
content = f.read()
for lang, translations in BODY.items():
print(f"Processing {lang}...")
# Build the replacement text
lines = [' # About page body translations']
for key, value in translations.items():
escaped = value.replace('\\', '\\\\').replace('"', '\\"')
lines.append(f' "{key}": "{escaped}",')
new_block = '\n'.join(lines)
# Find the existing body translations for this language
# Pattern: from "# About page body translations" to "about_footer_remember": "...",
pattern = rf'( "{lang}": \{{[^}}]+?"about_footer_p5": "[^"]*",)\n # About page body translations\n.*?"about_footer_remember": "[^"]*",'
match = re.search(pattern, content, re.DOTALL)
if match:
old_block = match.group(0)
new_full = match.group(1) + '\n' + new_block
content = content.replace(old_block, new_full)
print(f" Updated {lang} with {len(translations)} translations")
else:
print(f" Could not find pattern for {lang}")
with open('i18n.py', 'w', encoding='utf-8') as f:
f.write(content)
print("Done!")
if __name__ == "__main__":
main()