mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-05-15 22:26:58 +00:00
Add translations
This commit is contained in:
parent
5f602442e4
commit
88c7aed59a
@ -29,6 +29,7 @@
|
|||||||
"post": "post",
|
"post": "post",
|
||||||
"post_message": "post message"
|
"post_message": "post message"
|
||||||
},
|
},
|
||||||
|
"admin": "admin",
|
||||||
"core": {
|
"core": {
|
||||||
"block_height": "block height",
|
"block_height": "block height",
|
||||||
"information": "core information",
|
"information": "core information",
|
||||||
@ -52,7 +53,8 @@
|
|||||||
"last_height": "last height",
|
"last_height": "last height",
|
||||||
"list": {
|
"list": {
|
||||||
"invite": "invite list",
|
"invite": "invite list",
|
||||||
"join_request": "join request list"
|
"join_request": "join request list",
|
||||||
|
"member": "member list"
|
||||||
},
|
},
|
||||||
"loading": "loading...",
|
"loading": "loading...",
|
||||||
"loading_posts": "loading posts... please wait.",
|
"loading_posts": "loading posts... please wait.",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"action": {
|
"action": {
|
||||||
|
"ban": "ban member from group",
|
||||||
"cancel_ban": "cancel ban",
|
"cancel_ban": "cancel ban",
|
||||||
"copy_private_key": "copy private key",
|
"copy_private_key": "copy private key",
|
||||||
"create_group": "create group",
|
"create_group": "create group",
|
||||||
@ -9,8 +10,11 @@
|
|||||||
"export_private_key": "export private key",
|
"export_private_key": "export private key",
|
||||||
"find_group": "find group",
|
"find_group": "find group",
|
||||||
"join_group": "join group",
|
"join_group": "join group",
|
||||||
|
"kick_member": "kick member from group",
|
||||||
"invite_member": "invite member",
|
"invite_member": "invite member",
|
||||||
|
"make_admin": "make an admin",
|
||||||
"refetch_page": "refetch page",
|
"refetch_page": "refetch page",
|
||||||
|
"remove_admin": "remove as admin",
|
||||||
"return_to_thread": "return to threads"
|
"return_to_thread": "return to threads"
|
||||||
},
|
},
|
||||||
"advanced_options": "advanced options",
|
"advanced_options": "advanced options",
|
||||||
@ -64,6 +68,7 @@
|
|||||||
"thread_id": "unable to locate thread Id"
|
"thread_id": "unable to locate thread Id"
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
|
"group_ban": "successfully banned member from group. It may take a couple of minutes for the changes to propagate",
|
||||||
"group_creation": "successfully created group. It may take a couple of minutes for the changes to propagate",
|
"group_creation": "successfully created group. It may take a couple of minutes for the changes to propagate",
|
||||||
"group_creation_name": "created group {{group_name}}: awaiting confirmation",
|
"group_creation_name": "created group {{group_name}}: awaiting confirmation",
|
||||||
"group_creation_label": "created group {{name}}: success!",
|
"group_creation_label": "created group {{name}}: success!",
|
||||||
@ -73,6 +78,9 @@
|
|||||||
"group_join_label": "joined group {{name}}: success!",
|
"group_join_label": "joined group {{name}}: success!",
|
||||||
"group_join_request": "requested to join Group {{group_name}}: awaiting confirmation",
|
"group_join_request": "requested to join Group {{group_name}}: awaiting confirmation",
|
||||||
"group_join_outcome": "requested to join Group {{group_name}}: success!",
|
"group_join_outcome": "requested to join Group {{group_name}}: success!",
|
||||||
|
"group_kick": "successfully kicked member from group. It may take a couple of minutes for the changes to propagate",
|
||||||
|
"group_member_admin": "successfully made member an admin. It may take a couple of minutes for the changes to propagate",
|
||||||
|
"group_remove_member": "successfully removed member as an admin. It may take a couple of minutes for the changes to propagate",
|
||||||
"invitation_cancellation": "successfully canceled invitation. It may take a couple of minutes for the changes to propagate",
|
"invitation_cancellation": "successfully canceled invitation. It may take a couple of minutes for the changes to propagate",
|
||||||
"invitation_request": "accepted join request: awaiting confirmation",
|
"invitation_request": "accepted join request: awaiting confirmation",
|
||||||
"loading_threads": "loading threads... please wait.",
|
"loading_threads": "loading threads... please wait.",
|
||||||
|
@ -43,7 +43,7 @@ const ListOfMembers = ({
|
|||||||
const [isLoadingRemoveAdmin, setIsLoadingRemoveAdmin] = useState(false);
|
const [isLoadingRemoveAdmin, setIsLoadingRemoveAdmin] = useState(false);
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const { t } = useTranslation(['core', 'group']);
|
const { t } = useTranslation(['core', 'group']);
|
||||||
const listRef = useRef();
|
const listRef = useRef(null);
|
||||||
|
|
||||||
const handlePopoverOpen = (event, index) => {
|
const handlePopoverOpen = (event, index) => {
|
||||||
setPopoverAnchor(event.currentTarget);
|
setPopoverAnchor(event.currentTarget);
|
||||||
@ -77,8 +77,9 @@ const ListOfMembers = ({
|
|||||||
if (!response?.error) {
|
if (!response?.error) {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message:
|
message: t('group:message.success.group_kick', {
|
||||||
'Successfully kicked member from group. It may take a couple of minutes for the changes to propagate',
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
handlePopoverClose();
|
handlePopoverClose();
|
||||||
@ -95,7 +96,9 @@ const ListOfMembers = ({
|
|||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: error.message || 'An error occurred',
|
message:
|
||||||
|
error.message ||
|
||||||
|
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
rej(error);
|
rej(error);
|
||||||
@ -109,7 +112,8 @@ const ListOfMembers = ({
|
|||||||
};
|
};
|
||||||
const handleBan = async (address) => {
|
const handleBan = async (address) => {
|
||||||
try {
|
try {
|
||||||
const fee = await getFee('GROUP_BAN'); // TODO translate
|
const fee = await getFee('GROUP_BAN');
|
||||||
|
|
||||||
await show({
|
await show({
|
||||||
message: t('group:question.perform_transaction', {
|
message: t('group:question.perform_transaction', {
|
||||||
action: 'GROUP_BAN',
|
action: 'GROUP_BAN',
|
||||||
@ -117,7 +121,9 @@ const ListOfMembers = ({
|
|||||||
}),
|
}),
|
||||||
publishFee: fee.fee + ' QORT',
|
publishFee: fee.fee + ' QORT',
|
||||||
});
|
});
|
||||||
|
|
||||||
setIsLoadingBan(true);
|
setIsLoadingBan(true);
|
||||||
|
|
||||||
await new Promise((res, rej) => {
|
await new Promise((res, rej) => {
|
||||||
window
|
window
|
||||||
.sendMessage('banFromGroup', {
|
.sendMessage('banFromGroup', {
|
||||||
@ -129,8 +135,9 @@ const ListOfMembers = ({
|
|||||||
if (!response?.error) {
|
if (!response?.error) {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message:
|
message: t('group:message.success.group_ban', {
|
||||||
'Successfully banned member from group. It may take a couple of minutes for the changes to propagate',
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
handlePopoverClose();
|
handlePopoverClose();
|
||||||
@ -147,13 +154,16 @@ const ListOfMembers = ({
|
|||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: error.message || 'An error occurred',
|
message:
|
||||||
|
error.message ||
|
||||||
|
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
rej(error);
|
rej(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoadingBan(false);
|
setIsLoadingBan(false);
|
||||||
}
|
}
|
||||||
@ -180,8 +190,9 @@ const ListOfMembers = ({
|
|||||||
if (!response?.error) {
|
if (!response?.error) {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message:
|
message: t('group:message.success.group_member_admin', {
|
||||||
'Successfully made member an admin. It may take a couple of minutes for the changes to propagate',
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
handlePopoverClose();
|
handlePopoverClose();
|
||||||
@ -198,13 +209,16 @@ const ListOfMembers = ({
|
|||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: error.message || 'An error occurred',
|
message:
|
||||||
|
error.message ||
|
||||||
|
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
rej(error);
|
rej(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoadingMakeAdmin(false);
|
setIsLoadingMakeAdmin(false);
|
||||||
}
|
}
|
||||||
@ -231,8 +245,9 @@ const ListOfMembers = ({
|
|||||||
if (!response?.error) {
|
if (!response?.error) {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message:
|
message: t('group:message.success.group_remove_member', {
|
||||||
'Successfully removed member as an admin. It may take a couple of minutes for the changes to propagate',
|
postProcess: 'capitalize',
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
handlePopoverClose();
|
handlePopoverClose();
|
||||||
@ -249,13 +264,16 @@ const ListOfMembers = ({
|
|||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
setInfoSnack({
|
setInfoSnack({
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: error.message || 'An error occurred',
|
message:
|
||||||
|
error.message ||
|
||||||
|
t('core:message.error.generic', { postProcess: 'capitalize' }),
|
||||||
});
|
});
|
||||||
setOpenSnack(true);
|
setOpenSnack(true);
|
||||||
rej(error);
|
rej(error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoadingRemoveAdmin(false);
|
setIsLoadingRemoveAdmin(false);
|
||||||
}
|
}
|
||||||
@ -290,13 +308,13 @@ const ListOfMembers = ({
|
|||||||
>
|
>
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
width: '325px',
|
alignItems: 'center',
|
||||||
height: '250px',
|
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
alignItems: 'center',
|
|
||||||
gap: '10px',
|
gap: '10px',
|
||||||
|
height: '250px',
|
||||||
padding: '10px',
|
padding: '10px',
|
||||||
|
width: '325px',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{isOwner && (
|
{isOwner && (
|
||||||
@ -307,48 +325,49 @@ const ListOfMembers = ({
|
|||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={() => handleKick(member?.member)}
|
onClick={() => handleKick(member?.member)}
|
||||||
>
|
>
|
||||||
Kick member from group
|
{t('group:action.kick_member', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
})}
|
||||||
</LoadingButton>
|
</LoadingButton>
|
||||||
|
|
||||||
<LoadingButton
|
<LoadingButton
|
||||||
loading={isLoadingBan}
|
loading={isLoadingBan}
|
||||||
loadingPosition="start"
|
loadingPosition="start"
|
||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={() => handleBan(member?.member)}
|
onClick={() => handleBan(member?.member)}
|
||||||
>
|
>
|
||||||
Ban member from group
|
{t('group:action.ban', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
})}
|
||||||
</LoadingButton>
|
</LoadingButton>
|
||||||
|
|
||||||
<LoadingButton
|
<LoadingButton
|
||||||
loading={isLoadingMakeAdmin}
|
loading={isLoadingMakeAdmin}
|
||||||
loadingPosition="start"
|
loadingPosition="start"
|
||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={() => makeAdmin(member?.member)}
|
onClick={() => makeAdmin(member?.member)}
|
||||||
>
|
>
|
||||||
Make an admin
|
{t('group:action.make_admin', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
})}
|
||||||
</LoadingButton>
|
</LoadingButton>
|
||||||
|
|
||||||
<LoadingButton
|
<LoadingButton
|
||||||
loading={isLoadingRemoveAdmin}
|
loading={isLoadingRemoveAdmin}
|
||||||
loadingPosition="start"
|
loadingPosition="start"
|
||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={() => removeAdmin(member?.member)}
|
onClick={() => removeAdmin(member?.member)}
|
||||||
>
|
>
|
||||||
Remove as admin
|
{t('group:action.remove_admin', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
})}
|
||||||
</LoadingButton>
|
</LoadingButton>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</Box>
|
</Box>
|
||||||
</Popover>
|
</Popover>
|
||||||
<ListItem
|
|
||||||
key={member?.member}
|
<ListItem key={member?.member} disablePadding>
|
||||||
// secondaryAction={
|
|
||||||
// <Checkbox
|
|
||||||
// edge="end"
|
|
||||||
// onChange={handleToggle(value)}
|
|
||||||
// checked={checked.indexOf(value) !== -1}
|
|
||||||
// inputProps={{ 'aria-labelledby': labelId }}
|
|
||||||
// />
|
|
||||||
// }
|
|
||||||
disablePadding
|
|
||||||
>
|
|
||||||
<ListItemButton
|
<ListItemButton
|
||||||
onClick={(event) => handlePopoverOpen(event, index)}
|
onClick={(event) => handlePopoverOpen(event, index)}
|
||||||
>
|
>
|
||||||
@ -362,6 +381,7 @@ const ListOfMembers = ({
|
|||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
|
|
||||||
<ListItemText
|
<ListItemText
|
||||||
id={''}
|
id={''}
|
||||||
primary={member?.name || member?.member}
|
primary={member?.name || member?.member}
|
||||||
@ -373,7 +393,9 @@ const ListOfMembers = ({
|
|||||||
marginLeft: 'auto',
|
marginLeft: 'auto',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
Admin
|
{t('core:admin', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
})}
|
||||||
</Typography>
|
</Typography>
|
||||||
)}
|
)}
|
||||||
</ListItemButton>
|
</ListItemButton>
|
||||||
@ -386,28 +408,31 @@ const ListOfMembers = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<p>Member list</p>
|
<p>
|
||||||
|
{t('core:list.member', {
|
||||||
|
postProcess: 'capitalize',
|
||||||
|
})}
|
||||||
|
</p>
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
position: 'relative',
|
|
||||||
height: '500px',
|
|
||||||
width: '100%',
|
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
flexShrink: 1,
|
flexShrink: 1,
|
||||||
|
height: '500px',
|
||||||
|
position: 'relative',
|
||||||
|
width: '100%',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<AutoSizer>
|
<AutoSizer>
|
||||||
{({ height, width }) => (
|
{({ height, width }) => (
|
||||||
<List
|
<List
|
||||||
ref={listRef}
|
deferredMeasurementCache={cache}
|
||||||
width={width}
|
|
||||||
height={height}
|
height={height}
|
||||||
|
ref={listRef}
|
||||||
rowCount={members.length}
|
rowCount={members.length}
|
||||||
rowHeight={cache.rowHeight}
|
rowHeight={cache.rowHeight}
|
||||||
rowRenderer={rowRenderer}
|
rowRenderer={rowRenderer}
|
||||||
// onScroll={handleScroll}
|
width={width}
|
||||||
deferredMeasurementCache={cache}
|
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</AutoSizer>
|
</AutoSizer>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user