Skip to content

Commit 8fae59f

Browse files
authored
Merge pull request #5 from manghidev/fixes
feat: add safe translation retrieval and fallback for language settings
2 parents ff1dfa1 + 09bfb30 commit 8fae59f

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

js/app.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,15 @@ let currentLanguage = 'en-US';
5555
let currentSerial = '';
5656
let currentTab = 'generator';
5757

58+
// Función auxiliar para obtener traducciones de forma segura
59+
function getTranslations() {
60+
if (!translations[currentLanguage]) {
61+
console.error('Idioma no válido:', currentLanguage, 'usando en-US como respaldo');
62+
currentLanguage = 'en-US';
63+
}
64+
return translations[currentLanguage];
65+
}
66+
5867
// Función para cambiar de pestaña
5968
function switchTab(tabName) {
6069
currentTab = tabName;
@@ -268,7 +277,7 @@ function formatDecodedDate(date, language = 'es') {
268277

269278
// Función para manejar la decodificación de seriales
270279
function handleDecodeSerial() {
271-
const t = translations[currentLanguage];
280+
const t = getTranslations();
272281
const serialInput = document.getElementById('serialInput');
273282
const dateOutput = document.getElementById('dateOutput');
274283

@@ -294,8 +303,14 @@ function handleDecodeSerial() {
294303

295304
// Función para cambiar el idioma
296305
function changeLanguage(lang) {
306+
// Verificar que el idioma solicitado existe
307+
if (!translations[lang]) {
308+
console.error('Idioma no válido:', lang);
309+
lang = 'en-US'; // Fallback al inglés
310+
}
311+
297312
currentLanguage = lang;
298-
const t = translations[currentLanguage];
313+
const t = getTranslations();
299314

300315
// Actualizar título de la página
301316
document.title = t.pageTitle;
@@ -317,7 +332,7 @@ function changeLanguage(lang) {
317332

318333
// Función para actualizar la interfaz de usuario
319334
function updateUI() {
320-
const t = translations[currentLanguage];
335+
const t = getTranslations();
321336

322337
// Actualizar textos principales
323338
document.getElementById('title').textContent = t.title;
@@ -364,8 +379,9 @@ function updateUI() {
364379
// Función para manejar la generación del serial
365380
async function handleGenerateSerial() {
366381
console.log('handleGenerateSerial called'); // Debug
382+
console.log('Current language:', currentLanguage); // Debug
367383

368-
const t = translations[currentLanguage];
384+
const t = getTranslations();
369385
const serialOutput = document.getElementById('serialOutput');
370386
const copyButton = document.getElementById('copyButton');
371387

@@ -430,7 +446,7 @@ async function handleGenerateSerial() {
430446

431447
// Función para copiar al portapapeles
432448
function copyToClipboard() {
433-
const t = translations[currentLanguage];
449+
const t = getTranslations();
434450
const copyButton = document.getElementById('copyButton');
435451

436452
if (currentSerial && currentSerial !== t.initialMessage && !currentSerial.startsWith(t.errorPrefix)) {
@@ -465,9 +481,19 @@ document.addEventListener('DOMContentLoaded', () => {
465481
// Cargar preferencias del localStorage
466482
const savedLanguage = localStorage.getItem('preferredLanguage') || 'en-US';
467483
const savedTab = localStorage.getItem('preferredTab') || 'generator';
468-
currentLanguage = savedLanguage;
484+
485+
// Verificar que el idioma guardado existe en las traducciones
486+
if (translations[savedLanguage]) {
487+
currentLanguage = savedLanguage;
488+
} else {
489+
console.warn('Idioma guardado no válido:', savedLanguage, 'usando en-US');
490+
currentLanguage = 'en-US';
491+
}
492+
469493
currentTab = savedTab;
470494

495+
console.log('Idioma inicializado:', currentLanguage); // Debug
496+
471497
// Configurar event listeners principales
472498
document.getElementById('generateButton').addEventListener('click', handleGenerateSerial);
473499
document.getElementById('copyButton').addEventListener('click', copyToClipboard);

0 commit comments

Comments
 (0)