From 349498ec34e84a26e5c837fdf365fcdd7e387643 Mon Sep 17 00:00:00 2001 From: simoleo89 Date: Wed, 18 Mar 2026 20:42:53 +0100 Subject: [PATCH] Localize all hardcoded texts in mod tools using LocalizeText Replace ~70 hardcoded English strings across 15 mod-tools files with LocalizeText() calls using moderation.* keys matching the existing ExternalTexts convention. Includes mod-tools-external-texts.json with all required keys for ExternalTexts.json. --- mod-tools-external-texts.json | 96 +++++++++++++++++++ src/components/mod-tools/ModToolsView.tsx | 12 +-- .../mod-tools/views/chatlog/ChatlogView.tsx | 12 +-- .../views/room/ModToolsChatlogView.tsx | 4 +- .../mod-tools/views/room/ModToolsRoomView.tsx | 28 +++--- .../views/tickets/CfhChatlogView.tsx | 4 +- .../views/tickets/ModToolsIssueInfoView.tsx | 24 ++--- .../views/tickets/ModToolsMyIssuesTabView.tsx | 12 +-- .../tickets/ModToolsOpenIssuesTabView.tsx | 10 +- .../tickets/ModToolsPickedIssuesTabView.tsx | 9 +- .../views/tickets/ModToolsTicketsView.tsx | 15 +-- .../views/user/ModToolsUserChatlogView.tsx | 4 +- .../views/user/ModToolsUserModActionView.tsx | 56 +++++------ .../views/user/ModToolsUserRoomVisitsView.tsx | 12 +-- .../user/ModToolsUserSendMessageView.tsx | 10 +- .../mod-tools/views/user/ModToolsUserView.tsx | 38 ++++---- 16 files changed, 222 insertions(+), 124 deletions(-) create mode 100644 mod-tools-external-texts.json diff --git a/mod-tools-external-texts.json b/mod-tools-external-texts.json new file mode 100644 index 0000000..686253c --- /dev/null +++ b/mod-tools-external-texts.json @@ -0,0 +1,96 @@ +{ + "moderation.modtools.title": "Mod Tools", + "moderation.modtools.roomtool": "Room Tool", + "moderation.modtools.roomchatlogs": "Chatlog Tool", + "moderation.modtools.userinfo": "User Info", + "moderation.modtools.tickets": "Tickets", + + "moderation.roomtool.info.title": "Room Info", + "moderation.roomtool.roomowner.title": "Owner:", + "moderation.roomtool.usersinroom.title": "Users in room:", + "moderation.roomtool.ownerinroom.title": "Owner here:", + "moderation.roomtool.true.title": "Yes", + "moderation.roomtool.false.title": "No", + "moderation.roomtool.button.visit.title": "Visit Room", + "moderation.roomtool.kickall.title": "Kick everyone out", + "moderation.roomtool.closeroom.title": "Enable the doorbell", + "moderation.roomtool.inappropiatename.title": "Change room name", + "moderation.roomtool.presets.title": "Type a mandatory message...", + "moderation.roomtool.button.caution.title": "Send Caution", + "moderation.roomtool.button.message.title": "Send Alert", + + "moderation.tickets.title": "Tickets", + "moderation.tickets.open": "Open Issues", + "moderation.tickets.my": "My Issues", + "moderation.tickets.picked": "Picked Issues", + "moderation.tickets.col.type": "Type", + "moderation.tickets.col.roomPlayer": "Room/Player", + "moderation.tickets.col.opened": "Opened", + "moderation.tickets.col.picker": "Picker", + "moderation.tickets.pick": "Pick Issue", + "moderation.tickets.handle": "Handle", + "moderation.tickets.release": "Release", + + "moderation.issue.resolving": "Resolving issue %id%", + "moderation.issue.info": "Issue Information", + "moderation.issue.source": "Source", + "moderation.issue.category": "Category", + "moderation.issue.description": "Description", + "moderation.issue.caller": "Caller", + "moderation.issue.reported": "Reported User", + "moderation.issue.chatlog": "Chatlog", + "moderation.issue.close.useless": "Close as useless", + "moderation.issue.close.abusive": "Close as abusive", + "moderation.issue.close.resolved": "Close as resolved", + "moderation.issue.release": "Release", + + "moderation.chatlog.issue": "Issue Chatlog", + "moderation.chatlog.room": "Room Chatlog", + "moderation.chatlog.col.time": "Time", + "moderation.chatlog.col.user": "User", + "moderation.chatlog.col.message": "Message", + "moderation.chatlog.visit": "Visit", + "moderation.chatlog.roomtools": "Room Tools", + "moderation.chatlog.user": "User Chatlog: %username%", + + "moderation.userinfo.roomchat": "Room Chat", + "moderation.userinfo.sendmessage": "Send Message", + "moderation.userinfo.roomvisits": "Room Visits", + "moderation.userinfo.modaction": "Mod Action", + + "moderation.sendmessage.title": "Send Message", + "moderation.sendmessage.to": "Message To: %username%", + "moderation.sendmessage.send": "Send message", + "moderation.sendmessage.error.empty": "Please write a message to user.", + "moderation.error": "Error", + + "moderation.roomvisits.title": "User Visits", + "moderation.roomvisits.col.time": "Time", + "moderation.roomvisits.col.roomname": "Room name", + "moderation.roomvisits.col.visit": "Visit", + "moderation.roomvisits.visitroom": "Visit Room", + + "moderation.modaction.title": "Mod Action: %username%", + "moderation.modaction.cfhtopic": "CFH Topic", + "moderation.modaction.sanctiontype": "Sanction Type", + "moderation.modaction.message.hint": "Optional message type, overrides default", + "moderation.modaction.defaultsanction": "Default Sanction", + "moderation.modaction.sanction": "Sanction", + "moderation.modaction.alert": "Alert", + "moderation.modaction.mute1h": "Mute 1h", + "moderation.modaction.ban18h": "Ban 18h", + "moderation.modaction.ban7days": "Ban 7 days", + "moderation.modaction.ban30days.step1": "Ban 30 days (step 1)", + "moderation.modaction.ban30days.step2": "Ban 30 days (step 2)", + "moderation.modaction.ban100years": "Ban 100 years", + "moderation.modaction.banavataronly100years": "Ban avatar-only 100 years", + "moderation.modaction.kick": "Kick", + "moderation.modaction.locktrade1week": "Lock trade 1 week", + "moderation.modaction.locktradepermanent": "Lock trade permanent", + "moderation.modaction.message": "Message", + "moderation.modaction.error.notopic": "You must select a CFH topic", + "moderation.modaction.error.notopicorsanction": "You must select a CFH topic and Sanction", + "moderation.modaction.error.nopermission": "You do not have permission to do this", + "moderation.modaction.error.nosanction": "You must select a sanction", + "moderation.modaction.error.emptymessage": "Please write a message to user" +} diff --git a/src/components/mod-tools/ModToolsView.tsx b/src/components/mod-tools/ModToolsView.tsx index d42381d..2bc9680 100644 --- a/src/components/mod-tools/ModToolsView.tsx +++ b/src/components/mod-tools/ModToolsView.tsx @@ -1,6 +1,6 @@ import { AddLinkEventTracker, CreateLinkEvent, ILinkEventTracker, RemoveLinkEventTracker, RoomEngineEvent, RoomId, RoomObjectCategory, RoomObjectType } from '@nitrots/nitro-renderer'; import { FC, useEffect, useRef, useState } from 'react'; -import { GetRoomSession, ISelectedUser } from '../../api'; +import { GetRoomSession, ISelectedUser, LocalizeText } from '../../api'; import { Button, DraggableWindowPosition, NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../common'; import { useModTools, useNitroEvent, useObjectSelectedEvent } from '../../hooks'; import { ModToolsChatlogView } from './views/room/ModToolsChatlogView'; @@ -125,23 +125,23 @@ export const ModToolsView: FC<{}> = props => <> { isVisible && - setIsVisible(false) } /> + setIsVisible(false) } /> } diff --git a/src/components/mod-tools/views/chatlog/ChatlogView.tsx b/src/components/mod-tools/views/chatlog/ChatlogView.tsx index 63e5201..5e21080 100644 --- a/src/components/mod-tools/views/chatlog/ChatlogView.tsx +++ b/src/components/mod-tools/views/chatlog/ChatlogView.tsx @@ -1,6 +1,6 @@ import { ChatRecordData, CreateLinkEvent } from '@nitrots/nitro-renderer'; import { FC, useMemo } from 'react'; -import { TryVisitRoom } from '../../../../api'; +import { LocalizeText, TryVisitRoom } from '../../../../api'; import { Button, Column, Flex, Grid, InfiniteScroll, Text } from '../../../../common'; import { useModTools } from '../../../../hooks'; import { ChatlogRecord } from './ChatlogRecord'; @@ -49,8 +49,8 @@ export const ChatlogView: FC = props => { props.roomName }
- - + +
); @@ -61,9 +61,9 @@ export const ChatlogView: FC = props => -
Time
-
User
-
Message
+
{ LocalizeText('moderation.chatlog.col.time') }
+
{ LocalizeText('moderation.chatlog.col.user') }
+
{ LocalizeText('moderation.chatlog.col.message') }
{ (records && (records.length > 0)) && diff --git a/src/components/mod-tools/views/room/ModToolsChatlogView.tsx b/src/components/mod-tools/views/room/ModToolsChatlogView.tsx index c42320d..16d1adf 100644 --- a/src/components/mod-tools/views/room/ModToolsChatlogView.tsx +++ b/src/components/mod-tools/views/room/ModToolsChatlogView.tsx @@ -1,6 +1,6 @@ import { ChatRecordData, GetRoomChatlogMessageComposer, RoomChatlogEvent } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; -import { SendMessageComposer } from '../../../../api'; +import { LocalizeText, SendMessageComposer } from '../../../../api'; import { DraggableWindowPosition, NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../common'; import { useMessageEvent } from '../../../../hooks'; import { ChatlogView } from '../chatlog/ChatlogView'; @@ -34,7 +34,7 @@ export const ModToolsChatlogView: FC = props => return ( - + { roomChatlog && } diff --git a/src/components/mod-tools/views/room/ModToolsRoomView.tsx b/src/components/mod-tools/views/room/ModToolsRoomView.tsx index 37d9fc5..38dd324 100644 --- a/src/components/mod-tools/views/room/ModToolsRoomView.tsx +++ b/src/components/mod-tools/views/room/ModToolsRoomView.tsx @@ -1,6 +1,6 @@ import { CreateLinkEvent, GetModeratorRoomInfoMessageComposer, ModerateRoomMessageComposer, ModeratorActionMessageComposer, ModeratorRoomInfoEvent } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; -import { SendMessageComposer, TryVisitRoom } from '../../../../api'; +import { LocalizeText, SendMessageComposer, TryVisitRoom } from '../../../../api'; import { Button, Column, DraggableWindowPosition, NitroCardContentView, NitroCardHeaderView, NitroCardView, Text } from '../../../../common'; import { useMessageEvent } from '../../../../hooks'; @@ -70,7 +70,7 @@ export const ModToolsRoomView: FC = props => return ( - onCloseClick() } /> + onCloseClick() } /> { name &&
@@ -80,41 +80,41 @@ export const ModToolsRoomView: FC = props =>
- Owner: + { LocalizeText('moderation.roomtool.roomowner.title') } CreateLinkEvent(`mod-tools/open-user-info/${ ownerId }`) }>{ ownerName }
- Users in room: + { LocalizeText('moderation.roomtool.usersinroom.title') } { usersInRoom }
- Owner here: - { ownerInRoom ? 'Yes' : 'No' } + { LocalizeText('moderation.roomtool.ownerinroom.title') } + { ownerInRoom ? LocalizeText('moderation.roomtool.true.title') : LocalizeText('moderation.roomtool.false.title') }
- - + +
setKickUsers(event.target.checked) } /> - Kick everyone out + { LocalizeText('moderation.roomtool.kickall.title') }
setLockRoom(event.target.checked) } /> - Enable the doorbell + { LocalizeText('moderation.roomtool.closeroom.title') }
setChangeRoomName(event.target.checked) } /> - Change room name + { LocalizeText('moderation.roomtool.inappropiatename.title') }
- +
- - + +
diff --git a/src/components/mod-tools/views/tickets/CfhChatlogView.tsx b/src/components/mod-tools/views/tickets/CfhChatlogView.tsx index 9923fa9..ab1bbf3 100644 --- a/src/components/mod-tools/views/tickets/CfhChatlogView.tsx +++ b/src/components/mod-tools/views/tickets/CfhChatlogView.tsx @@ -1,6 +1,6 @@ import { CfhChatlogData, CfhChatlogEvent, GetCfhChatlogMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; -import { SendMessageComposer } from '../../../../api'; +import { LocalizeText, SendMessageComposer } from '../../../../api'; import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../common'; import { useMessageEvent } from '../../../../hooks'; import { ChatlogView } from '../chatlog/ChatlogView'; @@ -32,7 +32,7 @@ export const CfhChatlogView: FC = props => return ( - + { chatlogData && } diff --git a/src/components/mod-tools/views/tickets/ModToolsIssueInfoView.tsx b/src/components/mod-tools/views/tickets/ModToolsIssueInfoView.tsx index 7444a73..ac9d71b 100644 --- a/src/components/mod-tools/views/tickets/ModToolsIssueInfoView.tsx +++ b/src/components/mod-tools/views/tickets/ModToolsIssueInfoView.tsx @@ -35,33 +35,33 @@ export const ModToolsIssueInfoView: FC = props => return ( <> - onIssueInfoClosed(issueId) } /> + onIssueInfoClosed(issueId) } /> - Issue Information + { LocalizeText('moderation.issue.info') } - + - + - + - + - + @@ -70,11 +70,11 @@ export const ModToolsIssueInfoView: FC = props =>
Source{ LocalizeText('moderation.issue.source') } { GetIssueCategoryName(ticket.categoryId) }
Category{ LocalizeText('moderation.issue.category') } { LocalizeText('help.cfh.topic.' + ticket.reportedCategoryId) }
Description{ LocalizeText('moderation.issue.description') } { ticket.message }
Caller{ LocalizeText('moderation.issue.caller') } openUserInfo(ticket.reporterUserId) }>{ ticket.reporterUserName }
Reported User{ LocalizeText('moderation.issue.reported') } openUserInfo(ticket.reportedUserId) }>{ ticket.reportedUserName }
- - - - - + + + + +
diff --git a/src/components/mod-tools/views/tickets/ModToolsMyIssuesTabView.tsx b/src/components/mod-tools/views/tickets/ModToolsMyIssuesTabView.tsx index 9aaa441..07bc010 100644 --- a/src/components/mod-tools/views/tickets/ModToolsMyIssuesTabView.tsx +++ b/src/components/mod-tools/views/tickets/ModToolsMyIssuesTabView.tsx @@ -1,6 +1,6 @@ import { IssueMessageData, ReleaseIssuesMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useRef } from 'react'; -import { SendMessageComposer } from '../../../../api'; +import { LocalizeText, SendMessageComposer } from '../../../../api'; import { Button, Column, Grid } from '../../../../common'; interface ModToolsMyIssuesTabViewProps @@ -28,9 +28,9 @@ export const ModToolsMyIssuesTabView: FC = props = -
Type
-
Room/Player
-
Opened
+
{ LocalizeText('moderation.tickets.col.type') }
+
{ LocalizeText('moderation.tickets.col.roomPlayer') }
+
{ LocalizeText('moderation.tickets.col.opened') }
@@ -44,10 +44,10 @@ export const ModToolsMyIssuesTabView: FC = props =
{ issue.reportedUserName }
{ new Date(Date.now() - issue.issueAgeInMilliseconds).toLocaleTimeString() }
- +
- +
); diff --git a/src/components/mod-tools/views/tickets/ModToolsOpenIssuesTabView.tsx b/src/components/mod-tools/views/tickets/ModToolsOpenIssuesTabView.tsx index 387580b..bb7ba9a 100644 --- a/src/components/mod-tools/views/tickets/ModToolsOpenIssuesTabView.tsx +++ b/src/components/mod-tools/views/tickets/ModToolsOpenIssuesTabView.tsx @@ -1,6 +1,6 @@ import { IssueMessageData, PickIssuesMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useRef } from 'react'; -import { SendMessageComposer } from '../../../../api'; +import { LocalizeText, SendMessageComposer } from '../../../../api'; import { Button, Column, Grid } from '../../../../common'; interface ModToolsOpenIssuesTabViewProps @@ -27,9 +27,9 @@ export const ModToolsOpenIssuesTabView: FC = pro -
Type
-
Room/Player
-
Opened
+
{ LocalizeText('moderation.tickets.col.type') }
+
{ LocalizeText('moderation.tickets.col.roomPlayer') }
+
{ LocalizeText('moderation.tickets.col.opened') }
@@ -42,7 +42,7 @@ export const ModToolsOpenIssuesTabView: FC = pro
{ issue.reportedUserName }
{ new Date(Date.now() - issue.issueAgeInMilliseconds).toLocaleTimeString() }
- +
); diff --git a/src/components/mod-tools/views/tickets/ModToolsPickedIssuesTabView.tsx b/src/components/mod-tools/views/tickets/ModToolsPickedIssuesTabView.tsx index ca6003e..2d04770 100644 --- a/src/components/mod-tools/views/tickets/ModToolsPickedIssuesTabView.tsx +++ b/src/components/mod-tools/views/tickets/ModToolsPickedIssuesTabView.tsx @@ -1,5 +1,6 @@ import { IssueMessageData } from '@nitrots/nitro-renderer'; import { FC } from 'react'; +import { LocalizeText } from '../../../../api'; import { Column, Grid } from '../../../../common'; interface ModToolsPickedIssuesTabViewProps @@ -15,10 +16,10 @@ export const ModToolsPickedIssuesTabView: FC = -
Type
-
Room/Player
-
Opened
-
Picker
+
{ LocalizeText('moderation.tickets.col.type') }
+
{ LocalizeText('moderation.tickets.col.roomPlayer') }
+
{ LocalizeText('moderation.tickets.col.opened') }
+
{ LocalizeText('moderation.tickets.col.picker') }
diff --git a/src/components/mod-tools/views/tickets/ModToolsTicketsView.tsx b/src/components/mod-tools/views/tickets/ModToolsTicketsView.tsx index ab7ac35..c23286c 100644 --- a/src/components/mod-tools/views/tickets/ModToolsTicketsView.tsx +++ b/src/components/mod-tools/views/tickets/ModToolsTicketsView.tsx @@ -1,5 +1,6 @@ import { GetSessionDataManager, IssueMessageData } from '@nitrots/nitro-renderer'; import { FC, useState } from 'react'; +import { LocalizeText } from '../../../../api'; import { NitroCardContentView, NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView } from '../../../../common'; import { useModTools } from '../../../../hooks'; import { ModToolsIssueInfoView } from './ModToolsIssueInfoView'; @@ -12,10 +13,10 @@ interface ModToolsTicketsViewProps onCloseClick: () => void; } -const TABS: string[] = [ - 'Open Issues', - 'My Issues', - 'Picked Issues' +const TAB_KEYS: string[] = [ + 'moderation.tickets.open', + 'moderation.tickets.my', + 'moderation.tickets.picked' ]; export const ModToolsTicketsView: FC = props => @@ -71,12 +72,12 @@ export const ModToolsTicketsView: FC = props => return ( <> - + - { TABS.map((tab, index) => + { TAB_KEYS.map((tabKey, index) => { return ( setCurrentTab(index) }> - { tab } + { LocalizeText(tabKey) } ); }) } diff --git a/src/components/mod-tools/views/user/ModToolsUserChatlogView.tsx b/src/components/mod-tools/views/user/ModToolsUserChatlogView.tsx index acae308..b38a622 100644 --- a/src/components/mod-tools/views/user/ModToolsUserChatlogView.tsx +++ b/src/components/mod-tools/views/user/ModToolsUserChatlogView.tsx @@ -1,6 +1,6 @@ import { ChatRecordData, GetUserChatlogMessageComposer, UserChatlogEvent } from '@nitrots/nitro-renderer'; import { FC, useEffect, useState } from 'react'; -import { SendMessageComposer } from '../../../../api'; +import { LocalizeText, SendMessageComposer } from '../../../../api'; import { DraggableWindowPosition, NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../common'; import { useMessageEvent } from '../../../../hooks'; import { ChatlogView } from '../chatlog/ChatlogView'; @@ -34,7 +34,7 @@ export const ModToolsUserChatlogView: FC = props = return ( - + { userChatlog && } diff --git a/src/components/mod-tools/views/user/ModToolsUserModActionView.tsx b/src/components/mod-tools/views/user/ModToolsUserModActionView.tsx index 1bea10a..c9d5075 100644 --- a/src/components/mod-tools/views/user/ModToolsUserModActionView.tsx +++ b/src/components/mod-tools/views/user/ModToolsUserModActionView.tsx @@ -11,18 +11,18 @@ interface ModToolsUserModActionViewProps } const MOD_ACTION_DEFINITIONS = [ - new ModActionDefinition(1, 'Alert', ModActionDefinition.ALERT, 1, 0), - new ModActionDefinition(2, 'Mute 1h', ModActionDefinition.MUTE, 2, 0), - new ModActionDefinition(3, 'Ban 18h', ModActionDefinition.BAN, 3, 0), - new ModActionDefinition(4, 'Ban 7 days', ModActionDefinition.BAN, 4, 0), - new ModActionDefinition(5, 'Ban 30 days (step 1)', ModActionDefinition.BAN, 5, 0), - new ModActionDefinition(7, 'Ban 30 days (step 2)', ModActionDefinition.BAN, 7, 0), - new ModActionDefinition(6, 'Ban 100 years', ModActionDefinition.BAN, 6, 0), - new ModActionDefinition(106, 'Ban avatar-only 100 years', ModActionDefinition.BAN, 6, 0), - new ModActionDefinition(101, 'Kick', ModActionDefinition.KICK, 0, 0), - new ModActionDefinition(102, 'Lock trade 1 week', ModActionDefinition.TRADE_LOCK, 0, 168), - new ModActionDefinition(104, 'Lock trade permanent', ModActionDefinition.TRADE_LOCK, 0, 876000), - new ModActionDefinition(105, 'Message', ModActionDefinition.MESSAGE, 0, 0), + new ModActionDefinition(1, 'moderation.modaction.alert', ModActionDefinition.ALERT, 1, 0), + new ModActionDefinition(2, 'moderation.modaction.mute1h', ModActionDefinition.MUTE, 2, 0), + new ModActionDefinition(3, 'moderation.modaction.ban18h', ModActionDefinition.BAN, 3, 0), + new ModActionDefinition(4, 'moderation.modaction.ban7days', ModActionDefinition.BAN, 4, 0), + new ModActionDefinition(5, 'moderation.modaction.ban30days.step1', ModActionDefinition.BAN, 5, 0), + new ModActionDefinition(7, 'moderation.modaction.ban30days.step2', ModActionDefinition.BAN, 7, 0), + new ModActionDefinition(6, 'moderation.modaction.ban100years', ModActionDefinition.BAN, 6, 0), + new ModActionDefinition(106, 'moderation.modaction.banavataronly100years', ModActionDefinition.BAN, 6, 0), + new ModActionDefinition(101, 'moderation.modaction.kick', ModActionDefinition.KICK, 0, 0), + new ModActionDefinition(102, 'moderation.modaction.locktrade1week', ModActionDefinition.TRADE_LOCK, 0, 168), + new ModActionDefinition(104, 'moderation.modaction.locktradepermanent', ModActionDefinition.TRADE_LOCK, 0, 876000), + new ModActionDefinition(105, 'moderation.modaction.message', ModActionDefinition.MESSAGE, 0, 0), ]; export const ModToolsUserModActionView: FC = props => @@ -60,7 +60,7 @@ export const ModToolsUserModActionView: FC = pro const category = topics[selectedTopic]; - if(selectedTopic === -1) errorMessage = 'You must select a CFH topic'; + if(selectedTopic === -1) errorMessage = LocalizeText('moderation.modaction.error.notopic'); if(errorMessage) return sendAlert(errorMessage); @@ -82,10 +82,10 @@ export const ModToolsUserModActionView: FC = pro const category = topics[selectedTopic]; const sanction = MOD_ACTION_DEFINITIONS[selectedAction]; - if((selectedTopic === -1) || (selectedAction === -1)) errorMessage = 'You must select a CFH topic and Sanction'; - else if(!settings || !settings.cfhPermission) errorMessage = 'You do not have permission to do this'; - else if(!category) errorMessage = 'You must select a CFH topic'; - else if(!sanction) errorMessage = 'You must select a sanction'; + if((selectedTopic === -1) || (selectedAction === -1)) errorMessage = LocalizeText('moderation.modaction.error.notopicorsanction'); + else if(!settings || !settings.cfhPermission) errorMessage = LocalizeText('moderation.modaction.error.nopermission'); + else if(!category) errorMessage = LocalizeText('moderation.modaction.error.notopic'); + else if(!sanction) errorMessage = LocalizeText('moderation.modaction.error.nosanction'); if(errorMessage) { @@ -101,7 +101,7 @@ export const ModToolsUserModActionView: FC = pro case ModActionDefinition.ALERT: { if(!settings.alertPermission) { - sendAlert('You have insufficient permissions'); + sendAlert(LocalizeText('moderation.modaction.error.nopermission')); return; } @@ -115,7 +115,7 @@ export const ModToolsUserModActionView: FC = pro case ModActionDefinition.BAN: { if(!settings.banPermission) { - sendAlert('You have insufficient permissions'); + sendAlert(LocalizeText('moderation.modaction.error.nopermission')); return; } @@ -126,7 +126,7 @@ export const ModToolsUserModActionView: FC = pro case ModActionDefinition.KICK: { if(!settings.kickPermission) { - sendAlert('You have insufficient permissions'); + sendAlert(LocalizeText('moderation.modaction.error.nopermission')); return; } @@ -142,7 +142,7 @@ export const ModToolsUserModActionView: FC = pro case ModActionDefinition.MESSAGE: { if(message.trim().length === 0) { - sendAlert('Please write a message to user'); + sendAlert(LocalizeText('moderation.modaction.error.emptymessage')); return; } @@ -161,23 +161,23 @@ export const ModToolsUserModActionView: FC = pro return ( - onCloseClick() } /> + onCloseClick() } />
- Optional message type, overrides default + { LocalizeText('moderation.modaction.message.hint') } - + ); diff --git a/src/components/mod-tools/views/user/ModToolsUserView.tsx b/src/components/mod-tools/views/user/ModToolsUserView.tsx index 6f65700..1d75d67 100644 --- a/src/components/mod-tools/views/user/ModToolsUserView.tsx +++ b/src/components/mod-tools/views/user/ModToolsUserView.tsx @@ -27,60 +27,60 @@ export const ModToolsUserView: FC = props => return [ { - localeKey: 'modtools.userinfo.userName', + localeKey: 'moderation.userinfo.userName', value: userInfo.userName, showOnline: true }, { - localeKey: 'modtools.userinfo.cfhCount', + localeKey: 'moderation.userinfo.cfhCount', value: userInfo.cfhCount.toString() }, { - localeKey: 'modtools.userinfo.abusiveCfhCount', + localeKey: 'moderation.userinfo.abusiveCfhCount', value: userInfo.abusiveCfhCount.toString() }, { - localeKey: 'modtools.userinfo.cautionCount', + localeKey: 'moderation.userinfo.cautionCount', value: userInfo.cautionCount.toString() }, { - localeKey: 'modtools.userinfo.banCount', + localeKey: 'moderation.userinfo.banCount', value: userInfo.banCount.toString() }, { - localeKey: 'modtools.userinfo.lastSanctionTime', + localeKey: 'moderation.userinfo.lastSanctionTime', value: userInfo.lastSanctionTime }, { - localeKey: 'modtools.userinfo.tradingLockCount', + localeKey: 'moderation.userinfo.tradingLockCount', value: userInfo.tradingLockCount.toString() }, { - localeKey: 'modtools.userinfo.tradingExpiryDate', + localeKey: 'moderation.userinfo.tradingExpiryDate', value: userInfo.tradingExpiryDate }, { - localeKey: 'modtools.userinfo.minutesSinceLastLogin', + localeKey: 'moderation.userinfo.minutesSinceLastLogin', value: FriendlyTime.format(userInfo.minutesSinceLastLogin * 60, '.ago', 2) }, { - localeKey: 'modtools.userinfo.lastPurchaseDate', + localeKey: 'moderation.userinfo.lastPurchaseDate', value: userInfo.lastPurchaseDate }, { - localeKey: 'modtools.userinfo.primaryEmailAddress', + localeKey: 'moderation.userinfo.primaryEmailAddress', value: userInfo.primaryEmailAddress }, { - localeKey: 'modtools.userinfo.identityRelatedBanCount', + localeKey: 'moderation.userinfo.identityRelatedBanCount', value: userInfo.identityRelatedBanCount.toString() }, { - localeKey: 'modtools.userinfo.registrationAgeInMinutes', + localeKey: 'moderation.userinfo.registrationAgeInMinutes', value: FriendlyTime.format(userInfo.registrationAgeInMinutes * 60, '.ago', 2) }, { - localeKey: 'modtools.userinfo.userClassification', + localeKey: 'moderation.userinfo.userClassification', value: userInfo.userClassification } ]; @@ -105,7 +105,7 @@ export const ModToolsUserView: FC = props => return ( <> - onCloseClick() } /> + onCloseClick() } /> @@ -130,16 +130,16 @@ export const ModToolsUserView: FC = props =>