Tfe

Ongi etorri tfe-ren webgunera...

json_to_xlsx.py

Deskargatu
#!/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())