// site-jogador/js/survey-i18n.jsx
// Textos de INTERFACE do motor de pesquisas (botoes, avisos, erros, portao de
// acesso). Nao tem nada de uma pesquisa especifica aqui: as perguntas e a copy
// da abertura/fim moram em data/surveys/<slug>.json. Pesquisa nova = JSON novo,
// este arquivo nao muda.
// Molde de deteccao de idioma copiado do donate-i18n.jsx (mesma chave gz_lang,
// entao quem escolheu ES no Donate ja cai em ES aqui).
// Carrega ANTES de survey.jsx.

(function () {
  function detect() {
    try {
      var s = localStorage.getItem('gz_lang');
      if (s === 'pt' || s === 'es' || s === 'en') return s;
      var n = (navigator.language || 'pt').slice(0, 2).toLowerCase();
      return n === 'es' ? 'es' : n === 'en' ? 'en' : 'pt';
    } catch (e) { return 'pt'; }
  }
  function setLang(l) { try { localStorage.setItem('gz_lang', l); } catch (e) {} }

  var T = function (pt, en, es) { return { pt: pt, en: en, es: es }; };

  var UI = {
    start:      T('Começar a pesquisa', 'Start the survey', 'Comenzar la encuesta'),
    next:       T('Avançar', 'Next', 'Siguiente'),
    prev:       T('Voltar', 'Back', 'Atrás'),
    send:       T('Enviar minhas respostas', 'Submit my answers', 'Enviar mis respuestas'),
    sending:    T('Enviando...', 'Submitting...', 'Enviando...'),
    req:        T('obrigatória', 'required', 'obligatoria'),
    comment:    T('Quer comentar? (opcional)', 'Want to comment? (optional)', '¿Quieres comentar? (opcional)'),
    other:      T('Outro (escreva abaixo)', 'Other (write below)', 'Otro (escribe abajo)'),
    otherPh:    T('Conta pra gente...', 'Tell us...', 'Cuéntanos...'),
    max:        T('escolha até %n', 'pick up to %n', 'elige hasta %n'),
    sec:        T('Seção', 'Section', 'Sección'),
    saved:      T('Progresso salvo', 'Progress saved', 'Progreso guardado'),
    optional:   T('opcional', 'optional', 'opcional'),
    loading:    T('Carregando a pesquisa...', 'Loading the survey...', 'Cargando la encuesta...'),

    // retomada de progresso
    resumeT:    T('Você tem uma pesquisa em andamento', 'You have a survey in progress', 'Tienes una encuesta en curso'),
    resumeB:    T('Quer continuar de onde parou?', 'Want to pick up where you left off?', '¿Quieres continuar donde lo dejaste?'),
    resumeGo:   T('Continuar', 'Continue', 'Continuar'),
    resumeNew:  T('Começar de novo', 'Start over', 'Empezar de nuevo'),

    site:       T('Ir para o site', 'Go to the site', 'Ir al sitio'),
  };

  // Portao de acesso: 2 modos ('login' = deslogado, 'steam' = falta vincular).
  var GATE = {
    loginH: T('Entre pra responder', 'Sign in to answer', 'Entra para responder'),
    loginP: T(
      'A pesquisa é aberta a todo mundo que tem conta no site, tenha jogado o beta ou não. O login serve pra ninguém responder duas vezes e pra sua recompensa achar o caminho até você.',
      'The survey is open to everyone with a site account, whether you played the beta or not. Signing in prevents duplicate answers and lets your reward find you.',
      'La encuesta está abierta a todos los que tienen cuenta en el sitio, hayan jugado la beta o no. El login evita respuestas duplicadas y hace que tu recompensa te encuentre.'),
    steamH: T('Falta vincular sua Steam', 'Your Steam is not linked yet', 'Falta vincular tu Steam'),
    steamP: T(
      'Você já está logado. Falta só a Steam, que é como a gente sabe pra qual conta do jogo entregar a sua Kombi.',
      'You are signed in. Only Steam is missing, which is how we know which game account gets your Kombi.',
      'Ya estás conectado. Solo falta la Steam, que es como sabemos a qué cuenta del juego entregar tu Kombi.'),
    step1:  T('Conta no site com Discord', 'Site account with Discord', 'Cuenta en el sitio con Discord'),
    step1s: T('Leva menos de um minuto, é só entrar com o Discord.',
              'Takes under a minute, just sign in with Discord.',
              'Toma menos de un minuto, solo entra con Discord.'),
    step2:  T('Steam vinculada à conta', 'Steam linked to the account', 'Steam vinculada a la cuenta'),
    step2s: T('É por ela que a Kombi Gen Z e os 300 Z Bucks chegam no seu personagem.',
              'That is how the Gen Z Kombi and the 300 Z Bucks reach your character.',
              'Por ahí llegan la Kombi Gen Z y los 300 Z Bucks a tu personaje.'),
    btnDiscord: T('Entrar com Discord', 'Sign in with Discord', 'Entrar con Discord'),
    btnSteam:   T('Vincular minha Steam', 'Link my Steam', 'Vincular mi Steam'),
    noAccount:  T('Sua conta ainda não foi criada aqui. Clique abaixo pra entrar com o Discord e criar em um passo.',
                  'Your account has not been created here yet. Click below to sign in with Discord and create it in one step.',
                  'Tu cuenta todavía no fue creada aquí. Haz clic abajo para entrar con Discord y crearla en un paso.'),
  };

  // Mensagens de erro, na mesma chave que a RPC devolve.
  var ERR = {
    not_authenticated: T('Você precisa entrar na sua conta pra responder.',
                         'You need to sign in to answer.',
                         'Necesitas iniciar sesión para responder.'),
    no_account:        T('Não achamos sua conta no site. Entre com o Discord pra criar.',
                         'We could not find your site account. Sign in with Discord to create one.',
                         'No encontramos tu cuenta del sitio. Entra con Discord para crearla.'),
    discord_required:  T('Sua conta precisa estar ligada ao Discord.',
                         'Your account needs to be linked to Discord.',
                         'Tu cuenta necesita estar vinculada a Discord.'),
    steam_required:    T('Vincule sua Steam antes de responder. É por ela que a recompensa chega.',
                         'Link your Steam before answering. That is how the reward arrives.',
                         'Vincula tu Steam antes de responder. Por ahí llega la recompensa.'),
    already_answered:  T('Você já respondeu esta pesquisa. Uma resposta por pessoa.',
                         'You already answered this survey. One answer per person.',
                         'Ya respondiste esta encuesta. Una respuesta por persona.'),
    survey_closed:     T('Esta pesquisa não está aberta no momento.',
                         'This survey is not open right now.',
                         'Esta encuesta no está abierta en este momento.'),
    survey_not_found:  T('Pesquisa não encontrada.', 'Survey not found.', 'Encuesta no encontrada.'),
    payload_too_large: T('Suas respostas ficaram grandes demais pra enviar. Encurte os comentários.',
                         'Your answers are too large to submit. Shorten the comments.',
                         'Tus respuestas son demasiado grandes para enviar. Acorta los comentarios.'),
    invalid_payload:   T('Não consegui ler suas respostas. Recarregue a página.',
                         'I could not read your answers. Reload the page.',
                         'No pude leer tus respuestas. Recarga la página.'),
    rpc_error:         T('Deu problema ao falar com o servidor. Seu progresso está salvo: tente enviar de novo em instantes.',
                         'Something went wrong talking to the server. Your progress is saved: try submitting again shortly.',
                         'Hubo un problema al hablar con el servidor. Tu progreso está guardado: intenta enviar de nuevo en un momento.'),
    load_failed:       T('Não consegui carregar a pesquisa. Recarregue a página.',
                         'I could not load the survey. Reload the page.',
                         'No pude cargar la encuesta. Recarga la página.'),
  };

  // tx(objT, lang) -> string no idioma, com fallback pro PT.
  function tx(o, lang) {
    if (!o) return '';
    if (typeof o === 'string') return o;
    return o[lang] || o.pt || '';
  }

  window.GZ_SURVEY_I18N = { detect: detect, setLang: setLang, T: T, UI: UI, GATE: GATE, ERR: ERR, tx: tx };
})();
