Translate Spanish UI and runtime strings to English

This commit is contained in:
Pandipipas
2026-02-11 18:47:21 +01:00
parent c29aae5ce7
commit ade26ee714
7 changed files with 31 additions and 31 deletions
+7 -7
View File
@@ -34,7 +34,7 @@ function waitForServer(url, timeoutMs = 30_000) {
} }
if (Date.now() - started > timeoutMs) { if (Date.now() - started > timeoutMs) {
rejectPromise(new Error('NodeCG no respondió a tiempo.')); rejectPromise(new Error('NodeCG did not respond in time.'));
return; return;
} }
@@ -43,7 +43,7 @@ function waitForServer(url, timeoutMs = 30_000) {
request.on('error', () => { request.on('error', () => {
if (Date.now() - started > timeoutMs) { if (Date.now() - started > timeoutMs) {
rejectPromise(new Error('No fue posible conectar a NodeCG.')); rejectPromise(new Error('Could not connect to NodeCG.'));
return; return;
} }
@@ -71,8 +71,8 @@ function startNodeCG() {
nodecgProcess.on('exit', (code) => { nodecgProcess.on('exit', (code) => {
if (!app.isQuiting) { if (!app.isQuiting) {
dialog.showErrorBox( dialog.showErrorBox(
'NodeCG finalizado', 'NodeCG exited',
`El proceso de NodeCG terminó inesperadamente con código ${code ?? 'desconocido'}.` `The NodeCG process ended unexpectedly with code ${code ?? 'unknown'}.`
); );
app.quit(); app.quit();
} }
@@ -80,8 +80,8 @@ function startNodeCG() {
nodecgProcess.on('error', (error) => { nodecgProcess.on('error', (error) => {
dialog.showErrorBox( dialog.showErrorBox(
'No se pudo iniciar NodeCG', 'Could not start NodeCG',
`No se pudo ejecutar \"${runtimeBinary}\". ${useElectronNodeForNodeCG ? 'Desactivá NODECG_USE_ELECTRON_NODE o revisá Electron.' : 'Definí NODE_BINARY con la ruta de Node.js.'}\n\nDetalle: ${error.message}` `Could not run \"${runtimeBinary}\". ${useElectronNodeForNodeCG ? 'Disable NODECG_USE_ELECTRON_NODE or check your Electron setup.' : 'Set NODE_BINARY to your Node.js path.'}\n\nDetails: ${error.message}`
); );
app.quit(); app.quit();
}); });
@@ -117,7 +117,7 @@ app.whenReady().then(async () => {
await waitForServer(`http://127.0.0.1:${nodecgPort}`); await waitForServer(`http://127.0.0.1:${nodecgPort}`);
await createWindow(); await createWindow();
} catch (error) { } catch (error) {
dialog.showErrorBox('No se pudo iniciar', error instanceof Error ? error.message : String(error)); dialog.showErrorBox('Could not start', error instanceof Error ? error.message : String(error));
app.quit(); app.quit();
} }
}); });
@@ -482,7 +482,7 @@ watchEffect(() => {
> >
<QCardSection> <QCardSection>
<div class="text-subtitle1 text-weight-bold"> <div class="text-subtitle1 text-weight-bold">
Lado izquierdo Left side
</div> </div>
</QCardSection> </QCardSection>
<QSeparator /> <QSeparator />
@@ -491,7 +491,7 @@ watchEffect(() => {
v-model="scoreboardStore.scoreboard.leftPlayerId" v-model="scoreboardStore.scoreboard.leftPlayerId"
v-model:input-value="leftInput" v-model:input-value="leftInput"
:options="leftPlayerOptions" :options="leftPlayerOptions"
label="Jugador" label="Player"
dense dense
outlined outlined
emit-value emit-value
@@ -535,7 +535,7 @@ watchEffect(() => {
v-if="leftCanSave" v-if="leftCanSave"
color="primary" color="primary"
icon="save" icon="save"
label="Guardar jugador" label="Save player"
class="q-mt-sm" class="q-mt-sm"
@click="saveLeftPlayer" @click="saveLeftPlayer"
/> />
@@ -543,7 +543,7 @@ watchEffect(() => {
v-if="leftHasSelectedPlayerChanges" v-if="leftHasSelectedPlayerChanges"
color="primary" color="primary"
icon="save" icon="save"
label="Guardar cambios del jugador" label="Save player changes"
class="q-mt-sm q-ml-sm" class="q-mt-sm q-ml-sm"
@click="saveLeftSelectedPlayerChanges" @click="saveLeftSelectedPlayerChanges"
/> />
@@ -567,7 +567,7 @@ watchEffect(() => {
> >
<QCardSection> <QCardSection>
<div class="text-subtitle1 text-weight-bold"> <div class="text-subtitle1 text-weight-bold">
Lado derecho Right side
</div> </div>
</QCardSection> </QCardSection>
<QSeparator /> <QSeparator />
@@ -576,7 +576,7 @@ watchEffect(() => {
v-model="scoreboardStore.scoreboard.rightPlayerId" v-model="scoreboardStore.scoreboard.rightPlayerId"
v-model:input-value="rightInput" v-model:input-value="rightInput"
:options="rightPlayerOptions" :options="rightPlayerOptions"
label="Jugador" label="Player"
dense dense
outlined outlined
emit-value emit-value
@@ -620,7 +620,7 @@ watchEffect(() => {
v-if="rightCanSave" v-if="rightCanSave"
color="primary" color="primary"
icon="save" icon="save"
label="Guardar jugador" label="Save player"
class="q-mt-sm" class="q-mt-sm"
@click="saveRightPlayer" @click="saveRightPlayer"
/> />
@@ -628,7 +628,7 @@ watchEffect(() => {
v-if="rightHasSelectedPlayerChanges" v-if="rightHasSelectedPlayerChanges"
color="primary" color="primary"
icon="save" icon="save"
label="Guardar cambios del jugador" label="Save player changes"
class="q-mt-sm q-ml-sm" class="q-mt-sm q-ml-sm"
@click="saveRightSelectedPlayerChanges" @click="saveRightSelectedPlayerChanges"
/> />
+1 -1
View File
@@ -12,7 +12,7 @@ useHead({ title: 'About' });
About About
</div> </div>
<div class="text-body1"> <div class="text-body1">
Información del bundle y enlaces relevantes. Bundle information and relevant links.
</div> </div>
</QPage> </QPage>
</template> </template>
+3 -3
View File
@@ -71,14 +71,14 @@ const onDragStart = (event: DragEvent, graphic: GraphicConfig) => {
Graphics Graphics
</div> </div>
<div class="text-body1 q-mb-lg"> <div class="text-body1 q-mb-lg">
Controles y estado de gráficos del bundle. Bundle graphics controls and status.
</div> </div>
<div <div
v-if="graphics.length === 0" v-if="graphics.length === 0"
class="text-body2 text-grey-5" class="text-body2 text-grey-5"
> >
No hay gráficos configurados en el bundle. There are no graphics configured in this bundle.
</div> </div>
<div class="row q-col-gutter-md"> <div class="row q-col-gutter-md">
@@ -122,7 +122,7 @@ const onDragStart = (event: DragEvent, graphic: GraphicConfig) => {
<QBtn <QBtn
color="primary" color="primary"
icon="content_copy" icon="content_copy"
label="Copiar URL" label="Copy URL"
@click="copyUrl(graphic)" @click="copyUrl(graphic)"
/> />
<QBtn <QBtn
+9 -9
View File
@@ -101,7 +101,7 @@ const savePlayer = () => {
}; };
const deletePlayer = (row: PlayerRow) => { const deletePlayer = (row: PlayerRow) => {
const confirmed = window.confirm(`¿Eliminar a ${row.gamertag || 'este jugador'}?`); const confirmed = window.confirm(`Delete ${row.gamertag || 'this player'}?`);
if (!confirmed) { if (!confirmed) {
return; return;
} }
@@ -134,7 +134,7 @@ const handleImport = async (event: Event) => {
const parsed = JSON.parse(text) as unknown; const parsed = JSON.parse(text) as unknown;
playersStore.setPlayers(parsed as PlayersMap); playersStore.setPlayers(parsed as PlayersMap);
} catch { } catch {
window.alert('No se pudo importar el JSON. Verifica el formato.'); window.alert('Could not import JSON. Check the format.');
} finally { } finally {
if (target) { if (target) {
target.value = ''; target.value = '';
@@ -153,7 +153,7 @@ const handleImport = async (event: Event) => {
<QBtn <QBtn
color="primary" color="primary"
icon="add" icon="add"
label="Nuevo jugador" label="New player"
class="q-ml-sm" class="q-ml-sm"
@click="openCreateDialog" @click="openCreateDialog"
/> />
@@ -164,7 +164,7 @@ const handleImport = async (event: Event) => {
v-model="filter" v-model="filter"
dense dense
outlined outlined
placeholder="Buscar..." placeholder="Search..."
class="players-search" class="players-search"
clearable clearable
> >
@@ -176,14 +176,14 @@ const handleImport = async (event: Event) => {
color="secondary" color="secondary"
outline outline
icon="file_upload" icon="file_upload"
label="Importar JSON" label="Import JSON"
@click="triggerImport" @click="triggerImport"
/> />
<QBtn <QBtn
color="secondary" color="secondary"
outline outline
icon="file_download" icon="file_download"
label="Exportar JSON" label="Export JSON"
@click="exportPlayers" @click="exportPlayers"
/> />
<input <input
@@ -227,7 +227,7 @@ const handleImport = async (event: Event) => {
<QCard class="players-dialog"> <QCard class="players-dialog">
<QCardSection> <QCardSection>
<div class="text-h6"> <div class="text-h6">
{{ editingId ? 'Editar jugador' : 'Nuevo jugador' }} {{ editingId ? 'Edit player' : 'New player' }}
</div> </div>
</QCardSection> </QCardSection>
<QSeparator /> <QSeparator />
@@ -294,13 +294,13 @@ const handleImport = async (event: Event) => {
<QCardActions align="right"> <QCardActions align="right">
<QBtn <QBtn
flat flat
label="Cancelar" label="Cancel"
color="secondary" color="secondary"
@click="isDialogOpen = false" @click="isDialogOpen = false"
/> />
<QBtn <QBtn
color="primary" color="primary"
label="Guardar" label="Save"
@click="savePlayer" @click="savePlayer"
/> />
</QCardActions> </QCardActions>
+1 -1
View File
@@ -12,7 +12,7 @@ useHead({ title: 'Settings' });
Settings Settings
</div> </div>
<div class="text-body1"> <div class="text-body1">
Configuración del dashboard y del bundle. Dashboard and bundle configuration.
</div> </div>
</QPage> </QPage>
</template> </template>
+2 -2
View File
@@ -29,7 +29,7 @@ const leftName = computed(() => {
return scoreboard.value.leftNameOverride; return scoreboard.value.leftNameOverride;
} }
const player = players.value[scoreboard.value.leftPlayerId]; const player = players.value[scoreboard.value.leftPlayerId];
return player?.gamertag || 'Jugador 1'; return player?.gamertag || 'Player 1';
}); });
const rightName = computed(() => { const rightName = computed(() => {
@@ -37,7 +37,7 @@ const rightName = computed(() => {
return scoreboard.value.rightNameOverride; return scoreboard.value.rightNameOverride;
} }
const player = players.value[scoreboard.value.rightPlayerId]; const player = players.value[scoreboard.value.rightPlayerId];
return player?.gamertag || 'Jugador 2'; return player?.gamertag || 'Player 2';
}); });
const leftTeam = computed(() => scoreboard.value.leftTeamOverride || ''); const leftTeam = computed(() => scoreboard.value.leftTeamOverride || '');