(() => {
  const LANGS = Object.freeze(["el", "en", "it", "ar", "fr", "de"]);
  const ENTRIES = Object.freeze([
    ["3D Mapping Control · Compact Pro", "3D Mapping Control · Compact Pro", "Controllo 3D Mapping · Compact Pro", "التحكم في الإسقاط ثلاثي الأبعاد · Compact Pro", "Contrôle 3D Mapping · Compact Pro", "3D-Mapping-Steuerung · Compact Pro"],
    ["Auto next", "Auto next", "Auto next", "التالي تلقائيًا", "Auto next", "Auto next"],
    ["Scene transition", "Scene transition", "Transizione scena", "انتقال المشهد", "Transition de scène", "Szenenübergang"],
    ["Cut", "Cut", "Cut", "قص مباشر", "Cut", "Cut"],
    ["Smooth Fade", "Smooth Fade", "Dissolvenza morbida", "تلاشي ناعم", "Fondu doux", "Sanfte Blende"],
    ["Dip to Black", "Dip to Black", "Tuffo nel nero", "غمس إلى الأسود", "Fondu au noir", "Abblendung zu Schwarz"],
    ["Dip to White", "Dip to White", "Tuffo nel bianco", "غمس إلى الأبيض", "Fondu au blanc", "Abblendung zu Weiß"],
    ["Blur Fade", "Blur Fade", "Dissolvenza sfocata", "تلاشي ضبابي", "Fondu flou", "Unschärfe-Blende"],
    ["Zoom Fade", "Zoom Fade", "Dissolvenza zoom", "تلاشي مع تكبير", "Fondu zoom", "Zoom-Blende"],
    ["Flash White", "Flash White", "Flash bianco", "وميض أبيض", "Flash blanc", "Weißblitz"],
    ["Duration", "Duration", "Durata", "المدة", "Durée", "Dauer"],
    ["Φόρτωσε βίντεο, εικόνες, λογότυπα ή PDF και θα εμφανιστούν εδώ.", "Load video, images, logos or PDF and they will appear here.", "Carica video, immagini, loghi o PDF e appariranno qui.", "حمّل فيديو أو صورًا أو شعارات أو PDF وستظهر هنا.", "Charge des vidéos, images, logos ou PDF et ils apparaîtront ici.", "Lade Videos, Bilder, Logos oder PDFs und sie erscheinen hier."],
    ["Δεν υπάρχουν layers ακόμα.", "There are no layers yet.", "Non ci sono livelli.", "لا توجد طبقات بعد.", "Aucun calque pour le moment.", "Noch keine Ebenen."],
    ["Πρόσθεσε video layer και το queue των clips θα εμφανιστεί εδώ.", "Add a video layer and the clip queue will appear here.", "Aggiungi un livello video e la coda clip apparirà qui.", "أضف طبقة فيديو وستظهر قائمة المقاطع هنا.", "Ajoute un calque vidéo et la file de clips apparaîtra ici.", "Füge eine Videoebene hinzu, dann erscheint hier die Clip-Queue."],
    ["Δεν έχει παιχτεί preset ακόμα", "No preset has been played yet", "Nessun preset è stato ancora riprodotto", "لم يتم تشغيل أي إعداد مسبق بعد", "Aucun preset n’a encore été joué", "Es wurde noch kein Preset abgespielt"],
    ["Διάλεξε το επόμενο cue", "Choose the next cue", "Scegli il prossimo cue", "اختر الإشارة التالية", "Choisis le prochain cue", "Wähle den nächsten Cue"],
    ["Αποθήκευσε την τρέχουσα σκηνή σαν preset και κάλεσέ την άμεσα σε setup ή live.", "Save the current scene as a preset and recall it instantly in setup or live.", "Salva la scena corrente come preset e richiamala subito in setup o live.", "احفظ المشهد الحالي كإعداد مسبق واستدعِه فورًا في الإعداد أو العرض المباشر.", "Enregistre la scène actuelle comme preset et rappelle-la instantanément en setup ou en live.", "Speichere die aktuelle Szene als Preset und rufe sie in Setup oder Live sofort ab."],
    ["Φτιάξε πρώτα presets και μετά χτίσε auto sequence για το show.", "Create presets first, then build the auto sequence for the show.", "Crea prima i preset e poi costruisci la sequenza automatica dello show.", "أنشئ الإعدادات أولًا ثم ابنِ التسلسل التلقائي للعرض.", "Crée d’abord des presets puis construis la séquence auto du show.", "Erstelle zuerst Presets und baue dann die Auto-Sequenz für die Show."],
    ["Το τοπικό autosave είναι ενεργό. Εδώ θα εμφανιστεί η τελευταία αποθήκευση draft και τα local backups.", "Local autosave is active. The latest draft save and local backups will appear here.", "L'autosave locale è attivo. Qui appariranno l'ultimo draft salvato e i backup locali.", "الحفظ التلقائي المحلي مفعل. سيظهر هنا آخر حفظ للمسودة والنسخ المحلية.", "L'autosave local est actif. La dernière sauvegarde du draft et les backups locaux apparaîtront ici.", "Lokales Autosave ist aktiv. Hier erscheinen die letzte Draft-Speicherung und lokale Backups."],
    ["Το autosave κρατάει τοπικό draft, ενώ εδώ βλέπεις μέχρι 3 πρόσφατα local backups για γρήγορη επαναφορά χωρίς να χάνεις το project σου.", "Autosave keeps a local draft, and here you can see up to 3 recent local backups for quick restore without losing your project.", "L'autosave mantiene un draft locale e qui puoi vedere fino a 3 backup locali recenti per un ripristino rapido senza perdere il progetto.", "يحفظ الحفظ التلقائي مسودة محلية، وهنا يمكنك رؤية حتى 3 نسخ محلية حديثة للاستعادة السريعة بدون فقدان مشروعك.", "L'autosave garde un draft local et ici tu peux voir jusqu'à 3 backups locaux récents pour une restauration rapide sans perdre ton projet.", "Autosave hält einen lokalen Draft und hier siehst du bis zu 3 aktuelle lokale Backups für eine schnelle Wiederherstellung ohne Projektverlust."],
    ["Δεν υπάρχουν ακόμη local backups.", "There are no local backups yet.", "Non ci sono ancora backup locali.", "لا توجد نسخ محلية بعد.", "Il n'y a pas encore de backups locaux.", "Es gibt noch keine lokalen Backups."],
    ["Keyboard triggers / Πληκτρολόγιο", "Keyboard triggers / Keyboard", "Trigger da tastiera / Tastiera", "تشغيل لوحة المفاتيح", "Triggers clavier / Clavier", "Tastatur-Trigger / Tastatur"],
    ["MIDI triggers / MIDI", "MIDI triggers / MIDI", "Trigger MIDI / MIDI", "تشغيل MIDI", "Triggers MIDI / MIDI", "MIDI-Trigger / MIDI"],
    ["Είσοδος MIDI", "MIDI Input", "Ingresso MIDI", "إدخال MIDI", "Entrée MIDI", "MIDI-Eingang"],
    ["Αυτόματο", "Auto", "Automatico", "تلقائي", "Auto", "Automatisch"],
    ["Αυτόματο detect", "Auto detect", "Rilevamento automatico", "كشف تلقائي", "Détection auto", "Automatische Erkennung"],
    ["Βάση cue note", "Cue note base", "Nota base cue", "أساس نغمة الإشارة", "Note de base cue", "Cue-Notenbasis"],
    ["Βάση preset note", "Preset note base", "Nota base preset", "أساس نغمة الإعداد", "Note de base preset", "Preset-Notenbasis"],
    ["Τα keyboard triggers είναι ενεργά. Το MIDI ενεργοποιείται αν το runtime υποστηρίζει Web MIDI.", "Keyboard triggers are active. MIDI becomes available when the runtime supports Web MIDI.", "I trigger da tastiera sono attivi. Il MIDI si attiva se il runtime supporta Web MIDI.", "مفاتيح لوحة المفاتيح مفعلة. يصبح MIDI متاحًا إذا كان التشغيل يدعم Web MIDI.", "Les triggers clavier sont actifs. Le MIDI devient disponible si le runtime prend en charge Web MIDI.", "Tastatur-Trigger sind aktiv. MIDI wird verfügbar, wenn das Runtime Web MIDI unterstützt."],
    ["Σκηνή / Canvas", "Stage / Canvas", "Scena / Canvas", "المشهد / الكانفس", "Scène / Canvas", "Bühne / Canvas"],
    ["Καμβάς", "Canvas", "Canvas", "الكانفس", "Canvas", "Canvas"],
    ["Πλάτος", "Width", "Larghezza", "العرض", "Largeur", "Breite"],
    ["Ύψος", "Height", "Altezza", "الارتفاع", "Hauteur", "Höhe"],
    ["Preset εξόδου", "Output preset", "Preset di uscita", "إعداد الإخراج", "Preset de sortie", "Ausgabe-Preset"],
    ["Custom", "Custom", "Custom", "مخصص", "Custom", "Custom"],
    ["Ποιότητα mapping", "Mapping quality", "Qualità mapping", "جودة المابنغ", "Qualité du mapping", "Mapping-Qualität"],
    ["Balanced", "Balanced", "Bilanciato", "متوازن", "Équilibré", "Ausgewogen"],
    ["Ultra", "Ultra", "Ultra", "فائق", "Ultra", "Ultra"],
    ["Χρώμα φόντου", "Background color", "Colore sfondo", "لون الخلفية", "Couleur de fond", "Hintergrundfarbe"],
    ["Οριζόντιο", "Landscape", "Orizzontale", "أفقي", "Horizontal", "Horizontal"],
    ["Κάθετο", "Portrait", "Verticale", "عمودي", "Vertical", "Vertikal"],
    ["Τετράγωνο", "Square", "Quadrato", "مربع", "Carré", "Quadratisch"],
    ["16:9 Οριζόντιο", "16:9 Landscape", "16:9 Orizzontale", "16:9 أفقي", "16:9 Horizontal", "16:9 Horizontal"],
    ["9:16 Κάθετο", "9:16 Portrait", "9:16 Verticale", "9:16 عمودي", "9:16 Vertical", "9:16 Vertikal"],
    ["Projector Groups / Multi-output · οργάνωσε surfaces ανά output και άλλαζε γρήγορα τι φεύγει στο projector window.", "Projector Groups / Multi-output · organize surfaces per output and quickly change what goes to the projector window.", "Gruppi proiettore / multi-output · organizza le superfici per uscita e cambia rapidamente cosa va nella finestra del proiettore.", "مجموعات البروجكتور / متعدد المخارج · نظّم الأسطح لكل مخرج وغيّر بسرعة ما يذهب إلى نافذة البروجكتور.", "Groupes projecteur / multi-sortie · organise les surfaces par sortie et change rapidement ce qui va dans la fenêtre projecteur.", "Projektor-Gruppen / Multi-Output · organisiere Flächen je Ausgang und ändere schnell, was ins Projektorfenster geht."],
    ["Όλα", "All", "Tutti", "الكل", "Tous", "Alle"],
    ["Projector output:", "Projector output:", "Output proiettore:", "إخراج البروجكتور:", "Sortie projecteur :", "Projektorausgabe:"],
    ["Όλα τα outputs / Global layers", "All outputs / Global layers", "Tutte le uscite / layer globali", "كل المخارج / الطبقات العامة", "Toutes les sorties / calques globaux", "Alle Ausgänge / globale Ebenen"],
    ["Άνοιγμα επιλεγμένου", "Open selected output", "Apri output selezionato", "فتح الإخراج المحدد", "Ouvrir la sortie sélectionnée", "Gewählte Ausgabe öffnen"],
    ["Άνοιγμα P1-P4", "Open P1-P4", "Apri P1-P4", "افتح P1-P4", "Ouvrir P1-P4", "P1-P4 öffnen"],
    ["Κλείσιμο outputs", "Close outputs", "Chiudi uscite", "إغلاق المخارج", "Fermer les sorties", "Ausgänge schließen"],
    ["Ανοικτά output windows:", "Open output windows:", "Finestre output aperte:", "نوافذ الإخراج المفتوحة:", "Fenêtres de sortie ouvertes :", "Geöffnete Ausgabefenster:"],
    ["κανένα. Διάλεξε P1 / P2 / P3 / P4 και πάτα 2η οθόνη.", "none. Choose P1 / P2 / P3 / P4 and press Second screen.", "nessuna. Scegli P1 / P2 / P3 / P4 e premi Secondo schermo.", "لا شيء. اختر P1 / P2 / P3 / P4 واضغط الشاشة الثانية.", "aucune. Choisis P1 / P2 / P3 / P4 puis appuie sur Deuxième écran.", "keine. Wähle P1 / P2 / P3 / P4 und drücke Zweiter Bildschirm."],
    ["Overlap Calibration: διάλεξε P1 / P2 / P3 / P4", "Overlap Calibration: choose P1 / P2 / P3 / P4", "Overlap Calibration: scegli P1 / P2 / P3 / P4", "معايرة التداخل: اختر P1 / P2 / P3 / P4", "Calibration de recouvrement : choisis P1 / P2 / P3 / P4", "Overlap-Kalibrierung: Wähle P1 / P2 / P3 / P4"],
    ["Καθαρό", "Clean", "Pulito", "نظيف", "Clean", "Sauber"],
    ["Blend αριστερά", "Blend left", "Blend sinistra", "مزج يسار", "Blend gauche", "Blend links"],
    ["Blend δεξιά", "Blend right", "Blend destra", "مزج يمين", "Blend droite", "Blend rechts"],
    ["Reset P", "Reset P", "Reset P", "إعادة ضبط P", "Reset P", "Reset P"],
    ["Wall blend / overlap calibration ανά projector output. Δεν πειράζει layers ή trims.", "Wall blend / overlap calibration per projector output. It does not change layers or trims.", "Wall blend / calibrazione overlap per uscita proiettore. Non tocca layer o trim.", "معايرة التداخل / المزج لكل مخرج بروجكتور. لا تغيّر الطبقات أو القص.", "Calibration overlap / wall blend par sortie projecteur. Cela ne modifie pas les calques ni les trims.", "Wall-Blend / Overlap-Kalibrierung je Projektorausgang. Ebenen oder Trims werden nicht verändert."],
    ["Overlap Left", "Overlap Left", "Overlap Sinistra", "تداخل يسار", "Overlap gauche", "Overlap links"],
    ["Overlap Right", "Overlap Right", "Overlap Destra", "تداخل يمين", "Overlap droite", "Overlap rechts"],
    ["Overlap Top", "Overlap Top", "Overlap Alto", "تداخل أعلى", "Overlap haut", "Overlap oben"],
    ["Overlap Bottom", "Overlap Bottom", "Overlap Basso", "تداخل أسفل", "Overlap bas", "Overlap unten"],
    ["Brightness", "Brightness", "Luminosità", "السطوع", "Luminosité", "Helligkeit"],
    ["Scale", "Scale", "Scala", "المقياس", "Échelle", "Skalierung"],
    ["Shift X", "Shift X", "Sposta X", "إزاحة X", "Décalage X", "Verschiebung X"],
    ["Shift Y", "Shift Y", "Sposta Y", "إزاحة Y", "Décalage Y", "Verschiebung Y"],
    ["Projector Utilities ·", "Projector Utilities ·", "Projector Utilities ·", "أدوات البروجكتور ·", "Projector Utilities ·", "Projektor-Utilities ·"],
    ["Blackout όλα", "Blackout all", "Blackout totale", "تعتيم الكل", "Blackout total", "Alle blackouten"],
    ["Άνοιγμα όλων", "Open all", "Apri tutto", "فتح الكل", "Tout ouvrir", "Alle öffnen"],
    ["Freeze output", "Freeze output", "Freeze output", "تجميد الإخراج", "Freeze output", "Ausgabe einfrieren"],
    ["Unfreeze output", "Unfreeze output", "Unfreeze output", "إلغاء تجميد الإخراج", "Unfreeze output", "Ausgabe weiterlaufen lassen"],
    ["Identify", "Identify", "Identifica", "تعريف", "Identify", "Identify"],
    ["Καθαρισμός βοηθητικών", "Clear utilities", "Pulisci utility", "مسح الأدوات المساعدة", "Effacer les utilitaires", "Utilities löschen"],
    ["Grid", "Grid", "Griglia", "شبكة", "Grille", "Raster"],
    ["Λευκό", "White", "Bianco", "أبيض", "Blanc", "Weiß"],
    ["Γκρι", "Gray", "Grigio", "رمادي", "Gris", "Grau"],
    ["Μαύρο", "Black", "Nero", "أسود", "Noir", "Schwarz"],
    ["Mixed", "Mixed", "Misto", "مختلط", "Mixte", "Gemischt"],
    ["Freeze ON", "Freeze ON", "Freeze ON", "تجميد ON", "Freeze ON", "Freeze ON"],
    ["Freeze partial", "Freeze partial", "Freeze parziale", "تجميد جزئي", "Freeze partiel", "Freeze teilweise"],
    ["Freeze OFF", "Freeze OFF", "Freeze OFF", "تجميد OFF", "Freeze OFF", "Freeze OFF"],
    ["Pattern:", "Pattern:", "Pattern:", "النمط:", "Pattern :", "Pattern:"],
    ["Βοηθητικά setup:", "Setup utilities:", "Utility di setup:", "أدوات الإعداد:", "Utilitaires de setup :", "Setup-Utilities:"],
    ["Άνοιξε output window για live δοκιμή", "Open an output window for a live check", "Apri una finestra output per un test live", "افتح نافذة إخراج لاختبار مباشر", "Ouvre une fenêtre de sortie pour un test live", "Öffne ein Ausgabefenster für einen Live-Test"],
    ["Background / Φόντο", "Background", "Sfondo", "الخلفية", "Arrière-plan", "Hintergrund"],
    ["Υπόβαθρο", "Background", "Sfondo", "الخلفية", "Arrière-plan", "Hintergrund"],
    ["Media φόντου", "Background media", "Media di sfondo", "وسائط الخلفية", "Média de fond", "Hintergrund-Medien"],
    ["+ BG Media", "+ BG Media", "+ Media sfondo", "+ وسائط خلفية", "+ Média fond", "+ Hintergrund-Medien"],
    ["Καθαρισμός BG", "Clear BG", "Pulisci BG", "مسح الخلفية", "Effacer BG", "BG löschen"],
    ["Fit", "Fit", "Adatta", "ملاءمة", "Ajustement", "Anpassen"],
    ["Cover", "Cover", "Copri", "تغطية", "Cover", "Cover"],
    ["Contain", "Contain", "Contieni", "احتواء", "Contain", "Contain"],
    ["Stretch", "Stretch", "Allunga", "تمديد", "Étendre", "Strecken"],
    ["Opacity", "Opacity", "Opacità", "الشفافية", "Opacité", "Deckkraft"],
    ["Video φόντου", "Background video", "Video di sfondo", "فيديو الخلفية", "Vidéo de fond", "Hintergrundvideo"],
    ["Loop background video / Επανάληψη", "Loop background video / Repeat", "Loop video di sfondo / Ripeti", "تكرار فيديو الخلفية", "Boucler la vidéo de fond", "Hintergrundvideo wiederholen"],
    ["Μόνο συμπαγές χρώμα.", "Solid color only.", "Solo colore pieno.", "لون خالص فقط.", "Couleur unie uniquement.", "Nur Vollfarbe."],
    ["Μετακίνηση", "Move", "Sposta", "تحريك", "Déplacer", "Bewegen"],
    ["Warp", "Warp", "Warp", "تشويه", "Warp", "Warp"],
    ["9 Σημεία", "9 Points", "9 punti", "9 نقاط", "9 points", "9 Punkte"],
    ["Μπροστά", "Bring front", "Porta avanti", "إلى الأمام", "Au premier plan", "Nach vorne"],
    ["Πίσω", "Send back", "Porta dietro", "إلى الخلف", "À l'arrière", "Nach hinten"],
    ["◯ Κύκλος", "◯ Circle", "◯ Cerchio", "◯ دائرة", "◯ Cercle", "◯ Kreis"],
    ["Αντίγραφο", "Duplicate", "Duplica", "نسخة", "Dupliquer", "Duplizieren"],
    ["🎛 Χειριστήρια", "🎛 Controls", "🎛 Controlli", "🎛 عناصر التحكم", "🎛 Contrôles", "🎛 Steuerung"],
    ["Inspector / Επεξεργασία", "Inspector / Edit", "Inspector / Modifica", "المعاين / التحرير", "Inspecteur / Édition", "Inspektor / Bearbeiten"],
    ["Live edit", "Live edit", "Modifica live", "تحرير مباشر", "Édition live", "Live-Bearbeitung"],
    ["Διάλεξε ένα layer για επεξεργασία.", "Select a layer to edit.", "Seleziona un layer da modificare.", "اختر طبقة لتحريرها.", "Choisis un calque à modifier.", "Wähle eine Ebene zum Bearbeiten aus."],
    ["Layer Mix / Layer κατάσταση", "Layer Mix / Layer state", "Layer Mix / Stato layer", "مزج الطبقة / حالة الطبقة", "Mix du calque / État du calque", "Layer-Mix / Layer-Status"],
    ["ορατότητα · κλείδωμα · opacity", "visibility · lock · opacity", "visibilità · blocco · opacità", "الظهور · القفل · الشفافية", "visibilité · verrouillage · opacité", "Sichtbarkeit · Sperre · Opazität"],
    ["👁 Ορατό", "👁 Visible", "👁 Visibile", "👁 مرئي", "👁 Visible", "👁 Sichtbar"],
    ["🚫 Κρυφό", "🚫 Hidden", "🚫 Nascosto", "🚫 مخفي", "🚫 Caché", "🚫 Versteckt"],
    ["🔓 Ξεκλείδωτο", "🔓 Unlocked", "🔓 Sbloccato", "🔓 غير مقفل", "🔓 Déverrouillé", "🔓 Entsperrt"],
    ["🔒 Κλειδωμένο", "🔒 Locked", "🔒 Bloccato", "🔒 مقفل", "🔒 Verrouillé", "🔒 Gesperrt"],
    ["Διάλεξε πρώτα layer", "Select a layer first", "Seleziona prima un layer", "اختر طبقة أولًا", "Choisis d’abord un calque", "Wähle zuerst eine Ebene"],
    ["Κρύψε το επιλεγμένο layer", "Hide the selected layer", "Nascondi il layer selezionato", "إخفاء الطبقة المحددة", "Masquer le calque sélectionné", "Ausgewählte Ebene ausblenden"],
    ["Δείξε το επιλεγμένο layer", "Show the selected layer", "Mostra il layer selezionato", "إظهار الطبقة المحددة", "Afficher le calque sélectionné", "Ausgewählte Ebene anzeigen"],
    ["Καθαρισμός solo σε αυτή τη σελίδα", "Clear solo on this page", "Rimuovi il solo in questa pagina", "إلغاء السولو في هذه الصفحة", "Effacer le solo sur cette page", "Solo auf dieser Seite aufheben"],
    ["Solo του επιλεγμένου layer σε αυτή τη σελίδα", "Solo the selected layer on this page", "Solo del layer selezionato in questa pagina", "سولو للطبقة المحددة في هذه الصفحة", "Solo du calque sélectionné sur cette page", "Ausgewählte Ebene auf dieser Seite solo schalten"],
    ["Ξεκλείδωσε το επιλεγμένο layer", "Unlock the selected layer", "Sblocca il layer selezionato", "فتح قفل الطبقة المحددة", "Déverrouiller le calque sélectionné", "Ausgewählte Ebene entsperren"],
    ["Κλείδωσε το επιλεγμένο layer", "Lock the selected layer", "Blocca il layer selezionato", "قفل الطبقة المحددة", "Verrouiller le calque sélectionné", "Ausgewählte Ebene sperren"],
    ["Transform / Θέση", "Transform / Position", "Trasforma / Posizione", "التحويل / الموضع", "Transform / Position", "Transform / Position"],
    ["θέση · μέγεθος · warp", "position · size · warp", "posizione · dimensione · warp", "الموضع · الحجم · التشويه", "position · taille · warp", "Position · Größe · Warp"],
    ["Όνομα", "Name", "Nome", "الاسم", "Nom", "Name"],
    ["Ορατό", "Visible", "Visibile", "مرئي", "Visible", "Sichtbar"],
    ["Ενεργό", "Enabled", "Attivo", "مفعل", "Actif", "Aktiv"],
    ["Σχήμα", "Shape", "Forma", "الشكل", "Forme", "Form"],
    ["Ορθογώνιο", "Rectangle", "Rettangolo", "مستطيل", "Rectangle", "Rechteck"],
    ["Κύκλος / Έλλειψη", "Circle / Ellipse", "Cerchio / Ellisse", "دائرة / قطع ناقص", "Cercle / Ellipse", "Kreis / Ellipse"],
    ["Warp Mesh", "Warp Mesh", "Warp Mesh", "شبكة التشويه", "Warp Mesh", "Warp-Mesh"],
    ["9 points · corners + edges + center", "9 points · corners + edges + center", "9 punti · angoli + bordi + centro", "9 نقاط · الزوايا + الحواف + المركز", "9 points · coins + bords + centre", "9 Punkte · Ecken + Kanten + Mitte"],
    ["Output / Projector", "Output / Projector", "Uscita / Proiettore", "الإخراج / البروجكتور", "Sortie / Projecteur", "Ausgabe / Projektor"],
    ["Routing", "Routing", "Routing", "التوجيه", "Routage", "Routing"],
    ["Το layer παίζει σε όλα τα outputs.", "The layer plays on all outputs.", "Il layer viene riprodotto su tutte le uscite.", "تعمل الطبقة على جميع المخارج.", "Le calque joue sur toutes les sorties.", "Die Ebene spielt auf allen Ausgängen."],
    ["Input Selection / Crop", "Input Selection / Crop", "Selezione input / Crop", "اختيار الإدخال / القص", "Sélection entrée / Crop", "Input-Auswahl / Crop"],
    ["Κόψε μέρος του source για duplicate layer / άλλο projector.", "Crop part of the source for a duplicate layer / another projector.", "Ritaglia una parte della sorgente per un layer duplicato / un altro proiettore.", "اقتص جزءًا من المصدر لطبقة مكررة / بروجكتور آخر.", "Découpe une partie de la source pour un calque dupliqué / un autre projecteur.", "Schneide einen Teil der Quelle für eine duplizierte Ebene / einen anderen Projektor aus."],
    ["Quick Reset", "Quick Reset", "Reset rapido", "إعادة ضبط سريعة", "Reset rapide", "Schnell-Reset"],
    ["Reset Crop", "Reset Crop", "Reset crop", "إعادة ضبط القص", "Reset crop", "Crop zurücksetzen"],
    ["Quick Crop", "Quick Crop", "Crop rapido", "قص سريع", "Crop rapide", "Schnell-Crop"],
    ["Πλήρες", "Full", "Completo", "كامل", "Complet", "Voll"],
    ["Αριστερό 1/2", "Left 1/2", "Sinistra 1/2", "النصف الأيسر", "Gauche 1/2", "Links 1/2"],
    ["Δεξί 1/2", "Right 1/2", "Destra 1/2", "النصف الأيمن", "Droite 1/2", "Rechts 1/2"],
    ["Πάνω 1/2", "Top 1/2", "Alto 1/2", "النصف العلوي", "Haut 1/2", "Oben 1/2"],
    ["Κάτω 1/2", "Bottom 1/2", "Basso 1/2", "النصف السفلي", "Bas 1/2", "Unten 1/2"],
    ["Crop Left", "Crop Left", "Crop sinistra", "قص يسار", "Crop gauche", "Crop links"],
    ["Crop Right", "Crop Right", "Crop destra", "قص يمين", "Crop droite", "Crop rechts"],
    ["Crop Top", "Crop Top", "Crop alto", "قص أعلى", "Crop haut", "Crop oben"],
    ["Crop Bottom", "Crop Bottom", "Crop basso", "قص أسفل", "Crop bas", "Crop unten"],
    ["Περιστροφή", "Rotation", "Rotazione", "الدوران", "Rotation", "Drehung"],
    ["Quick Fit", "Quick Fit", "Adatta veloce", "ملاءمة سريعة", "Ajustement rapide", "Schnell-Anpassen"],
    ["⦿ Κέντρο", "⦿ Center", "⦿ Centro", "⦿ توسيط", "⦿ Centre", "⦿ Zentrieren"],
    ["▣ Fit στη σκηνή", "▣ Fit to stage", "▣ Adatta alla scena", "▣ ملاءمة للمشهد", "▣ Ajuster à la scène", "▣ An Bühne anpassen"],
    ["⬛ Γέμισμα", "⬛ Fill", "⬛ Riempi", "⬛ تعبئة", "⬛ Remplir", "⬛ Füllen"],
    ["✦ Reset FX", "✦ Reset FX", "✦ Reset FX", "✦ إعادة ضبط المؤثرات", "✦ Reset FX", "✦ FX zurücksetzen"],
    ["Effects / FX", "Effects / FX", "Effetti / FX", "المؤثرات / FX", "Effets / FX", "Effekte / FX"],
    ["Quick FX", "Quick FX", "FX rapidi", "مؤثرات سريعة", "FX rapides", "Schnell-FX"],
    ["Vivid", "Vivid", "Vivid", "مفعم", "Vif", "Lebhaft"],
    ["Soft", "Soft", "Soft", "ناعم", "Doux", "Weich"],
    ["B&W", "B&W", "B&N", "أبيض وأسود", "N&B", "S/W"],
    ["Sepia", "Sepia", "Seppia", "سيبيا", "Sépia", "Sepia"],
    ["Glow", "Glow", "Glow", "توهج", "Glow", "Glow"],
    ["BG Cut", "BG Cut", "BG Cut", "قص الخلفية", "BG Cut", "BG Cut"],
    ["Black Key", "Black Key", "Black Key", "مفتاح الأسود", "Black Key", "Black Key"],
    ["Green Key", "Green Key", "Green Key", "مفتاح الأخضر", "Green Key", "Green Key"],
    ["Φωτεινότητα", "Brightness", "Luminosità", "السطوع", "Luminosité", "Helligkeit"],
    ["Contrast", "Contrast", "Contrasto", "التباين", "Contraste", "Kontrast"],
    ["Saturation", "Saturation", "Saturazione", "التشبع", "Saturation", "Sättigung"],
    ["Blur", "Blur", "Sfocatura", "تمويه", "Flou", "Unschärfe"],
    ["Hue Shift", "Hue Shift", "Tinta", "تبديل الصبغة", "Décalage de teinte", "Farbton-Verschiebung"],
    ["Μαλακή άκρη / Feather", "Soft edge / Feather", "Bordo morbido / Feather", "حافة ناعمة / Feather", "Bord doux / Feather", "Weiche Kante / Feather"],
    ["Mask / Blend Preset", "Mask / Blend Preset", "Preset Maschera / Blend", "قناع / إعداد المزج", "Preset Masque / Blend", "Maske / Blend-Preset"],
    ["Καθαρό / None", "Clean / None", "Pulito / Nessuno", "نظيف / لا شيء", "Clean / Aucun", "Sauber / Keine"],
    ["Projector blend δεξιά", "Projector blend right", "Blend proiettore destra", "مزج بروجكتور يمين", "Blend projecteur droite", "Projektor-Blend rechts"],
    ["Projector blend αριστερά", "Projector blend left", "Blend proiettore sinistra", "مزج بروجكتور يسار", "Blend projecteur gauche", "Projektor-Blend links"],
    ["Projector blend επάνω", "Projector blend top", "Blend proiettore alto", "مزج بروجكتور أعلى", "Blend projecteur haut", "Projektor-Blend oben"],
    ["Projector blend κάτω", "Projector blend bottom", "Blend proiettore basso", "مزج بروجكتور أسفل", "Blend projecteur bas", "Projektor-Blend unten"],
    ["Κάθετο blend L/R", "Vertical blend L/R", "Blend verticale L/R", "مزج عمودي L/R", "Blend vertical G/D", "Vertikaler Blend L/R"],
    ["Οριζόντιο blend T/B", "Horizontal blend T/B", "Blend orizzontale T/B", "مزج أفقي T/B", "Blend horizontal H/B", "Horizontaler Blend O/U"],
    ["Vignette / all sides", "Vignette / all sides", "Vignetta / tutti i lati", "تظليل / كل الجوانب", "Vignette / tous côtés", "Vignette / alle Seiten"],
    ["Reset Blend", "Reset Blend", "Reset blend", "إعادة ضبط المزج", "Reset blend", "Blend zurücksetzen"],
    ["Για overlap projector ή soft μάσκα ανά surface, χωρίς να πειράζεις το clip.", "For projector overlap or soft mask per surface, without touching the clip.", "Per overlap del proiettore o maschera morbida per superficie, senza toccare il clip.", "لتداخل البروجكتور أو قناع ناعم لكل سطح بدون لمس المقطع.", "Pour un overlap projecteur ou un masque doux par surface, sans toucher au clip.", "Für Projektor-Overlap oder weiche Maske pro Fläche, ohne den Clip zu verändern."],
    ["Blend Mode", "Blend Mode", "Blend Mode", "وضع المزج", "Mode de fusion", "Blend-Modus"],
    ["Normal", "Normal", "Normale", "عادي", "Normal", "Normal"],
    ["Screen", "Screen", "Screen", "شاشة", "Screen", "Screen"],
    ["Multiply", "Multiply", "Moltiplica", "ضرب", "Multiply", "Multiplizieren"],
    ["Add / Lighter", "Add / Lighter", "Aggiungi / Più chiaro", "إضافة / أفتح", "Ajouter / Plus clair", "Addieren / Heller"],
    ["Overlay", "Overlay", "Overlay", "تراكب", "Overlay", "Overlay"],
    ["Effect Mode", "Effect Mode", "Modalità effetto", "وضع التأثير", "Mode d'effet", "Effektmodus"],
    ["Remove Black", "Remove Black", "Rimuovi nero", "إزالة الأسود", "Supprimer le noir", "Schwarz entfernen"],
    ["Remove Light / White BG", "Remove Light / White BG", "Rimuovi chiaro / BG bianco", "إزالة الفاتح / خلفية بيضاء", "Supprimer clair / fond blanc", "Helles / Weißer BG entfernen"],
    ["Chroma Green", "Chroma Green", "Chroma verde", "كروما أخضر", "Chroma vert", "Chroma Grün"],
    ["Grayscale", "Grayscale", "Scala di grigi", "تدرج رمادي", "Niveaux de gris", "Graustufen"],
    ["Invert", "Invert", "Inverti", "عكس", "Inverser", "Invertieren"],
    ["Effect Amount / Key", "Effect Amount / Key", "Quantità effetto / Key", "مقدار التأثير / المفتاح", "Quantité effet / Key", "Effektstärke / Key"],
    ["Video / Ήχος", "Video / Audio", "Video / Audio", "فيديو / صوت", "Vidéo / Audio", "Video / Audio"],
    ["ήχος · trim · speed · playlist", "audio · trim · speed · playlist", "audio · trim · speed · playlist", "الصوت · القص · السرعة · القائمة", "audio · trim · vitesse · playlist", "Audio · Trim · Geschwindigkeit · Playlist"],
    ["Ήχος", "Audio", "Audio", "الصوت", "Audio", "Audio"],
    ["Χρήση ήχου layer", "Use layer audio", "Usa audio layer", "استخدام صوت الطبقة", "Utiliser l'audio du calque", "Layer-Audio verwenden"],
    ["Ένταση", "Volume", "Volume", "مستوى الصوت", "Volume", "Lautstärke"],
    ["Playback Mode", "Playback Mode", "Modalità playback", "وضع التشغيل", "Mode de lecture", "Wiedergabemodus"],
    ["🔁 Loop", "🔁 Loop", "🔁 Loop", "🔁 تكرار", "🔁 Boucle", "🔁 Loop"],
    ["⇋ Reverse", "⇋ Reverse", "⇋ Reverse", "⇋ عكس", "⇋ Inverser", "⇋ Rückwärts"],
    ["Clip Edit / Κόψιμο", "Clip Edit / Trim", "Modifica clip / Trim", "تحرير المقطع / القص", "Édition clip / Trim", "Clip-Bearbeitung / Trim"],
    ["Current", "Current", "Attuale", "الحالي", "Actuel", "Aktuell"],
    ["Window", "Window", "Finestra", "نافذة", "Fenêtre", "Fenster"],
    ["Total", "Total", "Totale", "الإجمالي", "Total", "Gesamt"],
    ["Scrub / Θέση", "Scrub / Position", "Scrub / Posizione", "تحريك / الموضع", "Scrub / Position", "Scrub / Position"],
    ["Clip In", "Clip In", "Clip In", "بداية المقطع", "Entrée clip", "Clip In"],
    ["Clip Out", "Clip Out", "Clip Out", "نهاية المقطع", "Sortie clip", "Clip Out"],
    ["Set In = current", "Set In = current", "Imposta In = corrente", "اجعل البداية = الحالي", "Définir In = actuel", "In = aktuell setzen"],
    ["Set Out = current", "Set Out = current", "Imposta Out = corrente", "اجعل النهاية = الحالي", "Définir Out = actuel", "Out = aktuell setzen"],
    ["Reset Trim", "Reset Trim", "Reset trim", "إعادة ضبط القص", "Reset trim", "Trim zurücksetzen"],
    ["Playback Speed", "Playback Speed", "Velocità playback", "سرعة التشغيل", "Vitesse de lecture", "Wiedergabegeschwindigkeit"],
    ["Clip Change", "Clip Change", "Cambio clip", "تغيير المقطع", "Changement de clip", "Clip-Wechsel"],
    ["Transition", "Transition", "Transizione", "الانتقال", "Transition", "Übergang"],
    ["Transition FX", "Transition FX", "FX transizione", "مؤثرات الانتقال", "FX de transition", "Übergangs-FX"],
    ["Layer Playlist", "Layer Playlist", "Playlist layer", "قائمة الطبقة", "Playlist du calque", "Layer-Playlist"],
    ["Loop whole playlist / Επανάληψη", "Loop whole playlist / Repeat", "Loop intera playlist / Ripeti", "تكرار القائمة بالكامل", "Boucler toute la playlist", "Gesamte Playlist wiederholen"],
    ["Prev Clip", "Prev Clip", "Clip prec.", "المقطع السابق", "Clip préc.", "Vorheriger Clip"],
    ["Next Clip", "Next Clip", "Clip succ.", "المقطع التالي", "Clip suiv.", "Nächster Clip"],
    ["Clear Layer", "Clear Layer", "Pulisci layer", "مسح الطبقة", "Effacer le calque", "Layer leeren"],
    ["Χρησιμοποίησε τα Layer chips στα video cards για να προσθέσεις περισσότερα clips στο ίδιο layer.", "Use the Layer chips on video cards to add more clips to the same layer.", "Usa i chip Layer sulle card video per aggiungere più clip allo stesso layer.", "استخدم شرائح الطبقة في بطاقات الفيديو لإضافة مقاطع أكثر إلى الطبقة نفسها.", "Utilise les puces Layer sur les cartes vidéo pour ajouter plus de clips au même calque.", "Nutze die Layer-Chips auf den Video-Karten, um weitere Clips derselben Ebene hinzuzufügen."],
    ["Δεν υπάρχουν extra clips ακόμα.", "No extra clips yet.", "Nessun clip extra per ora.", "لا توجد مقاطع إضافية بعد.", "Aucun clip supplémentaire pour le moment.", "Noch keine zusätzlichen Clips."],
    ["Play this clip on the selected layer", "Play this clip on the selected layer", "Riproduci questo clip sul layer selezionato", "شغّل هذا المقطع على الطبقة المحددة", "Lire ce clip sur le calque sélectionné", "Diesen Clip auf der ausgewählten Ebene abspielen"],
    ["Move up", "Move up", "Sposta su", "تحريك لأعلى", "Monter", "Nach oben"],
    ["Move down", "Move down", "Sposta giù", "تحريك لأسفل", "Descendre", "Nach unten"],
    ["Remove clip", "Remove clip", "Rimuovi clip", "إزالة المقطع", "Supprimer le clip", "Clip entfernen"],
    ["Media not linked right now", "Media not linked right now", "Il media non è collegato in questo momento", "الوسيط غير مرتبط حاليًا", "Le média n'est pas lié pour le moment", "Das Medium ist aktuell nicht verknüpft"],
    ["Now playing on this mapped layer", "Now playing on this mapped layer", "In riproduzione su questo layer mappato", "يعمل الآن على هذه الطبقة المعينة", "Lecture en cours sur ce calque mappé", "Spielt gerade auf dieser gemappten Ebene"],
    ["Queued next inside this same layer", "Queued next inside this same layer", "In coda nello stesso layer", "في الانتظار داخل الطبقة نفسها", "En attente dans ce même calque", "Als Nächstes in derselben Ebene eingeplant"],
    ["auto next on end", "auto next on end", "auto next alla fine", "انتقال تلقائي عند النهاية", "auto next à la fin", "automatisch weiter am Ende"],
    ["manual choose mode", "manual choose mode", "modalità manuale", "وضع اختيار يدوي", "mode manuel", "manueller Modus"],
    ["clip", "clip", "clip", "مقطع", "clip", "Clip"],
    ["από", "of", "di", "من", "sur", "von"],
    ["PDF Scroll", "PDF Scroll", "Scroll PDF", "تمرير PDF", "Défilement PDF", "PDF-Scroll"],
    ["Έλεγχος PDF", "PDF control", "Controllo PDF", "تحكم PDF", "Contrôle PDF", "PDF-Steuerung"],
    ["Σελίδα PDF", "PDF page", "Pagina PDF", "صفحة PDF", "Page PDF", "PDF-Seite"],
    ["Σελίδα -", "Page -", "Pagina -", "صفحة -", "Page -", "Seite -"],
    ["Σελίδα +", "Page +", "Pagina +", "صفحة +", "Page +", "Seite +"],
    ["PDF Note", "PDF Note", "Nota PDF", "ملاحظة PDF", "Note PDF", "PDF-Hinweis"],
    ["Το PDF scroll δουλεύει με slider, page jump και mouse wheel πάνω στο επιλεγμένο PDF.", "PDF scrolling works with the slider, page jump and mouse wheel on the selected PDF.", "Lo scroll PDF funziona con slider, salto pagina e rotella del mouse sul PDF selezionato.", "يعمل تمرير PDF بواسطة المنزلق والانتقال بين الصفحات وعجلة الفأرة على ملف PDF المحدد.", "Le défilement PDF fonctionne avec le curseur, le saut de page et la molette sur le PDF sélectionné.", "PDF-Scroll funktioniert mit dem Slider, Seitensprung und Mausrad auf dem ausgewählten PDF."],
    ["Κείμενο / Τίτλος", "Text / Title", "Testo / Titolo", "نص / عنوان", "Texte / Titre", "Text / Titel"],
    ["γράψε · χρώμα · στοίχιση", "write · color · alignment", "scrivi · colore · allineamento", "اكتب · لون · محاذاة", "écrire · couleur · alignement", "schreiben · Farbe · Ausrichtung"],
    ["Κείμενο", "Text", "Testo", "نص", "Texte", "Text"],
    ["Μέγεθος γραμματοσειράς", "Font size", "Dimensione font", "حجم الخط", "Taille de police", "Schriftgröße"],
    ["Στοίχιση", "Alignment", "Allineamento", "المحاذاة", "Alignement", "Ausrichtung"],
    ["Αριστερά", "Left", "Sinistra", "يسار", "Gauche", "Links"],
    ["Κέντρο", "Center", "Centro", "وسط", "Centre", "Mitte"],
    ["Δεξιά", "Right", "Destra", "يمين", "Droite", "Rechts"],
    ["Χρώμα κειμένου", "Text color", "Colore testo", "لون النص", "Couleur du texte", "Textfarbe"],
    ["Εμφάνιση box", "Show box", "Mostra box", "إظهار الصندوق", "Afficher le cadre", "Box anzeigen"],
    ["BG Opacity", "BG Opacity", "Opacità BG", "شفافية الخلفية", "Opacité BG", "BG-Deckkraft"],
    ["Tip: μπορείς να γράψεις ελληνικά, αγγλικά, σύμβολα ή emoji και να τα βάλεις οπουδήποτε στο mapping.", "Tip: you can type Greek, English, symbols or emoji and place them anywhere in the mapping.", "Tip: puoi scrivere greco, inglese, simboli o emoji e metterli ovunque nel mapping.", "نصيحة: يمكنك كتابة اليونانية أو الإنجليزية أو الرموز أو الإيموجي ووضعها في أي مكان على المابنغ.", "Astuce : tu peux écrire en grec, en anglais, avec des symboles ou des emoji et les placer n’importe où dans le mapping.", "Tipp: Du kannst griechisch, englisch, Symbole oder Emoji schreiben und überall im Mapping platzieren."],
    ["Playback / Μεταφορά", "Playback / Transport", "Playback / Trasporto", "التشغيل / النقل", "Playback / Transport", "Playback / Transport"],
    ["transport · warp reset", "transport · warp reset", "trasporto · reset warp", "النقل · إعادة ضبط warp", "transport · reset warp", "Transport · Warp-Reset"],
    ["Playback", "Playback", "Playback", "التشغيل", "Lecture", "Wiedergabe"],
    ["Play / Pause", "Play / Pause", "Play / Pausa", "تشغيل / إيقاف مؤقت", "Lecture / Pause", "Play / Pause"],
    ["Rewind", "Rewind", "Riavvolgi", "إرجاع", "Retour arrière", "Zurückspulen"],
    ["9 σημεία", "9 points", "9 punti", "9 نقاط", "9 points", "9 Punkte"],
    ["Reset Warp", "Reset Warp", "Reset warp", "إعادة ضبط warp", "Reset warp", "Warp zurücksetzen"],
    ["Field Test / Έλεγχος", "Field Test / Check", "Field Test / Controllo", "اختبار ميداني / فحص", "Test terrain / Contrôle", "Field-Test / Check"],
    ["Πριν το show", "Before the show", "Prima dello show", "قبل العرض", "Avant le show", "Vor der Show"],
    ["Ταίριαξε πρώτα τον projector.", "Match the projector first.", "Allinea prima il proiettore.", "طابق البروجكتور أولًا.", "Ajuste d’abord le projecteur.", "Richte zuerst den Projektor aus."],
    ["Βάλε Preset εξόδου ή Πλάτος / Ύψος όσο γίνεται πιο κοντά στη native ανάλυση του projector.", "Set the output preset or Width / Height as close as possible to the projector native resolution.", "Imposta il preset di uscita o Larghezza / Altezza il più vicino possibile alla risoluzione nativa del proiettore.", "اضبط إعداد الإخراج أو العرض / الارتفاع قريبًا قدر الإمكان من دقة البروجكتور الأصلية.", "Règle le preset de sortie ou Largeur / Hauteur aussi près que possible de la résolution native du projecteur.", "Stelle das Ausgabe-Preset oder Breite / Höhe so nah wie möglich an die native Projektorauflösung ein."],
    ["Χρησιμοποίησε Clean στο πρώτο τεστ.", "Use Clean in the first test.", "Usa Clean nel primo test.", "استخدم Clean في أول اختبار.", "Utilise Clean au premier test.", "Nutze Clean beim ersten Test."],
    ["Πήγαινε σε Ultra μόνο αν το laptop μένει ομαλό με όλα τα layers.", "Use Ultra only if the laptop stays smooth with all layers.", "Passa a Ultra solo se il laptop resta fluido con tutti i layer.", "انتقل إلى Ultra فقط إذا بقي اللابتوب سلسًا مع كل الطبقات.", "Passe à Ultra seulement si le laptop reste fluide avec tous les calques.", "Nutze Ultra nur, wenn das Laptop mit allen Ebenen flüssig bleibt."],
    ["Ξεκλείδωσε τον ήχο μία φορά.", "Unlock the audio once.", "Sblocca l’audio una volta.", "افتح الصوت مرة واحدة.", "Déverrouille l’audio une fois.", "Entsperre den Ton einmal."],
    ["Κάνε ένα click μέσα στο app πριν το show ώστε ο ήχος να είναι έτοιμος.", "Click once inside the app before the show so the audio is ready.", "Fai un clic dentro l’app prima dello show così l’audio sarà pronto.", "انقر مرة داخل التطبيق قبل العرض حتى يكون الصوت جاهزًا.", "Fais un clic dans l’app avant le show pour que l’audio soit prêt.", "Klicke vor der Show einmal in die App, damit der Ton bereit ist."],
    ["Κράτα όλα τα media σε έναν φάκελο.", "Keep all media in one folder.", "Tieni tutti i media in una cartella.", "احتفظ بكل الوسائط في مجلد واحد.", "Garde tous les médias dans un seul dossier.", "Halte alle Medien in einem Ordner."],
    ["Το Project JSON δεν βάζει μέσα τα πραγματικά videos, εικόνες και PDF.", "The project JSON does not embed the real videos, images and PDFs.", "Il JSON del progetto non incorpora i video, le immagini e i PDF reali.", "ملف JSON للمشروع لا يضمّن الفيديوهات والصور وملفات PDF الحقيقية.", "Le JSON du projet n’intègre pas les vraies vidéos, images et PDF.", "Das Projekt-JSON bettet die echten Videos, Bilder und PDFs nicht ein."],
    ["Σημείωση PDF.", "PDF note.", "Nota PDF.", "ملاحظة PDF.", "Note PDF.", "PDF-Hinweis."],
    ["Αυτό το build κρατά το ίδιο PDF flow. Αν θα παίξεις PDF live, τεστάρισέ το πρώτα στο ίδιο laptop/browser.", "This build keeps the same PDF flow. If you plan to play PDFs live, test it first on the same laptop/browser.", "Questa build mantiene lo stesso flusso PDF. Se userai PDF live, testalo prima sullo stesso laptop/browser.", "هذا الإصدار يحافظ على نفس تدفق PDF. إذا كنت ستشغّل PDF بشكل مباشر فاختبره أولًا على نفس اللابتوب/المتصفح.", "Cette build garde le même flux PDF. Si tu joues des PDF en live, teste-le d’abord sur le même laptop/browser.", "Dieser Build behält denselben PDF-Ablauf. Wenn du PDFs live abspielst, teste es zuerst auf demselben Laptop/Browser."],
    ["Ειδοποίηση", "Notice", "Avviso", "إشعار", "Notification", "Hinweis"],
    ["Τιμή", "Value", "Valore", "القيمة", "Valeur", "Wert"],
    ["Προσθήκη κάμερας", "Add camera", "Aggiungi camera", "إضافة كاميرا", "Ajouter une caméra", "Kamera hinzufügen"],
    ["Διάλεξε live κάμερα για χρήση μέσα στο mapping project.", "Choose a live camera to use inside the mapping project.", "Scegli una camera live da usare nel progetto di mapping.", "اختر كاميرا مباشرة لاستخدامها داخل مشروع المابنغ.", "Choisis une caméra live à utiliser dans le projet de mapping.", "Wähle eine Live-Kamera zur Verwendung im Mapping-Projekt."],
    ["Έλεγχος καμερών…", "Checking cameras…", "Controllo camere…", "جارٍ فحص الكاميرات…", "Vérification des caméras…", "Kameras werden geprüft…"],
    ["Ανανέωση καμερών", "Refresh cameras", "Aggiorna camere", "تحديث الكاميرات", "Actualiser les caméras", "Kameras aktualisieren"],
    ["Χρήση default κάμερας", "Use default camera", "Usa camera predefinita", "استخدام الكاميرا الافتراضية", "Utiliser la caméra par défaut", "Standardkamera verwenden"],
    ["Προσθήκη κειμένου / τίτλου", "Add text / title", "Aggiungi testo / titolo", "إضافة نص / عنوان", "Ajouter un texte / titre", "Text / Titel hinzufügen"],
    ["Γράψε απευθείας πάνω στο mapping. Μπορείς να χρησιμοποιήσεις και emoji ή απλά εικονίδια.", "Write directly on the mapping. You can also use emoji or simple icons.", "Scrivi direttamente sul mapping. Puoi usare anche emoji o semplici icone.", "اكتب مباشرة على المابنغ. يمكنك أيضًا استخدام الإيموجي أو الأيقونات البسيطة.", "Écris directement sur le mapping. Tu peux aussi utiliser des emoji ou des icônes simples.", "Schreibe direkt auf das Mapping. Du kannst auch Emoji oder einfache Symbole verwenden."],
    ["Προαιρετικό όνομα", "Optional name", "Nome opzionale", "اسم اختياري", "Nom facultatif", "Optionaler Name"],
    ["BG Χρώμα", "BG Color", "Colore BG", "لون الخلفية", "Couleur BG", "BG-Farbe"],
    ["Tip: για καθαρό stage text ξεκίνα με λευκό κείμενο, center align και χωρίς background.", "Tip: for clean stage text start with white text, center alignment and no background.", "Tip: per un testo stage pulito inizia con testo bianco, allineamento centrale e senza background.", "نصيحة: لنص واضح على المسرح ابدأ بنص أبيض ومحاذاة للوسط وبدون خلفية.", "Astuce : pour un texte de scène propre, commence avec du texte blanc, centré et sans fond.", "Tipp: Für sauberen Bühnentext beginne mit weißem Text, zentrierter Ausrichtung und ohne Hintergrund."],
    ["Προσθήκη layer κειμένου", "Add text layer", "Aggiungi layer testo", "إضافة طبقة نص", "Ajouter un calque texte", "Text-Layer hinzufügen"],
    ["Running step", "Running step", "Passo in esecuzione", "تشغيل الخطوة", "Étape en cours", "Laufender Schritt"],
    ["Paused on step", "Paused on step", "Pausa al passo", "متوقف عند الخطوة", "En pause à l’étape", "Pausiert bei Schritt"],
    ["Last step", "Last step", "Ultimo passo", "آخر خطوة", "Dernière étape", "Letzter Schritt"],
    ["Ready", "Ready", "Pronto", "جاهز", "Prêt", "Bereit"],
    ["Missing preset", "Missing preset", "Preset mancante", "إعداد مسبق مفقود", "Preset manquant", "Fehlendes Preset"],
    ["Step", "Step", "Passo", "خطوة", "Étape", "Schritt"],
    ["Preset", "Preset", "Preset", "إعداد مسبق", "Preset", "Preset"],
    ["Seconds", "Seconds", "Secondi", "ثوانٍ", "Secondes", "Sekunden"],
    ["Apply", "Apply", "Applica", "تطبيق", "Appliquer", "Anwenden"],
    ["Run from here", "Run from here", "Esegui da qui", "تشغيل من هنا", "Lancer depuis ici", "Von hier starten"],
    ["Remove", "Remove", "Rimuovi", "إزالة", "Supprimer", "Entfernen"],
    ["Cue", "Cue", "Cue", "تجهيز", "Cue", "Cue"],
    ["Update", "Update", "Aggiorna", "تحديث", "Mettre à jour", "Aktualisieren"],
    ["Rename", "Rename", "Rinomina", "إعادة تسمية", "Renommer", "Umbenennen"],
    ["Delete", "Delete", "Elimina", "حذف", "Supprimer", "Löschen"],
    ["LIVE NOW", "LIVE NOW", "LIVE ORA", "يعمل الآن", "EN DIRECT", "JETZT LIVE"],
    ["NEXT CUE", "NEXT CUE", "PROSSIMO CUE", "الإشارة التالية", "CUE SUIVANT", "NÄCHSTER CUE"],
    ["visible", "visible", "visibili", "ظاهرة", "visibles", "sichtbar"],
    ["Keyboard:", "Keyboard:", "Tastiera:", "لوحة المفاتيح:", "Clavier :", "Tastatur:"],
    ["MIDI:", "MIDI:", "MIDI:", "MIDI:", "MIDI :", "MIDI:"],
    ["MIDI unavailable in this runtime.", "MIDI unavailable in this runtime.", "MIDI non disponibile in questo runtime.", "‏MIDI غير متاح في هذا التشغيل.", "Le MIDI n’est pas disponible dans ce runtime.", "MIDI ist in diesem Runtime nicht verfügbar."],
    ["Waiting for a MIDI input device.", "Waiting for a MIDI input device.", "In attesa di un dispositivo MIDI input.", "في انتظار جهاز إدخال MIDI.", "En attente d’un périphérique MIDI input.", "Warte auf ein MIDI-Eingabegerät."],
    ["MIDI is off. Turn it on for note triggers.", "MIDI is off. Turn it on for note triggers.", "Il MIDI è disattivato. Attivalo per i trigger via note.", "‏MIDI متوقف. فعّله لتشغيل الإشارات عبر النغمات.", "Le MIDI est désactivé. Active-le pour les triggers par note.", "MIDI ist aus. Aktiviere es für Note-Trigger."],
    ["Listening to", "Listening to", "In ascolto su", "يستمع إلى", "Écoute sur", "Hört auf"],
    ["Trigger Status", "Trigger Status", "Stato Trigger", "حالة التفعيل", "État des triggers", "Trigger-Status"],
    ["Keyboard cues ·", "Keyboard cues ·", "Cue da tastiera ·", "إشارات لوحة المفاتيح ·", "Cues clavier ·", "Tastatur-Cues ·"],
    ["Keyboard transport ·", "Keyboard transport ·", "Transport tastiera ·", "تحكم لوحة المفاتيح ·", "Transport clavier ·", "Tastatur-Transport ·"],
    ["Alt+1..8 presets · Alt+A seq · Alt+S stop · Alt+B blackout", "Alt+1..8 presets · Alt+A seq · Alt+S stop · Alt+B blackout", "Preset Alt+1..8 · Alt+A seq · Alt+S stop · Alt+B blackout", "إعدادات Alt+1..8 · Alt+A تسلسل · Alt+S إيقاف · Alt+B تعتيم", "Presets Alt+1..8 · Alt+A seq · Alt+S stop · Alt+B blackout", "Alt+1..8 Presets · Alt+A Seq · Alt+S Stop · Alt+B Blackout"],
    ["MIDI cues · notes", "MIDI cues · notes", "Cue MIDI · note", "إشارات MIDI · النغمات", "Cues MIDI · notes", "MIDI-Cues · Noten"],
    ["MIDI presets · notes", "MIDI presets · notes", "Preset MIDI · note", "إعدادات MIDI · النغمات", "Presets MIDI · notes", "MIDI-Presets · Noten"],
    ["MIDI transport ·", "MIDI transport ·", "Transport MIDI ·", "تحكم MIDI ·", "Transport MIDI ·", "MIDI-Transport ·"]
  ]);

  const LANG_INDEX = Object.freeze({ el: 0, en: 1, it: 2, ar: 3, fr: 4, de: 5 });
  const ESCAPE_RE = /[.*+?^${}()|[\]\\]/g;
  let observer = null;
  let rafId = 0;

  function lang() {
    try { return normalizeUiLanguage(currentUiLanguage); } catch (error) { return "el"; }
  }

  function normalize(value) {
    return String(value || "").replace(/\s+/g, " ").trim();
  }

  function escapeRegExp(value) {
    return String(value || "").replace(ESCAPE_RE, "\\$&");
  }

  const LOOKUP = (() => {
    const map = new Map();
    ENTRIES.forEach(entry => {
      entry.forEach(value => {
        const key = normalize(value);
        if (key) map.set(key, entry);
      });
    });
    return map;
  })();

  const FRAGMENTS = (() => {
    const list = [];
    ENTRIES.forEach(entry => {
      entry.forEach(value => {
        const key = String(value || "").trim();
        if (!key || key.length < 2) return;
        list.push({ needle: key, entry, regex: new RegExp(escapeRegExp(key), "g") });
      });
    });
    list.sort((a, b) => b.needle.length - a.needle.length);
    return list;
  })();

  function targetValue(entry) {
    const index = LANG_INDEX[lang()] ?? 1;
    return entry[index] || entry[1] || entry[0] || "";
  }

  function translateExact(value) {
    const entry = LOOKUP.get(normalize(value));
    return entry ? targetValue(entry) : value;
  }

  function translateFragments(value) {
    let output = String(value || "");
    FRAGMENTS.forEach(item => {
      if (!output.includes(item.needle)) return;
      output = output.replace(item.regex, targetValue(item.entry));
    });
    return output;
  }

  function translatePreserveSpacing(raw) {
    const input = String(raw || "");
    const match = input.match(/^(\s*)(.*?)(\s*)$/s);
    if (!match) return input;
    const [, lead, core, tail] = match;
    if (!core.trim()) return input;
    const exact = translateExact(core);
    const translated = exact !== core ? exact : translateFragments(core);
    return translated === core ? input : `${lead}${translated}${tail}`;
  }

  function translateTree(root = document.body) {
    if (!root) return;
    const start = root.nodeType === Node.ELEMENT_NODE || root.nodeType === Node.DOCUMENT_NODE ? root : root.parentNode;
    if (!start) return;
    const walker = document.createTreeWalker(start, NodeFilter.SHOW_TEXT, {
      acceptNode(node) {
        const parent = node.parentElement;
        if (!parent) return NodeFilter.FILTER_REJECT;
        if (parent.closest("script, style, textarea")) return NodeFilter.FILTER_REJECT;
        const text = normalize(node.nodeValue);
        return text ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
      }
    });
    while (walker.nextNode()) {
      const node = walker.currentNode;
      const translated = translatePreserveSpacing(node.nodeValue);
      if (translated !== node.nodeValue) node.nodeValue = translated;
    }
    const elements = start.querySelectorAll ? [start, ...start.querySelectorAll("*")] : [start];
    elements.forEach((el) => {
      if (!(el instanceof Element)) return;
      ["title", "aria-label", "placeholder"].forEach((attr) => {
        const value = el.getAttribute(attr);
        if (!value) return;
        const translated = translateFragments(translateExact(value));
        if (translated !== value) el.setAttribute(attr, translated);
      });
    });
  }

  function schedule(root = document.body) {
    if (rafId) cancelAnimationFrame(rafId);
    rafId = requestAnimationFrame(() => {
      rafId = 0;
      translateTree(root || document.body);
    });
  }

  function applyDocumentLanguage() {
    const active = lang();
    document.documentElement.lang = active;
    document.documentElement.dir = active === 'ar' ? 'rtl' : 'ltr';
    document.body?.setAttribute('dir', active === 'ar' ? 'rtl' : 'ltr');
  }

  function ensureObserver() {
    if (observer || !document.body) return;
    observer = new MutationObserver((mutations) => {
      const roots = new Set();
      mutations.forEach((mutation) => {
        if (mutation.type === "characterData" && mutation.target?.parentNode) roots.add(mutation.target.parentNode);
        if (mutation.type === "attributes" && mutation.target) roots.add(mutation.target);
        mutation.addedNodes?.forEach((node) => roots.add(node));
      });
      if (!roots.size) {
        schedule(document.body);
        return;
      }
      roots.forEach((root) => schedule(root));
    });
    observer.observe(document.body, {
      subtree: true,
      childList: true,
      characterData: true,
      attributes: true,
      attributeFilter: ["title", "aria-label", "placeholder"]
    });
  }

  function boot() {
    applyDocumentLanguage();
    ensureObserver();
    schedule(document.body);
    setTimeout(() => schedule(document.body), 80);
    setTimeout(() => schedule(document.body), 260);
    if (typeof languageSelect !== "undefined" && languageSelect) {
      languageSelect.addEventListener("change", () => {
        applyDocumentLanguage();
        setTimeout(() => schedule(document.body), 10);
        setTimeout(() => schedule(document.body), 120);
      });
    }
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", boot, { once: true });
  } else {
    boot();
  }
})();
