const fs = require('fs'); let code = fs.readFileSync('src/lib/i18n.js', 'utf8'); const newKeys = { PT: { createSection: "Criar Secção", noSectionsCreated: "Ainda não tem secções criadas", linkCopied: "Link copiado!", share: "Partilhar", piecesInLaundry: "peça(s) na lavandaria", toBeWashed: "A ser lavados", unavailable: "Indisponíveis", availableLooks: "Disponíveis", noLooksAvailable: "Nenhum look disponível", location: "Localidade", locationEx: "Ex: Lisboa, Portugal", ideaSuggestion: "Ideia / Sugestão", bugError: "Bug / Erro", writeMessage: "Escreva aqui a sua mensagem...", sendMessage: "Enviar Mensagem", notificationsModal: "Notificações", noNotifications: "Sem Notificações", userSavedLook: "guardou o seu look", inTheirCloset: "no armário dele!", sharedLookTitle: "Look Partilhado", sharedBy: "Partilhado por", includedPieces: "Peças incluídas", ignore: "Ignorar", copying: "A copiar...", copyToMyCloset: "Copiar para o meu armário", msgSentSuccess: "Mensagem enviada com sucesso!", msgSendError: "Erro ao enviar mensagem. Verifica a tua ligação.", addFuturePurchase: "Adicionar peça como compra futura", wishlistDesc: "Lista de Desejos", someone: "alguém", feedbackTitle: "Suporte e Feedback", feedbackDesc: "Tem alguma ideia, sugestão ou encontrou algum problema? Envie uma mensagem diretamente para nós!", themeColorTitle: "Cor do Tema", personalizeColorDesc: "Personalize a cor", saveChanges: "Guardar Alterações" }, EN: { createSection: "Create Section", noSectionsCreated: "No sections created yet", linkCopied: "Link copied!", share: "Share", piecesInLaundry: "piece(s) in laundry", toBeWashed: "To be washed", unavailable: "Unavailable", availableLooks: "Available", noLooksAvailable: "No look available", location: "Location", locationEx: "E.g.: Lisbon, Portugal", ideaSuggestion: "Idea / Suggestion", bugError: "Bug / Error", writeMessage: "Write your message here...", sendMessage: "Send Message", notificationsModal: "Notifications", noNotifications: "No Notifications", userSavedLook: "saved your look", inTheirCloset: "in their closet!", sharedLookTitle: "Shared Look", sharedBy: "Shared by", includedPieces: "Included Pieces", ignore: "Ignore", copying: "Copying...", copyToMyCloset: "Copy to my closet", msgSentSuccess: "Message sent successfully!", msgSendError: "Error sending message. Check your connection.", addFuturePurchase: "Add piece as future purchase", wishlistDesc: "Wishlist", someone: "someone", feedbackTitle: "Support and Feedback", feedbackDesc: "Do you have any ideas, suggestions, or found a problem? Send a message directly to us!", themeColorTitle: "Theme Color", personalizeColorDesc: "Personalize the color", saveChanges: "Save Changes" }, ES: { createSection: "Crear Sección", noSectionsCreated: "Aún no hay secciones creadas", linkCopied: "¡Enlace copiado!", share: "Compartir", piecesInLaundry: "pieza(s) en la lavandería", toBeWashed: "Por lavar", unavailable: "No disponibles", availableLooks: "Disponibles", noLooksAvailable: "Ningún look disponible", location: "Ubicación", locationEx: "Ej: Lisboa, Portugal", ideaSuggestion: "Idea / Sugerencia", bugError: "Error / Fallo", writeMessage: "Escribe aquí tu mensaje...", sendMessage: "Enviar Mensaje", notificationsModal: "Notificaciones", noNotifications: "Sin Notificaciones", userSavedLook: "guardó tu look", inTheirCloset: "en su armario!", sharedLookTitle: "Look Compartido", sharedBy: "Compartido por", includedPieces: "Piezas incluidas", ignore: "Ignorar", copying: "Copiando...", copyToMyCloset: "Copiar a mi armario", msgSentSuccess: "¡Mensaje enviado con éxito!", msgSendError: "Error al enviar. Revisa tu conexión.", addFuturePurchase: "Añadir pieza como compra futura", wishlistDesc: "Lista de Deseos", someone: "alguien", feedbackTitle: "Soporte y Comentarios", feedbackDesc: "¿Tienes alguna idea, sugerencia o encontraste un problema? ¡Envíanos un mensaje directamente!", themeColorTitle: "Color del Tema", personalizeColorDesc: "Personaliza el color", saveChanges: "Guardar Cambios" }, FR: { createSection: "Créer une Section", noSectionsCreated: "Aucune section créée", linkCopied: "Lien copié !", share: "Partager", piecesInLaundry: "pièce(s) à la blanchisserie", toBeWashed: "À laver", unavailable: "Indisponibles", availableLooks: "Disponibles", noLooksAvailable: "Aucun look disponible", location: "Emplacement", locationEx: "Ex: Lisbonne, Portugal", ideaSuggestion: "Idée / Suggestion", bugError: "Bug / Erreur", writeMessage: "Écrivez votre message ici...", sendMessage: "Envoyer le Message", notificationsModal: "Notifications", noNotifications: "Aucune Notification", userSavedLook: "a sauvegardé votre look", inTheirCloset: "dans son placard !", sharedLookTitle: "Look Partagé", sharedBy: "Partagé par", includedPieces: "Pièces incluses", ignore: "Ignorer", copying: "Copie en cours...", copyToMyCloset: "Copier dans mon placard", msgSentSuccess: "Message envoyé avec succès !", msgSendError: "Erreur d'envoi. Vérifiez votre connexion.", addFuturePurchase: "Ajouter comme achat futur", wishlistDesc: "Liste de Souhaits", someone: "quelqu'un", feedbackTitle: "Support et Commentaires", feedbackDesc: "Avez-vous des idées, des suggestions ou trouvé un problème ? Envoyez-nous un message directement !", themeColorTitle: "Couleur du Thème", personalizeColorDesc: "Personnaliser la couleur", saveChanges: "Enregistrer les Modifications" }, DE: { createSection: "Bereich erstellen", noSectionsCreated: "Noch keine Bereiche erstellt", linkCopied: "Link kopiert!", share: "Teilen", piecesInLaundry: "Stück(e) in der Wäsche", toBeWashed: "Zum Waschen", unavailable: "Nicht verfügbar", availableLooks: "Verfügbar", noLooksAvailable: "Kein Look verfügbar", location: "Ort", locationEx: "Z.B.: Lissabon, Portugal", ideaSuggestion: "Idee / Vorschlag", bugError: "Fehler / Bug", writeMessage: "Schreibe hier deine Nachricht...", sendMessage: "Nachricht Senden", notificationsModal: "Benachrichtigungen", noNotifications: "Keine Benachrichtigungen", userSavedLook: "hat deinen Look gespeichert", inTheirCloset: "in seinem Schrank!", sharedLookTitle: "Geteilter Look", sharedBy: "Geteilt von", includedPieces: "Enthaltene Stücke", ignore: "Ignorieren", copying: "Kopieren...", copyToMyCloset: "In meinen Schrank kopieren", msgSentSuccess: "Nachricht erfolgreich gesendet!", msgSendError: "Fehler beim Senden. Überprüfe deine Verbindung.", addFuturePurchase: "Als zukünftigen Kauf hinzufügen", wishlistDesc: "Wunschzettel", someone: "jemand", feedbackTitle: "Support und Feedback", feedbackDesc: "Hast du Ideen, Vorschläge oder ein Problem gefunden? Sende uns direkt eine Nachricht!", themeColorTitle: "Themenfarbe", personalizeColorDesc: "Farbe anpassen", saveChanges: "Änderungen Speichern" } }; for (const lang in newKeys) { const keys = newKeys[lang]; const langRegex = new RegExp(`${lang}: \\{([\\s\\S]*?)\\}`, 'g'); let match = langRegex.exec(code); if (match) { let currentKeys = match[1]; let newKeysString = ""; for (const [k, v] of Object.entries(keys)) { if (!currentKeys.includes(`${k}:`)) { newKeysString += ` ${k}: "${v}",\n`; } } if (newKeysString.length > 0) { code = code.replace(currentKeys, currentKeys.trimEnd() + ",\n" + newKeysString); } } } fs.writeFileSync('src/lib/i18n.js', code); console.log('i18n.js updated successfully');