d5b00a86dc
- lib/admin.ts: isAdmin(session) por allowlist ADMIN_EMAILS (normalizada) o gmlevel de AzerothCore (account_access, resiliente si no existe). ADMIN_EMAILS/ADMIN_GMLEVEL en .env.local. - lib/admin-news.ts: listNews / createNews / deleteNews (home_noticia). - Routes /api/admin/news (POST, guard isAdmin) y /api/admin/news/[id] (DELETE). - Páginas /admin (dashboard) y /admin/news (protegidas: no-admin -> redirect). AdminNewsManager (cliente: crear + listar + borrar). Verificado: /admin sin permiso redirige, APIs 403; el pipeline crear noticia -> se renderiza en la home (SSR) funciona. Turnstile bloquea el login por curl (correcto). Pendiente admin: precios de servicios, foros, sitios de voto, usuarios. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
287 lines
11 KiB
JSON
287 lines
11 KiB
JSON
{
|
|
"Metadata": {
|
|
"title": "Nova WoW WoW WotLK 3.4.3 Server - Latino & Español 💎",
|
|
"description": "Download and play WotLK Classic for free on Nova WoW - WoW WotLK 3.4.3 server - The best WoW server 🔥"
|
|
},
|
|
"Nav": {
|
|
"home": "Home",
|
|
"login": "Sign in",
|
|
"register": "Create account",
|
|
"account": "My account",
|
|
"logout": "Log out",
|
|
"language": "Language",
|
|
"forum": "Forums"
|
|
},
|
|
"Home": {
|
|
"brand": "Nova WoW",
|
|
"serverStatus": "Server status",
|
|
"server": "Server",
|
|
"onlineCharacters": "Online characters",
|
|
"login": "Login",
|
|
"address": "Address",
|
|
"notAvailable": "Not available",
|
|
"news": "News",
|
|
"noNews": "There are no news available at the moment.",
|
|
"link": "Link",
|
|
"here": "here"
|
|
},
|
|
"Login": {
|
|
"title": "Sign in to Nova WoW",
|
|
"email": "Email",
|
|
"password": "Password",
|
|
"submit": "Sign in",
|
|
"connecting": "Signing in…",
|
|
"success": "Signed in successfully. Redirecting…",
|
|
"invalidCredentials": "Incorrect email or password",
|
|
"missingFields": "Please fill in all fields.",
|
|
"invalidRequest": "Invalid request.",
|
|
"genericError": "Something went wrong. Please try again later.",
|
|
"forgot": "I forgot my password/username",
|
|
"newHere": "New to the community? You can create an account",
|
|
"createAccount": "here",
|
|
"captchaFailed": "Anti-bot verification failed. Please retry."
|
|
},
|
|
"Account": {
|
|
"title": "My account",
|
|
"bnetAccount": "Account (Battle.net)",
|
|
"gameAccount": "Game account",
|
|
"logout": "Log out",
|
|
"points": "Points",
|
|
"dp": "DP",
|
|
"vp": "VP",
|
|
"battlepayCredits": "Battlepay credits",
|
|
"securityToken": "Security token",
|
|
"requested": "Requested",
|
|
"notRequested": "Not requested",
|
|
"characters": "My characters",
|
|
"level": "Level",
|
|
"noCharacters": "You have no characters yet."
|
|
},
|
|
"SelectAccount": {
|
|
"title": "Select your game account",
|
|
"loggedInAs": "Logged in as",
|
|
"choose": "Your Battle.net account has several game accounts. Choose which one to continue with:",
|
|
"noAccounts": "No game accounts were found linked to this Battle.net account.",
|
|
"entering": "Entering…",
|
|
"error": "The account could not be selected."
|
|
},
|
|
"Register": {
|
|
"title": "Create account",
|
|
"info": "Your account is Battle.net type: it is identified by your email. The password must be alphanumeric and up to 16 characters. The email must be a Gmail address.",
|
|
"password": "Password",
|
|
"confPassword": "Confirm password",
|
|
"email": "Gmail email address",
|
|
"confEmail": "Confirm email address",
|
|
"recruiter": "Recruiter (optional)",
|
|
"terms": "I accept the Rules, Terms and Conditions and Privacy Policy",
|
|
"submit": "Create account",
|
|
"creating": "Creating…",
|
|
"success": "The account has been created. Check your email to activate it.",
|
|
"missingFields": "Please fill in all fields.",
|
|
"passwordMismatch": "Passwords do not match.",
|
|
"passwordTooLong": "The password must not exceed 16 characters.",
|
|
"invalidEmail": "The email address is not valid.",
|
|
"emailExists": "An account with that email already exists.",
|
|
"recruiterNotFound": "The recruiter entered does not exist.",
|
|
"genericError": "Something went wrong. Please try again later.",
|
|
"captchaFailed": "Anti-bot verification failed. Please retry."
|
|
},
|
|
"Activate": {
|
|
"activating": "Activating your account…",
|
|
"success": "Account activated! You can now sign in.",
|
|
"invalidLink": "The link is invalid or has already been used.",
|
|
"expiredLink": "The link has expired. Please request a new one.",
|
|
"goLogin": "Go to sign in"
|
|
},
|
|
"Recover": {
|
|
"title": "Recover account",
|
|
"type": "What do you want to recover?",
|
|
"typePassword": "Password",
|
|
"typeAccountName": "Account name",
|
|
"typeActivation": "Activation link",
|
|
"email": "Gmail email address",
|
|
"submit": "Request",
|
|
"sending": "Sending…",
|
|
"success": "If an account exists with that email, we have sent you the information.",
|
|
"invalidEmail": "Enter a valid Gmail address.",
|
|
"genericError": "Something went wrong. Please try again later.",
|
|
"captchaFailed": "Anti-bot verification failed. Please retry."
|
|
},
|
|
"Reset": {
|
|
"title": "Reset password",
|
|
"password": "New password",
|
|
"confPassword": "Confirm password",
|
|
"submit": "Reset",
|
|
"saving": "Saving…",
|
|
"success": "Password reset. You can now sign in.",
|
|
"goLogin": "Go to sign in",
|
|
"invalidLink": "The link is invalid or has already been used.",
|
|
"expiredLink": "The link has expired. Please request a new one.",
|
|
"passwordMismatch": "Passwords do not match.",
|
|
"passwordTooLong": "The password must not exceed 16 characters.",
|
|
"accountNotFound": "Account not found.",
|
|
"genericError": "Something went wrong. Please try again later."
|
|
},
|
|
"Services": {
|
|
"reviveTitle": "Revive character",
|
|
"unstuckTitle": "Unstuck character",
|
|
"reviveAction": "Revive",
|
|
"unstuckAction": "Unstuck",
|
|
"selectCharacter": "Select a character",
|
|
"noCharactersYet": "You have no available characters.",
|
|
"processing": "Processing…",
|
|
"success": "Action completed successfully.",
|
|
"noCharacter": "Select a character.",
|
|
"notOfflineOrOwned": "The character must be offline and yours.",
|
|
"cooldown": "You can only do this once every 12 hours.",
|
|
"soapError": "Server communication error. Please try again later.",
|
|
"genericError": "Something went wrong. Please try again later."
|
|
},
|
|
"Paid": {
|
|
"rename": {
|
|
"title": "Rename character",
|
|
"pay": "Rename for {price} €",
|
|
"success": "Character {name} has been flagged for rename (applies on next login)."
|
|
},
|
|
"customize": {
|
|
"title": "Customize character",
|
|
"pay": "Customize for {price} €",
|
|
"success": "Character {name} has been flagged for customization."
|
|
},
|
|
"change-race": {
|
|
"title": "Change race",
|
|
"pay": "Change race for {price} €",
|
|
"success": "Character {name} has been flagged for race change."
|
|
},
|
|
"change-faction": {
|
|
"title": "Change faction",
|
|
"pay": "Change faction for {price} €",
|
|
"success": "Character {name} has changed faction successfully."
|
|
},
|
|
"level-up": {
|
|
"title": "Level up to 80",
|
|
"pay": "Level up to 80 for {price} €",
|
|
"success": "Character {name} has been leveled to 80."
|
|
},
|
|
"error": "The operation could not be completed. If you were charged, contact support.",
|
|
"gold": {
|
|
"title": "Buy gold",
|
|
"buy": "Buy gold",
|
|
"selectAmount": "Select the amount",
|
|
"option": "{amount} gold — {price} €",
|
|
"success": "Gold has been added to character {name}."
|
|
},
|
|
"transfer": {
|
|
"title": "Transfer character",
|
|
"pay": "Transfer for {price} €",
|
|
"destination": "Destination account",
|
|
"success": "Character {name} has been transferred to the destination account."
|
|
}
|
|
},
|
|
"SecurityToken": {
|
|
"title": "Security token",
|
|
"info": "The security token is a 6-character (case-sensitive) code required for important account actions. You can request a new one every 7 days.",
|
|
"lastRequest": "Request date",
|
|
"never": "Not requested",
|
|
"request": "Request token",
|
|
"requesting": "Requesting…",
|
|
"success": "The security token has been sent to your email.",
|
|
"cooldown": "You can only request a token every 7 days.",
|
|
"noEmail": "Add an email to your account before requesting a token.",
|
|
"genericError": "Something went wrong. Please try again later."
|
|
},
|
|
"ChangePassword": {
|
|
"title": "Change password",
|
|
"info": "The new password must be alphanumeric and up to 16 characters. You need a security token.",
|
|
"currentPassword": "Current password",
|
|
"newPassword": "New password",
|
|
"confPassword": "Confirm new password",
|
|
"token": "Security token",
|
|
"submit": "Change password",
|
|
"changing": "Changing…",
|
|
"success": "Password changed. You have been logged out for security.",
|
|
"missingFields": "Please fill in all fields.",
|
|
"passwordMismatch": "Passwords do not match.",
|
|
"passwordTooLong": "The password must not exceed 16 characters.",
|
|
"invalidToken": "The security token is incorrect.",
|
|
"wrongCurrentPassword": "The current password is incorrect.",
|
|
"accountNotFound": "Account not found.",
|
|
"genericError": "Something went wrong. Please try again later."
|
|
},
|
|
"ChangeEmail": {
|
|
"title": "Change email",
|
|
"info": "The current email must be entered exactly, respecting case. The new email must be a Gmail address. You need a security token.",
|
|
"currentPassword": "Current password",
|
|
"currentEmail": "Current email",
|
|
"newEmail": "New email",
|
|
"confEmail": "Confirm new email",
|
|
"token": "Security token",
|
|
"submit": "Change email",
|
|
"sending": "Sending…",
|
|
"success": "A confirmation email has been sent to your current email.",
|
|
"missingFields": "Please fill in all fields.",
|
|
"wrongCurrentEmail": "The current email is not correct.",
|
|
"invalidEmail": "The new email is not valid.",
|
|
"invalidToken": "The security token is incorrect.",
|
|
"wrongCurrentPassword": "The current password is incorrect.",
|
|
"genericError": "Something went wrong. Please try again later."
|
|
},
|
|
"ConfirmOldEmail": {
|
|
"title": "Confirm email change",
|
|
"activating": "Confirming…",
|
|
"success": "Current email confirmed. Check your NEW email to complete the second step.",
|
|
"error": "The link is invalid or has already been used."
|
|
},
|
|
"ConfirmNewEmail": {
|
|
"title": "Confirm new email",
|
|
"activating": "Applying the change…",
|
|
"success": "Email changed successfully! You can now sign in with the new email.",
|
|
"error": "The link is invalid, expired or the account was not found.",
|
|
"goLogin": "Go to sign in"
|
|
},
|
|
"Forum": {
|
|
"title": "Forums",
|
|
"noForums": "No forums available yet.",
|
|
"topics": "Topics",
|
|
"posts": "Posts",
|
|
"lastTopic": "Latest topic",
|
|
"by": "by",
|
|
"views": "Views",
|
|
"noTopics": "No topics in this forum yet.",
|
|
"locked": "Locked",
|
|
"sticky": "Pinned",
|
|
"backToForum": "Back to forums",
|
|
"backToTopics": "Back to forum",
|
|
"notFound": "Not found",
|
|
"newTopic": "New topic",
|
|
"reply": "Reply",
|
|
"newTopicName": "Topic title",
|
|
"newTopicText": "Write your message…",
|
|
"publish": "Post topic",
|
|
"publishing": "Posting…",
|
|
"replyText": "Write your reply…",
|
|
"sendReply": "Reply",
|
|
"sending": "Sending…",
|
|
"loginToPost": "Sign in to participate.",
|
|
"emptyError": "Fill in all fields.",
|
|
"genericError": "Something went wrong. Please try again later."
|
|
},
|
|
"Admin": {
|
|
"title": "Admin panel",
|
|
"dashboard": "Dashboard",
|
|
"news": "News",
|
|
"manageNews": "Manage news",
|
|
"newsTitle": "Title",
|
|
"newsContent": "Content (HTML)",
|
|
"newsLink": "Link (optional)",
|
|
"create": "Create news",
|
|
"creating": "Creating…",
|
|
"delete": "Delete",
|
|
"confirmDelete": "Delete this news item?",
|
|
"noNews": "No news.",
|
|
"forbidden": "You do not have permission to access here.",
|
|
"emptyError": "Fill in the title and content.",
|
|
"genericError": "Something went wrong."
|
|
}
|
|
}
|