chore(players): translate remaining startgg labels to english

This commit is contained in:
Pandipipas
2026-02-17 18:22:25 +01:00
parent 0fb8f044ae
commit 05da183c29
2 changed files with 37 additions and 37 deletions
+29 -29
View File
@@ -275,13 +275,13 @@ const checkOAuthStatus = async () => {
oauthLoading.value = false; oauthLoading.value = false;
clearOAuthPolling(); clearOAuthPolling();
oauthSessionId.value = ''; oauthSessionId.value = '';
tournamentsError.value = status.error || 'No se pudo completar el login OAuth con start.gg.'; tournamentsError.value = status.error || 'Could not complete OAuth login with start.gg.';
} }
} catch (error) { } catch (error) {
oauthLoading.value = false; oauthLoading.value = false;
clearOAuthPolling(); clearOAuthPolling();
oauthSessionId.value = ''; oauthSessionId.value = '';
tournamentsError.value = error instanceof Error ? error.message : 'No se pudo verificar el estado OAuth.'; tournamentsError.value = error instanceof Error ? error.message : 'Could not verify OAuth status.';
} }
}; };
@@ -300,7 +300,7 @@ const connectWithStartGGOAuth = async () => {
}, 1500); }, 1500);
} catch (error) { } catch (error) {
oauthLoading.value = false; oauthLoading.value = false;
tournamentsError.value = error instanceof Error ? error.message : 'No se pudo iniciar OAuth con start.gg.'; tournamentsError.value = error instanceof Error ? error.message : 'Could not start OAuth with start.gg.';
} }
}; };
@@ -325,7 +325,7 @@ const saveManualToken = () => {
const loadRecentTournaments = async () => { const loadRecentTournaments = async () => {
const token = startGGToken.value.trim(); const token = startGGToken.value.trim();
if (!token) { if (!token) {
tournamentsError.value = 'Añade tu token de start.gg para cargar torneos.'; tournamentsError.value = 'Add your start.gg token to load tournaments.';
recentTournaments.value = []; recentTournaments.value = [];
return; return;
} }
@@ -338,10 +338,10 @@ const loadRecentTournaments = async () => {
}); });
recentTournaments.value = tournaments; recentTournaments.value = tournaments;
if (!tournaments.length) { if (!tournaments.length) {
tournamentsError.value = 'No hay torneos recientes para esta cuenta.'; tournamentsError.value = 'There are no recent tournaments for this account.';
} }
} catch (error) { } catch (error) {
tournamentsError.value = error instanceof Error ? error.message : 'No se pudieron cargar torneos.'; tournamentsError.value = error instanceof Error ? error.message : 'Could not load tournaments.';
recentTournaments.value = []; recentTournaments.value = [];
} finally { } finally {
loadingTournaments.value = false; loadingTournaments.value = false;
@@ -365,7 +365,7 @@ const openStartGGImportDialog = async (tournament: StartGGTournament) => {
startGGPlayers.value = importedPlayers; startGGPlayers.value = importedPlayers;
selectedStartGGPlayerIds.value = importedPlayers.map((player) => player.id); selectedStartGGPlayerIds.value = importedPlayers.map((player) => player.id);
} catch (error) { } catch (error) {
const message = error instanceof Error ? error.message : 'No se pudieron cargar jugadores'; const message = error instanceof Error ? error.message : 'Could not load players';
window.alert(message); window.alert(message);
isImportDialogOpen.value = false; isImportDialogOpen.value = false;
} finally { } finally {
@@ -599,7 +599,7 @@ onBeforeUnmount(() => {
<span>StartGG</span> <span>StartGG</span>
</div> </div>
<div class="text-caption q-mb-md"> <div class="text-caption q-mb-md">
Conecta por OAuth (recomendado) o pega tu token personal para cargar tus torneos creados o donde eres admin. Si aparece "Client authentication failed", revisa que en config uses el Client ID/Secret de un OAuth App de start.gg. Connect via OAuth (recommended) or paste your personal token to load tournaments you created or administrate. If you see "Client authentication failed", verify your config uses the Client ID/Secret from a start.gg OAuth App.
</div> </div>
<div class="row q-col-gutter-sm items-center"> <div class="row q-col-gutter-sm items-center">
<div class="col-auto"> <div class="col-auto">
@@ -607,7 +607,7 @@ onBeforeUnmount(() => {
v-if="!hasStartGGTokenConfigured" v-if="!hasStartGGTokenConfigured"
color="primary" color="primary"
icon="login" icon="login"
label="Conectar con start.gg" label="Connect with start.gg"
:loading="oauthLoading" :loading="oauthLoading"
@click="connectWithStartGGOAuth" @click="connectWithStartGGOAuth"
/> />
@@ -616,7 +616,7 @@ onBeforeUnmount(() => {
outline outline
color="positive" color="positive"
icon="check_circle" icon="check_circle"
label="Conectado" label="Connected"
class="startgg-connected-btn" class="startgg-connected-btn"
@click="openManualTokenDialog" @click="openManualTokenDialog"
/> />
@@ -626,7 +626,7 @@ onBeforeUnmount(() => {
outline outline
color="white" color="white"
icon="vpn_key" icon="vpn_key"
label="Usar API personal" label="Use personal API"
@click="openManualTokenDialog" @click="openManualTokenDialog"
/> />
</div> </div>
@@ -663,7 +663,7 @@ onBeforeUnmount(() => {
input-debounce="0" input-debounce="0"
clearable clearable
dense dense
label="Torneo" label="Tournament"
class="players-underlined-field" class="players-underlined-field"
@filter="filterTournaments" @filter="filterTournaments"
> >
@@ -688,10 +688,10 @@ onBeforeUnmount(() => {
unelevated unelevated
round round
icon="person_add" icon="person_add"
aria-label="Importar jugadores" aria-label="Import players"
@click="openSelectedTournamentImportDialog" @click="openSelectedTournamentImportDialog"
> >
<QTooltip>Importar jugadores</QTooltip> <QTooltip>Import players</QTooltip>
</QBtn> </QBtn>
</div> </div>
</div> </div>
@@ -704,24 +704,24 @@ onBeforeUnmount(() => {
<QCard class="players-dialog"> <QCard class="players-dialog">
<QCardSection> <QCardSection>
<div class="text-h6"> <div class="text-h6">
API personal de start.gg Personal start.gg API
</div> </div>
</QCardSection> </QCardSection>
<QSeparator /> <QSeparator />
<QCardSection> <QCardSection>
<div class="text-body2 q-mb-sm"> <div class="text-body2 q-mb-sm">
Si OAuth falla, puedes crear tu token personal manualmente con estos pasos: If OAuth fails, you can create your personal token manually with these steps:
</div> </div>
<ol class="q-pl-md q-mb-md manual-token-steps"> <ol class="q-pl-md q-mb-md manual-token-steps">
<li>Ir a https://start.gg/admin/profile/developer</li> <li>Go to https://start.gg/admin/profile/developer</li>
<li>Iniciar sesión con tu cuenta</li> <li>Sign in with your account</li>
<li>De los 3 access tokens, clicar en <strong>Third Party</strong></li> <li>From the 3 access tokens, click <strong>Third Party</strong></li>
<li>Crear uno nuevo y cubrir la descripción con el nombre que quieras</li> <li>Create a new one and fill the description with any name you want</li>
<li>Copiar el token generado y pegarlo en Scoreko</li> <li>Copy the generated token and paste it into Scoreko</li>
</ol> </ol>
<QInput <QInput
v-model="manualTokenDraft" v-model="manualTokenDraft"
label="Pega tu token personal" label="Paste your personal token"
dense dense
outlined outlined
type="password" type="password"
@@ -731,19 +731,19 @@ onBeforeUnmount(() => {
<QCardActions align="right"> <QCardActions align="right">
<QBtn <QBtn
flat flat
label="Cancelar" label="Cancel"
color="secondary" color="secondary"
@click="isManualTokenDialogOpen = false" @click="isManualTokenDialogOpen = false"
/> />
<QBtn <QBtn
flat flat
color="negative" color="negative"
label="Borrar token" label="Delete token"
@click="manualTokenDraft = ''; saveManualToken()" @click="manualTokenDraft = ''; saveManualToken()"
/> />
<QBtn <QBtn
color="primary" color="primary"
label="Guardar token" label="Save token"
@click="saveManualToken" @click="saveManualToken"
/> />
</QCardActions> </QCardActions>
@@ -754,7 +754,7 @@ onBeforeUnmount(() => {
<QCard class="players-dialog"> <QCard class="players-dialog">
<QCardSection> <QCardSection>
<div class="text-h6"> <div class="text-h6">
Importar desde {{ importingTournament?.name || 'start.gg' }} Import from {{ importingTournament?.name || 'start.gg' }}
</div> </div>
</QCardSection> </QCardSection>
<QSeparator /> <QSeparator />
@@ -764,7 +764,7 @@ onBeforeUnmount(() => {
class="row items-center q-gutter-sm" class="row items-center q-gutter-sm"
> >
<QSpinner /> <QSpinner />
<span>Cargando inscritos...</span> <span>Loading participants...</span>
</div> </div>
<div v-else> <div v-else>
<QOptionGroup <QOptionGroup
@@ -781,13 +781,13 @@ onBeforeUnmount(() => {
<QCardActions align="right"> <QCardActions align="right">
<QBtn <QBtn
flat flat
label="Cancelar" label="Cancel"
color="secondary" color="secondary"
@click="isImportDialogOpen = false" @click="isImportDialogOpen = false"
/> />
<QBtn <QBtn
color="primary" color="primary"
label="Importar seleccionados" label="Import selected"
:disable="!selectedStartGGPlayerIds.length" :disable="!selectedStartGGPlayerIds.length"
@click="importSelectedStartGGPlayers" @click="importSelectedStartGGPlayers"
/> />
+8 -8
View File
@@ -193,7 +193,7 @@ const renderCallbackHtml = (title: string, message: string) => `<!doctype html>
<div class="box"> <div class="box">
<h2>${title}</h2> <h2>${title}</h2>
<p>${message}</p> <p>${message}</p>
<p>Puedes cerrar esta pestaña y volver a Scoreko.</p> <p>You can close this tab and return to Scoreko.</p>
</div> </div>
</body> </body>
</html>`; </html>`;
@@ -282,19 +282,19 @@ const ensureOAuthCallbackServer = async (oauthConfig: OAuthConfig) => {
const session = Array.from(oauthSessions.values()).find((candidate) => candidate.state === state); const session = Array.from(oauthSessions.values()).find((candidate) => candidate.state === state);
if (!session) { if (!session) {
respondWithCallbackHtml(res, 400, 'OAuth inválido', 'No se encontró una sesión activa para esta autorización.'); respondWithCallbackHtml(res, 400, 'Invalid OAuth', 'No active session was found for this authorization.');
return; return;
} }
if (session.expiresAt <= Date.now()) { if (session.expiresAt <= Date.now()) {
updateOAuthSession(session.sessionId, { status: 'expired' }); updateOAuthSession(session.sessionId, { status: 'expired' });
respondWithCallbackHtml(res, 400, 'Sesn expirada', 'La sesión OAuth expiró. Vuelve a iniciar el proceso desde Scoreko.'); respondWithCallbackHtml(res, 400, 'Session expired', 'The OAuth session expired. Start the process again from Scoreko.');
return; return;
} }
if (error) { if (error) {
updateOAuthSession(session.sessionId, { status: 'error', error }); updateOAuthSession(session.sessionId, { status: 'error', error });
respondWithCallbackHtml(res, 400, 'OAuth cancelado', `start.gg devolvió el error: ${error}`); respondWithCallbackHtml(res, 400, 'OAuth canceled', `start.gg returned this error: ${error}`);
return; return;
} }
@@ -303,7 +303,7 @@ const ensureOAuthCallbackServer = async (oauthConfig: OAuthConfig) => {
status: 'error', status: 'error',
error: 'Missing authorization code', error: 'Missing authorization code',
}); });
respondWithCallbackHtml(res, 400, 'OAuth incompleto', 'No se recibió un código de autorización.'); respondWithCallbackHtml(res, 400, 'Incomplete OAuth', 'No authorization code was received.');
return; return;
} }
@@ -316,7 +316,7 @@ const ensureOAuthCallbackServer = async (oauthConfig: OAuthConfig) => {
updateOAuthSession(session.sessionId, { status: 'error', error: message }); updateOAuthSession(session.sessionId, { status: 'error', error: message });
}); });
respondWithCallbackHtml(res, 200, 'Autorización recibida', 'Se recibió tu autorización. Finalizando el login en segundo plano...'); respondWithCallbackHtml(res, 200, 'Authorization received', 'Your authorization was received. Finishing sign-in in the background...');
}); });
await new Promise<void>((resolve, reject) => { await new Promise<void>((resolve, reject) => {
@@ -333,14 +333,14 @@ const ensureOAuthCallbackServer = async (oauthConfig: OAuthConfig) => {
nodecg.listenFor('startgg:createOAuthSession', async (_payload: unknown, ack) => { nodecg.listenFor('startgg:createOAuthSession', async (_payload: unknown, ack) => {
const oauthConfig = getOAuthConfig(); const oauthConfig = getOAuthConfig();
if (!oauthConfig) { if (!oauthConfig) {
sendAck(ack, 'OAuth no está configurado en esta instalación (faltan startggClientId/startggClientSecret). Usa el Client ID y Client Secret del OAuth app de start.gg.'); sendAck(ack, 'OAuth is not configured in this installation (missing startggClientId/startggClientSecret). Use the Client ID and Client Secret from a start.gg OAuth app.');
return; return;
} }
try { try {
await ensureOAuthCallbackServer(oauthConfig); await ensureOAuthCallbackServer(oauthConfig);
} catch (serverError) { } catch (serverError) {
const message = serverError instanceof Error ? serverError.message : 'No se pudo iniciar el callback OAuth local'; const message = serverError instanceof Error ? serverError.message : 'Could not start the local OAuth callback';
sendAck(ack, message); sendAck(ack, message);
return; return;
} }