fix(files): аватары и баннеры доступны авторизованным пользователям
Аватар нельзя было показать в списке друзей: файл без комнаты был доступен только загрузившему. Добавлено назначение файла (`files.purpose`: attachment | avatar | banner, миграция 00006): аватары и баннеры отдаются любому авторизованному пользователю, вложения по-прежнему проверяются по правам комнаты, а непривязанные загрузки остаются приватными.
This commit is contained in:
@@ -56,7 +56,10 @@
|
||||
"message.edit_window_expired": "This message can no longer be edited: more than 24 hours passed.",
|
||||
"file.too_large": "The file exceeds the allowed size.",
|
||||
"request.bad": "Malformed request.",
|
||||
"file.not_found": "File not found."
|
||||
"file.not_found": "File not found.",
|
||||
"invite.expired": "This invite has expired.",
|
||||
"invite.exhausted": "This invite has no uses left.",
|
||||
"user.not_found": "No user with that username was found."
|
||||
},
|
||||
"theme": {
|
||||
"switchToLight": "Light theme",
|
||||
@@ -172,11 +175,8 @@
|
||||
"limitReached": "You have reached the server limit — remove one of your servers first."
|
||||
},
|
||||
"empty": {
|
||||
"title": "No servers yet",
|
||||
"body": "Join the instance main server or create your own.",
|
||||
"joinMain": "Join the main server",
|
||||
"joining": "Joining…",
|
||||
"noMain": "This instance has no main server configured — create your own."
|
||||
"title": "You have no servers yet",
|
||||
"body": "Create your own server or join one with an invite."
|
||||
},
|
||||
"leave": "Leave server",
|
||||
"leaveConfirm": "Leave the server “{{name}}”?",
|
||||
@@ -223,6 +223,74 @@
|
||||
"slowmode": "slowmode {{seconds}}s",
|
||||
"leaveHint": "You can leave the server in server settings → “Danger zone”."
|
||||
},
|
||||
"friends": {
|
||||
"rail": "Friends",
|
||||
"title": "Friends",
|
||||
"sidebarLabel": "Friends and direct messages",
|
||||
"sidebarHint": "Direct messages live here — they are not in the server rail.",
|
||||
"dmSection": "Direct messages",
|
||||
"dmEmpty": "No direct messages yet.",
|
||||
"friendsSection": "Friends",
|
||||
"friendsEmpty": "Your friend list is empty.",
|
||||
"open": "Open a conversation with {{name}}",
|
||||
"empty": {
|
||||
"title": "Add friends to start talking",
|
||||
"body": "Find someone by username and send a friend request — a direct conversation appears once it is accepted.",
|
||||
"search": "Find friends"
|
||||
},
|
||||
"search": {
|
||||
"title": "Friend search",
|
||||
"close": "Close search",
|
||||
"label": "Search by username",
|
||||
"placeholder": "Enter a username",
|
||||
"hint": "Type at least 2 characters.",
|
||||
"empty": "Nobody found.",
|
||||
"add": "Add friend",
|
||||
"adding": "Sending…",
|
||||
"requested": "Request sent",
|
||||
"friend": "Already friends",
|
||||
"message": "Message"
|
||||
},
|
||||
"requests": {
|
||||
"incoming": "Incoming requests",
|
||||
"outgoing": "Outgoing requests",
|
||||
"accept": "Accept",
|
||||
"decline": "Decline",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"list": {
|
||||
"label": "Friend list",
|
||||
"message": "Message",
|
||||
"more": "Actions: {{name}}",
|
||||
"menu": "Actions for {{name}}",
|
||||
"remove": "Remove friend",
|
||||
"block": "Block"
|
||||
},
|
||||
"lastSeen": {
|
||||
"label": "Last seen",
|
||||
"online": "Online now",
|
||||
"unknown": "Offline for a while",
|
||||
"at": "Last seen: {{time}}"
|
||||
},
|
||||
"dm": {
|
||||
"unknown": "Recipient",
|
||||
"notFound": {
|
||||
"title": "Conversation unavailable",
|
||||
"body": "This direct conversation was not found: it may be deleted or closed to you."
|
||||
}
|
||||
}
|
||||
},
|
||||
"invites": {
|
||||
"title": "Join with an invite",
|
||||
"hint": "Paste a code or a link like https://<domain>/invite/<code>.",
|
||||
"label": "Invite code or link",
|
||||
"placeholder": "e.g. ab12cd or https://example.com/invite/ab12cd",
|
||||
"invalid": "Could not recognise the invite code.",
|
||||
"join": "Join",
|
||||
"joining": "Joining…",
|
||||
"members": "Members: {{count}}",
|
||||
"alreadyMember": "You are already on this server"
|
||||
},
|
||||
"chat": {
|
||||
"log": "Message log of {{name}}",
|
||||
"loadMore": "Load more",
|
||||
@@ -236,7 +304,9 @@
|
||||
"unknownAuthor": "unknown",
|
||||
"start": {
|
||||
"title": "This is the start of #{{name}}",
|
||||
"body": "There are no messages here yet. Say something — everyone in the channel will see it."
|
||||
"body": "There are no messages here yet. Say something — everyone in the channel will see it.",
|
||||
"directTitle": "This is the beginning of your conversation with {{name}}",
|
||||
"directBody": "No messages here yet. Say hello first."
|
||||
},
|
||||
"message": {
|
||||
"by": "Message from {{name}} in {{channel}}",
|
||||
@@ -290,7 +360,9 @@
|
||||
"tooLarge": "File “{{name}}” exceeds the {{limit}} limit",
|
||||
"rateLimited": "Too many messages. You can send again in {{seconds}} s.",
|
||||
"denied": "You are not allowed to send messages in this channel.",
|
||||
"readOnly": "This channel is read-only for you."
|
||||
"readOnly": "This channel is read-only for you.",
|
||||
"directLabel": "Message to {{name}}",
|
||||
"directPlaceholder": "Message {{name}}"
|
||||
},
|
||||
"typing_one": "{{names}} is typing…",
|
||||
"typing_few": "{{names}} are typing…",
|
||||
@@ -315,7 +387,8 @@
|
||||
"spoiler": {
|
||||
"show": "Reveal spoiler",
|
||||
"hide": "Hide spoiler"
|
||||
}
|
||||
},
|
||||
"logDirect": "Direct conversation with {{name}}"
|
||||
},
|
||||
"user": {
|
||||
"panelLabel": "User panel",
|
||||
|
||||
@@ -56,7 +56,10 @@
|
||||
"message.edit_window_expired": "Сообщение нельзя изменить: прошло больше 24 часов.",
|
||||
"file.too_large": "Файл больше допустимого размера.",
|
||||
"request.bad": "Некорректный запрос.",
|
||||
"file.not_found": "Файл не найден."
|
||||
"file.not_found": "Файл не найден.",
|
||||
"invite.expired": "Срок действия приглашения истёк.",
|
||||
"invite.exhausted": "У приглашения больше не осталось использований.",
|
||||
"user.not_found": "Пользователь с таким логином не найден."
|
||||
},
|
||||
"theme": {
|
||||
"switchToLight": "Светлая тема",
|
||||
@@ -172,11 +175,8 @@
|
||||
"limitReached": "Достигнут лимит серверов — создайте новый после удаления одного из текущих."
|
||||
},
|
||||
"empty": {
|
||||
"title": "Пока нет ни одного сервера",
|
||||
"body": "Присоединитесь к главному серверу инстанса или создайте свой.",
|
||||
"joinMain": "Присоединиться к главному серверу",
|
||||
"joining": "Присоединяемся…",
|
||||
"noMain": "Главный сервер на инстансе не настроен — создайте свой."
|
||||
"title": "У вас пока нет серверов",
|
||||
"body": "Создайте свой сервер или присоединитесь по приглашению."
|
||||
},
|
||||
"leave": "Покинуть сервер",
|
||||
"leaveConfirm": "Покинуть сервер «{{name}}»?",
|
||||
@@ -223,6 +223,74 @@
|
||||
"slowmode": "медленный режим {{seconds}} с",
|
||||
"leaveHint": "Выйти из сервера можно в настройках сервера → «Опасная зона»."
|
||||
},
|
||||
"friends": {
|
||||
"rail": "Друзья",
|
||||
"title": "Друзья",
|
||||
"sidebarLabel": "Друзья и личные беседы",
|
||||
"sidebarHint": "Личные беседы живут здесь — в рейке серверов их нет.",
|
||||
"dmSection": "Личные беседы",
|
||||
"dmEmpty": "Личных бесед пока нет.",
|
||||
"friendsSection": "Друзья",
|
||||
"friendsEmpty": "Список друзей пуст.",
|
||||
"open": "Открыть беседу с {{name}}",
|
||||
"empty": {
|
||||
"title": "Добавь друзей для общения",
|
||||
"body": "Найдите человека по логину и отправьте заявку в друзья — после принятия появится личная беседа.",
|
||||
"search": "Найти друзей"
|
||||
},
|
||||
"search": {
|
||||
"title": "Поиск друзей",
|
||||
"close": "Закрыть поиск",
|
||||
"label": "Поиск по логину",
|
||||
"placeholder": "Введите логин",
|
||||
"hint": "Введите минимум 2 символа.",
|
||||
"empty": "Никого не найдено.",
|
||||
"add": "Добавить в друзья",
|
||||
"adding": "Отправляем…",
|
||||
"requested": "Заявка отправлена",
|
||||
"friend": "Уже в друзьях",
|
||||
"message": "Написать"
|
||||
},
|
||||
"requests": {
|
||||
"incoming": "Входящие заявки",
|
||||
"outgoing": "Исходящие заявки",
|
||||
"accept": "Принять",
|
||||
"decline": "Отклонить",
|
||||
"cancel": "Отменить"
|
||||
},
|
||||
"list": {
|
||||
"label": "Список друзей",
|
||||
"message": "Написать",
|
||||
"more": "Действия: {{name}}",
|
||||
"menu": "Действия с {{name}}",
|
||||
"remove": "Удалить из друзей",
|
||||
"block": "Заблокировать"
|
||||
},
|
||||
"lastSeen": {
|
||||
"label": "Последний вход",
|
||||
"online": "Сейчас в сети",
|
||||
"unknown": "Не в сети давно",
|
||||
"at": "Был(а) в сети: {{time}}"
|
||||
},
|
||||
"dm": {
|
||||
"unknown": "Собеседник",
|
||||
"notFound": {
|
||||
"title": "Беседа недоступна",
|
||||
"body": "Личная беседа не найдена: возможно, она удалена или доступ к ней закрыт."
|
||||
}
|
||||
}
|
||||
},
|
||||
"invites": {
|
||||
"title": "Присоединиться по приглашению",
|
||||
"hint": "Вставьте код или ссылку вида https://<домен>/invite/<код>.",
|
||||
"label": "Код или ссылка приглашения",
|
||||
"placeholder": "например, ab12cd или https://дом/invite/ab12cd",
|
||||
"invalid": "Не удалось распознать код приглашения.",
|
||||
"join": "Присоединиться",
|
||||
"joining": "Присоединяемся…",
|
||||
"members": "Участников: {{count}}",
|
||||
"alreadyMember": "Вы уже на этом сервере"
|
||||
},
|
||||
"chat": {
|
||||
"log": "Лента сообщений комнаты {{name}}",
|
||||
"loadMore": "Загрузить ещё",
|
||||
@@ -236,7 +304,9 @@
|
||||
"unknownAuthor": "неизвестный",
|
||||
"start": {
|
||||
"title": "Это начало комнаты #{{name}}",
|
||||
"body": "Здесь пока нет сообщений. Напишите первым — сообщение увидят все участники комнаты."
|
||||
"body": "Здесь пока нет сообщений. Напишите первым — сообщение увидят все участники комнаты.",
|
||||
"directTitle": "Это начало личной беседы с {{name}}",
|
||||
"directBody": "Здесь пока нет сообщений. Напишите первым."
|
||||
},
|
||||
"message": {
|
||||
"by": "Сообщение от {{name}} в комнате {{channel}}",
|
||||
@@ -290,7 +360,9 @@
|
||||
"tooLarge": "Файл «{{name}}» больше допустимых {{limit}}",
|
||||
"rateLimited": "Слишком часто. Отправить можно будет через {{seconds}} с.",
|
||||
"denied": "Нет права отправлять сообщения в эту комнату.",
|
||||
"readOnly": "В эту комнату нельзя писать."
|
||||
"readOnly": "В эту комнату нельзя писать.",
|
||||
"directLabel": "Сообщение для {{name}}",
|
||||
"directPlaceholder": "Написать {{name}}"
|
||||
},
|
||||
"typing_one": "{{names}} печатает…",
|
||||
"typing_few": "{{names}} печатают…",
|
||||
@@ -315,7 +387,8 @@
|
||||
"spoiler": {
|
||||
"show": "Показать спойлер",
|
||||
"hide": "Скрыть спойлер"
|
||||
}
|
||||
},
|
||||
"logDirect": "Личная беседа с {{name}}"
|
||||
},
|
||||
"user": {
|
||||
"panelLabel": "Панель пользователя",
|
||||
|
||||
Reference in New Issue
Block a user