#!/usr/bin/env python3
"""
translations.json -> translations.xlsx eguneratu.
Lehendik dauden gelaxkak berriz idazten dira, inprimakia (formatua)
errespetatuta. Erabilera:
python3 json_to_xlsx.py
"""
import json
import os
import sys
import openpyxl
BASE = os.path.dirname(os.path.abspath(__file__))
XLSX = os.path.join(BASE, "translations.xlsx")
JSON = os.path.join(BASE, "translations.json")
def normalize_newlines(s):
if s is None:
return ""
return s.replace("\r\n", "\n").replace("\r", "\n")
def main():
lock = os.path.join(BASE, ".~lock." + os.path.basename(XLSX) + "#")
if os.path.exists(lock):
print("Abisua: kalkulu-orria zabalik dirudi LibreOffice-n; itxi aurretik gorde.")
entries = json.load(open(JSON, encoding="utf-8"))
if os.path.exists(XLSX):
wb = openpyxl.load_workbook(XLSX)
ws = wb["translations"] if "translations" in wb.sheetnames else wb.active
else:
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "translations"
ws.append(["ns", "key", "en", "eu"])
for i, e in enumerate(entries):
row = i + 2
ws.cell(row=row, column=1, value=e.get("ns") or None)
ws.cell(row=row, column=2, value=e.get("key"))
ws.cell(row=row, column=3, value=normalize_newlines(e.get("en")))
ws.cell(row=row, column=4, value=normalize_newlines(e.get("eu")))
wb.save(XLSX)
print(f"Eguneratuta: {XLSX} ({len(entries)} sarrera)")
if __name__ == "__main__":
sys.exit(main())