54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
import os
|
|
import re
|
|
|
|
SOURCE_DIR = "docs"
|
|
OUTPUT_DIRS = {"sv": "docs_sv", "en": "docs_en"}
|
|
|
|
lang_block_re = re.compile(r":::\s*(sv|en)\n(.*?)\n:::", re.DOTALL | re.IGNORECASE)
|
|
|
|
def split_content_by_language(content):
|
|
blocks = {"sv": "", "en": ""}
|
|
neutral_parts = []
|
|
pos = 0
|
|
|
|
matches = list(lang_block_re.finditer(content))
|
|
|
|
if not matches:
|
|
return {"sv": content, "en": ""}
|
|
|
|
for match in matches:
|
|
start, end = match.span()
|
|
lang, text = match.groups()
|
|
neutral = content[pos:start]
|
|
neutral_parts.append(neutral)
|
|
blocks[lang.lower()] += text.strip() + "\n\n"
|
|
pos = end
|
|
|
|
# Innehåll efter sista språkblock
|
|
neutral_parts.append(content[pos:])
|
|
|
|
# Lägg neutral text i båda
|
|
tail = ''.join(neutral_parts)
|
|
for l in blocks:
|
|
blocks[l] = tail + blocks[l]
|
|
|
|
return blocks
|
|
|
|
for filename in os.listdir(SOURCE_DIR):
|
|
if filename.endswith(".md"):
|
|
filepath = os.path.join(SOURCE_DIR, filename)
|
|
with open(filepath, "r", encoding="utf-8") as f:
|
|
content = f.read()
|
|
|
|
blocks = split_content_by_language(content)
|
|
|
|
for lang, text in blocks.items():
|
|
if text.strip():
|
|
os.makedirs(OUTPUT_DIRS[lang], exist_ok=True)
|
|
out_path = os.path.join(OUTPUT_DIRS[lang], filename)
|
|
with open(out_path, "w", encoding="utf-8") as f:
|
|
f.write(text.strip())
|
|
print(f"✔ Skrev {lang}/{filename}")
|
|
else:
|
|
print(f"⚠️ Skippade {lang}/{filename} (tom)")
|