Characters can now relax on the beach sand to recover energy and health. The server clamps position to the shoreline, exposes beach geometry in the city payload, and the client renders animated waves, sand, stalls, chairs, and ambient NPCs. Includes Beach support class, new beach action endpoint, localization strings, and feature tests.
257 lines
13 KiB
JSON
Executable File
257 lines
13 KiB
JSON
Executable File
{
|
|
"Login": "Entrar",
|
|
"Logout": "Sair",
|
|
"Register": "Cadastrar",
|
|
"Dashboard": "Painel",
|
|
"Email": "E-mail",
|
|
"Password": "Senha",
|
|
"Password Confirmation": "Confirmar Senha",
|
|
"Remember Me": "Lembrar de mim",
|
|
"Name": "Nome",
|
|
"Save": "Salvar",
|
|
"Cancel": "Cancelar",
|
|
"Delete": "Excluir",
|
|
"Edit": "Editar",
|
|
"Create": "Criar",
|
|
"Search": "Buscar",
|
|
"Back": "Voltar",
|
|
"Welcome": "Bem-vindo ao City10",
|
|
"auth.failed": "As credenciais fornecidas não correspondem aos nossos registros.",
|
|
"auth.disabled": "Esta conta foi desativada. Contate o administrador.",
|
|
"auth.forbidden": "Você não tem permissão para acessar este recurso.",
|
|
"auth.logged_out": "Sessão encerrada com sucesso.",
|
|
"auth.throttle": "Muitas tentativas. Tente novamente em :seconds segundos.",
|
|
"legal.accept_required": "Você precisa aceitar os Termos de Uso e a Política de Privacidade antes de continuar.",
|
|
"legal.accepted": "Termos aceitos com sucesso.",
|
|
"legal.must_accept_terms": "Você precisa aceitar os Termos de Uso.",
|
|
"legal.must_accept_privacy": "Você precisa aceitar a Política de Privacidade.",
|
|
"legal.must_accept_cookies": "Você precisa aceitar a Política de Cookies.",
|
|
"validation.captcha_required": "Resolva a verificação matemática.",
|
|
"validation.captcha_failed": "Resposta da verificação matemática incorreta.",
|
|
"validation.model_not_allowed": "O modelo de IA selecionado não está na lista de permitidos.",
|
|
"users.cannot_deactivate_self": "Você não pode desativar sua própria conta.",
|
|
"users.deactivated": "Conta desativada com sucesso.",
|
|
"stores.deleted": "Loja excluída com sucesso.",
|
|
"agents.deleted": "Agente excluído com sucesso.",
|
|
"welcome.tagline": "Uma cidade 3D viva no navegador, com agentes de IA autônomos — Prefeito, pedestres, lojistas e veículos — decidindo em tempo real através do OpenRouter.ai.",
|
|
"welcome.card1.title": "🌐 Cidade 3D em Tempo Real",
|
|
"welcome.card1.desc": "Explore ruas, avenidas, pontes, rios, praças e edifícios renderizados com Three.js direto no navegador.",
|
|
"welcome.card2.title": "🤖 Agentes de IA",
|
|
"welcome.card2.desc": "Prefeito, pedestres e lojistas tomam decisões estratégicas através de modelos gratuitos do OpenRouter.ai.",
|
|
"welcome.card3.title": "🔒 Seguro & LGPD",
|
|
"welcome.card3.desc": "Autenticação diferenciada (Admin/User), CAPTCHA matemático e consentimento auditável de termos conforme a legislação brasileira.",
|
|
"welcome.city.title": "🗺️ Elementos da Cidade (Fase 1)",
|
|
"welcome.city.desc": "A base de dados já modela casas, edifícios, escolas, parques, praças, semáforos, ruas, avenidas, pontes, aeroportos, rios, indústrias, lojas e lojistas — todos com coordenadas 3D (X, Y, Z) prontas para o motor de renderização.",
|
|
"welcome.no_account": "Não tem conta?",
|
|
"welcome.has_account": "Já tem conta?",
|
|
"nav.city": "Cidade 3D",
|
|
"nav.admin": "Administração",
|
|
"dashboard.open_viewer": "Abrir visualizador 3D",
|
|
"dashboard.viewer_desc": "Explore o chão da cidade, lojas e agentes com câmera controlável.",
|
|
"dashboard.stores_title": "Lojas",
|
|
"dashboard.stores_desc": "Lojas cadastradas na cidade 3D.",
|
|
"dashboard.legal_title": "Consentimentos",
|
|
"dashboard.consent_history": "Ver histórico de aceites",
|
|
"legal.terms_label": "Termos",
|
|
"legal.privacy_label": "Privacidade",
|
|
"legal.cookies_label": "Cookies",
|
|
"admin.stores.title": "Gerenciar Lojas",
|
|
"admin.stores.manage": "Gerenciar lojas",
|
|
"admin.stores.admin_desc": "Cadastre lojas e defina a posição 3D delas na cidade.",
|
|
"admin.stores.new": "Nova loja",
|
|
"admin.stores.created": "Loja criada com sucesso.",
|
|
"admin.stores.updated": "Loja atualizada com sucesso.",
|
|
"admin.stores.edit_title": "Editar loja",
|
|
"admin.stores.create_title": "Nova loja",
|
|
"admin.stores.empty": "Nenhuma loja cadastrada ainda.",
|
|
"admin.stores.position": "Posição 3D na cidade",
|
|
"admin.stores.position_hint": "Clique no chão para definir X/Z, ou digite as coordenadas. Use os controles para girar/zoom.",
|
|
"admin.stores.pos_x": "Posição X",
|
|
"admin.stores.pos_y": "Altura Y (chão = 0)",
|
|
"admin.stores.pos_z": "Posição Z",
|
|
"admin.stores.dimensions": "Dimensões do prédio",
|
|
"admin.stores.width": "Largura",
|
|
"admin.stores.height": "Altura",
|
|
"admin.stores.depth": "Profundidade",
|
|
"admin.stores.type": "Tipo de loja",
|
|
"admin.stores.description": "Descrição",
|
|
"admin.stores.owner": "Dono (usuário)",
|
|
"admin.stores.agent": "Agente de IA (lojista)",
|
|
"admin.stores.is_open": "Loja aberta",
|
|
"admin.stores.no_owner": "Sem dono",
|
|
"admin.stores.no_agent": "Sem agente",
|
|
"admin.stores.actions": "Ações",
|
|
"admin.stores.coords": "Coordenadas",
|
|
"admin.stores.confirm_delete": "Excluir esta loja da cidade?",
|
|
"city.title": "Visualizador 3D da Cidade",
|
|
"city.loading": "Carregando cidade…",
|
|
"city.error": "Falha ao carregar os dados da cidade.",
|
|
"city.stores_count": "lojas",
|
|
"city.agents_count": "agentes",
|
|
"city.hint": "Clique na tela para controlar · WASD para andar · Mouse para olhar · Esc para sair · Chegue perto de alguém para conversar",
|
|
"city.refresh": "Recarregar",
|
|
"city.selected": "Selecionada",
|
|
"city.open": "Aberta",
|
|
"city.closed": "Fechada",
|
|
"city.hint_fps": "WASD para andar · Mouse para olhar · Esc para sair · Clique no NPC para conversar",
|
|
"city.position": "POSIÇÃO",
|
|
"city.on_ground": "no chão",
|
|
"city.triangles": "tris de colisão",
|
|
"city.chat_placeholder": "Digite sua mensagem…",
|
|
"city.chat_thinking": "pensando…",
|
|
"city.chat_responding": "respondendo…",
|
|
"city.chat_accepted": "Mensagem enviada ao agente.",
|
|
"city.chat_error": "Desculpe, não consegui responder agora. Tente novamente.",
|
|
"city.talk_ratelimited": "Muitas mensagens — aguarde um instante e tente de novo.",
|
|
"city.chat_send": "Enviar",
|
|
"city.chat_with": "Conversando com",
|
|
"city.clock": "Horário",
|
|
"city.weather": "Clima",
|
|
"city.weather_clear": "Ensolarado",
|
|
"city.weather_cloudy": "Nublado",
|
|
"city.weather_rain": "Chuva",
|
|
"city.weather_storm": "Tempestade",
|
|
"city.vehicles_count": "veículos",
|
|
"city.pedestrians_count": "pedestres",
|
|
"auth.pending": "Sua conta aguarda aprovação do administrador.",
|
|
"auth.pending_title": "Aguardando aprovação",
|
|
"auth.pending_body": "Seu cadastro foi recebido. Um administrador precisa aprovar sua conta antes que você possa entrar na cidade. Você pode fechar esta página e tentar novamente mais tarde.",
|
|
"admin.citizens.title": "Cidadãos",
|
|
"admin.citizens.hint": "Aprove contas pendentes para criar o personagem na cidade.",
|
|
"admin.citizens.name": "Nome",
|
|
"admin.citizens.status": "Status",
|
|
"admin.citizens.character": "Personagem",
|
|
"admin.citizens.actions": "Ações",
|
|
"admin.citizens.approve": "Aprovar",
|
|
"admin.citizens.approved": "Cidadão aprovado e personagem criado.",
|
|
"admin.citizens.ban": "Banir",
|
|
"admin.citizens.banned": "Cidadão banido.",
|
|
"admin.citizens.cannot_ban_self": "Você não pode banir a própria conta.",
|
|
"admin.cities.title": "Cidades e território",
|
|
"admin.cities.hint": "Crie novas cidades ou expanda o território das existentes (+40 por quadra).",
|
|
"admin.cities.name": "Nome da cidade",
|
|
"admin.cities.create": "Criar cidade",
|
|
"admin.cities.created": "Cidade criada.",
|
|
"admin.cities.bounds": "Limites",
|
|
"admin.cities.expansions": "Expansões",
|
|
"admin.cities.expand": "Expandir",
|
|
"admin.cities.expanded": "Território expandido.",
|
|
"admin.cities.max_expansions": "Limite de expansões atingido.",
|
|
"nav.citizens": "Cidadãos",
|
|
"nav.cities": "Cidades",
|
|
"city.action_unknown": "Ação desconhecida.",
|
|
"city.action_ok": "Ação realizada.",
|
|
"city.no_food": "Você não tem comida no inventário.",
|
|
"city.no_water": "Você não tem água no inventário.",
|
|
"city.no_house": "Você precisa de uma casa concluída para dormir.",
|
|
"city.no_job": "Você não tem emprego. Candidate-se a uma vaga.",
|
|
"city.no_school": "Não há escola disponível nesta cidade.",
|
|
"city.job_other_city": "Esta vaga pertence a outra cidade.",
|
|
"city.job_education": "Educação insuficiente para esta vaga.",
|
|
"city.no_money": "Dinheiro insuficiente.",
|
|
"city.no_inventory": "Quantidade insuficiente no inventário.",
|
|
"city.out_of_bounds": "Posição fora dos limites da cidade.",
|
|
"city.no_materials": "Você precisa de 50 materiais para construir.",
|
|
"city.site_taken": "Este terreno já está ocupado.",
|
|
"city.build_started": "Construção iniciada. O ticker conclui a casa.",
|
|
"city.social_unknown": "Ação social desconhecida.",
|
|
"city.social_self": "Você não pode fazer isso consigo mesmo.",
|
|
"city.social_exists": "Relação já existe ou está pendente.",
|
|
"city.social_friend_sent": "Pedido de amizade enviado.",
|
|
"city.social_friend_ok": "Amizade aceita.",
|
|
"city.social_need_friend": "Vocês precisam ser amigos aceitos.",
|
|
"city.social_married": "Você já é casado(a).",
|
|
"city.social_married_ok": "Casamento realizado.",
|
|
"city.social_need_spouse": "Você precisa ser casado(a) para ter um filho.",
|
|
"city.social_child_ok": "Nasceu um filho na cidade!",
|
|
"city.chat_sent": "Mensagem enviada.",
|
|
"city.hud_hunger": "Fome",
|
|
"city.hud_thirst": "Sede",
|
|
"city.hud_energy": "Energia",
|
|
"city.hud_money": "Dinheiro",
|
|
"city.hud_state": "Estado",
|
|
"city.hud_education": "Educação",
|
|
"city.hud_inventory": "Inventário",
|
|
"city.hud_jobs": "Empregos",
|
|
"city.hud_actions": "Ações",
|
|
"city.hud_social": "Social",
|
|
"city.act_eat": "Comer",
|
|
"city.act_drink": "Beber",
|
|
"city.act_sleep": "Dormir",
|
|
"city.act_wake": "Acordar",
|
|
"city.act_work": "Trabalhar",
|
|
"city.act_stop": "Parar",
|
|
"city.act_study": "Estudar",
|
|
"city.act_buy": "Comprar kit",
|
|
"city.act_sell_v": "Vender produto",
|
|
"city.act_build": "Construir casa (50 mat.)",
|
|
"city.act_apply": "Candidate-se",
|
|
"city.act_friend": "Amizade",
|
|
"city.act_marry": "Casar",
|
|
"city.act_child": "Filho",
|
|
"city.me": "Meu personagem",
|
|
"city.citizens_near": "Cidadãos",
|
|
"city.apply_job": "Aplicar para",
|
|
"city.buy_hint": "Compra 1 comida+1 água+10 materiais",
|
|
"city.hospital_hit": "Você foi atropelado! Internado no hospital por 1 hora.",
|
|
"city.hospital_already": "Você já está internado no hospital.",
|
|
"city.hospital_blocked": "Você está internado no hospital e não pode fazer isso agora.",
|
|
"city.hospital_bed": "Internado no hospital",
|
|
"city.hospital_released": "Alta do hospital: você foi liberado.",
|
|
"city.hospital_title": "Hospitalizado",
|
|
"city.hospital_left": "Alta em",
|
|
"city.audio": "Áudio",
|
|
"city.vol_master": "Geral",
|
|
"city.vol_music": "Música",
|
|
"city.vol_sfx": "Efeitos",
|
|
"city.mute": "Mudo",
|
|
"city.audio_hint": "Volume salvo neste dispositivo.",
|
|
"city.hud_health": "Saúde",
|
|
"city.hud_exercise": "Exercícios",
|
|
"city.exercise_use": "Pressione E para exercitar",
|
|
"city.exercise_active": "Exercitando",
|
|
"city.exercise_stopHint": "para parar",
|
|
"city.exercise_ok": "Boa! +2 de saúde.",
|
|
"city.beach_need": "Para relaxar, vá até a praia.",
|
|
"city.beach_ok": "Você relaxou na praia e recuperou ânimo!",
|
|
"city.beach_full": "Energia e saúde já estão no máximo.",
|
|
"city.beach_busy": "Termine o exercício atual primeiro.",
|
|
"city.beach_start": "Descansando na areia…",
|
|
"city.beach_prompt": "Relaxar na praia",
|
|
"city.beach_active": "Relaxando na praia",
|
|
"city.exercise_need_equipment": "Aproxime-se de um equipamento da praça.",
|
|
"city.exercise_need_awake": "Você precisa estar acordado para se exercitar.",
|
|
"city.exercise_tired": "Você está cansado demais para se exercitar.",
|
|
"city.exercise_max_health": "Saúde já está no máximo!",
|
|
"city.exerciseStart": "Começando a se exercitar…",
|
|
"city.exerciseStop": "Exercício encerrado.",
|
|
"city.ped_red": "Semáforo de pedestre vermelho — aguarde o sinal verde.",
|
|
"nav.world": "Mundo",
|
|
"admin.world.title": "Painel do mundo",
|
|
"admin.world.hint": "Métricas ao vivo da plataforma persistente.",
|
|
"admin.world.users": "Usuários",
|
|
"admin.world.characters": "Personagens",
|
|
"admin.world.economy": "Economia",
|
|
"admin.world.trade_volume": "Volume de trocas",
|
|
"admin.world.world": "Casas prontas",
|
|
"admin.world.market": "Mercado",
|
|
"admin.world.missions": "Missões",
|
|
"admin.world.health": "Saúde média",
|
|
"admin.world.education": "Educação média",
|
|
"city.customize_saved": "Aparência atualizada.",
|
|
"city.market_listed": "Anúncio publicado no mercado.",
|
|
"city.market_bought": "Compra realizada!",
|
|
"city.market_unavailable": "Anúncio indisponível.",
|
|
"city.ride_need_stop": "Aproxime-se de uma via (ônibus) ou dos trilhos (trem).",
|
|
"city.ride_bus_ok": "Você embarcou no ônibus!",
|
|
"city.ride_train_ok": "Você embarcou no trem!",
|
|
"city.missions_done": "Missão concluída",
|
|
"city.act_market": "Mercado",
|
|
"city.act_customize": "Aparência",
|
|
"city.act_ride_bus": "Ônibus",
|
|
"city.act_ride_train": "Trem",
|
|
"city.hud_minimap": "Mapa",
|
|
"city.online_now": "online",
|
|
"city.marketBuy": "Comprar"
|
|
}
|