mirror of
https://github.com/discourse/discourse.git
synced 2024-11-29 22:53:43 +08:00
9c8043a4d2
* FEATURE: Enforce mention limits for chat messages The first part of these changes adds a new setting called `max_mentions_per_chat_message`, which skips notifications when the message contains too many mentions. It also respects the `max_users_notified_per_group_mention` setting and skips notifications if expanding a group mention would exceed it. We also include a new component to display JIT warning for these limits to the user while composing a message. * Simplify ignoring/muting filter in chat_notifier * Post-send warnings for unsent warnings * Improve pluralization * Address review feedback * Fix test * Address second feedback round * Third round of feedback Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
521 lines
23 KiB
YAML
521 lines
23 KiB
YAML
en:
|
||
js:
|
||
admin:
|
||
site_settings:
|
||
categories:
|
||
chat: Chat
|
||
logs:
|
||
staff_actions:
|
||
actions:
|
||
chat_channel_status_change: "Chat channel status changed"
|
||
chat_channel_delete: "Chat channel deleted"
|
||
api:
|
||
scopes:
|
||
descriptions:
|
||
chat:
|
||
create_message: "Create a chat message in a specified channel."
|
||
about:
|
||
chat_messages_count: "Chat Messages"
|
||
chat_channels_count: "Chat Channels"
|
||
chat_users_count: "Chat Users"
|
||
|
||
chat:
|
||
dates:
|
||
time_tiny: "h:mm"
|
||
all_loaded: "Showing all messages"
|
||
already_enabled: "Chat is already enabled on this topic. Please refresh."
|
||
disabled_for_topic: "Chat is disabled on this topic."
|
||
bot: "bot"
|
||
create: "Create"
|
||
cancel: "Cancel"
|
||
cancel_reply: "Cancel reply"
|
||
chat_channels: "Channels"
|
||
browse_all_channels: "Browse all channels"
|
||
move_to_channel:
|
||
title: "Move messages to channel"
|
||
instructions:
|
||
one: "You are moving <strong>%{count}</strong> message. Select a destination channel. A placeholder message will be created in the <strong>%{channelTitle}</strong> channel to indicate that this message has been moved."
|
||
other: "You are moving <strong>%{count}</strong> messages. Select a destination channel. A placeholder message will be created in the <strong>%{channelTitle}</strong> channel to indicate that these messages have been moved."
|
||
confirm_move: "Move Messages"
|
||
channel_settings:
|
||
title: "Channel settings"
|
||
edit: "Edit"
|
||
add: "Add"
|
||
close_channel: "Close channel"
|
||
open_channel: "Open channel"
|
||
archive_channel: "Archive channel"
|
||
delete_channel: "Delete channel"
|
||
join_channel: "Join channel"
|
||
leave_channel: "Leave channel"
|
||
join: "Join"
|
||
leave: "Leave"
|
||
save_label:
|
||
mute_channel: "Mute channel preference saved"
|
||
desktop_notification: "Desktop notification preference saved"
|
||
mobile_notification: "Mobile push notification preference saved"
|
||
channel_archive:
|
||
title: "Archive Channel"
|
||
instructions: "<p>Archiving a channel puts it into read-only mode and moves all messages from the channel into a new or existing topic. No new messages can be sent, and no existing messages can be edited or deleted.</p><p>Are you sure you want to archive the <strong>%{channelTitle}</strong> channel?</p>"
|
||
process_started: "Archiving process has started. This modal will close shortly, and you will receive a personal message when the archive process is complete."
|
||
retry: "Retry"
|
||
channel_open:
|
||
title: "Open Channel"
|
||
instructions: "Reopens the channel, all users will be able to send messages and edit their existing messages."
|
||
channel_close:
|
||
title: "Close Channel"
|
||
instructions: "Closing the channel prevents non-staff users from sending new messages or editing existing messages. Are you sure you want to close this channel?"
|
||
channel_delete:
|
||
title: "Delete Channel"
|
||
instructions: "<p>Deletes the <strong>%{name}</strong> channel and chat history. All messages and related data, such as reactions and uploads, will be permanently deleted. If you want to preserve the channel history and decomission it, you may want to archive the channel instead.</p>
|
||
<p>Are you sure you want to <strong>permanently delete</strong> the channel? To confirm, type the name of the channel in the box below.</p>"
|
||
confirm: "I understand the consequences, delete the channel"
|
||
confirm_channel_name: "Enter channel name"
|
||
process_started: "The process to delete the channel has started. This modal will close shortly, you will no longer see the deleted channel anywhere."
|
||
channels_list_popup:
|
||
browse: "Browse channels"
|
||
create: "New channel"
|
||
|
||
click_to_join: "Click here to view available channels."
|
||
close: "Close"
|
||
collapse: "Collapse Chat Drawer"
|
||
confirm_flag: "Are you sure you want to flag %{username}'s message?"
|
||
deleted: "A message was deleted. [view]"
|
||
hidden: "A message was hidden. [view]"
|
||
delete: "Delete"
|
||
edited: "edited"
|
||
muted: "muted"
|
||
joined: "joined"
|
||
empty_state:
|
||
direct_message_cta: "Start a personal Chat"
|
||
direct_message: "You can also start a personal chat with one or more users."
|
||
title: "No channels found"
|
||
email_frequency:
|
||
description: "We'll only email you if we haven't seen you in the last 15 minutes."
|
||
never: "Never"
|
||
title: "Email Notifications"
|
||
when_away: "Only when away"
|
||
enable: "Enable chat"
|
||
flag: "Flag"
|
||
emoji: "Insert emoji"
|
||
flagged: "This message has been flagged for review"
|
||
invalid_access: "You don't have access to view this chat channel"
|
||
invitation_notification: "<span>%{username}</span> <span>invited you to join a chat channel</span>"
|
||
in_reply_to: "In reply to"
|
||
heading: "Chat"
|
||
join: "Join"
|
||
new_messages: "new messages"
|
||
mention_warning:
|
||
dismiss: "dismiss"
|
||
cannot_see:
|
||
one: "%{username} cannot access this channel and was not notified."
|
||
other: "%{username} and %{others} cannot access this channel and were not notified."
|
||
invitations_sent:
|
||
one: "Invitation sent"
|
||
other: "Invitations sent"
|
||
invite: "Invite to channel"
|
||
without_membership:
|
||
one: "%{username} has not joined this channel."
|
||
other: "%{username} and %{others} have not joined this channel."
|
||
group_mentions_disabled:
|
||
one: "%{group_name} doesn't allow mentions"
|
||
other: "%{group_name} and %{others} doesn't allow mentions"
|
||
too_many_members:
|
||
one: "%{group_name} has too many members. No one was notified"
|
||
other: "%{group_name} and %{others} have too many members. No one was notified"
|
||
warning_multiple:
|
||
one: "%{count} other"
|
||
other: "%{count} others"
|
||
|
||
groups:
|
||
header:
|
||
some: "Some users won't be notified"
|
||
all: "Nobody will be notified"
|
||
unreachable:
|
||
one: "@%{group} doesn't allow mentions"
|
||
other: "@%{group} and @%{group_2} doesn't allow mentions"
|
||
unreachable_multiple: "@%{group} and %{count} others doesn't allow mentions"
|
||
too_many_members:
|
||
one: "Mentioning @%{group} exceeds the %{notification_limit} of %{limit}"
|
||
other: "Mentioning both @%{group} or @%{group_2} exceeds the %{notification_limit} of %{limit}"
|
||
too_many_members_multiple: "These %{count} groups exceed the %{notification_limit} of %{limit}"
|
||
users_limit:
|
||
one: "%{count} user"
|
||
other: "%{count} users"
|
||
notification_limit: "notification limit"
|
||
too_many_mentions: "This message exceeds the %{notification_limit} of %{limit}"
|
||
mentions_limit:
|
||
one: "%{count} mention"
|
||
other: "%{count} mentions"
|
||
aria_roles:
|
||
header: "Chat header"
|
||
composer: "Chat composer"
|
||
channels_list: "Chat channels list"
|
||
|
||
no_public_channels: "You have not joined any channels."
|
||
only_chat_push_notifications:
|
||
title: "Only send chat push notifications"
|
||
description: "Block all non-chat push notifications from being sent"
|
||
ignore_channel_wide_mention:
|
||
title: "Ignore channel-wide mentions"
|
||
description: "Do not send notifications for channel-wide mentions (@here and @all)"
|
||
open: "Open chat"
|
||
open_full_page: "Open full-screen chat"
|
||
close_full_page: "Close full-screen chat"
|
||
open_message: "Open message in chat"
|
||
placeholder_self: "Jot something down"
|
||
placeholder_others: "Chat with %{messageRecipient}"
|
||
placeholder_new_message_disallowed: "Channel is %{status}, you cannot send new messages right now."
|
||
placeholder_silenced: "You cannot send messages at this time."
|
||
placeholder_start_conversation: Start a conversation with %{usernames}
|
||
remove_upload: "Remove file"
|
||
react: "React with emoji"
|
||
reply: "Reply"
|
||
edit: "Edit"
|
||
copy_link: "Copy link"
|
||
rebake_message: "Rebuild HTML"
|
||
retry_staged_message:
|
||
title: "Network error"
|
||
action: "Send again?"
|
||
unreliable_network: "Network is unreliable, sending messages and saving draft might not work"
|
||
bookmark_message: "Bookmark"
|
||
bookmark_message_edit: "Edit Bookmark"
|
||
restore: "Restore deleted message"
|
||
save: "Save"
|
||
select: "Select"
|
||
silence: "Silence user"
|
||
return_to_list: "Return to channels list"
|
||
scroll_to_bottom: "Scroll to bottom"
|
||
scroll_to_new_messages: "See new messages"
|
||
sound:
|
||
title: "Desktop chat notification sound"
|
||
sounds:
|
||
none: "None"
|
||
bell: "Bell"
|
||
ding: "Ding"
|
||
title: "chat"
|
||
title_capitalized: "Chat"
|
||
upload: "Attach a file"
|
||
uploaded_files:
|
||
one: "%{count} file"
|
||
other: "%{count} files"
|
||
you_flagged: "You flagged this message"
|
||
exit: "back"
|
||
channel_status:
|
||
read_only_header: "Channel is read only"
|
||
read_only: "Read Only"
|
||
archived_header: "Channel is archived"
|
||
archived: "Archived"
|
||
archive_failed: "Archive channel failed. %{completed}/%{total} messages have been archived in <a target=\"_blank\" href=\"%{topic_url}\">the destination topic</a>. Press retry to attempt to complete the archive."
|
||
archive_completed: "See <a target=\"_blank\" href=\"%{topic_url}\">the archive topic</a>"
|
||
closed_header: "Channel is closed"
|
||
closed: "Closed"
|
||
open_header: "Channel is open"
|
||
open: "Open"
|
||
|
||
browse:
|
||
back: "Back"
|
||
title: Channels
|
||
filter_all: All
|
||
filter_open: Opened
|
||
filter_closed: Closed
|
||
filter_archived: Archived
|
||
filter_input_placeholder: Search channel by name
|
||
|
||
chat_message_separator:
|
||
today: Today
|
||
yesterday: Yesterday
|
||
|
||
members_view:
|
||
filter_placeholder: Find members
|
||
|
||
about_view:
|
||
associated_topic: Linked topic
|
||
associated_category: Linked category
|
||
title: Title
|
||
description: Description
|
||
|
||
channel_info:
|
||
back_to_all_channels: "All channels"
|
||
back_to_channel: "Back"
|
||
tabs:
|
||
about: About
|
||
members: Members
|
||
settings: Settings
|
||
|
||
channel_edit_title_modal:
|
||
title: Edit title
|
||
input_placeholder: Add a title
|
||
description: Give a short descriptive title to your channel
|
||
|
||
channel_edit_description_modal:
|
||
title: Edit description
|
||
input_placeholder: Add a description
|
||
description: Tell people what this channel is all about
|
||
|
||
direct_message_creator:
|
||
title: New Message
|
||
prefix: "To:"
|
||
no_results: No results
|
||
selected_user_title: "Deselect %{username}"
|
||
|
||
channel_selector:
|
||
title: "Jump to channel"
|
||
no_channels: "No channels match your search"
|
||
|
||
channel:
|
||
no_memberships: This channel has no members
|
||
no_memberships_found: No members found
|
||
memberships_count:
|
||
one: "%{count} member"
|
||
other: "%{count} members"
|
||
|
||
create_channel:
|
||
auto_join_users:
|
||
public_category_warning: "%{category} is a public category. Automatically add all recently active users to this channel?"
|
||
warning_groups:
|
||
one: Automatically add %{members_count} users from %{group}?
|
||
other: Automatically add %{members_count} users from %{group} and %{group_2}?
|
||
warning_multiple_groups: Automatically add %{members_count} users from %{group_1} and %{count} others?
|
||
choose_category:
|
||
label: "Choose a category"
|
||
none: "select one..."
|
||
default_hint: Manage access by visiting <a href=%{link} target="_blank">%{category} security settings</a>
|
||
hint_groups:
|
||
one: Users in %{hint} will have access to this channel per the <a href=%{link} target="_blank">security settings</a>
|
||
other: Users in %{hint} and %{hint_2} will have access to this channel per the <a href=%{link} target="_blank">security settings</a>
|
||
hint_multiple_groups: Users in %{hint_1} and %{count} other groups will have access to this channel per the <a href=%{link} target="_blank">security settings</a>
|
||
create: "Create channel"
|
||
description: "Description (optional)"
|
||
name: "Channel name"
|
||
title: "New channel"
|
||
type: "Type"
|
||
types:
|
||
category: "Category"
|
||
topic: "Topic"
|
||
|
||
reviewable:
|
||
type: "Chat message"
|
||
|
||
reactions:
|
||
only_you: "You reacted with :%{emoji}:"
|
||
and_others: "You, %{usernames} reacted with :%{emoji}:"
|
||
only_others: "%{usernames} reacted with :%{emoji}:"
|
||
others_and_more: "%{usernames} and %{more} others reacted with :%{emoji}:"
|
||
you_others_and_more: "You, %{usernames} and %{more} others reacted with :%{emoji}:"
|
||
|
||
composer:
|
||
toggle_toolbar: "Toggle toolbar"
|
||
italic_text: "emphasized text"
|
||
bold_text: "strong text"
|
||
code_text: "code text"
|
||
|
||
quote:
|
||
original_channel: 'Originally sent in <a href="%{channelLink}">%{channel}</a>'
|
||
copy_success: "Chat quote copied to clipboard"
|
||
|
||
notification_levels:
|
||
never: "Never"
|
||
mention: "Only for mentions"
|
||
always: "For all activity"
|
||
|
||
settings:
|
||
channel_wide_mentions_label: "Allow @all and @here mentions"
|
||
channel_wide_mentions_description: "Allow users to notify all members of #%{channel} with @all or only those who are active in the moment with @here"
|
||
auto_join_users_label: "Automatically add users"
|
||
auto_join_users_info: "Check hourly which users have been active in the last 3 months and, if they have access to the %{category} category, add them to this channel."
|
||
enable_auto_join_users: "Automatically add all recently active users"
|
||
auto_join_users_warning: "Every user who isn't a member of this channel and has access to the %{category} category will join. Are you sure?"
|
||
desktop_notification_level: "Desktop notifications"
|
||
follow: "Join"
|
||
followed: "Joined"
|
||
mobile_notification_level: "Mobile push notifications"
|
||
mute: "Mute channel"
|
||
muted_on: "On"
|
||
muted_off: "Off"
|
||
notifications: "Notifications"
|
||
preview: "Preview"
|
||
save: "Save"
|
||
saved: "Saved"
|
||
unfollow: "Leave"
|
||
admin_title: "Admin"
|
||
retention_info: "Chat history will be saved for %{days} days."
|
||
|
||
admin:
|
||
title: "Chat"
|
||
|
||
direct_messages:
|
||
title: "Personal chat"
|
||
new: "New personal chat"
|
||
create: "Go"
|
||
leave: "Leave this personal chat"
|
||
cannot_create: "Sorry, you cannot send direct messages."
|
||
|
||
incoming_webhooks:
|
||
back: "Back"
|
||
channel_placeholder: "Select a channel"
|
||
confirm_destroy: "Are you sure you want to delete this incoming webhook? This cannot be un-done."
|
||
current_emoji: "Current Emoji"
|
||
description: "Description"
|
||
delete: "Delete"
|
||
emoji: "Emoji"
|
||
emoji_instructions: "System avatar will be used if emoji is left blank."
|
||
name: "Name"
|
||
name_placeholder: "name..."
|
||
new: "New incoming webhook"
|
||
none: "No existing incoming webhooks created."
|
||
no_emoji: "No Emoji selected"
|
||
post_to: "Post to"
|
||
reset_emoji: "Reset Emoji"
|
||
save: "Save"
|
||
edit: "Edit"
|
||
select_emoji: "Choose Emoji"
|
||
system: "system"
|
||
title: "Incoming webhooks"
|
||
url: "URL"
|
||
url_instructions: "This URL contains a secret value - keep it safe."
|
||
username: "Username"
|
||
username_instructions: "Username of bot that posts to channel. Defaults to 'system' when left blank."
|
||
instructions: "Incoming webhooks can be used by external systems to post messages into a designated chat channel as a bot user via the <code>/hooks/:key</code> endpoint. The payload consists of a single <code>text</code> parameter, which is limited to 2000 characters.<br><br>We also support limited Slack-formatted <code>text</code> parameters, extracting links and mentions based on the format at <a href=\"https://api.slack.com/reference/surfaces/formatting\">https://api.slack.com/reference/surfaces/formatting</a>, but the <code>/hooks/:key/slack</code> endpoint must be used for this."
|
||
|
||
selection:
|
||
cancel: "Cancel"
|
||
quote_selection: "Quote in Topic"
|
||
copy: "Copy"
|
||
move_selection_to_channel: "Move to Channel"
|
||
error: "There was an error moving the chat messages"
|
||
title: "Move Chat to Topic"
|
||
new_topic:
|
||
title: "Move to New Topic"
|
||
instructions:
|
||
one: "You are about to create a new topic and populate it with the chat message you've selected."
|
||
other: "You are about to create a new topic and populate it with the <b>%{count}</b> chat messages you've selected."
|
||
instructions_channel_archive: "You are about to create a new topic and archive the channel messages to it."
|
||
existing_topic:
|
||
title: "Move to Existing Topic"
|
||
instructions:
|
||
one: "Please choose the topic you'd like to move that chat message to."
|
||
other: "Please choose the topic you'd like to move those <b>%{count}</b> chat messages to."
|
||
instructions_channel_archive: "Please choose the topic you'd like to archive the channel messages to."
|
||
new_message:
|
||
title: "Move to New Message"
|
||
instructions:
|
||
one: "You are about to create a new message and populate it with the chat message you've selected."
|
||
other: "You are about to create a new message and populate it with the <b>%{count}</b> chat messages you've selected."
|
||
|
||
replying_indicator:
|
||
single_user: "%{username} is typing"
|
||
multiple_users: "%{commaSeparatedUsernames} and %{lastUsername} are typing"
|
||
many_users:
|
||
one: "%{commaSeparatedUsernames} and %{count} other are typing"
|
||
other: "%{commaSeparatedUsernames} and %{count} others are typing"
|
||
|
||
retention_reminders:
|
||
public: "Channel history is retained for %{days} days."
|
||
dm: "Personal chat history is retained for %{days} days."
|
||
|
||
flags:
|
||
off_topic: "This message is not relevant to the current discussion as defined by the channel title, and should probably be moved elsewhere."
|
||
inappropriate: "This message contains content that a reasonable person would consider offensive, abusive, or a violation of <a href=\"%{basePath}/guidelines\">our community guidelines</a>."
|
||
spam: "This message is an advertisement, or vandalism. It is not useful or relevant to the current channel."
|
||
notify_user: "I want to talk to this person directly and personally about their message."
|
||
notify_moderators: "This message requires staff attention for another reason not listed above."
|
||
|
||
flagging:
|
||
action: "Flag message"
|
||
|
||
emoji_picker:
|
||
favorites: "Frequently used"
|
||
smileys_&_emotion: "Smileys and emotion"
|
||
objects: "Objects"
|
||
people_&_body: "People and body"
|
||
travel_&_places: "Travel and places"
|
||
animals_&_nature: "Animals and nature"
|
||
food_&_drink: "Food and drink"
|
||
activities: "Activities"
|
||
flags: "Flags"
|
||
symbols: "Symbols"
|
||
search_placeholder: "Search by emoji name and alias..."
|
||
no_results: "No results"
|
||
|
||
draft_channel_screen:
|
||
header: "New Message"
|
||
cancel: "Cancel"
|
||
notifications:
|
||
chat_invitation: "invited you to join a chat channel"
|
||
chat_invitation_html: "<span>%{username}</span> <span>invited you to join a chat channel</span>"
|
||
chat_quoted: "<span>%{username}</span> %{description}"
|
||
|
||
popup:
|
||
chat_mention:
|
||
direct: 'mentioned you in "%{channel}"'
|
||
direct_html: '<span>%{username}</span> <span>mentioned you in "%{channel}"</span>'
|
||
other_plain: 'mentioned %{identifier} in "%{channel}"'
|
||
other_html: '<span>%{username}</span> <span>mentioned %{identifier} in "%{channel}"</span>'
|
||
direct_message_chat_mention:
|
||
direct: "mentioned you in personal chat"
|
||
direct_html: "<span>%{username}</span> <span>mentioned you in personal chat</span>"
|
||
other_plain: "mentioned %{identifier} in personal chat"
|
||
other_html: "<span>%{username}</span> <span>mentioned %{identifier} in personal chat</span>"
|
||
chat_message: "New chat message"
|
||
chat_quoted: "%{username} quoted your chat message"
|
||
|
||
titles:
|
||
chat_mention: "Chat mention"
|
||
chat_invitation: "Chat invitation"
|
||
chat_quoted: "Chat quoted"
|
||
action_codes:
|
||
chat:
|
||
enabled: '%{who} enabled <button class="btn-link open-chat">chat</button> %{when}'
|
||
disabled: "%{who} closed chat %{when}"
|
||
discourse_automation:
|
||
scriptables:
|
||
send_chat_message:
|
||
title: Send chat message
|
||
fields:
|
||
chat_channel_id:
|
||
label: Chat channel ID
|
||
message:
|
||
label: Message
|
||
sender:
|
||
label: Sender
|
||
description: Defaults to system
|
||
review:
|
||
transcript:
|
||
view: "View previous messages transcript"
|
||
types:
|
||
reviewable_chat_message:
|
||
title: "Flagged Chat Message"
|
||
flagged_by: "Flagged By"
|
||
keyboard_shortcuts_help:
|
||
chat:
|
||
title: "Chat"
|
||
keyboard_shortcuts:
|
||
switch_channel_arrows: "%{shortcut} Switch channel"
|
||
open_quick_channel_selector: "%{shortcut} Open quick channel selector"
|
||
open_insert_link_modal: "%{shortcut} Insert hyperlink (composer only)"
|
||
composer_bold: "%{shortcut} Bold (composer only)"
|
||
composer_italic: "%{shortcut} Italic (composer only)"
|
||
composer_code: "%{shortcut} Code (composer only)"
|
||
drawer_open: "%{shortcut} Open chat drawer"
|
||
drawer_close: "%{shortcut} Close chat drawer"
|
||
topic_statuses:
|
||
chat:
|
||
help: "Chat is enabled for this topic"
|
||
user:
|
||
allow_private_messages: "Allow other users to send me personal messages and chat direct messages"
|
||
muted_users_instructions: "Suppress all notifications, personal messages, and chat direct messages from these users."
|
||
allowed_pm_users_instructions: "Only allow personal messages or chat direct messages from these users."
|
||
allow_private_messages_from_specific_users: "Only allow specific users to send me personal messages or chat direct messages"
|
||
ignored_users_instructions: "Suppress all posts, messages, notifications, personal messages, and chat direct messages from these users."
|
||
user_menu:
|
||
no_chat_notifications_title: "You don’t have any chat notifications yet"
|
||
no_chat_notifications_body: >
|
||
You will be notified in this panel when someone direct messages you or <b>@mentions</b> you in chat. Notifications will also be sent to your email when you haven’t logged in for a while.
|
||
<br><br>
|
||
Click the title at the top of any chat channel to configure what notifications you receive in that channel. For more, see your <a href='%{preferencesUrl}'>notification preferences</a>.
|
||
tabs:
|
||
chat_notifications: "Chat notifications"
|
||
chat_notifications_with_unread:
|
||
one: "Chat notifications - %{count} unread notification"
|
||
other: "Chat notifications - %{count} unread notifications"
|