discourse/plugins/chat/config/locales/client.en.yml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

766 lines
35 KiB
YAML
Raw Normal View History

en:
admin_js:
admin:
site_settings:
categories:
chat: Chat
js:
admin:
site_settings:
chat_separate_sidebar_mode:
always: "Always"
fullscreen: "When chat is in fullscreen"
never: "Never"
logs:
staff_actions:
actions:
chat_channel_status_change: "Chat channel status changed"
chat_channel_delete: "Chat channel deleted"
FEATURE: Auto-remove users without permission from channel (#20344) There are many situations that may cause users to lose permission to send messages in a chat channel. Until now we have relied on security checks in `Chat::ChatChannelFetcher` to remove channels which the user may have a `UserChatChannelMembership` record for but which they do not have access to. This commit takes a more proactive approach. Now any of these following `DiscourseEvent` triggers may cause `UserChatChannelMembership` records to be deleted: * `category_updated` - Permissions of the category changed (i.e. CategoryGroup records changed) * `user_removed_from_group` - Means the user may not be able to access the channel based on `GroupUser` or also `chat_allowed_groups` * `site_setting_changed` - The `chat_allowed_groups` was updated, some users may no longer be in groups that can access chat. * `group_destroyed` - Means the user may not be able to access the channel based on `GroupUser` or also `chat_allowed_groups` All of these are handled in a distinct service run in a background job. Users removed are logged via `StaffActionLog` and then we publish messages on a per-channel basis to users who had their memberships deleted. When the user has a channel they are kicked from open, we show a dialog saying "You no longer have access to this channel". When they click OK we redirect them either: * To their first other public channel, if they have any followed * The chat browse page if they don't This is to save on tons of requests from kicked out users getting messages from other channels. When the user does not have the kicked channel open, we can just silently yoink it out of their sidebar and turn off subscriptions.
2023-03-22 08:19:59 +08:00
chat_auto_remove_membership: "Memberships automatically removed from channels"
api:
scopes:
descriptions:
chat:
create_message: "Create a chat message in a specified channel."
web_hooks:
chat_event:
group_name: "Chat events"
chat_message_created: "Message is created"
chat_message_edited: "Message is edited"
chat_message_trashed: "Message is trashed"
chat_message_restored: "Message is restored"
about:
chat_messages_count: "Chat messages"
chat_channels_count: "Chat channels"
chat_users_count: "Chat users"
activities:
chat_messages:
one: "%{formatted_number} chat message"
other: "%{formatted_number} chat messages"
chat:
text_copied: Text copied to clipboard
link_copied: Link copied to clipboard
back_to_forum: "Forum"
deleted_chat_username: deleted
dates:
yesterday: "Yesterday"
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"
see_in: "See in"
move_to_channel:
title: "Move messages to channel"
instructions:
FEATURE: Automatically create chat threads in background (#20206) Whenever we create a chat message that is `in_reply_to` another message, we want to lazily populate the thread record for the message chain. If there is no thread yet for the root message in the reply chain, we create a new thread with the appropriate details, and use that thread ID for every message in the chain that does not yet have a thread ID. * Root message (ID 1) - no thread ID * Message (ID 2, in_reply_to 1) - no thread ID * When I as a user create a message in reply to ID 2, we create a thread and apply it to ID 1, ID 2, and the new message If there is a thread for the root message in the reply chain, we do not create one, and use the thread ID for the newly created chat message. * Root message (ID 1) - thread ID 700 * Message (ID 2, in_reply_to 1) - thread ID 700 * When I as a user create a message in reply to ID 2, we use the existing thread ID 700 for the new message We also support passing in the `thread_id` to `ChatMessageCreator`, which will be used when replying to a message that is already part of a thread, and we validate whether that `thread_id` is okay in the context of the channel and also the reply chain. This work is always done, regardless of channel `thread_enabled` settings or the `enable_experimental_chat_threaded_discussions` site setting. This commit does not include a large data migration to backfill threads for all existing reply chains, its unnecessary to do this so early in the project, we can do this later if necessary. This commit also includes thread considerations in the `MessageMover` class: * If the original message and N other messages of a thread is moved, the remaining messages in the thread have a new thread created in the old channel and are moved to it. * The reply chain is not preserved for moved messages, so new threads are not created in the destination channel. In addition to this, I added a fix to also clear the `in_reply_to_id` of messages in the old channel which are moved out of that channel for data cleanliness.
2023-02-08 08:22:07 +08:00
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. Note that reply chains will not be preserved in the new channel, and messages in the old channel will no longer show as replying to any moved messages."
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. Note that reply chains will not be preserved in the new channel, and messages in the old channel will no longer show as replying to any moved messages."
confirm_move: "Move Messages"
delete_messages:
confirm:
one: "Are you sure you want to delete this message?"
other: "Are you sure you want to delete these %{count} 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"
leave_groupchat_info: "By leaving this group chat, you will no longer have access to it and wont receive notifications related to it. To rejoin, you will need to be re-invited by a member of the group chat."
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 decommission 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"
close: "Close"
remove: "Remove"
collapse: "Collapse Chat Drawer"
expand: "Expand Chat Drawer"
confirm_flag: "Are you sure you want to flag %{username}'s message?"
deleted:
one: "A message was deleted. [view]"
other: "%{count} messages were deleted. [view all]"
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"
my_threads: "You don't have any threads yet. Threads you participate in will be displayed here."
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"
header_indicator_preference:
title: "Show activity indicator in header"
all_new: "All New Messages"
dm_and_mentions: "Direct Messages, Mentions and Watched Threads"
only_mentions: "Only Mentions"
never: "Never"
separate_sidebar_mode:
title: "Show separate sidebar modes for forum and chat"
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"
last_visit: "last visit"
mention_warning:
invitations_sent:
one: "Invitation sent"
other: "Invitations sent"
invite: "Invite to channel"
channel_wide_mentions_disallowed: "@here and @all mentions are disabled in this channel."
groups:
header:
some: "Some users won't be notified"
all: "Nobody will be notified"
unreachable_1: "@%{group} doesn't allow mentions."
unreachable_2: "@%{group1} and @%{group2} don't allow mentions."
unreachable_multiple:
one: "@%{group} and %{count} other group don't allow mentions."
other: "@%{group} and %{count} other groups don't allow mentions."
too_many_members_MF: |
{ groupCount, plural,
=1 {
{ isAdmin, select,
true {
{ notificationLimit, plural,
one {Mentioning @{group1} exceeds the <a href="{siteSettingUrl}" target="_blank">notification limit</a> of # user.}
other {Mentioning @{group1} exceeds the <a href="{siteSettingUrl}" target="_blank">notification limit</a> of # users.}
}
}
false {
{ notificationLimit, plural,
one {Mentioning @{group1} exceeds the notification limit of # user.}
other {Mentioning @{group1} exceeds the notification limit of # users.}
}
}
other {}
}
}
=2 {
{ isAdmin, select,
true {
{ notificationLimit, plural,
one {Mentioning @{group1} and @{group2} exceeds the <a href="{siteSettingUrl}" target="_blank">notification limit</a> of # user.}
other {Mentioning @{group1} and @{group2} exceeds the <a href="{siteSettingUrl}" target="_blank">notification limit</a> of # users.}
}
}
false {
{ notificationLimit, plural,
one {Mentioning @{group1} and @{group2} exceeds the notification limit of # user.}
other {Mentioning @{group1} and @{group2} exceeds the notification limit of # users.}
}
}
other {}
}
}
other {
{ isAdmin, select,
true {
{ notificationLimit, plural,
one {Mentioning these {groupCount} groups exceeds the <a href="{siteSettingUrl}" target="_blank">notification limit</a> of # user.}
other {Mentioning these {groupCount} groups exceeds the <a href="{siteSettingUrl}" target="_blank">notification limit</a> of # users.}
}
}
false {
{ notificationLimit, plural,
one {Mentioning these {groupCount} groups exceeds the notification limit of # user.}
other {Mentioning these {groupCount} groups exceeds the notification limit of # users.}
}
}
other {}
}
}
}
too_many_mentions:
one: "This message exceeds the notification limit of %{count} mention."
other: "This message exceeds the notification limit of %{count} mentions."
too_many_mentions_admin:
one: 'This message exceeds the <a href="%{siteSettingUrl}" target="_blank">notification limit</a> of %{count} mention.'
other: 'This message exceeds the <a href="%{siteSettingUrl}" target="_blank">notification limit</a> of %{count} mentions.'
aria_roles:
header: "Chat header"
composer: "Chat composer"
channels_list: "Chat channels list"
no_direct_message_channels: "You have not joined any direct messages, yet!"
no_direct_message_channels_cta: "Start a conversation"
no_public_channels: "You have not joined any channels, yet!"
no_public_channels_cta: "Browse channels"
FEATURE: Auto-remove users without permission from channel (#20344) There are many situations that may cause users to lose permission to send messages in a chat channel. Until now we have relied on security checks in `Chat::ChatChannelFetcher` to remove channels which the user may have a `UserChatChannelMembership` record for but which they do not have access to. This commit takes a more proactive approach. Now any of these following `DiscourseEvent` triggers may cause `UserChatChannelMembership` records to be deleted: * `category_updated` - Permissions of the category changed (i.e. CategoryGroup records changed) * `user_removed_from_group` - Means the user may not be able to access the channel based on `GroupUser` or also `chat_allowed_groups` * `site_setting_changed` - The `chat_allowed_groups` was updated, some users may no longer be in groups that can access chat. * `group_destroyed` - Means the user may not be able to access the channel based on `GroupUser` or also `chat_allowed_groups` All of these are handled in a distinct service run in a background job. Users removed are logged via `StaffActionLog` and then we publish messages on a per-channel basis to users who had their memberships deleted. When the user has a channel they are kicked from open, we show a dialog saying "You no longer have access to this channel". When they click OK we redirect them either: * To their first other public channel, if they have any followed * The chat browse page if they don't This is to save on tons of requests from kicked out users getting messages from other channels. When the user does not have the kicked channel open, we can just silently yoink it out of their sidebar and turn off subscriptions.
2023-03-22 08:19:59 +08:00
kicked_from_channel: "You can no longer access this channel."
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)"
show_thread_title_prompts:
title: "Show thread title prompts"
description: "Show prompts to set a title for new threads"
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"
UX: improves composer and thread panel (#21210) This pull request is a full overhaul of the chat-composer and contains various improvements to the thread panel. They have been grouped in the same PR as lots of improvements/fixes to the thread panel needed an improved composer. This is meant as a first step. ### New features included in this PR - A resizable side panel - A clear dropzone area for uploads - A simplified design for image uploads, this is only a first step towards more redesign of this area in the future ### Notable fixes in this PR - Correct placeholder in thread panel - Allows to edit the last message of a thread with arrow up - Correctly focus composer when replying to a message - The reply indicator is added instantly in the channel when starting a thread - Prevents a large variety of bug where the composer could bug and prevent sending message or would clear your input while it has content ### Technical notes To achieve this PR, three important changes have been made: - `<ChatComposer>` has been fully rewritten and is now a glimmer component - The chat composer now takes a `ChatMessage` as input which can directly be used in other operations, it simplifies a lot of logic as we are always working a with a `ChatMessage` - `TextareaInteractor` has been created to wrap the existing `TextareaTextManipulation` mixin, it will make future migrations easier and allow us to have a less polluted `<ChatComposer>` Note ".chat-live-pane" has been renamed ".chat-channel" Design for upload dropzone is from @chapoi
2023-04-25 16:23:03 +08:00
placeholder_channel: "Chat in %{channelName}"
placeholder_thread: "Chat in thread"
placeholder_users: "Chat with %{commaSeparatedNames}"
placeholder_group: "Chat in group"
placeholder_new_message_disallowed:
archived: "Channel is archived, you cannot send new messages right now."
closed: "Channel is closed, you cannot send new messages right now."
read_only: "Channel is read only, you cannot send new messages right now."
placeholder_silenced: "You cannot send messages at this time."
remove_upload: "Remove file"
react: "React with emoji"
reply: "Reply"
edit: "Edit"
copy_link: "Copy link"
copy_text: "Copy text"
rebake_message: "Rebuild HTML"
message_too_long: "Message is too long, messages must be a maximum of %{count} characters."
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"
return_to_list: "Return to channels list"
return_to_channel: "Return to channel"
return_to_threads_list: "Return to threads list"
unread_threads_count:
one: "You have %{count} unread discussion"
other: "You have %{count} unread discussions"
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"
UX: improves composer and thread panel (#21210) This pull request is a full overhaul of the chat-composer and contains various improvements to the thread panel. They have been grouped in the same PR as lots of improvements/fixes to the thread panel needed an improved composer. This is meant as a first step. ### New features included in this PR - A resizable side panel - A clear dropzone area for uploads - A simplified design for image uploads, this is only a first step towards more redesign of this area in the future ### Notable fixes in this PR - Correct placeholder in thread panel - Allows to edit the last message of a thread with arrow up - Correctly focus composer when replying to a message - The reply indicator is added instantly in the channel when starting a thread - Prevents a large variety of bug where the composer could bug and prevent sending message or would clear your input while it has content ### Technical notes To achieve this PR, three important changes have been made: - `<ChatComposer>` has been fully rewritten and is now a glimmer component - The chat composer now takes a `ChatMessage` as input which can directly be used in other operations, it simplifies a lot of logic as we are always working a with a `ChatMessage` - `TextareaInteractor` has been created to wrap the existing `TextareaTextManipulation` mixin, it will make future migrations easier and allow us to have a less polluted `<ChatComposer>` Note ".chat-live-pane" has been renamed ".chat-channel" Design for upload dropzone is from @chapoi
2023-04-25 16:23:03 +08:00
upload_to_channel: "Upload to %{title}"
upload_to_thread: "Upload to thread"
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. <a target=\"_blank\" href=\"%{topic_url}\">The destination topic</a> was created. Press retry to attempt to complete the archive."
archive_failed_no_topic: "Archive channel failed. %{completed}/%{total} messages have been archived, the destination topic was not created. 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: Open
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
add_member: Add Member
back_to_settings: "Back to settings"
about_view:
associated_topic: Linked topic
associated_category: Linked category
title: Title
name: Name
description: Description
channel_info:
back_to_all_channels: "All channels"
back_to_channel: "Back"
tabs:
members: Members
settings: Settings
new_message_modal:
title: Send message
add_user_long: <kbd>shift + click</kbd> or <kbd>shift + enter</kbd><span>Add @%{username}</span>
add_user_short: <span>Add user</span>
open_channel: <span>Open channel</span>
default_search_placeholder: "#a-channel, @somebody or anything"
default_channel_search_placeholder: "#a-channel"
default_user_search_placeholder: "@somebody"
user_search_placeholder: "...add more members"
disabled_user: "has disabled chat"
no_items: "No items"
create_group_placeholder: "Group chat name (optional)"
participants_counter: "%{selection_count}/%{max} participants"
new_group_chat: "New group chat"
filter: "Filter"
cant_add_more_members: "Maximum number of members reached"
create_new_group_chat: "Create group chat"
group_with_too_many_members: "has too many members (%{membersCount})"
channel_edit_name_slug_modal:
title: Edit channel
input_placeholder: Add a name
slug_description: A channel slug is used in the URL instead of the channel name
name: Channel name
slug: Channel slug (optional)
channel_edit_description_modal:
title: Edit description
input_placeholder: Add a description
description: Tell people what this channel is all about
direct_message_creator:
add_to_channel: "Add to channel"
title: New Message
prefix: "To:"
no_results: No results
selected_user_title: "Deselect %{username}"
group_name: "Group chat name (optional)"
members_counter:
one: "%{count}/%{max} member"
other: "%{count}/%{max} members"
channel:
no_memberships: This channel has no members
no_memberships_found: No members found
memberships_count:
one: "%{count} member"
other: "%{count} members"
create_channel:
threading:
label: "Enable threading"
auto_join_users:
public_category_warning: "%{category} is a public category. Automatically add all recently active users to this channel?"
warning_1_group:
one: "Automatically add %{count} user from %{group}?"
other: "Automatically add %{count} users from %{group}?"
warning_2_groups:
one: "Automatically add %{count} user from %{group1} and %{group2}?"
other: "Automatically add %{count} users from %{group1} and %{group2}?"
warning_multiple_groups_MF: |
{ groupCount, plural,
one {
{ userCount, plural,
one {Automatically add {userCount} user from {groupName} and {groupCount} other group?}
other {Automatically add {userCount} users from {groupName} and {groupCount} other group?}
}
}
other {
{ userCount, plural,
one {Automatically add {userCount} user from {groupName} and {groupCount} other groups?}
other {Automatically add {userCount} users from {groupName} and {groupCount} other groups?}
}
}
}
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_1_group: 'Users in %{group} will have access to this channel per the <a href="%{settingLink}" target="_blank">security settings</a>'
hint_2_groups: 'Users in %{group1} and %{group2} will have access to this channel per the <a href="%{settingLink}" target="_blank">security settings</a>'
hint_multiple_groups:
one: 'Users in %{group} and %{count} other group will have access to this channel per the <a href="%{settingLink}" target="_blank">security settings</a>'
other: 'Users in %{group} and %{count} other groups will have access to this channel per the <a href="%{settingLink}" target="_blank">security settings</a>'
create: "Create channel"
description: "Description (optional)"
name: "Channel name"
slug: "Channel slug (optional)"
title: "New channel"
type: "Type"
types:
category: "Category"
topic: "Topic"
reviewable:
type: "Chat message"
reactions:
only_you: "<span>You reacted with </span>:%{emoji}:"
you_and_single_user: "<span>You and %{username} reacted with </span>:%{emoji}:"
you_and_multiple_users: "<span>You, %{commaSeparatedUsernames} and %{username} reacted with </span>:%{emoji}:"
you_multiple_users_and_more:
one: "<span>You, %{commaSeparatedUsernames} and %{count} other reacted with </span>:%{emoji}:"
other: "<span>You, %{commaSeparatedUsernames} and %{count} others reacted with </span>:%{emoji}:"
single_user: "<span>%{username} reacted with </span>:%{emoji}:"
multiple_users: "<span>%{commaSeparatedUsernames} and %{username} reacted with </span>:%{emoji}:"
multiple_users_and_more:
one: "<span>%{commaSeparatedUsernames} and %{count} other reacted with </span>:%{emoji}:"
other: "<span>%{commaSeparatedUsernames} and %{count} others reacted with </span>:%{emoji}:"
composer:
toggle_toolbar: "Toggle toolbar"
italic_text: "emphasized text"
bold_text: "strong text"
code_text: "code text"
UX: improves composer and thread panel (#21210) This pull request is a full overhaul of the chat-composer and contains various improvements to the thread panel. They have been grouped in the same PR as lots of improvements/fixes to the thread panel needed an improved composer. This is meant as a first step. ### New features included in this PR - A resizable side panel - A clear dropzone area for uploads - A simplified design for image uploads, this is only a first step towards more redesign of this area in the future ### Notable fixes in this PR - Correct placeholder in thread panel - Allows to edit the last message of a thread with arrow up - Correctly focus composer when replying to a message - The reply indicator is added instantly in the channel when starting a thread - Prevents a large variety of bug where the composer could bug and prevent sending message or would clear your input while it has content ### Technical notes To achieve this PR, three important changes have been made: - `<ChatComposer>` has been fully rewritten and is now a glimmer component - The chat composer now takes a `ChatMessage` as input which can directly be used in other operations, it simplifies a lot of logic as we are always working a with a `ChatMessage` - `TextareaInteractor` has been created to wrap the existing `TextareaTextManipulation` mixin, it will make future migrations easier and allow us to have a less polluted `<ChatComposer>` Note ".chat-live-pane" has been renamed ".chat-channel" Design for upload dropzone is from @chapoi
2023-04-25 16:23:03 +08:00
send: "Send"
quote:
original_channel: 'Originally sent in <a href="%{channelLink}">%{channel}</a>'
copy_success: "Chat quote copied to clipboard"
default_thread_title: "Thread"
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"
channel_threading_label: "Threading"
channel_threading_description: "When threading is enabled, replies to a chat message will create a separate conversation, which will exist alongside the main channel."
auto_join_users_label: "Automatically add users"
auto_join_users_info: "Check hourly which users have been active in the last 3 months. Add them to this channel if they have access to the %{category} category."
auto_join_users_info_no_category: "Check hourly which users have been active in the last 3 months. Add them to this channel if they have access to the selected category."
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?"
notification_level: "Send push notifications"
follow: "Join"
followed: "Joined"
mute: "Mute channel"
threading_enabled: "Enabled"
threading_disabled: "Disabled"
muted_on: "On"
muted_off: "Off"
notifications: "Notifications"
preview: "Preview"
save: "Save"
saved: "Saved"
unfollow: "Leave"
admin_title: "Admin"
settings_title: "Settings"
info_title: "Channel info"
category_label: "Category"
history_label: "History"
members_label: "Members"
admin:
title: "Chat"
export_messages:
title: "Export chat messages"
description: "This exports all messages from all channels."
create_export: "Create export"
confirm_export: "This exports all messages from all channels and sends the result to you in a personal message. Are you sure you want to export?"
export_has_started: "The export has started. You'll receive a PM when it's ready."
my_threads:
title: My Threads
aria_label: "Switch to my threads list"
direct_messages:
title: "DMs"
aria_label: "Switch to direct messages"
new: "Create a personal chat"
create: "Go"
leave: "Leave this personal chat"
close: "Close this personal chat"
cannot_create: "Sorry, you cannot send direct messages."
channel_list:
title: "Channels"
aria_label: "Switch to channels list"
incoming_webhooks:
back: "Back"
channel_placeholder: "Select a channel"
channel: "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."
saved: "Webhook changes saved"
created: "Webhook created"
selection:
cancel: "Cancel"
quote_selection: "Quote in Topic"
copy: "Copy"
delete: "Delete (%{selectionCount}/%{totalCount})"
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:
indefinitely_short: "indefinitely"
indefinitely_long: "Chat settings have been set to retain channel messages indefinitely."
short:
one: "%{count} day"
other: "%{count} days"
long:
one: "Chat settings have been set to retain channel messages for %{count} day."
other: "Chat settings have been set to retain channel messages for %{count} 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>."
illegal: "This post requires staff attention because I believe it contains content that is illegal."
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"
DEV: Refactoring chat message actions for ChatMessage component usage in thread panel (#20756) This commit is a major overhaul of how chat message actions work, to make it so they are reusable between the main chat channel and the chat thread panel, as well as many improvements and fixes for the thread panel. There are now several new classes and concepts: * ChatMessageInteractor - This is initialized from the ChatMessage, ChatMessageActionsDesktop, and ChatMessageActionsMobile components. This handles permissions about what actions can be done for each message based on the context (thread or channel), handles the actions themselves (e.g. copyLink, delete, edit), and interacts with the pane of the current context to modify the UI * ChatChannelThreadPane and ChatChannelPane services - This represents the UI context which contains the messages, and are mostly used for state management for things like message selection. * ChatChannelThreadComposer and ChatChannelComposer - This handles interaction between the pane, the message actions, and the composer, dealing with reply and edit message state. * Scrolling logic for the messages has now been moved to a helper so it can be shared between the main channel pane and the thread pane * Various improvements with the emoji picker on both mobile and desktop. The DOM node of each component is now located outside of the message which prevents a large range of issues. The thread panel now also works in the chat drawer, and the thread messages have less actions than the main panel, since some do not make sense there (e.g. moving messages to a different channel). The thread panel title, excerpt, and message sender have also been removed for now to save space. This gives us a solid base to keep expanding on and fixing up threads. Subsequent PRs will make the thread MessageBus subscriptions work and disable echo mode for the initial release of threads. Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2023-04-06 21:19:52 +08:00
thread:
title: "Title"
view_thread: View thread
replies:
one: "%{count} reply"
other: "%{count} replies"
DEV: Refactoring chat message actions for ChatMessage component usage in thread panel (#20756) This commit is a major overhaul of how chat message actions work, to make it so they are reusable between the main chat channel and the chat thread panel, as well as many improvements and fixes for the thread panel. There are now several new classes and concepts: * ChatMessageInteractor - This is initialized from the ChatMessage, ChatMessageActionsDesktop, and ChatMessageActionsMobile components. This handles permissions about what actions can be done for each message based on the context (thread or channel), handles the actions themselves (e.g. copyLink, delete, edit), and interacts with the pane of the current context to modify the UI * ChatChannelThreadPane and ChatChannelPane services - This represents the UI context which contains the messages, and are mostly used for state management for things like message selection. * ChatChannelThreadComposer and ChatChannelComposer - This handles interaction between the pane, the message actions, and the composer, dealing with reply and edit message state. * Scrolling logic for the messages has now been moved to a helper so it can be shared between the main channel pane and the thread pane * Various improvements with the emoji picker on both mobile and desktop. The DOM node of each component is now located outside of the message which prevents a large range of issues. The thread panel now also works in the chat drawer, and the thread messages have less actions than the main panel, since some do not make sense there (e.g. moving messages to a different channel). The thread panel title, excerpt, and message sender have also been removed for now to save space. This gives us a solid base to keep expanding on and fixing up threads. Subsequent PRs will make the thread MessageBus subscriptions work and disable echo mode for the initial release of threads. Co-authored-by: Joffrey JAFFEUX <j.jaffeux@gmail.com>
2023-04-06 21:19:52 +08:00
label: Thread
UX: improves composer and thread panel (#21210) This pull request is a full overhaul of the chat-composer and contains various improvements to the thread panel. They have been grouped in the same PR as lots of improvements/fixes to the thread panel needed an improved composer. This is meant as a first step. ### New features included in this PR - A resizable side panel - A clear dropzone area for uploads - A simplified design for image uploads, this is only a first step towards more redesign of this area in the future ### Notable fixes in this PR - Correct placeholder in thread panel - Allows to edit the last message of a thread with arrow up - Correctly focus composer when replying to a message - The reply indicator is added instantly in the channel when starting a thread - Prevents a large variety of bug where the composer could bug and prevent sending message or would clear your input while it has content ### Technical notes To achieve this PR, three important changes have been made: - `<ChatComposer>` has been fully rewritten and is now a glimmer component - The chat composer now takes a `ChatMessage` as input which can directly be used in other operations, it simplifies a lot of logic as we are always working a with a `ChatMessage` - `TextareaInteractor` has been created to wrap the existing `TextareaTextManipulation` mixin, it will make future migrations easier and allow us to have a less polluted `<ChatComposer>` Note ".chat-live-pane" has been renamed ".chat-channel" Design for upload dropzone is from @chapoi
2023-04-25 16:23:03 +08:00
close: "Close Thread"
original_message:
started_by: "Started by"
settings: "Settings"
last_reply: "last reply"
notifications:
regular:
title: "Normal"
description: "Get notified when someone mentions you in this thread."
tracking:
title: "Tracking"
description: "Get notified when someone mentions you in this thread and see a count of new replies in the thread list."
watching:
title: "Watching"
description: "Get notified about all replies in this thread and see a count of new replies in the thread list."
participants_other_count:
one: "+%{count}"
other: "+%{count}"
thread_title_toast:
title: "Set a thread title"
message: "Help others discover this conversation."
dismiss_action: "Don't show again"
primary_action: "Set title"
thread_title_modal:
title: "Set thread title"
input_placeholder: "Tell others what this conversation is about..."
discourse_ai:
title: "Generate thread titles automatically"
description: "Check out %{url} to learn more about this and other enhancements to your Discourse experience."
threads:
open: "Open Thread"
list: "Threads"
none: "You are not participating in any threads in this channel."
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}"
chat_watched_thread_label:
one: "%{username} and %{username2}"
other: "%{username} and %{count} others"
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}"'
# %{identifier} is either @here or @all
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"
# %{identifier} is either @here or @all
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"
chat_watched_thread: "Chat watched thread"
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:
chat_reviewable_message:
title: "Flagged Chat Message"
reviewable_chat_message:
title: "Flagged chat message"
noun: "chat message"
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"
mark_all_channels_read: "%{shortcut} Mark all channels read"
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 dont 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 havent 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"
styleguide:
sections:
chat:
title: Chat
sidebar:
panels:
chat:
label: "Chat"