Files
City10/lang/en.json
T
marcocosta10000 59963de995 feat(city): add bump-to-talk conversations with persistent context
Implements proximity-based street conversations between player characters and peers (human or agentic NPC). New PersonTalk model, controller, and migrations store daily message threads that persist across sessions and provide context for future interactions. Agent replies include backoff throttling and fallback persona handling to avoid dead-end chats.

Frontend changes refactor the chat panel to support both character and agent peers, opening automatically when the player moves within range, polling for replies, rendering day separators, and displaying rate-limit warnings. Styling updated to a transparent blurred panel. Translations extended with new hint text and rate-limit messages across en, es, and pt_BR.
2026-10-31 17:59:22 -03:00

250 lines
12 KiB
JSON
Executable File

{
"Login": "Log in",
"Logout": "Log out",
"Register": "Register",
"Dashboard": "Dashboard",
"Email": "Email",
"Password": "Password",
"Password Confirmation": "Confirm Password",
"Remember Me": "Remember me",
"Name": "Name",
"Save": "Save",
"Cancel": "Cancel",
"Delete": "Delete",
"Edit": "Edit",
"Create": "Create",
"Search": "Search",
"Back": "Back",
"Welcome": "Welcome to City10",
"auth.failed": "These credentials do not match our records.",
"auth.disabled": "This account has been disabled. Please contact an administrator.",
"auth.forbidden": "You do not have permission to access this resource.",
"auth.logged_out": "You have been logged out successfully.",
"auth.throttle": "Too many attempts. Please try again in :seconds seconds.",
"legal.accept_required": "You must accept the Terms of Use and Privacy Policy before continuing.",
"legal.accepted": "Terms accepted successfully.",
"legal.must_accept_terms": "You must accept the Terms of Use.",
"legal.must_accept_privacy": "You must accept the Privacy Policy.",
"legal.must_accept_cookies": "You must accept the Cookie Policy.",
"validation.captcha_required": "Please solve the math verification.",
"validation.captcha_failed": "The math verification answer is incorrect.",
"validation.model_not_allowed": "The selected AI model is not in the allowed list.",
"users.cannot_deactivate_self": "You cannot deactivate your own account.",
"users.deactivated": "Account deactivated successfully.",
"stores.deleted": "Store deleted successfully.",
"agents.deleted": "Agent deleted successfully.",
"welcome.tagline": "A living 3D city in your browser, with autonomous AI agents — Mayor, pedestrians, shopkeepers and vehicles — deciding in real time through OpenRouter.ai.",
"welcome.card1.title": "🌐 Real-Time 3D City",
"welcome.card1.desc": "Explore streets, avenues, bridges, rivers, squares and buildings rendered with Three.js right in your browser.",
"welcome.card2.title": "🤖 AI Agents",
"welcome.card2.desc": "The mayor, pedestrians and shopkeepers make strategic decisions using free OpenRouter.ai models.",
"welcome.card3.title": "🔒 Secure & LGPD",
"welcome.card3.desc": "Differentiated authentication (Admin/User), math CAPTCHA and auditable terms consent compliant with Brazilian law.",
"welcome.city.title": "🗺️ City Elements (Phase 1)",
"welcome.city.desc": "The database already models houses, buildings, schools, parks, squares, traffic lights, streets, avenues, bridges, airports, rivers, industries, stores and shopkeepers — all with 3D coordinates (X, Y, Z) ready for the rendering engine.",
"welcome.no_account": "Don't have an account?",
"welcome.has_account": "Already have an account?",
"nav.city": "3D City",
"nav.admin": "Admin",
"dashboard.open_viewer": "Open 3D viewer",
"dashboard.viewer_desc": "Explore the city ground, stores and agents with a controllable camera.",
"dashboard.stores_title": "Stores",
"dashboard.stores_desc": "Stores registered in the 3D city.",
"dashboard.legal_title": "Consents",
"dashboard.consent_history": "View acceptance history",
"legal.terms_label": "Terms",
"legal.privacy_label": "Privacy",
"legal.cookies_label": "Cookies",
"admin.stores.title": "Manage Stores",
"admin.stores.manage": "Manage stores",
"admin.stores.admin_desc": "Create stores and define their 3D position in the city.",
"admin.stores.new": "New store",
"admin.stores.created": "Store created successfully.",
"admin.stores.updated": "Store updated successfully.",
"admin.stores.edit_title": "Edit store",
"admin.stores.create_title": "New store",
"admin.stores.empty": "No stores registered yet.",
"admin.stores.position": "3D position in the city",
"admin.stores.position_hint": "Click the ground to set X/Z, or type the coordinates. Use controls to rotate/zoom.",
"admin.stores.pos_x": "Position X",
"admin.stores.pos_y": "Height Y (ground = 0)",
"admin.stores.pos_z": "Position Z",
"admin.stores.dimensions": "Building dimensions",
"admin.stores.width": "Width",
"admin.stores.height": "Height",
"admin.stores.depth": "Depth",
"admin.stores.type": "Store type",
"admin.stores.description": "Description",
"admin.stores.owner": "Owner (user)",
"admin.stores.agent": "AI agent (shopkeeper)",
"admin.stores.is_open": "Store open",
"admin.stores.no_owner": "No owner",
"admin.stores.no_agent": "No agent",
"admin.stores.actions": "Actions",
"admin.stores.coords": "Coordinates",
"admin.stores.confirm_delete": "Delete this store from the city?",
"city.title": "3D City Viewer",
"city.loading": "Loading city…",
"city.error": "Failed to load city data.",
"city.stores_count": "stores",
"city.agents_count": "agents",
"city.hint": "Click the scene to control · WASD to walk · Mouse to look · Esc to exit · Get close to someone to talk",
"city.refresh": "Reload",
"city.selected": "Selected",
"city.open": "Open",
"city.closed": "Closed",
"city.hint_fps": "WASD to walk · Mouse to look · Esc to exit · Click an NPC to chat",
"city.position": "POSITION",
"city.on_ground": "on ground",
"city.triangles": "collision tris",
"city.chat_placeholder": "Type your message…",
"city.chat_thinking": "thinking…",
"city.chat_responding": "responding…",
"city.chat_accepted": "Message sent to agent.",
"city.chat_error": "Sorry, I can't reply right now. Please try again.",
"city.talk_ratelimited": "Too many messages — wait a moment and try again.",
"city.chat_send": "Send",
"city.chat_with": "Chatting with",
"city.clock": "Time",
"city.weather": "Weather",
"city.weather_clear": "Sunny",
"city.weather_cloudy": "Cloudy",
"city.weather_rain": "Rain",
"city.weather_storm": "Storm",
"city.vehicles_count": "vehicles",
"city.pedestrians_count": "pedestrians",
"auth.pending": "Your account is awaiting administrator approval.",
"auth.pending_title": "Awaiting approval",
"auth.pending_body": "Your registration was received. An administrator must approve your account before you can enter the city. You can close this page and try again later.",
"admin.citizens.title": "Citizens",
"admin.citizens.hint": "Approve pending accounts to create their city character.",
"admin.citizens.name": "Name",
"admin.citizens.status": "Status",
"admin.citizens.character": "Character",
"admin.citizens.actions": "Actions",
"admin.citizens.approve": "Approve",
"admin.citizens.approved": "Citizen approved and character created.",
"admin.citizens.ban": "Ban",
"admin.citizens.banned": "Citizen banned.",
"admin.citizens.cannot_ban_self": "You cannot ban your own account.",
"admin.cities.title": "Cities and territory",
"admin.cities.hint": "Create new cities or expand existing territory (+40 per block).",
"admin.cities.name": "City name",
"admin.cities.create": "Create city",
"admin.cities.created": "City created.",
"admin.cities.bounds": "Bounds",
"admin.cities.expansions": "Expansions",
"admin.cities.expand": "Expand",
"admin.cities.expanded": "Territory expanded.",
"admin.cities.max_expansions": "Expansion limit reached.",
"nav.citizens": "Citizens",
"nav.cities": "Cities",
"city.action_unknown": "Unknown action.",
"city.action_ok": "Action completed.",
"city.no_food": "You have no food in inventory.",
"city.no_water": "You have no water in inventory.",
"city.no_house": "You need a completed house to sleep.",
"city.no_job": "You are unemployed. Apply for a job.",
"city.no_school": "No school available in this city.",
"city.job_other_city": "That job belongs to another city.",
"city.job_education": "Not enough education for this job.",
"city.no_money": "Not enough money.",
"city.no_inventory": "Not enough inventory quantity.",
"city.out_of_bounds": "Position outside city bounds.",
"city.no_materials": "You need 50 materials to build.",
"city.site_taken": "This lot is already occupied.",
"city.build_started": "Construction started. The ticker finishes the house.",
"city.social_unknown": "Unknown social action.",
"city.social_self": "You cannot do that to yourself.",
"city.social_exists": "Relationship already exists or is pending.",
"city.social_friend_sent": "Friend request sent.",
"city.social_friend_ok": "Friendship accepted.",
"city.social_need_friend": "You must be accepted friends first.",
"city.social_married": "You are already married.",
"city.social_married_ok": "Marriage completed.",
"city.social_need_spouse": "You must be married to have a child.",
"city.social_child_ok": "A child was born in the city!",
"city.chat_sent": "Message sent.",
"city.hud_hunger": "Hunger",
"city.hud_thirst": "Thirst",
"city.hud_energy": "Energy",
"city.hud_money": "Money",
"city.hud_state": "State",
"city.hud_education": "Education",
"city.hud_inventory": "Inventory",
"city.hud_jobs": "Jobs",
"city.hud_actions": "Actions",
"city.hud_social": "Social",
"city.act_eat": "Eat",
"city.act_drink": "Drink",
"city.act_sleep": "Sleep",
"city.act_wake": "Wake up",
"city.act_work": "Work",
"city.act_stop": "Stop",
"city.act_study": "Study",
"city.act_buy": "Buy kit",
"city.act_sell_v": "Sell product",
"city.act_build": "Build house (50 mat.)",
"city.act_apply": "Apply",
"city.act_friend": "Friend",
"city.act_marry": "Marry",
"city.act_child": "Child",
"city.me": "My character",
"city.citizens_near": "Citizens",
"city.apply_job": "Apply for",
"city.buy_hint": "Buys 1 food + 1 water + 10 materials",
"city.hospital_hit": "You were hit by a vehicle! Hospitalized for 1 hour.",
"city.hospital_already": "You are already in the hospital.",
"city.hospital_blocked": "You are hospitalized and cannot do that right now.",
"city.hospital_bed": "Hospitalized",
"city.hospital_released": "Hospital discharge: you are free to go.",
"city.hospital_title": "Hospitalized",
"city.hospital_left": "Discharge in",
"city.audio": "Audio",
"city.vol_master": "Master",
"city.vol_music": "Music",
"city.vol_sfx": "Effects",
"city.mute": "Mute",
"city.audio_hint": "Volume saved on this device.",
"city.hud_health": "Health",
"city.hud_exercise": "Workouts",
"city.exercise_use": "Press E to exercise",
"city.exercise_active": "Exercising",
"city.exercise_stopHint": "to stop",
"city.exercise_ok": "Nice! +2 health.",
"city.exercise_need_equipment": "Get closer to plaza gym equipment.",
"city.exercise_need_awake": "You must be awake to exercise.",
"city.exercise_tired": "You are too tired to exercise.",
"city.exercise_max_health": "Health is already at maximum!",
"city.exerciseStart": "Starting exercise…",
"city.exerciseStop": "Exercise stopped.",
"city.ped_red": "Red pedestrian light — wait for the walk signal.",
"nav.world": "World",
"admin.world.title": "World dashboard",
"admin.world.hint": "Live platform metrics for the persistent world.",
"admin.world.users": "Users",
"admin.world.characters": "Characters",
"admin.world.economy": "Economy",
"admin.world.trade_volume": "Trade volume",
"admin.world.world": "Finished houses",
"admin.world.market": "Market",
"admin.world.missions": "Missions",
"admin.world.health": "Avg health",
"admin.world.education": "Avg education",
"city.customize_saved": "Appearance updated.",
"city.market_listed": "Listing published on the market.",
"city.market_bought": "Purchase complete!",
"city.market_unavailable": "Listing unavailable.",
"city.ride_need_stop": "Get near a road (bus) or the rails (train).",
"city.ride_bus_ok": "You boarded the bus!",
"city.ride_train_ok": "You boarded the train!",
"city.missions_done": "Mission complete",
"city.act_market": "Market",
"city.act_customize": "Appearance",
"city.act_ride_bus": "Bus",
"city.act_ride_train": "Train",
"city.hud_minimap": "Map",
"city.online_now": "online",
"city.marketBuy": "Buy"
}