feat(i18n): localize space settings nav, titles and the full permission tree into Russian
This commit is contained in:
parent
083c8e7149
commit
2ff6166b1a
6 changed files with 62 additions and 37 deletions
|
|
@ -910,7 +910,15 @@
|
||||||
"power_moderator": "Moderator",
|
"power_moderator": "Moderator",
|
||||||
"power_member": "Member",
|
"power_member": "Member",
|
||||||
"power_muted": "Muted",
|
"power_muted": "Muted",
|
||||||
"power_team": "Team"
|
"power_team": "Team",
|
||||||
|
"perm_manage": "Manage",
|
||||||
|
"perm_manage_space_rooms": "Manage space rooms",
|
||||||
|
"perm_space_overview": "Space Overview",
|
||||||
|
"perm_space_avatar": "Space Avatar",
|
||||||
|
"perm_space_name": "Space Name",
|
||||||
|
"perm_space_topic": "Space Topic",
|
||||||
|
"perm_change_space_access": "Change Space Access",
|
||||||
|
"perm_upgrade_space": "Upgrade Space"
|
||||||
},
|
},
|
||||||
"Push": {
|
"Push": {
|
||||||
"new_message": "New message",
|
"new_message": "New message",
|
||||||
|
|
|
||||||
|
|
@ -928,7 +928,15 @@
|
||||||
"power_moderator": "Модератор",
|
"power_moderator": "Модератор",
|
||||||
"power_member": "Участник",
|
"power_member": "Участник",
|
||||||
"power_muted": "Без голоса",
|
"power_muted": "Без голоса",
|
||||||
"power_team": "Команда"
|
"power_team": "Команда",
|
||||||
|
"perm_manage": "Управление",
|
||||||
|
"perm_manage_space_rooms": "Управление комнатами пространства",
|
||||||
|
"perm_space_overview": "Обзор пространства",
|
||||||
|
"perm_space_avatar": "Аватар пространства",
|
||||||
|
"perm_space_name": "Название пространства",
|
||||||
|
"perm_space_topic": "Тема пространства",
|
||||||
|
"perm_change_space_access": "Изменение доступа к пространству",
|
||||||
|
"perm_upgrade_space": "Обновить пространство"
|
||||||
},
|
},
|
||||||
"Push": {
|
"Push": {
|
||||||
"new_message": "Новое сообщение",
|
"new_message": "Новое сообщение",
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import React, { useMemo, useState } from 'react';
|
import React, { useMemo, useState } from 'react';
|
||||||
import { Avatar, Box, config, Icon, IconButton, Icons, IconSrc, MenuItem, Text } from 'folds';
|
import { Avatar, Box, config, Icon, IconButton, Icons, IconSrc, MenuItem, Text } from 'folds';
|
||||||
import { JoinRule } from 'matrix-js-sdk';
|
import { JoinRule } from 'matrix-js-sdk';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
import { PageNav, PageNavContent, PageNavHeader, PageRoot } from '../../components/page';
|
import { PageNav, PageNavContent, PageNavHeader, PageRoot } from '../../components/page';
|
||||||
import { ScreenSize, useScreenSizeContext } from '../../hooks/useScreenSize';
|
import { ScreenSize, useScreenSizeContext } from '../../hooks/useScreenSize';
|
||||||
import { useMatrixClient } from '../../hooks/useMatrixClient';
|
import { useMatrixClient } from '../../hooks/useMatrixClient';
|
||||||
|
|
@ -23,37 +24,39 @@ type SpaceSettingsMenuItem = {
|
||||||
icon: IconSrc;
|
icon: IconSrc;
|
||||||
};
|
};
|
||||||
|
|
||||||
const useSpaceSettingsMenuItems = (): SpaceSettingsMenuItem[] =>
|
const useSpaceSettingsMenuItems = (): SpaceSettingsMenuItem[] => {
|
||||||
useMemo(
|
const { t } = useTranslation();
|
||||||
|
return useMemo(
|
||||||
() => [
|
() => [
|
||||||
{
|
{
|
||||||
page: SpaceSettingsPage.GeneralPage,
|
page: SpaceSettingsPage.GeneralPage,
|
||||||
name: 'General',
|
name: t('RoomSettings.general'),
|
||||||
icon: Icons.Setting,
|
icon: Icons.Setting,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
page: SpaceSettingsPage.MembersPage,
|
page: SpaceSettingsPage.MembersPage,
|
||||||
name: 'Members',
|
name: t('RoomSettings.members'),
|
||||||
icon: Icons.User,
|
icon: Icons.User,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
page: SpaceSettingsPage.PermissionsPage,
|
page: SpaceSettingsPage.PermissionsPage,
|
||||||
name: 'Permissions',
|
name: t('RoomSettings.permissions'),
|
||||||
icon: Icons.Lock,
|
icon: Icons.Lock,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
page: SpaceSettingsPage.EmojisStickersPage,
|
page: SpaceSettingsPage.EmojisStickersPage,
|
||||||
name: 'Emojis & Stickers',
|
name: t('RoomSettings.emojis_stickers'),
|
||||||
icon: Icons.Smile,
|
icon: Icons.Smile,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
page: SpaceSettingsPage.DeveloperToolsPage,
|
page: SpaceSettingsPage.DeveloperToolsPage,
|
||||||
name: 'Developer Tools',
|
name: t('RoomSettings.developer_tools'),
|
||||||
icon: Icons.Terminal,
|
icon: Icons.Terminal,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[]
|
[t]
|
||||||
);
|
);
|
||||||
|
};
|
||||||
|
|
||||||
type SpaceSettingsProps = {
|
type SpaceSettingsProps = {
|
||||||
initialPage?: SpaceSettingsPage;
|
initialPage?: SpaceSettingsPage;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Box, Icon, IconButton, Icons, Scroll, Text } from 'folds';
|
import { Box, Icon, IconButton, Icons, Scroll, Text } from 'folds';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
import { Page, PageContent, PageHeader } from '../../../components/page';
|
import { Page, PageContent, PageHeader } from '../../../components/page';
|
||||||
import { usePowerLevels } from '../../../hooks/usePowerLevels';
|
import { usePowerLevels } from '../../../hooks/usePowerLevels';
|
||||||
import { useRoom } from '../../../hooks/useRoom';
|
import { useRoom } from '../../../hooks/useRoom';
|
||||||
|
|
@ -22,6 +23,7 @@ export function General({ requestClose }: GeneralProps) {
|
||||||
const powerLevels = usePowerLevels(room);
|
const powerLevels = usePowerLevels(room);
|
||||||
const creators = useRoomCreators(room);
|
const creators = useRoomCreators(room);
|
||||||
const permissions = useRoomPermissions(creators, powerLevels);
|
const permissions = useRoomPermissions(creators, powerLevels);
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page>
|
<Page>
|
||||||
|
|
@ -29,7 +31,7 @@ export function General({ requestClose }: GeneralProps) {
|
||||||
<Box grow="Yes" gap="200">
|
<Box grow="Yes" gap="200">
|
||||||
<Box grow="Yes" alignItems="Center" gap="200">
|
<Box grow="Yes" alignItems="Center" gap="200">
|
||||||
<Text size="H3" truncate>
|
<Text size="H3" truncate>
|
||||||
General
|
{t('RoomSettings.general')}
|
||||||
</Text>
|
</Text>
|
||||||
</Box>
|
</Box>
|
||||||
<Box shrink="No">
|
<Box shrink="No">
|
||||||
|
|
@ -45,17 +47,17 @@ export function General({ requestClose }: GeneralProps) {
|
||||||
<Box direction="Column" gap="700">
|
<Box direction="Column" gap="700">
|
||||||
<RoomProfile permissions={permissions} />
|
<RoomProfile permissions={permissions} />
|
||||||
<Box direction="Column" gap="100">
|
<Box direction="Column" gap="100">
|
||||||
<Text size="L400">Options</Text>
|
<Text size="L400">{t('RoomSettings.options')}</Text>
|
||||||
<RoomJoinRules permissions={permissions} />
|
<RoomJoinRules permissions={permissions} />
|
||||||
<RoomPublish permissions={permissions} />
|
<RoomPublish permissions={permissions} />
|
||||||
</Box>
|
</Box>
|
||||||
<Box direction="Column" gap="100">
|
<Box direction="Column" gap="100">
|
||||||
<Text size="L400">Addresses</Text>
|
<Text size="L400">{t('RoomSettings.addresses')}</Text>
|
||||||
<RoomPublishedAddresses permissions={permissions} />
|
<RoomPublishedAddresses permissions={permissions} />
|
||||||
<RoomLocalAddresses permissions={permissions} />
|
<RoomLocalAddresses permissions={permissions} />
|
||||||
</Box>
|
</Box>
|
||||||
<Box direction="Column" gap="100">
|
<Box direction="Column" gap="100">
|
||||||
<Text size="L400">Advanced Options</Text>
|
<Text size="L400">{t('RoomSettings.advanced_options')}</Text>
|
||||||
<RoomUpgrade permissions={permissions} requestClose={requestClose} />
|
<RoomUpgrade permissions={permissions} requestClose={requestClose} />
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
import { Box, Icon, IconButton, Icons, Scroll, Text } from 'folds';
|
import { Box, Icon, IconButton, Icons, Scroll, Text } from 'folds';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
import { Page, PageContent, PageHeader } from '../../../components/page';
|
import { Page, PageContent, PageHeader } from '../../../components/page';
|
||||||
import { useRoom } from '../../../hooks/useRoom';
|
import { useRoom } from '../../../hooks/useRoom';
|
||||||
import { usePowerLevels } from '../../../hooks/usePowerLevels';
|
import { usePowerLevels } from '../../../hooks/usePowerLevels';
|
||||||
|
|
@ -14,6 +15,7 @@ type PermissionsProps = {
|
||||||
requestClose: () => void;
|
requestClose: () => void;
|
||||||
};
|
};
|
||||||
export function Permissions({ requestClose }: PermissionsProps) {
|
export function Permissions({ requestClose }: PermissionsProps) {
|
||||||
|
const { t } = useTranslation();
|
||||||
const mx = useMatrixClient();
|
const mx = useMatrixClient();
|
||||||
const room = useRoom();
|
const room = useRoom();
|
||||||
const powerLevels = usePowerLevels(room);
|
const powerLevels = usePowerLevels(room);
|
||||||
|
|
@ -41,7 +43,7 @@ export function Permissions({ requestClose }: PermissionsProps) {
|
||||||
<Box grow="Yes" gap="200">
|
<Box grow="Yes" gap="200">
|
||||||
<Box grow="Yes" alignItems="Center" gap="200">
|
<Box grow="Yes" alignItems="Center" gap="200">
|
||||||
<Text size="H3" truncate>
|
<Text size="H3" truncate>
|
||||||
Permissions
|
{t('RoomSettings.permissions')}
|
||||||
</Text>
|
</Text>
|
||||||
</Box>
|
</Box>
|
||||||
<Box shrink="No">
|
<Box shrink="No">
|
||||||
|
|
|
||||||
|
|
@ -1,143 +1,145 @@
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
import { StateEvent } from '../../../../types/matrix/room';
|
import { StateEvent } from '../../../../types/matrix/room';
|
||||||
import { PermissionGroup } from '../../common-settings/permissions';
|
import { PermissionGroup } from '../../common-settings/permissions';
|
||||||
|
|
||||||
export const usePermissionGroups = (): PermissionGroup[] => {
|
export const usePermissionGroups = (): PermissionGroup[] => {
|
||||||
|
const { t } = useTranslation();
|
||||||
const groups: PermissionGroup[] = useMemo(() => {
|
const groups: PermissionGroup[] = useMemo(() => {
|
||||||
const messagesGroup: PermissionGroup = {
|
const messagesGroup: PermissionGroup = {
|
||||||
name: 'Manage',
|
name: t('RoomSettings.perm_manage'),
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.SpaceChild,
|
key: StateEvent.SpaceChild,
|
||||||
},
|
},
|
||||||
name: 'Manage space rooms',
|
name: t('RoomSettings.perm_manage_space_rooms'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {},
|
location: {},
|
||||||
name: 'Message Events',
|
name: t('RoomSettings.perm_other_message_events'),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
const moderationGroup: PermissionGroup = {
|
const moderationGroup: PermissionGroup = {
|
||||||
name: 'Moderation',
|
name: t('RoomSettings.perm_moderation'),
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
action: true,
|
action: true,
|
||||||
key: 'invite',
|
key: 'invite',
|
||||||
},
|
},
|
||||||
name: 'Invite',
|
name: t('RoomSettings.perm_invite'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
action: true,
|
action: true,
|
||||||
key: 'kick',
|
key: 'kick',
|
||||||
},
|
},
|
||||||
name: 'Kick',
|
name: t('RoomSettings.perm_kick'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
action: true,
|
action: true,
|
||||||
key: 'ban',
|
key: 'ban',
|
||||||
},
|
},
|
||||||
name: 'Ban',
|
name: t('RoomSettings.perm_ban'),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
const roomOverviewGroup: PermissionGroup = {
|
const roomOverviewGroup: PermissionGroup = {
|
||||||
name: 'Space Overview',
|
name: t('RoomSettings.perm_space_overview'),
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomAvatar,
|
key: StateEvent.RoomAvatar,
|
||||||
},
|
},
|
||||||
name: 'Space Avatar',
|
name: t('RoomSettings.perm_space_avatar'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomName,
|
key: StateEvent.RoomName,
|
||||||
},
|
},
|
||||||
name: 'Space Name',
|
name: t('RoomSettings.perm_space_name'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomTopic,
|
key: StateEvent.RoomTopic,
|
||||||
},
|
},
|
||||||
name: 'Space Topic',
|
name: t('RoomSettings.perm_space_topic'),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
const roomSettingsGroup: PermissionGroup = {
|
const roomSettingsGroup: PermissionGroup = {
|
||||||
name: 'Settings',
|
name: t('RoomSettings.perm_settings'),
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomJoinRules,
|
key: StateEvent.RoomJoinRules,
|
||||||
},
|
},
|
||||||
name: 'Change Space Access',
|
name: t('RoomSettings.perm_change_space_access'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomCanonicalAlias,
|
key: StateEvent.RoomCanonicalAlias,
|
||||||
},
|
},
|
||||||
name: 'Publish Address',
|
name: t('RoomSettings.perm_publish_address'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomPowerLevels,
|
key: StateEvent.RoomPowerLevels,
|
||||||
},
|
},
|
||||||
name: 'Change All Permission',
|
name: t('RoomSettings.perm_change_all_permission'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.PowerLevelTags,
|
key: StateEvent.PowerLevelTags,
|
||||||
},
|
},
|
||||||
name: 'Edit Power Levels',
|
name: t('RoomSettings.perm_edit_power_levels'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomTombstone,
|
key: StateEvent.RoomTombstone,
|
||||||
},
|
},
|
||||||
name: 'Upgrade Space',
|
name: t('RoomSettings.perm_upgrade_space'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
},
|
},
|
||||||
name: 'Other Settings',
|
name: t('RoomSettings.perm_other_settings'),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
const otherSettingsGroup: PermissionGroup = {
|
const otherSettingsGroup: PermissionGroup = {
|
||||||
name: 'Other',
|
name: t('RoomSettings.perm_other'),
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.PoniesRoomEmotes,
|
key: StateEvent.PoniesRoomEmotes,
|
||||||
},
|
},
|
||||||
name: 'Manage Emojis & Stickers',
|
name: t('RoomSettings.perm_manage_emojis_stickers'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
location: {
|
location: {
|
||||||
state: true,
|
state: true,
|
||||||
key: StateEvent.RoomServerAcl,
|
key: StateEvent.RoomServerAcl,
|
||||||
},
|
},
|
||||||
name: 'Change Server ACLs',
|
name: t('RoomSettings.perm_change_server_acls'),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
@ -149,7 +151,7 @@ export const usePermissionGroups = (): PermissionGroup[] => {
|
||||||
roomSettingsGroup,
|
roomSettingsGroup,
|
||||||
otherSettingsGroup,
|
otherSettingsGroup,
|
||||||
];
|
];
|
||||||
}, []);
|
}, [t]);
|
||||||
|
|
||||||
return groups;
|
return groups;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue