Fix i18n issues reported on Crowdin (#10925)

* Pluralize `discourse_narrative_bot.dice.not_enough_dice`
  The number of dice requires a pluralized string.
  Fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/278/en-ar#51346

* Always use "two-factor" instead of "second factor" or "two factor"
  Using different terms for the same thing is quite confusing.
  Fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-nl#40096

* Remove whitespace before ellipsis for consistency
  Fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-nl#53978

* Remove unused strings from locale file

* Correct grammar in `site_settings.review_media_unless_trust_level`
  Fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/248/en-nl#54018

* Correct grammar in `reviewables.reasons.contains_media`
  Fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/248/en-nl#54020

* Correct grammar in user notifications
  It also adds a link to the /about page in order to give the user a clue who the site admins are.
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/248/en-nl#54084

* Use "log in" instead of "login" when it's a verb
  This fixes multiple issues:
  * https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-nl#40940
  * https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/248/en-nl#47858
  * https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/248/en-nl#49458

* Replace "Github" with "GitHub"

* Remove "discourse.org" from title of 503 error page

* Replace weirdly formatted multi line string

* Pluralize `js.composer.group_mentioned_limit`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#41158

* Remove unused string and pluralize `js.topic.feature_topic.confirm_pin_globally`
  This kinda fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#42114 as `js.topic.feature_topic.confirm_pin` wasn't used anymore.

* Pluralize `js.user.second_factor_backup.remaining_codes`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#40054

* Pluralize `js.composer.error.tags_missing`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#41184

* Pluralize `js.post.errors.too_many_dragged_and_dropped_files`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#42408

* Remove unused `js.posts_long` and `js.likes_long`
  This fixes the following issues in an unexpected way:
  * https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#42974
  * https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#42994

* Pluralize `js.bootstrap_mode_enabled`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#38726

* Remove unused `long_form` from `post_action_types`
  This more or less fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/248/en-ar#47158

* Pluralize `js.presence.replying` and `js.presence.replying`
  This fixes the following issues:
  * https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/282/en-ar#51588
  * https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/282/en-ar#51590

* Pluralize `js.user.second_factor_backup.manage`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#40044

* Stop using concatenated strings for "Recently Used Devices"
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#40308

* Pluralize `js.category_row.topic_count`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#41056

* Pluralize `js.select_kit.invalid_selection_length`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#41072

* Pluralize `js.notifications.membership_request_consolidated`
  This fixes https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-ar#41416
This commit is contained in:
Gerhard Schlager 2020-10-16 15:24:58 +02:00 committed by GitHub
parent d5ef6188ed
commit 7adf71a203
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 124 additions and 118 deletions

View File

@ -651,7 +651,9 @@ export default Component.extend({
// Limit the number of simultaneous uploads
if (max > 0 && data.files.length > max) {
bootbox.alert(
I18n.t("post.errors.too_many_dragged_and_dropped_files", { max })
I18n.t("post.errors.too_many_dragged_and_dropped_files", {
count: max,
})
);
return false;
}

View File

@ -120,7 +120,7 @@ export default Component.extend({
notices.push(
Notice.create({
text: I18n.t("bootstrap_mode_enabled", {
min_users: this.siteSettings.bootstrap_mode_min_users,
count: this.siteSettings.bootstrap_mode_min_users,
}),
id: "alert-bootstrap-mode",
})

View File

@ -584,7 +584,7 @@ export default Controller.extend({
if (group.max_mentions < group.user_count) {
body = I18n.t("composer.group_mentioned_limit", {
group: `@${group.name}`,
max: group.max_mentions,
count: group.max_mentions,
group_link: groupLink,
});
} else if (group.user_count > 0) {

View File

@ -133,17 +133,20 @@ export default Controller.extend(ModalFunctionality, {
this.send("closeModal");
},
_confirmBeforePinning(count, name, action) {
_confirmBeforePinningGlobally() {
const count = this.pinnedGloballyCount;
if (count < 4) {
this._forwardAction(action);
this._forwardAction("pinGlobally");
} else {
this.send("hideModal");
bootbox.confirm(
I18n.t("topic.feature_topic.confirm_" + name, { count }),
I18n.t("topic.feature_topic.confirm_pin_globally", { count }),
I18n.t("no_value"),
I18n.t("yes_value"),
(confirmed) =>
confirmed ? this._forwardAction(action) : this.send("reopenModal")
confirmed
? this._forwardAction("pinGlobally")
: this.send("reopenModal")
);
}
},
@ -161,11 +164,7 @@ export default Controller.extend(ModalFunctionality, {
if (this.pinGloballyDisabled) {
this.set("pinGloballyTipShownAt", Date.now());
} else {
this._confirmBeforePinning(
this.pinnedGloballyCount,
"pin_globally",
"pinGlobally"
);
this._confirmBeforePinningGlobally();
}
},

View File

@ -73,7 +73,7 @@ export default Mixin.create({
if (maxFiles > 0 && data.files.length > maxFiles) {
bootbox.alert(
I18n.t("post.errors.too_many_dragged_and_dropped_files", {
max: maxFiles,
count: maxFiles,
})
);
return false;

View File

@ -221,14 +221,13 @@
showToken=(action "showToken")}}
{{/unless}}
<div class="auth-token-first">
<span class="auth-token-device">{{token.device}}</span> &ndash; <span title="{{i18n "user.auth_tokens.ip"}}: {{token.client_ip}}">{{token.location}}</span>
{{html-safe (i18n "user.auth_tokens.device_location" device=token.device ip=token.client_ip location=token.location)}}
</div>
<div class="auth-token-second">
{{token.browser}} |
{{#if token.is_active}}
<span class="active">{{i18n "user.auth_tokens.active"}}</span>
{{html-safe (i18n "user.auth_tokens.browser_active" browser=token.browser)}}
{{else}}
{{format-date token.seen_at}}
{{html-safe (i18n "user.auth_tokens.browser_last_seen" browser=token.browser date=(format-date token.seen_at))}}
{{/if}}
</div>
</div>

View File

@ -420,7 +420,6 @@ export default {
name: "Bookmark",
description: "Bookmark this post",
short_description: "Bookmark this post",
long_form: "bookmarked this post",
is_flag: false,
icon: null,
id: 1,
@ -431,7 +430,6 @@ export default {
name: "Like",
description: "Like this post",
short_description: "Like this post",
long_form: "liked this",
is_flag: false,
icon: "heart",
id: 2,
@ -443,7 +441,6 @@ export default {
description:
"This post is radically off-topic in the current topic, and should probably be moved. If this is a topic, perhaps it does not belong here.",
short_description: "Not relevant to the discussion",
long_form: "flagged this as off-topic",
is_flag: true,
icon: null,
id: 3,
@ -456,7 +453,6 @@ export default {
'This post contains content that a reasonable person would consider offensive, abusive, or a violation of <a href="/guidelines">our community guidelines</a>.',
short_description:
'A violation of <a href="/guidelines">our community guidelines</a>',
long_form: "flagged this as inappropriate",
is_flag: true,
icon: null,
id: 4,
@ -467,7 +463,6 @@ export default {
name: "Vote",
description: "Vote for this post",
short_description: "Vote for this post",
long_form: "voted for this post",
is_flag: false,
icon: null,
id: 5,
@ -479,7 +474,6 @@ export default {
description:
"This post is an advertisement. It is not useful or relevant to the current topic, but promotional in nature.",
short_description: "This is an advertisement",
long_form: "flagged this as spam",
is_flag: true,
icon: null,
id: 8,
@ -492,7 +486,6 @@ export default {
"This post contains something I want to talk to this person directly and privately about. Does not cast a flag.",
short_description:
"I want to talk to this person directly and privately about their post.",
long_form: "notified user",
is_flag: true,
icon: null,
id: 6,
@ -504,7 +497,6 @@ export default {
description:
'This post requires general moderator attention based on the <a href="/guidelines">guidelines</a>, <a href="/tos">TOS</a>, or for another reason not listed above.',
short_description: "Requires staff attention for another reason",
long_form: "notified moderators",
is_flag: true,
icon: null,
id: 7,
@ -517,7 +509,6 @@ export default {
name: "Inappropriate",
description:
'This topic contains content that a reasonable person would consider offensive, abusive, or a violation of <a href="/guidelines">our community guidelines</a>.',
long_form: "flagged this as inappropriate",
is_flag: true,
icon: null,
id: 4,
@ -528,7 +519,6 @@ export default {
name: "Spam",
description:
"This topic is an advertisement. It is not useful or relevant to this site, but promotional in nature.",
long_form: "flagged this as spam",
is_flag: true,
icon: null,
id: 8,
@ -539,7 +529,6 @@ export default {
name: "Notify moderators",
description:
'This topic requires general moderator attention based on the <a href="/guidelines">guidelines</a>, <a href="/tos">TOS</a>, or for another reason not listed above.',
long_form: "notified moderators",
is_flag: true,
icon: null,
id: 7,

View File

@ -8,7 +8,6 @@ class PostActionTypeSerializer < ApplicationSerializer
:name,
:description,
:short_description,
:long_form,
:is_flag,
:is_custom_flag
)
@ -27,10 +26,6 @@ class PostActionTypeSerializer < ApplicationSerializer
i18n('title')
end
def long_form
i18n('long_form')
end
def description
i18n('description', tos_url: tos_path, base_path: Discourse.base_path)
end

View File

@ -178,7 +178,9 @@ en:
wizard_required: "Welcome to your new Discourse! Lets get started with <a href='%{url}' data-auto-route='true'>the setup wizard</a> ✨"
emails_are_disabled: "All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent."
bootstrap_mode_enabled: "To make launching your new site easier, you are in bootstrap mode. All new users will be granted trust level 1 and have daily email summary emails enabled. This will be automatically turned off when %{min_users} users have joined."
bootstrap_mode_enabled:
one: "To make launching your new site easier, you are in bootstrap mode. All new users will be granted trust level 1 and have daily email summary emails enabled. This will be automatically turned off when %{count} user has joined."
other: "To make launching your new site easier, you are in bootstrap mode. All new users will be granted trust level 1 and have daily email summary emails enabled. This will be automatically turned off when %{count} users have joined."
bootstrap_mode_disabled: "Bootstrap mode will be disabled within 24 hours."
themes:
@ -838,7 +840,7 @@ en:
topic_stat_sentence_month:
one: "%{count} new topic in the past month."
other: "%{count} new topics in the past month."
n_more: "Categories (%{count} more) ..."
n_more: "Categories (%{count} more)..."
ip_lookup:
title: IP Address Lookup
@ -963,7 +965,7 @@ en:
suspended_notice: "This user is suspended until %{date}."
suspended_permanently: "This user is suspended."
suspended_reason: "Reason: "
github_profile: "Github"
github_profile: "GitHub"
email_activity_summary: "Activity Summary"
mailing_list_mode:
label: "Mailing list mode"
@ -1067,26 +1069,30 @@ en:
choose: "Choose a password"
second_factor_backup:
title: "Two Factor Backup Codes"
title: "Two-Factor Backup Codes"
regenerate: "Regenerate"
disable: "Disable"
enable: "Enable"
enable_long: "Enable backup codes"
manage: "Manage backup codes. You have <strong>%{count}</strong> backup codes remaining."
manage:
one: "Manage backup codes. You have <strong>%{count}</strong> backup code remaining."
other: "Manage backup codes. You have <strong>%{count}</strong> backup codes remaining."
copy_to_clipboard: "Copy to Clipboard"
copy_to_clipboard_error: "Error copying data to Clipboard"
copied_to_clipboard: "Copied to Clipboard"
download_backup_codes: "Download backup codes"
remaining_codes: "You have <strong>%{count}</strong> backup codes remaining."
remaining_codes:
one: "You have <strong>%{count}</strong> backup code remaining."
other: "You have <strong>%{count}</strong> backup codes remaining."
use: "Use a backup code"
enable_prerequisites: "You must enable a primary second factor before generating backup codes."
enable_prerequisites: "You must enable a primary two-factor method before generating backup codes."
codes:
title: "Backup Codes Generated"
description: "Each of these backup codes can only be used once. Keep them somewhere safe but accessible."
second_factor:
title: "Two Factor Authentication"
enable: "Manage Two Factor Authentication"
title: "Two-Factor Authentication"
enable: "Manage Two-Factor Authentication"
disable_all: "Disable All"
forgot_password: "Forgot password?"
confirm_password_description: "Please confirm your password to continue"
@ -1100,16 +1106,16 @@ en:
short_description: |
Protect your account with one-time use security codes.
extended_description: |
Two factor authentication adds extra security to your account by requiring a one-time token in addition to your password. Tokens can be generated on <a href="https://www.google.com/search?q=authenticator+apps+for+android" target='_blank'>Android</a> and <a href="https://www.google.com/search?q=authenticator+apps+for+ios">iOS</a> devices.
oauth_enabled_warning: "Please note that social logins will be disabled once two factor authentication has been enabled on your account."
Two-factor authentication adds extra security to your account by requiring a one-time token in addition to your password. Tokens can be generated on <a href="https://www.google.com/search?q=authenticator+apps+for+android" target='_blank'>Android</a> and <a href="https://www.google.com/search?q=authenticator+apps+for+ios">iOS</a> devices.
oauth_enabled_warning: "Please note that social logins will be disabled once two-factor authentication has been enabled on your account."
use: "Use Authenticator app"
enforced_notice: "You are required to enable two factor authentication before accessing this site."
enforced_notice: "You are required to enable two-factor authentication before accessing this site."
disable: "Disable"
disable_confirm: "Are you sure you want to disable all second factor methods?"
disable_confirm: "Are you sure you want to disable all two-factor methods?"
save: "Save"
edit: "Edit"
edit_title: "Edit Second Factor"
edit_description: "Second Factor Name"
edit_title: "Edit Authenticator"
edit_description: "Authenticator Name"
enable_security_key_description: |
When you have your <a href="https://www.google.com/search?q=hardware+security+key" target="_blank">hardware security key</a> prepared, press the Register button below.
totp:
@ -1247,10 +1253,8 @@ en:
auth_tokens:
title: "Recently Used Devices"
ip: "IP"
details: "Details"
log_out_all: "Log out all"
active: "active now"
not_you: "Not you?"
show_all: "Show all (%{count})"
show_few: "Show fewer"
@ -1259,6 +1263,9 @@ en:
browser_and_device: "%{browser} on %{device}"
secure_account: "Secure my Account"
latest_post: "You last posted…"
device_location: '<span class="auth-token-device">%{device}</span> &ndash; <span title="IP: %{ip}">%{location}</span>'
browser_active: '%{browser} | <span class="active">active now</span>'
browser_last_seen: "%{browser} | %{date}"
last_posted: "Last Post"
last_emailed: "Last Emailed"
@ -1587,10 +1594,10 @@ en:
private_message_info:
title: "Message"
invite: "Invite Others ..."
edit: "Add or Remove ..."
remove: "Remove ..."
add: "Add ..."
invite: "Invite Others..."
edit: "Add or Remove..."
remove: "Remove..."
add: "Add..."
leave_message: "Do you really want to leave this message?"
remove_allowed_user: "Do you really want to remove %{name} from this message?"
remove_allowed_group: "Do you really want to remove %{name} from this message?"
@ -1642,10 +1649,10 @@ en:
title: "Log In"
username: "User"
password: "Password"
second_factor_title: "Two Factor Authentication"
second_factor_title: "Two-Factor Authentication"
second_factor_description: "Please enter the authentication code from your app:"
second_factor_backup: "Log in using a backup code"
second_factor_backup_title: "Two Factor Backup"
second_factor_backup_title: "Two-Factor Backup"
second_factor_backup_description: "Please enter one of your backup codes:"
second_factor: "Log in using Authenticator app"
security_key_description: "When you have your physical security key prepared press the Authenticate with Security Key button below."
@ -1669,10 +1676,10 @@ en:
awaiting_approval: "Your account has not been approved by a staff member yet. You will be sent an email when it is approved."
requires_invite: "Sorry, access to this forum is by invite only."
not_activated: "You can't log in yet. We previously sent an activation email to you at <b>%{sentTo}</b>. Please follow the instructions in that email to activate your account."
not_allowed_from_ip_address: "You can't login from that IP address."
not_allowed_from_ip_address: "You can't log in from that IP address."
admin_not_allowed_from_ip_address: "You can't log in as admin from that IP address."
resend_activation_email: "Click here to send the activation email again."
omniauth_disallow_totp: "Your account has two factor authentication enabled. Please log in with your password."
omniauth_disallow_totp: "Your account has two-factor authentication enabled. Please log in with your password."
resend_title: "Resend Activation Email"
change_email: "Change Email Address"
@ -1749,7 +1756,9 @@ en:
loading: Loading...
category_row:
topic_count: "%{count} topics in this category"
topic_count:
one: "%{count} topic in this category"
other: "%{count} topics in this category"
select_kit:
default_header_text: Select...
@ -1763,7 +1772,9 @@ en:
min_content_not_reached:
one: "Select at least %{count} item."
other: "Select at least %{count} items."
invalid_selection_length: "Selection must be at least %{count} characters."
invalid_selection_length:
one: "Selection must be at least %{count} character."
other: "Selection must be at least %{count} characters."
components:
categories_admin_dropdown:
title: "Manage categories"
@ -1819,7 +1830,9 @@ en:
drafts_offline: "drafts offline"
edit_conflict: "edit conflict"
group_mentioned_limit: "<b>Warning!</b> You mentioned <a href='%{group_link}'>%{group}</a>, however this group has more members than the administrator configured mention limit of %{max} users. Nobody will be notified."
group_mentioned_limit:
one: "<b>Warning!</b> You mentioned <a href='%{group_link}'>%{group}</a>, however this group has more members than the administrator configured mention limit of %{count} user. Nobody will be notified."
other: "<b>Warning!</b> You mentioned <a href='%{group_link}'>%{group}</a>, however this group has more members than the administrator configured mention limit of %{count} users. Nobody will be notified."
group_mentioned:
one: "By mentioning %{group}, you are about to notify <a href='%{group_link}'>%{count} person</a> are you sure?"
other: "By mentioning %{group}, you are about to notify <a href='%{group_link}'>%{count} people</a> are you sure?"
@ -1837,7 +1850,9 @@ en:
post_length: "Post must be at least %{min} characters"
try_like: "Have you tried the %{heart} button?"
category_missing: "You must choose a category"
tags_missing: "You must choose at least %{count} tags"
tags_missing:
one: "You must choose at least %{count} tag"
other: "You must choose at least %{count} tags"
topic_template_not_modified: "Please add details and specifics to your topic by editing the topic template."
save_edit: "Save Edit"
@ -1987,7 +2002,9 @@ en:
topic_reminder: "<span>%{username}</span> %{description}"
watching_first_post: "<span>New Topic</span> %{description}"
membership_request_accepted: "Membership accepted in '%{group_name}'"
membership_request_consolidated: "%{count} open membership requests for '%{group_name}'"
membership_request_consolidated:
one: "%{count} open membership request for '%{group_name}'"
other: "%{count} open membership requests for '%{group_name}'"
reaction: "<span>%{username}</span> %{description}"
reaction_2: "<span>%{username}, %{username2}</span> %{description}"
votes_released: "%{description} - completed"
@ -2067,7 +2084,6 @@ en:
full_page_title: "search topics or posts"
no_results: "No results found."
no_more_results: "No more results found."
searching: "Searching ..."
post_format: "#%{post_number} by %{username}"
results_page: "Search results for '%{term}'"
more_results: "There are more results. Please narrow your search criteria."
@ -2076,7 +2092,6 @@ en:
or_search_google: "Or try searching with Google instead:"
search_google: "Try searching with Google instead:"
search_google_button: "Google"
search_google_title: "Search this site"
context:
user: "Search posts by @%{username}"
@ -2479,7 +2494,6 @@ en:
feature_topic:
title: "Feature this topic"
pin: "Make this topic appear at the top of the %{categoryLink} category until"
confirm_pin: "You already have %{count} pinned topics. Too many pinned topics may be a burden for new and anonymous users. Are you sure you want to pin another topic in this category?"
unpin: "Remove this topic from the top of the %{categoryLink} category."
unpin_until: "Remove this topic from the top of the %{categoryLink} category or wait until <strong>%{until}</strong>."
pin_note: "Users can unpin the topic individually for themselves."
@ -2489,7 +2503,9 @@ en:
one: "Topics currently pinned in %{categoryLink}: <strong class='badge badge-notification unread'>%{count}</strong>"
other: "Topics currently pinned in %{categoryLink}: <strong class='badge badge-notification unread'>%{count}</strong>"
pin_globally: "Make this topic appear at the top of all topic lists until"
confirm_pin_globally: "You already have %{count} globally pinned topics. Too many pinned topics may be a burden for new and anonymous users. Are you sure you want to pin another topic globally?"
confirm_pin_globally:
one: "You already have %{count} globally pinned topic. Too many pinned topics may be a burden for new and anonymous users. Are you sure you want to pin another topic globally?"
other: "You already have %{count} globally pinned topics. Too many pinned topics may be a burden for new and anonymous users. Are you sure you want to pin another topic globally?"
unpin_globally: "Remove this topic from the top of all topic lists."
unpin_globally_until: "Remove this topic from the top of all topic lists or wait until <strong>%{until}</strong>."
global_pin_note: "Users can unpin the topic individually for themselves."
@ -2703,7 +2719,9 @@ en:
upload: "Sorry, there was an error uploading that file. Please try again."
file_too_large: "Sorry, that file is too big (maximum size is %{max_size_kb}kb). Why not upload your large file to a cloud sharing service, then paste the link?"
too_many_uploads: "Sorry, you can only upload one file at a time."
too_many_dragged_and_dropped_files: "Sorry, you can only upload %{max} files at a time."
too_many_dragged_and_dropped_files:
one: "Sorry, you can only upload %{count} file at a time."
other: "Sorry, you can only upload %{count} files at a time."
upload_not_authorized: "Sorry, the file you are trying to upload is not authorized (authorized extensions: %{authorized_extensions})."
image_upload_not_allowed_for_new_user: "Sorry, new users can not upload images."
attachment_upload_not_allowed_for_new_user: "Sorry, new users can not upload attachments."
@ -3083,7 +3101,6 @@ en:
title: "This topic is a personal message"
help: "This topic is a personal message"
posts: "Posts"
posts_long: "there are %{number} posts in this topic"
# keys ending with _MF use message format, see https://meta.discourse.org/t/message-format-support-for-localization/7035 for details
posts_likes_MF: |
@ -3106,7 +3123,6 @@ en:
likes_lowercase:
one: "like"
other: "likes"
likes_long: "there are %{number} likes in this topic"
users: "Users"
users_lowercase:
one: "user"
@ -3191,7 +3207,7 @@ en:
today: "Today"
other_periods: "see top:"
browser_update: 'Unfortunately, <a href="https://www.discourse.org/faq/#browser">your browser is too old to work on this site</a>. Please <a href="https://browsehappy.com">upgrade your browser</a> to view rich content, login, and reply.'
browser_update: 'Unfortunately, <a href="https://www.discourse.org/faq/#browser">your browser is too old to work on this site</a>. Please <a href="https://browsehappy.com">upgrade your browser</a> to view rich content, log in and reply.'
permission_types:
full: "Create / Reply / See"
@ -4030,7 +4046,17 @@ en:
color_definitions:
text: "Color Definitions"
title: "Enter custom color definitions (advanced users only)"
placeholder: "\r\nUse this stylesheet to add custom colors to the list of CSS custom properties.\r\n\r\nExample: \r\n\r\n:root {\r\n --mytheme-tertiary-or-quaternary: #{dark-light-choose($tertiary, $quaternary)};\r\n}\r\n\r\nPrefixing the property names is highly recommended to avoid conflicts with plugins and/or core."
placeholder: |2-
Use this stylesheet to add custom colors to the list of CSS custom properties.
Example:
:root {
--mytheme-tertiary-or-quaternary: #{dark-light-choose($tertiary, $quaternary)};
}
Prefixing the property names is highly recommended to avoid conflicts with plugins and/or core.
head_tag:
text: "</head>"
title: "HTML that will be inserted before the </head> tag"
@ -4280,7 +4306,7 @@ en:
post_edit: "post edit"
post_unlocked: "post unlocked"
check_personal_message: "check personal message"
disabled_second_factor: "disable Two Factor Authentication"
disabled_second_factor: "disable Two-Factor Authentication"
topic_published: "topic published"
post_approved: "post approved"
post_rejected: "post rejected"
@ -4515,7 +4541,7 @@ en:
private_topics_count: Private Topics
posts_read_count: Posts Read
post_count: Posts Created
second_factor_enabled: Two Factor Authentication Enabled
second_factor_enabled: Two-Factor Authentication Enabled
topics_entered: Topics Viewed
flags_given_count: Flags Given
flags_received_count: Flags Received

View File

@ -212,7 +212,7 @@ en:
not_found_template: |
<p>Your invite to <a href="%{base_url}">%{site_name}</a> has already been redeemed.</p>
<p>If you remember your password you can <a href="%{base_url}/login">Login</a>.</p>
<p>If you remember your password you can <a href="%{base_url}/login">Log In</a>.</p>
<p>Otherwise please <a href="%{base_url}/password-reset">Reset Password</a>.</p>
error_message: "There was an error accepting invite. Please contact the site's administrator."
@ -230,7 +230,7 @@ en:
error: "There was an error uploading that file. Please try again later."
invite_link:
email_taken: "This email is already in use. If you already have an account please login or reset password."
email_taken: "This email is already in use. If you already have an account please log in or reset password."
max_redemptions_limit: "should be between 2 and %{max_limit}."
topic_invite:
@ -888,43 +888,36 @@ en:
title: "Off-Topic"
description: "This post is not relevant to the current discussion as defined by the title and first post, and should probably be moved elsewhere."
short_description: "Not relevant to the discussion"
long_form: "flagged this as off-topic"
spam:
title: "Spam"
description: "This post is an advertisement, or vandalism. It is not useful or relevant to the current topic."
short_description: "This is an advertisement or vandalism"
long_form: "flagged this as spam"
email_title: '"%{title}" was flagged as spam'
email_body: "%{link}\n\n%{message}"
inappropriate:
title: "Inappropriate"
description: 'This post contains content that a reasonable person would consider offensive, abusive, or a violation of <a href="%{base_path}/guidelines">our community guidelines</a>.'
short_description: 'A violation of <a href="%{base_path}/guidelines">our community guidelines</a>'
long_form: "flagged this as inappropriate"
notify_user:
title: "Send @%{username} a message"
description: "I want to talk to this person directly and personally about their post."
short_description: "I want to talk to this person directly and personally about their post."
long_form: "messaged user"
email_title: 'Your post in "%{title}"'
email_body: "%{link}\n\n%{message}"
notify_moderators:
title: "Something Else"
description: "This post requires staff attention for another reason not listed above."
short_description: "Requires staff attention for another reason"
long_form: "flagged this for staff attention"
email_title: 'A post in "%{title}" requires staff attention'
email_body: "%{link}\n\n%{message}"
bookmark:
title: "Bookmark"
description: "Bookmark this post"
short_description: "Bookmark this post"
long_form: "bookmarked this post"
like:
title: "Like"
description: "Like this post"
short_description: "Like this post"
long_form: "liked this"
draft:
sequence_conflict_error:
@ -1391,10 +1384,10 @@ en:
sidekiq_warning: 'Sidekiq is not running. Many tasks, like sending emails, are executed asynchronously by sidekiq. Please ensure at least one sidekiq process is running. <a href="https://github.com/mperham/sidekiq" target="_blank">Learn about Sidekiq here</a>.'
queue_size_warning: "The number of queued jobs is %{queue_size}, which is high. This could indicate a problem with the Sidekiq process(es), or you may need to add more Sidekiq workers."
memory_warning: "Your server is running with less than 1 GB of total memory. At least 1 GB of memory is recommended."
google_oauth2_config_warning: 'The server is configured to allow signup and log in with Google OAuth2 (enable_google_oauth2_logins), but the client id and client secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-google-login-for-discourse/15858" target="_blank">See this guide to learn more</a>.'
facebook_config_warning: 'The server is configured to allow signup and log in with Facebook (enable_facebook_logins), but the app id and app secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-facebook-login-for-discourse/13394" target="_blank">See this guide to learn more</a>.'
twitter_config_warning: 'The server is configured to allow signup and log in with Twitter (enable_twitter_logins), but the key and secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-twitter-login-for-discourse/13395" target="_blank">See this guide to learn more</a>.'
github_config_warning: 'The server is configured to allow signup and log in with GitHub (enable_github_logins), but the client id and secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-github-login-for-discourse/13745" target="_blank">See this guide to learn more</a>.'
google_oauth2_config_warning: 'The server is configured to allow signup and login with Google OAuth2 (enable_google_oauth2_logins), but the client id and client secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-google-login-for-discourse/15858" target="_blank">See this guide to learn more</a>.'
facebook_config_warning: 'The server is configured to allow signup and login with Facebook (enable_facebook_logins), but the app id and app secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-facebook-login-for-discourse/13394" target="_blank">See this guide to learn more</a>.'
twitter_config_warning: 'The server is configured to allow signup and login with Twitter (enable_twitter_logins), but the key and secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-twitter-login-for-discourse/13395" target="_blank">See this guide to learn more</a>.'
github_config_warning: 'The server is configured to allow signup and login with GitHub (enable_github_logins), but the client id and secret values are not set. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/configuring-github-login-for-discourse/13745" target="_blank">See this guide to learn more</a>.'
s3_config_warning: 'The server is configured to upload files to S3, but at least one the following setting is not set: s3_access_key_id, s3_secret_access_key, s3_use_iam_profile, or s3_upload_bucket. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/how-to-set-up-image-uploads-to-s3/7229" target="_blank">See "How to set up image uploads to S3?" to learn more</a>.'
s3_backup_config_warning: 'The server is configured to upload backups to S3, but at least one the following setting is not set: s3_access_key_id, s3_secret_access_key, s3_use_iam_profile, or s3_backup_bucket. Go to <a href="%{base_path}/admin/site_settings">the Site Settings</a> and update the settings. <a href="https://meta.discourse.org/t/how-to-set-up-image-uploads-to-s3/7229" target="_blank">See "How to set up image uploads to S3?" to learn more</a>.'
image_magick_warning: 'The server is configured to create thumbnails of large images, but ImageMagick is not installed. Install ImageMagick using your favorite package manager or <a href="https://www.imagemagick.org/script/download.php" target="_blank">download the latest release</a>.'
@ -1503,7 +1496,7 @@ en:
email_custom_headers: "A pipe-delimited list of custom email headers"
email_subject: "Customizable subject format for standard emails. See <a href='https://meta.discourse.org/t/customize-subject-format-for-standard-emails/20801' target='_blank'>https://meta.discourse.org/t/customize-subject-format-for-standard-emails/20801</a>"
detailed_404: "Provides more details to users about why they cant access a particular topic. Note: This is less secure because users will know if a URL links to a valid topic."
enforce_second_factor: "Forces users to enable second factor authentication. Select 'all' to enforce it to all users. Select 'staff' to enforce it to staff users only."
enforce_second_factor: "Forces users to enable two-factor authentication. Select 'all' to enforce it to all users. Select 'staff' to enforce it to staff users only."
force_https: "Force your site to use HTTPS only. WARNING: do NOT enable this until you verify HTTPS is fully set up and working absolutely everywhere! Did you check your CDN, all social logins, and any external logos / dependencies to make sure they are all HTTPS compatible, too?"
same_site_cookies: "Use same site cookies, they eliminate all vectors Cross Site Request Forgery on supported browsers (Lax or Strict). Warning: Strict will only work on sites that force login and use SSO."
summary_score_threshold: "The minimum score required for a post to be included in 'Summarize This Topic'"
@ -1672,14 +1665,14 @@ en:
facebook_app_id: "App id for Facebook authentication and sharing, registered at <a href='https://developers.facebook.com/apps/' target='_blank'>https://developers.facebook.com/apps</a>"
facebook_app_secret: "App secret for Facebook authentication, registered at <a href='https://developers.facebook.com/apps/' target='_blank'>https://developers.facebook.com/apps</a>"
enable_github_logins: "Enable Github authentication, requires github_client_id and github_client_secret. See <a href='https://meta.discourse.org/t/13745' target='_blank'>Configuring GitHub login for Discourse</a>."
github_client_id: "Client id for Github authentication, registered at <a href='https://github.com/settings/developers/' target='_blank'>https://github.com/settings/developers</a>"
github_client_secret: "Client secret for Github authentication, registered at <a href='https://github.com/settings/developers/' target='_blank'>https://github.com/settings/developers</a>"
enable_github_logins: "Enable GitHub authentication, requires github_client_id and github_client_secret. See <a href='https://meta.discourse.org/t/13745' target='_blank'>Configuring GitHub login for Discourse</a>."
github_client_id: "Client id for GitHub authentication, registered at <a href='https://github.com/settings/developers/' target='_blank'>https://github.com/settings/developers</a>"
github_client_secret: "Client secret for GitHub authentication, registered at <a href='https://github.com/settings/developers/' target='_blank'>https://github.com/settings/developers</a>"
enable_discord_logins: "Allow users to authenticate using Discord?"
discord_client_id: 'Discord Client ID (need one? visit <a href="https://discordapp.com/developers/applications/me">the Discord developer portal</a>)'
discord_secret: "Discord Secret Key"
discord_trusted_guilds: 'Only allow members of these Discord guilds to login via Discord. Use the numeric ID for the guild. For more information, check the instructions <a href="https://meta.discourse.org/t/configuring-discord-login-for-discourse/127129">here</a>. Leave blank to allow any guild.'
discord_trusted_guilds: 'Only allow members of these Discord guilds to log in via Discord. Use the numeric ID for the guild. For more information, check the instructions <a href="https://meta.discourse.org/t/configuring-discord-login-for-discourse/127129">here</a>. Leave blank to allow any guild.'
enable_backups: "Allow administrators to create backups of the forum"
allow_restore: "Allow restore, which can replace ALL site data! Leave false unless you plan to restore a backup"
@ -2152,7 +2145,7 @@ en:
new_user_notice_tl: "Minimum trust level required to see new user post notices."
returning_user_notice_tl: "Minimum trust level required to see returning user post notices."
returning_users_days: "How many days should pass before a user is considered to be returning."
review_media_unless_trust_level: "Staff will review posts of users with lower trust levels if it contains embedded media."
review_media_unless_trust_level: "Staff will review posts of users with lower trust levels if they contain embedded media."
enable_page_publishing: "Allow staff members to publish topics to new URLs with their own styling."
show_published_pages_login_required: "Anonymous users can see published pages, even when login is required."
@ -2413,8 +2406,8 @@ en:
auto_deleted_by_timer: "Automatically deleted by timer."
login:
invalid_second_factor_method: "The selected second factor method is invalid."
not_enabled_second_factor_method: "The selected second factor method is not enabled for your account."
invalid_second_factor_method: "The selected two-factor method is invalid."
not_enabled_second_factor_method: "The selected two-factor method is not enabled for your account."
security_key_description: "When you have your physical security key prepared press the Authenticate with Security Key button below."
security_key_alternative: "Try another way"
security_key_authenticate: "Authenticate with Security Key"
@ -2442,7 +2435,7 @@ en:
csrf_detected: "Authorization timed out, or you have switched browsers. Please try again."
request_error: "An error occurred when starting authorization. Please try again."
invalid_iat: "Unable to verify authorization token due to server clock differences. Please try again."
omniauth_error_unknown: "Something went wrong processing your log in, please try again."
omniauth_error_unknown: "Something went wrong processing your login, please try again."
omniauth_confirm_title: "Log in using %{provider}"
omniauth_confirm_button: "Continue"
authenticator_error_no_valid_email: "No email addresses associated with %{account} are allowed. You may need to configure your account with a different email address."
@ -2455,10 +2448,10 @@ en:
auth_complete: "Authentication is complete."
click_to_continue: "Click here to continue."
already_logged_in: "Oops, looks like you are attempting to accept an invitation for another user. If you are not %{current_user}, please log out and try again."
second_factor_title: "Two Factor Authentication"
second_factor_title: "Two-Factor Authentication"
second_factor_description: "Please enter the required authentication code from your app:"
second_factor_backup_description: "Please enter one of your backup codes:"
second_factor_backup_title: "Two Factor Backup Code"
second_factor_backup_title: "Two-Factor Backup Code"
invalid_second_factor_code: "Invalid authentication code. Each code can only be used once."
invalid_security_key: "Invalid security key."
missing_second_factor_name: "Please provide a name."
@ -3603,12 +3596,12 @@ en:
If you have any questions, [contact our friendly staff](%{base_url}/about).
account_second_factor_disabled:
title: "Two Factor Authentication disabled"
subject_template: "[%{email_prefix}] Two Factor Authentication disabled"
title: "Two-Factor Authentication disabled"
subject_template: "[%{email_prefix}] Two-Factor Authentication disabled"
text_body_template: |
Two factor authentication has been disabled on your account at %{site_name}. You can now log in with only your password; an additional authentication code is no longer required.
Two-factor authentication has been disabled on your account at %{site_name}. You can now log in with only your password; an additional authentication code is no longer required.
If you did not choose to disable two factor authentication, someone may have compromised your account.
If you did not choose to disable two-factor authentication, someone may have compromised your account.
If you have any questions, [contact our friendly staff](%{base_url}/about).
@ -3691,11 +3684,11 @@ en:
title: "Admin Login"
subject_template: "[%{email_prefix}] Login"
text_body_template: |
Somebody asked to login to your account on [%{site_name}](%{base_url}).
Somebody asked to log in to your account on [%{site_name}](%{base_url}).
If you did not make this request, you can safely ignore this email.
Click the following link to login:
Click the following link to log in:
%{base_url}/session/email-login/%{email_token}
account_created:
@ -3715,7 +3708,7 @@ en:
%{base_url}/u/confirm-new-email/%{email_token}
If you did not request this change, please contact %{site_name} admin.
If you did not request this change, please contact a [site admin](%{base_url}/about).
confirm_new_email_via_admin:
title: "Confirm New Email"
@ -3725,7 +3718,7 @@ en:
%{base_url}/u/confirm-new-email/%{email_token}
This email change was requested by a site admin. If you did not request this change, please contact %{site_name} admin.
This email change was requested by a site admin. If you did not request this change, please contact a [site admin](%{base_url}/about).
confirm_old_email:
title: "Confirm Old Email"
@ -4842,7 +4835,7 @@ en:
email_auth_res_enqueue: "This email failed a DMARC check, it most likely isn't from whom it seems to be from. Check the raw email headers for more information."
email_spam: "This email was flagged as spam by the header defined in `email_in_spam_header`."
suspect_user: "This new user entered profile information without reading any topics or posts, which strongly suggests they may be a spammer. See `approve_suspect_users`."
contains_media: "This posts includes embedded media. See `review_media_unless_trust_level`."
contains_media: "This post includes embedded media. See `review_media_unless_trust_level`."
actions:
agree:

View File

@ -44,8 +44,9 @@ en:
trigger: "roll"
invalid: |-
Im sorry, it is mathematically impossible to roll that combination of dice. :confounded:
not_enough_dice: |-
I only have %{num_of_dice} dice. [Shameful](http://www.therobotsvoice.com/2009/04/the_10_most_shameful_rpg_dice.php), I know!
not_enough_dice:
one: "I only have %{count} die. [Shameful](https://www.toplessrobot.com/2009/04/the_10_most_shameful_rpg_dice.php), I know!"
other: "I only have %{count} dice. [Shameful](https://www.toplessrobot.com/2009/04/the_10_most_shameful_rpg_dice.php), I know!"
out_of_range: |-
Did you know that [the maximum number of sides](https://www.wired.com/2016/05/mathematical-challenge-of-designing-the-worlds-most-complex-120-sided-dice) for a mathematically fair die is 120?
results: |-

View File

@ -13,9 +13,7 @@ module DiscourseNarrativeBot
output = +''
if num_of_dice > MAXIMUM_NUM_OF_DICE
output << I18n.t('discourse_narrative_bot.dice.not_enough_dice',
num_of_dice: MAXIMUM_NUM_OF_DICE
)
output << I18n.t('discourse_narrative_bot.dice.not_enough_dice', count: MAXIMUM_NUM_OF_DICE)
output << "\n\n"
num_of_dice = MAXIMUM_NUM_OF_DICE
end

View File

@ -382,7 +382,7 @@ describe DiscourseNarrativeBot::TrackSelector do
new_post = Post.last
expected_raw = <<~RAW
#{I18n.t('discourse_narrative_bot.dice.not_enough_dice', num_of_dice: DiscourseNarrativeBot::Dice::MAXIMUM_NUM_OF_DICE)}
#{I18n.t('discourse_narrative_bot.dice.not_enough_dice', count: DiscourseNarrativeBot::Dice::MAXIMUM_NUM_OF_DICE)}
#{I18n.t('discourse_narrative_bot.dice.results', results: '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1')}
RAW

View File

@ -8,9 +8,9 @@
<span class="presence-text">
<span class="description">
{{#if isReply ~}}
{{i18n "presence.replying"}}
{{i18n "presence.replying" count=presenceUsers.length}}
{{~else~}}
{{i18n "presence.editing"}}
{{i18n "presence.editing" count=presenceUsers.length}}
{{~/if}}
</span>{{!-- (using comment to stop whitespace)
--}}</span>{{!--

View File

@ -1,8 +1,12 @@
en:
js:
presence:
replying: "replying"
editing: "editing"
replying:
one: "replying"
other: "replying"
editing:
one: "editing"
other: "editing"
replying_to_topic:
one: "replying"
other: "replying"

View File

@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>Site Is Undergoing Maintenance - Discourse.org</title>
<title>Site Is Undergoing Maintenance</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>