This commit is contained in:
2026-05-05 15:53:01 +01:00
parent 5dc41414a4
commit 771f4dd1da
2 changed files with 128 additions and 75 deletions

View File

@@ -928,7 +928,7 @@ export default function App() {
{ id: 'wishlist', label: t('wishlist') || 'Carrinho', icon: ShoppingBag },
{ id: 'laundry', label: t('laundry'), icon: Droplets },
{ id: 'outfits', label: t('outfits'), icon: Sparkles },
{ id: 'planner', label: 'Planeamento', icon: Calendar },
{ id: 'planner', label: t('planning'), icon: Calendar },
{ id: 'settings', label: t('settings'), icon: Settings },
].map(item => (
<button
@@ -982,7 +982,7 @@ export default function App() {
{view === 'wishlist' && (t('wishlist') || 'Carrinho')}
{view === 'laundry' && t('laundry')}
{view === 'outfits' && t('outfitsAndStyle')}
{view === 'planner' && 'Planeamento'}
{view === 'planner' && t('planning')}
{view === 'settings' && t('settings')}
{view === 'profile' && t('profileInfo')}
</h2>
@@ -1221,7 +1221,7 @@ export default function App() {
<div className="lg:col-span-1 space-y-8">
<Card className="p-8 border-primary-200" darkMode={darkMode}>
<h3 className="text-2xl font-black tracking-tighter mb-6 flex items-center gap-3 text-inherit">
<Sparkles className="text-primary-600" /> {editingLook ? t('editLook') || 'Editar Look' : t('createNewLook')}
<Sparkles className="text-primary-600" /> {editingLook ? t('editLook') || 'Editar Outfit' : t('createNewLook')}
</h3>
<form key={editingLook ? editingLook.id : 'new'} onSubmit={saveLook} className="space-y-6">
<input name="lookName" placeholder={t('lookName')} defaultValue={editingLook?.name || ''} required className={`w-full p-4 rounded-xl border-none shadow-inner font-bold ${darkMode ? 'bg-gray-700' : 'bg-gray-100'}`} />
@@ -1342,7 +1342,7 @@ export default function App() {
<button
onClick={() => shareLook(look)}
className={`p-2 transition-colors relative group/share ${copiedLookId === look.id ? 'text-green-500' : 'text-gray-300 hover:text-green-500'}`}
title="Partilhar look"
title="Partilhar outfit"
>
{copiedLookId === look.id ? <Check size={18} /> : <Share2 size={18} />}
<span className="absolute -top-8 left-1/2 -translate-x-1/2 bg-gray-900 text-white text-[9px] font-black uppercase tracking-widest px-2 py-1 rounded-lg whitespace-nowrap opacity-0 group-hover/share:opacity-100 transition-opacity pointer-events-none">
@@ -1350,7 +1350,7 @@ export default function App() {
</span>
</button>
<button onClick={() => { setEditingLook(look); setSelectedForLook(look.items); }} className="p-2 text-gray-300 hover:text-primary-500 transition-colors"><Edit2 size={18} /></button>
<button onClick={() => sendLookToLaundry(look)} className="p-2 text-gray-300 hover:text-blue-500 transition-colors" title="Lavar look inteiro"><Droplets size={18} /></button>
<button onClick={() => sendLookToLaundry(look)} className="p-2 text-gray-300 hover:text-blue-500 transition-colors" title="Lavar outfit inteiro"><Droplets size={18} /></button>
<button onClick={() => deleteLook(look.id)} className="p-2 text-gray-300 hover:text-red-500 transition-colors"><Trash size={18} /></button>
</div>
</div>
@@ -1436,7 +1436,7 @@ export default function App() {
<div className="space-y-6">
<div className="flex items-center gap-3 px-2">
<div className="w-2.5 h-2.5 rounded-full bg-blue-400"></div>
<h3 className="text-2xl font-black tracking-tighter text-inherit">A ser lavados <span className="text-sm font-bold opacity-40"> {t('unavailable')} ({laundryLooks.length})</span></h3>
<h3 className="text-2xl font-black tracking-tighter text-inherit">{t('toBeWashed')} <span className="text-sm font-bold opacity-40"> {t('unavailable')} ({laundryLooks.length})</span></h3>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
{laundryLooks.map(renderLookCard)}
@@ -1483,8 +1483,17 @@ export default function App() {
return Array.from({ length: 7 }, (_, i) => { const x = new Date(mon); x.setDate(mon.getDate() + i); return x; });
};
const monthNames = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
const dayHeaders = ['Seg','Ter','Qua','Qui','Sex','Sáb','Dom'];
const langLocaleMap = { PT: 'pt-PT', EN: 'en-GB', ES: 'es-ES', FR: 'fr-FR', DE: 'de-DE' };
const locale = langLocaleMap[language] || 'pt-PT';
const monthNames = Array.from({ length: 12 }, (_, i) => {
const d = new Date(2000, i, 1);
const name = d.toLocaleDateString(locale, { month: 'long' });
return name.charAt(0).toUpperCase() + name.slice(1);
});
const dayHeaders = Array.from({ length: 7 }, (_, i) => {
const d = new Date(2024, 0, i + 1); // 2024-01-01 is Monday
return d.toLocaleDateString(locale, { weekday: 'short' }).replace('.', '');
});
const prev = () => { const d = new Date(plannerCurrentDate); plannerMode === 'month' ? d.setMonth(month-1) : d.setDate(d.getDate()-7); setPlannerCurrentDate(d); };
const next = () => { const d = new Date(plannerCurrentDate); plannerMode === 'month' ? d.setMonth(month+1) : d.setDate(d.getDate()+7); setPlannerCurrentDate(d); };
@@ -1505,7 +1514,7 @@ export default function App() {
>
<div className={`px-3 py-2 flex items-center justify-between ${isToday ? 'bg-primary-600' : ''}`}>
<span className={`text-xs font-black ${isToday ? 'text-white' : ''}`}>{date.getDate()}</span>
{isToday && <span className="text-[8px] font-black text-white/80 uppercase tracking-widest">Hoje</span>}
{isToday && <span className="text-[8px] font-black text-white/80 uppercase tracking-widest">{t('today')}</span>}
</div>
{look ? (
<div className="px-2 pb-2 space-y-1">
@@ -1516,7 +1525,7 @@ export default function App() {
})}
</div>
<p className="text-[9px] font-black uppercase tracking-widest opacity-50 truncate">{look.name}</p>
{isWeek && <p className="text-[9px] opacity-40 font-bold">{look.items.length} peças</p>}
{isWeek && <p className="text-[9px] opacity-40 font-bold">{look.items.length} {t('piecesShort')}</p>}
</div>
) : (
cur && <div className="absolute inset-0 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity">
@@ -1544,13 +1553,13 @@ export default function App() {
<ChevronRight size={20} />
</button>
<button onClick={() => setPlannerCurrentDate(new Date())} className="px-4 py-2 text-[10px] font-black uppercase tracking-widest text-primary-600 bg-primary-50 dark:bg-primary-900/20 rounded-xl hover:bg-primary-100 dark:hover:bg-primary-900/40 transition-colors">
Hoje
{t('today')}
</button>
</div>
<div className={`flex p-1.5 rounded-2xl gap-1 ${darkMode ? 'bg-gray-800' : 'bg-gray-100'}`}>
{['month','week'].map(m => (
<button key={m} onClick={() => setPlannerMode(m)} className={`px-5 py-2 rounded-xl font-black text-[10px] uppercase tracking-widest transition-all ${plannerMode === m ? `${darkMode ? 'bg-gray-700' : 'bg-white'} shadow-md text-primary-600` : 'text-gray-500 hover:text-gray-700'}`}>
{m === 'month' ? 'Mês' : 'Semana'}
{m === 'month' ? t('monthLabel') : t('weekLabel')}
</button>
))}
</div>
@@ -1940,10 +1949,10 @@ export default function App() {
<div className="flex items-center justify-between mb-6">
<div>
<h3 className="text-xl font-black text-inherit flex items-center gap-3">
<Calendar size={22} className="text-primary-600" /> Escolher Outfit
<Calendar size={22} className="text-primary-600" /> {t('chooseOutfit')}
</h3>
<p className="text-[10px] font-black uppercase tracking-widest opacity-40 mt-1">
{new Date(plannerPickerDate + 'T12:00:00').toLocaleDateString('pt-PT', { weekday: 'long', day: 'numeric', month: 'long' })}
{(() => { const locMap = { PT: 'pt-PT', EN: 'en-GB', ES: 'es-ES', FR: 'fr-FR', DE: 'de-DE' }; return new Date(plannerPickerDate + 'T12:00:00').toLocaleDateString(locMap[language] || 'pt-PT', { weekday: 'long', day: 'numeric', month: 'long' }); })()}
</p>
</div>
<button onClick={() => setShowPlannerPicker(false)} className="p-2 bg-gray-100 dark:bg-gray-800 rounded-full hover:scale-110 transition-all text-inherit"><X size={20} /></button>
@@ -1954,13 +1963,13 @@ export default function App() {
onClick={async () => { await assignOutfitToDay(plannerPickerDate, null); setShowPlannerPicker(false); }}
className="mb-4 w-full py-3 border-2 border-dashed border-red-200 dark:border-red-900/50 text-red-400 rounded-2xl font-black text-[10px] uppercase tracking-widest hover:border-red-400 hover:text-red-500 transition-all flex items-center justify-center gap-2"
>
<Trash size={14} /> Remover Outfit deste Dia
<Trash size={14} /> {t('removeOutfitDay')}
</button>
)}
<div className="flex-1 overflow-y-auto space-y-3 custom-scrollbar">
{looks.length === 0 ? (
<div className="py-12 text-center opacity-30 font-black uppercase tracking-[0.3em] text-sm">Nenhum outfit criado</div>
<div className="py-12 text-center opacity-30 font-black uppercase tracking-[0.3em] text-sm">{t('noOutfitCreated')}</div>
) : looks.map(look => {
const isSelected = outfitPlans.find(p => p.date === plannerPickerDate)?.lookId === look.id;
return (
@@ -1981,7 +1990,7 @@ export default function App() {
</div>
<div className="flex-1 min-w-0">
<p className="font-black text-sm truncate text-inherit">{look.name}</p>
<p className="text-[10px] uppercase tracking-widest opacity-40 font-bold">{look.items.length} peças</p>
<p className="text-[10px] uppercase tracking-widest opacity-40 font-bold">{look.items.length} {t('piecesShort')}</p>
</div>
{isSelected && <Check size={18} className="text-primary-600 shrink-0" />}
</button>

View File

@@ -20,7 +20,7 @@ export const translations = {
outfitsAndStyle: "Outfits",
readyClothes: "Roupas Prontas",
inLaundry: "Na Lavandaria",
myLooks: "Meus Looks",
myLooks: "Meus Outfits",
favorites: "Favoritos",
todayIn: "Hoje em Portugal",
weatherUpdate: "22°C - Ensolarado",
@@ -65,7 +65,7 @@ export const translations = {
darkMode: "Modo Escuro",
interfaceAppearance: "Aparência da interface",
notifications: "Notificações",
lookReminders: "Lembretes de looks",
lookReminders: "Lembretes de outfits",
weatherAlerts: "Alertas de Clima",
weatherSuggestions: "Sugestões pelo tempo",
systemAndData: "Sistema e Dados",
@@ -85,7 +85,7 @@ export const translations = {
fullCleanActions: "Ações de limpeza total do armário.",
clearAll: "Limpar Tudo",
confirmDeletePerm: "Apagar permanentemente?",
confirmDeleteLook: "Apagar este Look?",
confirmDeleteLook: "Apagar este Outfit?",
confirmEmptyTrash: "Esvaziar o lixo permanentemente?",
confirmClearAll: "Mover todas as peças ativas para o lixo?",
colorBlack: "Preto",
@@ -140,7 +140,7 @@ export const translations = {
toBeWashed: "A ser lavados",
unavailable: "Indisponíveis",
availableLooks: "Disponíveis",
noLooksAvailable: "Nenhum look disponível",
noLooksAvailable: "Nenhum outfit disponível",
location: "Localidade",
locationEx: "Ex: Lisboa, Portugal",
ideaSuggestion: "Ideia / Sugestão",
@@ -150,10 +150,10 @@ export const translations = {
notificationsModal: "Notificações",
noNotifications: "Sem Notificações",
markAllRead: "Marcar todas como lidas",
lookCopiedBy: "copiou o seu look",
userSavedLook: "guardou o seu look",
lookCopiedBy: "copiou o seu outfit",
userSavedLook: "guardou o seu outfit",
inTheirCloset: "no armário dele!",
sharedLookTitle: "Look Partilhado",
sharedLookTitle: "Outfit Partilhado",
sharedBy: "Partilhado por",
includedPieces: "Peças incluídas",
ignore: "Ignorar",
@@ -171,8 +171,16 @@ export const translations = {
personalizeColorDesc: "Personalize a cor",
saveChanges: "Guardar Alterações",
pasteLink: "Colar Link",
pasteSharedLookLink: "Cole o link do look partilhado:",
pasteSharedLookLink: "Cole o link do outfit partilhado:",
invalidSharedLink: "Link inválido. Certifique-se de copiar o link completo.",
planning: "Planeamento",
today: "Hoje",
monthLabel: "Mês",
weekLabel: "Semana",
chooseOutfit: "Escolher Outfit",
removeOutfitDay: "Remover Outfit deste Dia",
noOutfitCreated: "Nenhum outfit criado",
piecesShort: "peças",
},
EN: {
loginModeIntro: "The Future of Your Style",
@@ -195,7 +203,7 @@ export const translations = {
outfitsAndStyle: "Outfits & Style",
readyClothes: "Ready Clothes",
inLaundry: "In Laundry",
myLooks: "My Looks",
myLooks: "My Outfits",
favorites: "Favorites",
todayIn: "Today in Portugal",
weatherUpdate: "22°C - Sunny",
@@ -217,13 +225,13 @@ export const translations = {
laundryMsg: "Here you find the pieces you marked as dirty. Wash them to return them to the main closet.",
washing: "Washing",
emptyBasket: "Empty Basket",
createNewLook: "Create New Look",
lookName: "Look Name",
createNewLook: "Create New Outfit",
lookName: "Outfit Name",
selectedPieces: "Selected Pieces",
selectPieces: "Select pieces...",
saveLook: "Save Look",
saveLook: "Save Outfit",
closetLabel: "Closet",
lookHistory: "Look History",
lookHistory: "Outfit History",
pieces: "Pieces",
newItem: "New Item",
preview: "Preview",
@@ -240,7 +248,7 @@ export const translations = {
darkMode: "Dark Mode",
interfaceAppearance: "Interface Appearance",
notifications: "Notifications",
lookReminders: "Look reminders",
lookReminders: "Outfit reminders",
weatherAlerts: "Weather Alerts",
weatherSuggestions: "Weather-based suggestions",
systemAndData: "System and Data",
@@ -260,7 +268,7 @@ export const translations = {
fullCleanActions: "Full closet wipe actions.",
clearAll: "Clear All",
confirmDeletePerm: "Delete permanently?",
confirmDeleteLook: "Delete this Look?",
confirmDeleteLook: "Delete this Outfit?",
confirmEmptyTrash: "Empty trash permanently?",
confirmClearAll: "Move all active pieces to trash?",
colorBlack: "Black",
@@ -315,7 +323,7 @@ export const translations = {
toBeWashed: "To be washed",
unavailable: "Unavailable",
availableLooks: "Available",
noLooksAvailable: "No look available",
noLooksAvailable: "No outfit available",
location: "Location",
locationEx: "E.g.: Lisbon, Portugal",
ideaSuggestion: "Idea / Suggestion",
@@ -325,10 +333,10 @@ export const translations = {
notificationsModal: "Notifications",
noNotifications: "No Notifications",
markAllRead: "Mark all as read",
lookCopiedBy: "copied your look",
userSavedLook: "saved your look",
lookCopiedBy: "copied your outfit",
userSavedLook: "saved your outfit",
inTheirCloset: "in their closet!",
sharedLookTitle: "Shared Look",
sharedLookTitle: "Shared Outfit",
sharedBy: "Shared by",
includedPieces: "Included Pieces",
ignore: "Ignore",
@@ -337,6 +345,7 @@ export const translations = {
msgSentSuccess: "Message sent successfully!",
msgSendError: "Error sending message. Check your connection.",
addFuturePurchase: "Add piece as future purchase",
wishlist: "Wishlist",
wishlistDesc: "Wishlist",
someone: "someone",
feedbackTitle: "Support and Feedback",
@@ -345,8 +354,16 @@ export const translations = {
personalizeColorDesc: "Personalize the color",
saveChanges: "Save Changes",
pasteLink: "Paste Link",
pasteSharedLookLink: "Paste the shared look link:",
pasteSharedLookLink: "Paste the shared outfit link:",
invalidSharedLink: "Invalid link. Make sure you copied the full link.",
planning: "Planning",
today: "Today",
monthLabel: "Month",
weekLabel: "Week",
chooseOutfit: "Choose Outfit",
removeOutfitDay: "Remove Outfit from this Day",
noOutfitCreated: "No outfit created",
piecesShort: "pieces",
},
ES: {
loginModeIntro: "El Futuro de Tu Estilo",
@@ -360,16 +377,16 @@ export const translations = {
dashboard: "Panel",
closet: "Armario",
laundry: "Lavandería",
outfits: "Looks",
outfits: "Outfits",
settings: "Ajustes",
online: "En línea",
logout: "Cerrar Sesión",
overview: "Visión General",
myCloset: "Mi Armario",
outfitsAndStyle: "Looks y Estilo",
outfitsAndStyle: "Outfits y Estilo",
readyClothes: "Ropa Lista",
inLaundry: "En la Lavandería",
myLooks: "Mis Looks",
myLooks: "Mis Outfits",
favorites: "Favoritos",
todayIn: "Hoy en Portugal",
weatherUpdate: "22°C - Soleado",
@@ -391,13 +408,13 @@ export const translations = {
laundryMsg: "Aquí encuentras las piezas que marcaste como sucias. Lávalas para que vuelvan al armario principal.",
washing: "Lavando",
emptyBasket: "Cesto Vacío",
createNewLook: "Crear Nuevo Look",
lookName: "Nombre del Look",
createNewLook: "Crear Nuevo Outfit",
lookName: "Nombre del Outfit",
selectedPieces: "Piezas Seleccionadas",
selectPieces: "Elige piezas...",
saveLook: "Guardar Look",
saveLook: "Guardar Outfit",
closetLabel: "Armario",
lookHistory: "Historial de Looks",
lookHistory: "Historial de Outfits",
pieces: "Piezas",
newItem: "Nuevo Artículo",
preview: "Vista Previa",
@@ -434,7 +451,7 @@ export const translations = {
fullCleanActions: "Acciones de limpieza total.",
clearAll: "Limpiar Todo",
confirmDeletePerm: "¿Borrar permanentemente?",
confirmDeleteLook: "¿Borrar este Look?",
confirmDeleteLook: "¿Borrar este Outfit?",
confirmEmptyTrash: "¿Vaciar la papelera permanentemente?",
confirmClearAll: "¿Mover todas las piezas activas a la papelera?",
colorBlack: "Negro",
@@ -489,7 +506,7 @@ export const translations = {
toBeWashed: "Por lavar",
unavailable: "No disponibles",
availableLooks: "Disponibles",
noLooksAvailable: "Ningún look disponible",
noLooksAvailable: "Ningún outfit disponible",
location: "Ubicación",
locationEx: "Ej: Lisboa, Portugal",
ideaSuggestion: "Idea / Sugerencia",
@@ -499,10 +516,10 @@ export const translations = {
notificationsModal: "Notificaciones",
noNotifications: "Sin Notificaciones",
markAllRead: "Marcar todas como leídas",
lookCopiedBy: "copió tu look",
userSavedLook: "guardó tu look",
lookCopiedBy: "copió tu outfit",
userSavedLook: "guardó tu outfit",
inTheirCloset: "en su armario!",
sharedLookTitle: "Look Compartido",
sharedLookTitle: "Outfit Compartido",
sharedBy: "Compartido por",
includedPieces: "Piezas incluidas",
ignore: "Ignorar",
@@ -511,6 +528,7 @@ export const translations = {
msgSentSuccess: "¡Mensaje enviado con éxito!",
msgSendError: "Error al enviar. Revisa tu conexión.",
addFuturePurchase: "Añadir pieza como compra futura",
wishlist: "Lista de Deseos",
wishlistDesc: "Lista de Deseos",
someone: "alguien",
feedbackTitle: "Soporte y Comentarios",
@@ -519,8 +537,16 @@ export const translations = {
personalizeColorDesc: "Personaliza el color",
saveChanges: "Guardar Cambios",
pasteLink: "Pegar Enlace",
pasteSharedLookLink: "Pega el enlace del look compartido:",
pasteSharedLookLink: "Pega el enlace del outfit compartido:",
invalidSharedLink: "Enlace no válido. Asegúrate de copiar el enlace completo.",
planning: "Planificación",
today: "Hoy",
monthLabel: "Mes",
weekLabel: "Semana",
chooseOutfit: "Elegir Outfit",
removeOutfitDay: "Quitar Outfit de este Día",
noOutfitCreated: "Ningún outfit creado",
piecesShort: "piezas",
},
FR: {
loginModeIntro: "Le Futur de Ton Style",
@@ -543,7 +569,7 @@ export const translations = {
outfitsAndStyle: "Tenues & Style",
readyClothes: "Vêtements Prêts",
inLaundry: "À la Blanchisserie",
myLooks: "Mes Looks",
myLooks: "Mes Outfits",
favorites: "Favoris",
todayIn: "Aujourd'hui au Portugal",
weatherUpdate: "22°C - Ensoleillé",
@@ -565,13 +591,13 @@ export const translations = {
laundryMsg: "Ici vous trouvez les pièces que vous avez marquées comme sales. Lavez-les pour les remettre dans le placard principal.",
washing: "En lavage",
emptyBasket: "Panier Vide",
createNewLook: "Créer un Nouveau Look",
lookName: "Nom du Look",
createNewLook: "Créer un Nouvel Outfit",
lookName: "Nom de l'Outfit",
selectedPieces: "Pièces Sélectionnées",
selectPieces: "Sélectionnez des pièces...",
saveLook: "Enregistrer le Look",
saveLook: "Enregistrer l'Outfit",
closetLabel: "Placard",
lookHistory: "Historique des Looks",
lookHistory: "Historique des Outfits",
pieces: "Pièces",
newItem: "Nouvel Article",
preview: "Aperçu",
@@ -588,7 +614,7 @@ export const translations = {
darkMode: "Mode Sombre",
interfaceAppearance: "Apparence de l'interface",
notifications: "Notifications",
lookReminders: "Rappels de looks",
lookReminders: "Rappels d'outfits",
weatherAlerts: "Alertes Météo",
weatherSuggestions: "Suggestions selon la météo",
systemAndData: "Système et Données",
@@ -608,7 +634,7 @@ export const translations = {
fullCleanActions: "Actions de nettoyage total.",
clearAll: "Tout Effacer",
confirmDeletePerm: "Supprimer définitivement ?",
confirmDeleteLook: "Supprimer ce Look ?",
confirmDeleteLook: "Supprimer cet Outfit ?",
confirmEmptyTrash: "Vider la corbeille définitivement ?",
confirmClearAll: "Déplacer toutes les pièces actives vers la corbeille ?",
colorBlack: "Noir",
@@ -663,7 +689,7 @@ export const translations = {
toBeWashed: "À laver",
unavailable: "Indisponibles",
availableLooks: "Disponibles",
noLooksAvailable: "Aucun look disponible",
noLooksAvailable: "Aucun outfit disponible",
location: "Emplacement",
locationEx: "Ex: Lisbonne, Portugal",
ideaSuggestion: "Idée / Suggestion",
@@ -673,10 +699,10 @@ export const translations = {
notificationsModal: "Notifications",
noNotifications: "Aucune Notification",
markAllRead: "Tout marquer comme lu",
lookCopiedBy: "a copié votre look",
userSavedLook: "a sauvegardé votre look",
lookCopiedBy: "a copié votre outfit",
userSavedLook: "a sauvegardé votre outfit",
inTheirCloset: "dans son placard !",
sharedLookTitle: "Look Partagé",
sharedLookTitle: "Outfit Partagé",
sharedBy: "Partagé par",
includedPieces: "Pièces incluses",
ignore: "Ignorer",
@@ -685,6 +711,7 @@ export const translations = {
msgSentSuccess: "Message envoyé avec succès !",
msgSendError: "Erreur d'envoi. Vérifiez votre connexion.",
addFuturePurchase: "Ajouter comme achat futur",
wishlist: "Liste de Souhaits",
wishlistDesc: "Liste de Souhaits",
someone: "quelqu'un",
feedbackTitle: "Support et Commentaires",
@@ -693,8 +720,16 @@ export const translations = {
personalizeColorDesc: "Personnaliser la couleur",
saveChanges: "Enregistrer les Modifications",
pasteLink: "Coller le Lien",
pasteSharedLookLink: "Collez le lien du look partagé :",
pasteSharedLookLink: "Collez le lien de l'outfit partagé :",
invalidSharedLink: "Lien invalide. Assurez-vous d'avoir copié le lien complet.",
planning: "Planification",
today: "Aujourd'hui",
monthLabel: "Mois",
weekLabel: "Semaine",
chooseOutfit: "Choisir un Outfit",
removeOutfitDay: "Retirer l'Outfit de ce Jour",
noOutfitCreated: "Aucun outfit créé",
piecesShort: "pièces",
},
DE: {
loginModeIntro: "Die Zukunft deines Stils",
@@ -705,7 +740,7 @@ export const translations = {
createAccount: "Neues Konto erstellen",
haveAccount: "Ich habe bereits ein Konto",
authErrorDisabled: "E-Mail-Anmeldung ist deaktiviert.",
dashboard: "Dashboard",
dashboard: "Startseite",
closet: "Schrank",
laundry: "Wäsche",
outfits: "Outfits",
@@ -717,7 +752,7 @@ export const translations = {
outfitsAndStyle: "Outfits & Stil",
readyClothes: "Fertige Kleidung",
inLaundry: "In der Wäsche",
myLooks: "Meine Looks",
myLooks: "Meine Outfits",
favorites: "Favoriten",
todayIn: "Heute in Portugal",
weatherUpdate: "22°C - Sonnig",
@@ -739,13 +774,13 @@ export const translations = {
laundryMsg: "Hier findest du die Stücke, die du als schmutzig markiert hast. Wasche sie, um sie in den Hauptschrank zurückzulegen.",
washing: "Waschen",
emptyBasket: "Leerer Korb",
createNewLook: "Neuen Look erstellen",
lookName: "Look Name",
createNewLook: "Neues Outfit erstellen",
lookName: "Outfit Name",
selectedPieces: "Ausgewählte Stücke",
selectPieces: "Stücke auswählen...",
saveLook: "Look speichern",
saveLook: "Outfit speichern",
closetLabel: "Schrank",
lookHistory: "Look-Verlauf",
lookHistory: "Outfit-Verlauf",
pieces: "Stücke",
newItem: "Neuer Artikel",
preview: "Vorschau",
@@ -762,7 +797,7 @@ export const translations = {
darkMode: "Dunkelmodus",
interfaceAppearance: "Erscheinungsbild der Schnittstelle",
notifications: "Benachrichtigungen",
lookReminders: "Look-Erinnerungen",
lookReminders: "Outfit-Erinnerungen",
weatherAlerts: "Wetterwarnungen",
weatherSuggestions: "Wetterbasierte Vorschläge",
systemAndData: "System und Daten",
@@ -782,7 +817,7 @@ export const translations = {
fullCleanActions: "Aktionen zur vollständigen Bereinigung.",
clearAll: "Alles löschen",
confirmDeletePerm: "Dauerhaft löschen?",
confirmDeleteLook: "Diesen Look löschen?",
confirmDeleteLook: "Dieses Outfit löschen?",
confirmEmptyTrash: "Papierkorb dauerhaft leeren?",
confirmClearAll: "Alle aktiven Stücke in den Papierkorb verschieben?",
colorBlack: "Schwarz",
@@ -837,7 +872,7 @@ export const translations = {
toBeWashed: "Zum Waschen",
unavailable: "Nicht verfügbar",
availableLooks: "Verfügbar",
noLooksAvailable: "Kein Look verfügbar",
noLooksAvailable: "Kein Outfit verfügbar",
location: "Ort",
locationEx: "Z.B.: Lissabon, Portugal",
ideaSuggestion: "Idee / Vorschlag",
@@ -847,10 +882,10 @@ export const translations = {
notificationsModal: "Benachrichtigungen",
noNotifications: "Keine Benachrichtigungen",
markAllRead: "Alle als gelesen markieren",
lookCopiedBy: "hat deinen Look kopiert",
userSavedLook: "hat deinen Look gespeichert",
lookCopiedBy: "hat dein Outfit kopiert",
userSavedLook: "hat dein Outfit gespeichert",
inTheirCloset: "in seinem Schrank!",
sharedLookTitle: "Geteilter Look",
sharedLookTitle: "Geteiltes Outfit",
sharedBy: "Geteilt von",
includedPieces: "Enthaltene Stücke",
ignore: "Ignorieren",
@@ -859,6 +894,7 @@ export const translations = {
msgSentSuccess: "Nachricht erfolgreich gesendet!",
msgSendError: "Fehler beim Senden. Überprüfe deine Verbindung.",
addFuturePurchase: "Als zukünftigen Kauf hinzufügen",
wishlist: "Wunschzettel",
wishlistDesc: "Wunschzettel",
someone: "jemand",
feedbackTitle: "Support und Feedback",
@@ -867,7 +903,15 @@ export const translations = {
personalizeColorDesc: "Farbe anpassen",
saveChanges: "Änderungen Speichern",
pasteLink: "Link Einfügen",
pasteSharedLookLink: "Fügen Sie den Link zum geteilten Look ein:",
pasteSharedLookLink: "Fügen Sie den Link zum geteilten Outfit ein:",
invalidSharedLink: "Ungültiger Link. Stellen Sie sicher, dass Sie den vollständigen Link kopiert haben.",
planning: "Planung",
today: "Heute",
monthLabel: "Monat",
weekLabel: "Woche",
chooseOutfit: "Outfit Wählen",
removeOutfitDay: "Outfit von diesem Tag entfernen",
noOutfitCreated: "Kein Outfit erstellt",
piecesShort: "Stücke",
}
};