Files
Nitro-V3/public/configuration/UITexts.example
T
simoleo89 91938985a2 refactor(mod-tools): launcher box gets context strip + section grouping
The launcher panel was a flat stack of four buttons (Room Tool, Chatlog
Tool, selected-user + presence dot inline, Report Tool) with no visual
hierarchy. The selected-user row was particularly cramped — name, the
2px dot and the 4×4 close-X all crammed into a single button row, easy
to misclick.

Reorganize into four logical groups, each with a small uppercase
section label:

  Context  — gradient strip (emerald when in a room, zinc when not)
             showing "Room #<id>" or "Enter a room first" with a
             matching door icon. Source of truth for "what is the
             mod observing right now"; both Room Tool and Chatlog
             Tool feed from the same currentRoomId.

  Room     — Room Tool + Chatlog Tool stacked. Both still gate on
             isInRoom; the disabled state now reads from a single
             flag instead of repeating `currentRoomId <= 0`.

  User     — When a user is selected: a card with the presence dot
             (emerald = still in room, zinc = left), the username at
             a real legible size, a bigger close button, plus a
             dedicated "Open Info" button to toggle ModToolsUserView.
             Splitting the click target from the close action removes
             the misclick footgun.
             When no user is selected: a dashed-border empty state
             with a FaUserSlash icon and the "Select a user" hint —
             reads as a clear "no selection" instead of an active
             button you can't press.

  Reports  — Report Tool with the open-ticket badge. Badge gets a 2px
             rose halo box-shadow so a new ticket pulses into view
             instead of competing with the button background.

Locale keys added under modtools.window.section.* and
modtools.window.context.room / modtools.window.user.open_info, in both
the runtime UITexts.json and the versioned UITexts.example template.

The "Open Info" button label is a fix in flight — the old layout
overloaded the username row to also open user info, with no separate
label. The new explicit button gets its own key so the action is
unambiguous (the previous version mislabelled the button as "Mod
Action", which is actually a different sub-panel).

typecheck + vitest 214/214 + JSON validation all clean.
2026-05-20 21:41:52 +02:00

261 lines
14 KiB
Plaintext

{
"notification.badge.received": "Nuovo Distintivo!",
"wiredfurni.badgereceived.title": "Distintivo ricevuto!",
"wiredfurni.badgereceived.body": "Hai appena ricevuto un nuovo Distintivo! Controlla nel tuo Inventario!",
"friendlist.search": "Search friends",
"purse.seasonal.currency.101": "cash",
"widget.chooser.checkall": "Select furniture",
"widget.chooser.btn.pickall": "pick up selected items!",
"wiredfurni.params.requireall.2": "If one of the selected furni has an avatar",
"wiredfurni.params.requireall.3": "If all selected furni have avatars on them",
"widget.settings.general": "General",
"widget.settings.general.title": "Adjust the default Nitro settings",
"widget.settings.volume": "Volume",
"widget.settings.interface": "Interface",
"widget.settings.interface.title": "Adjust the interface settings",
"widget.settings.interface.fps.automatic": "Set FPS to unlimited",
"widget.settings.interface.fps.warning": "Setting FPS to unlimited may cause performance issues!",
"widget.settings.interface.secondary": "Change the window header color",
"widget.settings.interface.reset": "Reset header color to default",
"widget.room.chat.hide_pets": "Hide pets",
"widget.room.chat.hide_avatars": "Hide avatars",
"widget.room.chat.hide_balloon": "Hide speech bubble",
"widget.room.chat.show_balloon": "Speech bubble",
"widget.room.chat.clear_history": "clear history",
"widget.room.youtube.shared": "YouTube is being shared",
"widget.room.youtube.open_video": "Open the video",
"wiredfurni.tooltip.select.tile": "Select tile",
"wiredfurni.tooltip.remove.tile": "Deselect tile",
"wiredfurni.tooltip.remove.5x5_tile": "select 5x5 tiles",
"wiredfurni.tooltip.remove.clear_tile": "Clear all selections",
"wiredfurni.params.furni_neighborhood.group.user": "Players",
"wiredfurni.params.furni_neighborhood.group.furni": "Furniture",
"wiredfurni.params.selector_option.bot": "No bots",
"wiredfurni.params.selector_option.pet": "No pets",
"catalog.title": "Catalog",
"catalog.favorites": "Favorites",
"catalog.favorites.pages": "Pages",
"catalog.favorites.furni": "Furni",
"catalog.favorites.empty": "No favorites",
"catalog.favorites.empty.hint": "Click the heart on furni or the star on pages to add them.",
"catalog.admin": "Admin",
"catalog.admin.new": "New",
"catalog.admin.root": "Root",
"catalog.admin.new.root.category": "New root category",
"catalog.admin.edit.root": "Edit Root",
"catalog.admin.edit": "Edit:",
"catalog.admin.edit.page": "Edit Page",
"catalog.admin.hidden": "hidden",
"catalog.admin.edit.title": "Edit \"%name%\"",
"catalog.admin.show": "Show",
"catalog.admin.hide": "Hide",
"catalog.admin.delete": "Delete",
"catalog.admin.delete.title": "Delete \"%name%\"",
"catalog.admin.delete.category.confirm": "Delete category \"%name%\" and all its content?",
"catalog.admin.delete.page": "Delete page",
"catalog.admin.delete.page.confirm": "Delete page \"%name%\"?",
"catalog.admin.delete.offer.confirm": "Are you sure you want to delete this offer?",
"catalog.admin.create": "Create",
"catalog.admin.save": "Save",
"catalog.admin.create.subpage": "Create sub-page",
"catalog.admin.order": "Order",
"catalog.admin.visible": "Visible",
"catalog.admin.enabled": "Enabled",
"catalog.admin.offer.new": "New Offer",
"catalog.admin.offer.edit": "Edit Offer",
"catalog.admin.offer.name": "Catalog Name",
"catalog.admin.offer.general": "General",
"catalog.admin.offer.quantity": "Quantity",
"catalog.admin.offer.prices": "Prices",
"catalog.admin.offer.credits": "Credits",
"catalog.admin.offer.points": "Points",
"catalog.admin.offer.points.type": "Points Type",
"catalog.admin.offer.options": "Options",
"catalog.admin.offer.club.only": "Club Only",
"catalog.admin.offer.extradata": "Extra Data (optional)....",
"catalog.admin.offer.have.offer": "Multi-discount (have_offer)",
"catalog.trophies.title": "Trophies",
"catalog.trophies.write.hint": "Write a text for the trophy before purchasing",
"catalog.trophies.inscription": "Trophy Inscription",
"catalog.trophies.inscription.placeholder": "Write the text that will appear on the trophy...",
"catalog.pets.show.colors": "Show colors",
"catalog.pets.choose.color": "Choose color",
"catalog.pets.choose.breed": "Choose breed",
"catalog.pets.back.breeds": "? Breeds",
"catalog.prefix.text": "Text",
"catalog.prefix.text.placeholder": "Enter text...",
"catalog.prefix.icon": "Icon",
"catalog.prefix.icon.remove": "Remove icon",
"catalog.prefix.effect": "Effect",
"catalog.prefix.color": "Color",
"catalog.prefix.color.single": "?? Single",
"catalog.prefix.color.per.letter": "?? Per Letter",
"catalog.prefix.color.hint": "Select a letter, then choose the color. Auto-advances.",
"catalog.prefix.color.apply.all.title": "Apply current color to all letters",
"catalog.prefix.color.apply.all": "Apply to all",
"catalog.prefix.color.selected": "Selected letter:",
"catalog.prefix.price": "Price:",
"catalog.prefix.price.amount": "5 Credits",
"catalog.prefix.purchased": "? Purchased!",
"catalog.prefix.purchase": "Purchase",
"modtools.userinfo.title": "User Info: %username%",
"modtools.userinfo.userName": "Name",
"modtools.userinfo.cfhCount": "CFHs",
"modtools.userinfo.abusiveCfhCount": "Abusive CFHs",
"modtools.userinfo.cautionCount": "Cautions",
"modtools.userinfo.banCount": "Bans",
"modtools.userinfo.lastSanctionTime": "Last Sanction",
"modtools.userinfo.tradingLockCount": "Trade Locks",
"modtools.userinfo.tradingExpiryDate": "Lock Expires",
"modtools.userinfo.minutesSinceLastLogin": "Last Login",
"modtools.userinfo.lastPurchaseDate": "Last Purchase",
"modtools.userinfo.primaryEmailAddress": "Email",
"modtools.userinfo.identityRelatedBanCount": "Banned Accs",
"modtools.userinfo.registrationAgeInMinutes": "Registered",
"modtools.userinfo.userClassification": "Rank",
"modtools.window.title": "Mod Tools",
"modtools.window.tools.room": "Room Tool",
"modtools.window.tools.chatlog": "Chatlog Tool",
"modtools.window.tools.report": "Report Tool",
"modtools.window.select.user": "Select a user",
"modtools.window.no.room": "Enter a room first",
"modtools.window.user.in_room": "Still in this room",
"modtools.window.user.left_room": "No longer in this room",
"modtools.window.user.clear": "Clear selection",
"modtools.window.tickets.open": "%count% open ticket",
"modtools.window.tickets.open.many": "%count% open tickets",
"modtools.window.section.context": "Context",
"modtools.window.section.room": "Room",
"modtools.window.section.user": "User",
"modtools.window.section.reports": "Reports",
"modtools.window.context.room": "Room #%roomId%",
"modtools.window.user.open_info": "Open Info",
"modtools.userinfo.refresh": "Refresh user info",
"modtools.userinfo.presence.in_room": "In room",
"modtools.userinfo.presence.in_room.title": "In the room you are observing",
"modtools.userinfo.presence.online": "Online",
"modtools.userinfo.presence.online.title": "Online on the hotel",
"modtools.userinfo.presence.offline": "Offline",
"modtools.userinfo.presence.offline.title": "Offline at panel open",
"modtools.userinfo.section.account": "Account",
"modtools.userinfo.section.activity": "Activity",
"modtools.userinfo.section.sanctions": "Sanctions",
"modtools.userinfo.section.trading": "Trading",
"modtools.userinfo.button.room.chat": "Room Chat",
"modtools.userinfo.button.send.message": "Send Message",
"modtools.userinfo.button.room.visits": "Room Visits",
"modtools.userinfo.button.mod.action": "Mod Action",
"modtools.userinfo.stat.cfh": "CFH",
"modtools.userinfo.stat.cautions": "Cautions",
"modtools.userinfo.stat.bans": "Bans",
"modtools.userinfo.stat.trade.locks": "Trade locks",
"modtools.roominfo.title": "Room Info",
"modtools.roominfo.refresh": "Refresh room info",
"modtools.roominfo.loading": "Loading…",
"modtools.roominfo.owner.here": "Owner here",
"modtools.roominfo.owner.away": "Owner away",
"modtools.roominfo.owner.title.here": "The room owner is currently inside",
"modtools.roominfo.owner.title.away": "The room owner is NOT inside",
"modtools.roominfo.stat.users": "Users",
"modtools.roominfo.stat.owner": "Owner",
"modtools.roominfo.owner.open": "Open %username%'s info",
"modtools.roominfo.button.visit": "Visit Room",
"modtools.roominfo.button.chatlog": "Chatlog",
"modtools.roominfo.moderate.title": "Moderate room",
"modtools.roominfo.moderate.kick": "Kick everyone out",
"modtools.roominfo.moderate.doorbell": "Enable the doorbell",
"modtools.roominfo.moderate.rename": "Change room name",
"modtools.roominfo.moderate.message.placeholder": "Mandatory message to deliver with the action…",
"modtools.roominfo.moderate.send.caution": "Send Caution",
"modtools.roominfo.moderate.send.alert": "Send Alert",
"modtools.user.message.title": "Send Message",
"modtools.user.message.recipient": "Message to",
"modtools.user.message.label": "Message",
"modtools.user.message.placeholder": "Write something useful — the user will see it as a moderator message.",
"modtools.user.message.empty": "Empty",
"modtools.user.message.chars": "%count% chars",
"modtools.user.message.send": "Send Message",
"modtools.user.modaction.title": "Mod Action: %username%",
"modtools.user.modaction.sanctioning": "Sanctioning",
"modtools.user.modaction.step.topic": "1. CFH Topic",
"modtools.user.modaction.step.topic.placeholder": "Select a topic…",
"modtools.user.modaction.step.sanction": "2. Sanction",
"modtools.user.modaction.step.sanction.placeholder": "Select a sanction…",
"modtools.user.modaction.step.message": "3. Custom message",
"modtools.user.modaction.step.message.optional": "(optional — overrides default)",
"modtools.user.modaction.message.placeholder": "Leave empty to use the default topic message",
"modtools.user.modaction.preview": "Preview",
"modtools.user.modaction.button.default": "Default Sanction",
"modtools.user.modaction.button.apply": "Apply Sanction",
"modtools.user.modaction.error.no.topic": "You must select a CFH topic",
"modtools.user.modaction.error.no.action": "You must select a CFH topic and Sanction",
"modtools.user.modaction.error.no.permission": "You do not have permission to do this",
"modtools.user.modaction.error.no.message": "Please write a message to user",
"modtools.user.modaction.error.no.permission.alert": "You have insufficient permissions",
"modtools.user.visits.title": "User Visits",
"modtools.user.visits.recent": "Recent visited rooms",
"modtools.user.visits.entries.one": "%count% entry",
"modtools.user.visits.entries.many": "%count% entries",
"modtools.user.visits.empty": "No recent visits",
"modtools.user.visits.time": "Time",
"modtools.user.visits.room": "Room name",
"modtools.user.visits.action": "Action",
"modtools.user.visits.visit": "Visit",
"modtools.user.visits.visit.title": "Visit room",
"modtools.user.chatlog.title": "User Chatlog",
"modtools.user.chatlog.title.with": "User Chatlog: %username%",
"modtools.user.chatlog.loading": "Loading chatlog…",
"modtools.room.chatlog.title": "Room Chatlog",
"modtools.chatlog.column.time": "Time",
"modtools.chatlog.column.user": "User",
"modtools.chatlog.column.message": "Message",
"modtools.chatlog.empty": "No messages",
"modtools.chatlog.visit": "Visit",
"modtools.chatlog.tools": "Tools",
"modtools.tickets.title": "Tickets",
"modtools.tickets.tab.open": "Open",
"modtools.tickets.tab.mine": "Mine",
"modtools.tickets.tab.picked": "All picked",
"modtools.tickets.column.type": "Type",
"modtools.tickets.column.reported": "Reported",
"modtools.tickets.column.opened": "Opened",
"modtools.tickets.column.picker": "Picker",
"modtools.tickets.empty.open": "No open issues",
"modtools.tickets.empty.mine": "No issues picked by you",
"modtools.tickets.empty.picked": "No picked issues",
"modtools.tickets.action.pick": "Pick",
"modtools.tickets.action.handle": "Handle",
"modtools.tickets.action.release": "Release",
"modtools.tickets.issue.title": "Resolving issue #%issueId%",
"modtools.tickets.issue.label": "Issue #%issueId%",
"modtools.tickets.issue.details": "Details",
"modtools.tickets.issue.field.source": "Source",
"modtools.tickets.issue.field.category": "Category",
"modtools.tickets.issue.field.description": "Description",
"modtools.tickets.issue.field.caller": "Caller",
"modtools.tickets.issue.field.reported": "Reported",
"modtools.tickets.issue.chatlog.view": "View chatlog",
"modtools.tickets.issue.chatlog.close": "Close chatlog",
"modtools.tickets.issue.resolve.heading": "Resolve as",
"modtools.tickets.issue.resolve.resolved": "Resolved",
"modtools.tickets.issue.resolve.useless": "Useless",
"modtools.tickets.issue.resolve.abusive": "Abusive",
"modtools.tickets.issue.release": "Release back to queue",
"modtools.tickets.cfh.chatlog.title": "Issue #%issueId% Chatlog",
"groupforum.list.tab.most_active": "Most active threads",
"groupforum.list.tab.my_forums": "My group forums",
"groupforum.list.no_forums": "There are no forums",
"groupforum.view.threads": "Number of threads",
"groupforum.thread.pin": "Pin thread",
"groupforum.thread.unpin": "Unpin thread",
"groupforum.thread.lock": "Lock thread",
"groupforum.thread.unlock": "Unlock thread",
"groupforum.thread.hide": "Hide thread",
"groupforum.thread.restore": "Restore thread",
"groupforum.thread.delete": "Delete thread + posts",
"groupforum.message.hide": "Hide message",
"group.forum.enable.caption": "Enable / Disable group forum",
"group.forum.enable.help": "If you disable the group forum, all posts will also be deleted!",
"groupforum.view.no_threads": "There are currently no active threads"
}