Files
NightSpire/web-next/messages/en.json
T
Inna 548fca16e6 Añade gold y transfer: patrón de pago unificado con fulfill + metadata
- lib/stripe.ts: createCheckoutSession acepta metadata; claimPaidCheckout la
  recupera de la sesión Stripe y la devuelve.
- lib/paid-services.ts: config unificado con fulfill(character, meta) + extraFields.
  gold -> UPDATE characters money (BD directa, no SOAP), transfer -> SOAP
  .char changeaccount. Los 5 simples usan soapFulfill.
- checkout [service]: lee extraFields -> metadata, precio depende de metadata (gold),
  valida precio>0. service-success llama cfg.fulfill(name, metadata).
- prices.ts: getTransferPrice, getGoldOptions/goldPriceFor (home_goldprice).
- GoldForm (personaje + cantidad) y TransferForm (personaje + destino); páginas
  /gold y /transfer. Catálogos Paid.gold/transfer.

Verificado: /gold /transfer redirigen a login, checkout 401 sin sesión, home OK.
NOTA: transfer no valida aún el token de seguridad ni reglas AC (nivel>=55, DK).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 23:32:12 +00:00

181 lines
6.8 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"
},
"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."
}
}
}