Version bump
This commit is contained in:
commit
7ae8733e93
2
.gitignore
vendored
2
.gitignore
vendored
@ -42,6 +42,7 @@ config/discourse.conf
|
||||
/tmp
|
||||
/logfile
|
||||
log/
|
||||
bootsnap-load-path-cache
|
||||
|
||||
# Ignore plugins except for the bundled ones.
|
||||
/plugins/*
|
||||
@ -50,6 +51,7 @@ log/
|
||||
!/plugins/poll/
|
||||
!/plugins/discourse-details/
|
||||
!/plugins/discourse-nginx-performance-report
|
||||
!/plugins/discourse-narrative-bot
|
||||
/plugins/*/auto_generated/
|
||||
|
||||
/spec/fixtures/plugins/my_plugin/auto_generated
|
||||
|
||||
14
.rubocop.yml
Normal file
14
.rubocop.yml
Normal file
@ -0,0 +1,14 @@
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.3
|
||||
|
||||
Metrics/LineLength:
|
||||
Max: 120
|
||||
|
||||
Metrics/MethodLength:
|
||||
Enabled: false
|
||||
|
||||
Style/Documentation:
|
||||
Enabled: false
|
||||
|
||||
Style/FrozenStringLiteralComment:
|
||||
Enabled: False
|
||||
12
.tx/config
12
.tx/config
@ -32,6 +32,18 @@ source_file = vendor/gems/discourse_imgur/lib/discourse_imgur/locale/server.en.y
|
||||
source_lang = en
|
||||
type = YML
|
||||
|
||||
[discourse-org.narrativeclientenyml]
|
||||
file_filter = plugins/discourse-narrative-bot/config/locales/client.<lang>.yml
|
||||
source_file = plugins/discourse-narrative-bot/config/locales/client.en.yml
|
||||
source_lang = en
|
||||
type = YML
|
||||
|
||||
[discourse-org.narrativeserverenyml]
|
||||
file_filter = plugins/discourse-narrative-bot/config/locales/server.<lang>.yml
|
||||
source_file = plugins/discourse-narrative-bot/config/locales/server.en.yml
|
||||
source_lang = en
|
||||
type = YML
|
||||
|
||||
[discourse-org.403html]
|
||||
file_filter = public/403.<lang>.html
|
||||
source_file = public/403.html
|
||||
|
||||
1
Gemfile
1
Gemfile
@ -190,4 +190,5 @@ gem 'sassc', require: false
|
||||
if ENV["IMPORT"] == "1"
|
||||
gem 'mysql2'
|
||||
gem 'redcarpet'
|
||||
gem 'sqlite3', '~> 1.3.13'
|
||||
end
|
||||
|
||||
@ -62,7 +62,7 @@ GEM
|
||||
rack (>= 0.9.0)
|
||||
binding_of_caller (0.7.2)
|
||||
debug_inspector (>= 0.0.1)
|
||||
bootsnap (0.2.14)
|
||||
bootsnap (0.3.0)
|
||||
msgpack (~> 1.0)
|
||||
builder (3.2.3)
|
||||
bullet (5.4.2)
|
||||
@ -103,7 +103,7 @@ GEM
|
||||
railties (>= 3.1)
|
||||
ember-source (2.10.0)
|
||||
erubis (2.7.0)
|
||||
excon (0.53.0)
|
||||
excon (0.55.0)
|
||||
execjs (2.7.0)
|
||||
exifr (1.2.5)
|
||||
fabrication (2.9.8)
|
||||
@ -125,7 +125,7 @@ GEM
|
||||
globalid (0.3.7)
|
||||
activesupport (>= 4.1.0)
|
||||
guess_html_encoding (0.0.11)
|
||||
hashdiff (0.3.2)
|
||||
hashdiff (0.3.4)
|
||||
hashie (3.5.5)
|
||||
highline (1.7.8)
|
||||
hiredis (0.6.1)
|
||||
@ -214,7 +214,7 @@ GEM
|
||||
omniauth-twitter (1.3.0)
|
||||
omniauth-oauth (~> 1.1)
|
||||
rack
|
||||
onebox (1.8.6)
|
||||
onebox (1.8.8)
|
||||
fast_blank (>= 1.0.0)
|
||||
htmlentities (~> 4.3)
|
||||
moneta (~> 1.0)
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
import loadScript from 'discourse/lib/load-script';
|
||||
import { observes } from 'ember-addons/ember-computed-decorators';
|
||||
|
||||
const LOAD_ASYNC = !Ember.Test;
|
||||
|
||||
export default Ember.Component.extend({
|
||||
mode: 'css',
|
||||
classNames: ['ace-wrapper'],
|
||||
@ -23,7 +25,7 @@ export default Ember.Component.extend({
|
||||
|
||||
@observes('mode')
|
||||
modeChanged() {
|
||||
if (this._editor && !this._skipContentChangeEvent) {
|
||||
if (LOAD_ASYNC && this._editor && !this._skipContentChangeEvent) {
|
||||
this._editor.getSession().setMode("ace/mode/" + this.get('mode'));
|
||||
}
|
||||
},
|
||||
@ -56,10 +58,14 @@ export default Ember.Component.extend({
|
||||
if (!this.element || this.isDestroying || this.isDestroyed) { return; }
|
||||
const editor = loadedAce.edit(this.$('.ace')[0]);
|
||||
|
||||
editor.setTheme("ace/theme/chrome");
|
||||
if (LOAD_ASYNC) {
|
||||
editor.setTheme("ace/theme/chrome");
|
||||
}
|
||||
editor.setShowPrintMargin(false);
|
||||
editor.setOptions({fontSize: "14px"});
|
||||
editor.getSession().setMode("ace/mode/" + this.get('mode'));
|
||||
if (LOAD_ASYNC) {
|
||||
editor.getSession().setMode("ace/mode/" + this.get('mode'));
|
||||
}
|
||||
editor.on('change', () => {
|
||||
this._skipContentChangeEvent = true;
|
||||
this.set('content', editor.getSession().getValue());
|
||||
|
||||
@ -5,9 +5,20 @@ import StaffActionLog from 'admin/models/staff-action-log';
|
||||
export default Ember.Controller.extend({
|
||||
loading: false,
|
||||
filters: null,
|
||||
userHistoryActions: [],
|
||||
|
||||
filtersExists: Ember.computed.gt('filterCount', 0),
|
||||
|
||||
filterActionIdChanged: function(){
|
||||
const filterActionId = this.get('filterActionId');
|
||||
if (filterActionId) {
|
||||
this._changeFilters({
|
||||
action_name: this.get('userHistoryActions').findBy("id", parseInt(filterActionId,10)).name_raw,
|
||||
action_id: filterActionId
|
||||
});
|
||||
}
|
||||
}.observes('filterActionId'),
|
||||
|
||||
actionFilter: function() {
|
||||
var name = this.get('filters.action_name');
|
||||
if (name) {
|
||||
@ -20,7 +31,6 @@ export default Ember.Controller.extend({
|
||||
showInstructions: Ember.computed.gt('model.length', 0),
|
||||
|
||||
refresh: function() {
|
||||
var self = this;
|
||||
this.set('loading', true);
|
||||
|
||||
var filters = this.get('filters'),
|
||||
@ -37,10 +47,21 @@ export default Ember.Controller.extend({
|
||||
});
|
||||
this.set('filterCount', count);
|
||||
|
||||
StaffActionLog.findAll(params).then(function(result) {
|
||||
self.set('model', result);
|
||||
}).finally(function() {
|
||||
self.set('loading', false);
|
||||
StaffActionLog.findAll(params).then((result) => {
|
||||
this.set('model', result.staff_action_logs);
|
||||
if (this.get('userHistoryActions').length === 0) {
|
||||
let actionTypes = result.user_history_actions.map(pair => {
|
||||
return {
|
||||
id: pair.id,
|
||||
name: I18n.t("admin.logs.staff_actions.actions." + pair.name),
|
||||
name_raw: pair.name
|
||||
};
|
||||
});
|
||||
actionTypes = _.sortBy(actionTypes, row => row.name);
|
||||
this.set('userHistoryActions', actionTypes);
|
||||
}
|
||||
}).finally(()=>{
|
||||
this.set('loading', false);
|
||||
});
|
||||
},
|
||||
|
||||
@ -63,6 +84,7 @@ export default Ember.Controller.extend({
|
||||
changed.action_name = null;
|
||||
changed.action_id = null;
|
||||
changed.custom_type = null;
|
||||
this.set("filterActionId", null);
|
||||
} else {
|
||||
changed[key] = null;
|
||||
}
|
||||
@ -70,6 +92,7 @@ export default Ember.Controller.extend({
|
||||
},
|
||||
|
||||
clearAllFilters: function() {
|
||||
this.set("filterActionId", null);
|
||||
this.resetFilters();
|
||||
},
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ import CanCheckEmails from 'discourse/mixins/can-check-emails';
|
||||
import { propertyNotEqual, setting } from 'discourse/lib/computed';
|
||||
import { userPath } from 'discourse/lib/url';
|
||||
import { popupAjaxError } from 'discourse/lib/ajax-error';
|
||||
import computed from 'ember-addons/ember-computed-decorators';
|
||||
|
||||
export default Ember.Controller.extend(CanCheckEmails, {
|
||||
editingUsername: false,
|
||||
@ -34,6 +35,11 @@ export default Ember.Controller.extend(CanCheckEmails, {
|
||||
return [];
|
||||
}.property('model.user_fields.[]'),
|
||||
|
||||
@computed('model.username_lower')
|
||||
preferencesPath(username) {
|
||||
return userPath(`${username}/preferences`);
|
||||
},
|
||||
|
||||
actions: {
|
||||
|
||||
impersonate() { return this.get("model").impersonate(); },
|
||||
|
||||
@ -57,10 +57,13 @@ StaffActionLog.reopenClass({
|
||||
},
|
||||
|
||||
findAll: function(filters) {
|
||||
return ajax("/admin/logs/staff_action_logs.json", { data: filters }).then(function(staff_actions) {
|
||||
return staff_actions.map(function(s) {
|
||||
return StaffActionLog.create(s);
|
||||
});
|
||||
return ajax("/admin/logs/staff_action_logs.json", { data: filters }).then((data) => {
|
||||
return {
|
||||
staff_action_logs: data.staff_action_logs.map(function(s) {
|
||||
return StaffActionLog.create(s);
|
||||
}),
|
||||
user_history_actions: data.user_history_actions
|
||||
};
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
<table class="admin-flags">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='user'></th>
|
||||
<th class='excerpt'></th>
|
||||
<th class='flaggers'>{{i18n 'admin.flags.flagged_by'}}</th>
|
||||
<th class='flaggers'>{{#if adminOldFlagsView}}{{i18n 'admin.flags.resolved_by'}}{{/if}}</th>
|
||||
@ -13,30 +12,42 @@
|
||||
{{#each content as |flaggedPost|}}
|
||||
<tr class={{flaggedPost.extraClasses}}>
|
||||
|
||||
<td class='user'>
|
||||
{{#if flaggedPost.postAuthorFlagged}}
|
||||
{{#if flaggedPost.user}}
|
||||
{{#link-to 'adminUser' flaggedPost.user}}{{avatar flaggedPost.user imageSize="large"}}{{/link-to}}
|
||||
{{#if flaggedPost.wasEdited}}<i class="fa fa-pencil" title="{{i18n 'admin.flags.was_edited'}}"></i>{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if adminActiveFlagsView}}
|
||||
{{#if flaggedPost.previous_flags_count}}
|
||||
<span title="{{i18n 'admin.flags.previous_flags_count' count=flaggedPost.previous_flags_count}}" class="badge-notification flagged-posts">{{flaggedPost.previous_flags_count}}</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</td>
|
||||
|
||||
<td class='excerpt'>
|
||||
<h3>
|
||||
{{#if flaggedPost.topic.isPrivateMessage}}
|
||||
<span class="private-message-glyph">{{fa-icon "envelope"}}</span>
|
||||
|
||||
<div class="flex-center-align">
|
||||
<div class="flagged-post-avatar">
|
||||
{{#if flaggedPost.postAuthorFlagged}}
|
||||
{{#if flaggedPost.user}}
|
||||
{{#link-to 'adminUser' flaggedPost.user}}{{avatar flaggedPost.user imageSize="large"}}{{/link-to}}
|
||||
{{#if flaggedPost.wasEdited}}<i class="fa fa-pencil" title="{{i18n 'admin.flags.was_edited'}}"></i>{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if adminActiveFlagsView}}
|
||||
{{#if flaggedPost.previous_flags_count}}
|
||||
<span title="{{i18n 'admin.flags.previous_flags_count' count=flaggedPost.previous_flags_count}}" class="badge-notification flagged-posts">{{flaggedPost.previous_flags_count}}</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="topic-excerpt">
|
||||
<h3>
|
||||
{{#if flaggedPost.topic.isPrivateMessage}}
|
||||
<span class="private-message-glyph">{{fa-icon "envelope"}}</span>
|
||||
{{/if}}
|
||||
{{topic-status topic=flaggedPost.topic}}
|
||||
<a href='{{unbound flaggedPost.url}}'>{{{unbound flaggedPost.topic.fancyTitle}}}</a>
|
||||
</h3>
|
||||
{{#unless site.mobileView}}
|
||||
{{#if flaggedPost.postAuthorFlagged}}
|
||||
<p>{{{flaggedPost.excerpt}}}</p>
|
||||
{{/if}}
|
||||
{{/unless}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if site.mobileView}}
|
||||
{{#if flaggedPost.postAuthorFlagged}}
|
||||
<p>{{{flaggedPost.excerpt}}}</p>
|
||||
{{/if}}
|
||||
{{topic-status topic=flaggedPost.topic}}
|
||||
<a href='{{unbound flaggedPost.url}}'>{{{unbound flaggedPost.topic.fancyTitle}}}</a>
|
||||
</h3>
|
||||
{{#if flaggedPost.postAuthorFlagged}}
|
||||
<p>{{{flaggedPost.excerpt}}}</p>
|
||||
{{/if}}
|
||||
</td>
|
||||
|
||||
@ -104,7 +115,6 @@
|
||||
|
||||
{{#each flaggedPost.conversations as |c|}}
|
||||
<tr class='message'>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
<div>
|
||||
{{#if c.response}}
|
||||
@ -130,7 +140,7 @@
|
||||
|
||||
{{#unless adminOldFlagsView}}
|
||||
<tr>
|
||||
<td colspan="4" class="action">
|
||||
<td colspan="3" class="action">
|
||||
{{#if adminActiveFlagsView}}
|
||||
<button title='{{i18n 'admin.flags.agree_title'}}' class='btn' {{action "showAgreeFlagModal" flaggedPost}}><i class="fa fa-thumbs-o-up"></i>{{i18n 'admin.flags.agree'}}…</button>
|
||||
{{#if flaggedPost.postHidden}}
|
||||
|
||||
@ -1,41 +1,43 @@
|
||||
<div class="staff-action-logs-controls">
|
||||
<a {{action "clearAllFilters"}} class="clear-filters filter {{unless filtersExists 'invisible'}}">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.clear_filters'}}</span>
|
||||
</a>
|
||||
{{#if actionFilter}}
|
||||
<a {{action "clearFilter" "actionFilter"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.action'}}</span>: {{actionFilter}}
|
||||
{{fa-icon "times-circle"}}
|
||||
{{#if filtersExists}}
|
||||
<div>
|
||||
<a {{action "clearAllFilters"}} class="clear-filters filter">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.clear_filters'}}</span>
|
||||
</a>
|
||||
{{#if actionFilter}}
|
||||
<a {{action "clearFilter" "actionFilter"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.action'}}</span>: {{actionFilter}}
|
||||
{{fa-icon "times-circle"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if filters.acting_user}}
|
||||
<a {{action "clearFilter" "acting_user"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.staff_user'}}</span>: {{filters.acting_user}}
|
||||
{{fa-icon "times-circle"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if filters.target_user}}
|
||||
<a {{action "clearFilter" "target_user"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.target_user'}}</span>: {{filters.target_user}}
|
||||
{{fa-icon "times-circle"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if filters.subject}}
|
||||
<a {{action "clearFilter" "subject"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.subject'}}</span>: {{filters.subject}}
|
||||
{{fa-icon "times-circle"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else}}
|
||||
{{i18n "admin.logs.staff_actions.filter"}} {{combo-box content=userHistoryActions nameProperty="name" value=filterActionId none="admin.logs.staff_actions.all"}}
|
||||
{{/if}}
|
||||
{{#if filters.acting_user}}
|
||||
<a {{action "clearFilter" "acting_user"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.staff_user'}}</span>: {{filters.acting_user}}
|
||||
{{fa-icon "times-circle"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if filters.target_user}}
|
||||
<a {{action "clearFilter" "target_user"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.target_user'}}</span>: {{filters.target_user}}
|
||||
{{fa-icon "times-circle"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{#if filters.subject}}
|
||||
<a {{action "clearFilter" "subject"}} class="filter">
|
||||
<span class="label">{{i18n 'admin.logs.staff_actions.subject'}}</span>: {{filters.subject}}
|
||||
{{fa-icon "times-circle"}}
|
||||
</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="pull-right">
|
||||
{{d-button action="exportStaffActionLogs" label="admin.export_csv.button_text" icon="download"}}
|
||||
</div>
|
||||
<br>
|
||||
|
||||
<div class="staff-action-logs-instructions {{unless showInstructions 'invisible'}}">
|
||||
{{i18n 'admin.logs.staff_actions.instructions'}}
|
||||
<div class="pull-right">
|
||||
{{d-button action="exportStaffActionLogs" label="admin.export_csv.button_text" icon="download"}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
|
||||
<div class='table staff-actions'>
|
||||
<div class="heading-container">
|
||||
|
||||
@ -99,6 +99,9 @@
|
||||
<div class='display-row'>
|
||||
<div class='field'>{{i18n 'user.avatar.title'}}</div>
|
||||
<div class='value'>{{avatar content imageSize="large"}}</div>
|
||||
<div class="controls">
|
||||
{{{i18n "admin.user.visit_profile" url=preferencesPath}}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='display-row'>
|
||||
|
||||
@ -3,11 +3,11 @@ import Quote from 'discourse/lib/quote';
|
||||
import Draft from 'discourse/models/draft';
|
||||
import Composer from 'discourse/models/composer';
|
||||
import { default as computed, observes } from 'ember-addons/ember-computed-decorators';
|
||||
import { relativeAge } from 'discourse/lib/formatter';
|
||||
import InputValidation from 'discourse/models/input-validation';
|
||||
import { getOwner } from 'discourse-common/lib/get-owner';
|
||||
import { escapeExpression } from 'discourse/lib/utilities';
|
||||
import { emojiUnescape } from 'discourse/lib/text';
|
||||
import { shortDate } from 'discourse/lib/formatter';
|
||||
|
||||
function loadDraft(store, opts) {
|
||||
opts = opts || {};
|
||||
@ -239,7 +239,7 @@ export default Ember.Controller.extend({
|
||||
domain: info.domain,
|
||||
username: info.username,
|
||||
post_url: topic.urlForPostNumber(info.post_number),
|
||||
ago: relativeAge(moment(info.posted_at).toDate(), { format: 'medium' })
|
||||
ago: shortDate(info.posted_at)
|
||||
});
|
||||
this.appEvents.trigger('composer-messages:create', {
|
||||
extraClass: 'custom-body',
|
||||
@ -485,7 +485,7 @@ export default Ember.Controller.extend({
|
||||
if (this.get('model.action') === 'edit') {
|
||||
this.appEvents.trigger('post-stream:refresh', { id: parseInt(result.responseJson.id) });
|
||||
if (result.responseJson.post.post_number === 1) {
|
||||
this.appEvents.trigger('header:show-topic', composer.get('topic'));
|
||||
this.appEvents.trigger('header:update-topic', composer.get('topic'));
|
||||
}
|
||||
} else {
|
||||
this.appEvents.trigger('post-stream:refresh');
|
||||
|
||||
@ -6,9 +6,10 @@ import { emailValid } from 'discourse/lib/utilities';
|
||||
import InputValidation from 'discourse/models/input-validation';
|
||||
import PasswordValidation from "discourse/mixins/password-validation";
|
||||
import UsernameValidation from "discourse/mixins/username-validation";
|
||||
import NameValidation from "discourse/mixins/name-validation";
|
||||
import { userPath } from 'discourse/lib/url';
|
||||
|
||||
export default Ember.Controller.extend(ModalFunctionality, PasswordValidation, UsernameValidation, {
|
||||
export default Ember.Controller.extend(ModalFunctionality, PasswordValidation, UsernameValidation, NameValidation, {
|
||||
login: Ember.inject.controller(),
|
||||
|
||||
complete: false,
|
||||
@ -85,15 +86,6 @@ export default Ember.Controller.extend(ModalFunctionality, PasswordValidation, U
|
||||
return I18n.t(Discourse.SiteSettings.full_name_required ? 'user.name.instructions_required' : 'user.name.instructions');
|
||||
}.property(),
|
||||
|
||||
// Validate the name.
|
||||
nameValidation: function() {
|
||||
if (Discourse.SiteSettings.full_name_required && Ember.isEmpty(this.get('accountName'))) {
|
||||
return InputValidation.create({ failed: true });
|
||||
}
|
||||
|
||||
return InputValidation.create({ok: true});
|
||||
}.property('accountName'),
|
||||
|
||||
// Check the email address
|
||||
emailValidation: function() {
|
||||
// If blank, fail without a reason
|
||||
|
||||
@ -4,9 +4,10 @@ import DiscourseURL from 'discourse/lib/url';
|
||||
import { ajax } from 'discourse/lib/ajax';
|
||||
import PasswordValidation from "discourse/mixins/password-validation";
|
||||
import UsernameValidation from "discourse/mixins/username-validation";
|
||||
import NameValidation from "discourse/mixins/name-validation";
|
||||
import { findAll as findLoginMethods } from 'discourse/models/login-method';
|
||||
|
||||
export default Ember.Controller.extend(PasswordValidation, UsernameValidation, {
|
||||
export default Ember.Controller.extend(PasswordValidation, UsernameValidation, NameValidation, {
|
||||
invitedBy: Ember.computed.alias('model.invited_by'),
|
||||
email: Ember.computed.alias('model.email'),
|
||||
accountUsername: Ember.computed.alias('model.username'),
|
||||
@ -20,6 +21,11 @@ export default Ember.Controller.extend(PasswordValidation, UsernameValidation, {
|
||||
return I18n.t('invites.welcome_to', {site_name: this.siteSettings.title});
|
||||
},
|
||||
|
||||
@computed
|
||||
nameLabel() {
|
||||
return I18n.t(this.siteSettings.full_name_required ? 'invites.name_label' : 'invites.name_label_optional');
|
||||
},
|
||||
|
||||
@computed('email')
|
||||
yourEmailMessage(email) {
|
||||
return I18n.t('invites.your_email', {email: email});
|
||||
@ -30,9 +36,9 @@ export default Ember.Controller.extend(PasswordValidation, UsernameValidation, {
|
||||
return findLoginMethods(this.siteSettings, this.capabilities, this.site.isMobileDevice).length > 0;
|
||||
},
|
||||
|
||||
@computed('usernameValidation.failed', 'passwordValidation.failed')
|
||||
submitDisabled(usernameFailed, passwordFailed) {
|
||||
return usernameFailed || passwordFailed;
|
||||
@computed('usernameValidation.failed', 'passwordValidation.failed', 'nameValidation.failed')
|
||||
submitDisabled(usernameFailed, passwordFailed, nameFailed) {
|
||||
return usernameFailed || passwordFailed || nameFailed;
|
||||
},
|
||||
|
||||
actions: {
|
||||
@ -42,6 +48,7 @@ export default Ember.Controller.extend(PasswordValidation, UsernameValidation, {
|
||||
type: 'PUT',
|
||||
data: {
|
||||
username: this.get('accountUsername'),
|
||||
name: this.get('accountName'),
|
||||
password: this.get('accountPassword')
|
||||
}
|
||||
}).then(result => {
|
||||
|
||||
@ -542,6 +542,7 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, {
|
||||
} else {
|
||||
selectedReplies.removeObject(post);
|
||||
}
|
||||
this.appEvents.trigger('post-stream:refresh', { force: true });
|
||||
},
|
||||
|
||||
deleteSelected() {
|
||||
|
||||
@ -35,6 +35,11 @@ export default function loadScript(url, opts) {
|
||||
|
||||
opts = opts || {};
|
||||
|
||||
$('script').each((i, tag) => {
|
||||
_loaded[tag.getAttribute('src')] = true;
|
||||
});
|
||||
|
||||
|
||||
return new Ember.RSVP.Promise(function(resolve) {
|
||||
url = Discourse.getURL(url);
|
||||
|
||||
@ -42,7 +47,7 @@ export default function loadScript(url, opts) {
|
||||
if (_loaded[url]) { return resolve(); }
|
||||
if (_loading[url]) { return _loading[url].then(resolve);}
|
||||
|
||||
var done;
|
||||
let done;
|
||||
_loading[url] = new Ember.RSVP.Promise(function(_done){
|
||||
done = _done;
|
||||
});
|
||||
@ -60,7 +65,7 @@ export default function loadScript(url, opts) {
|
||||
resolve();
|
||||
};
|
||||
|
||||
var cdnUrl = url;
|
||||
let cdnUrl = url;
|
||||
|
||||
// Scripts should always load from CDN
|
||||
// CSS is type text, to accept it from a CDN we would need to handle CORS
|
||||
@ -72,6 +77,9 @@ export default function loadScript(url, opts) {
|
||||
// to dynamically load more JS. In that case, add the `scriptTag: true`
|
||||
// option.
|
||||
if (opts.scriptTag) {
|
||||
if (Ember.Test) {
|
||||
throw `In test mode scripts cannot be loaded async ${cdnUrl}`;
|
||||
}
|
||||
loadWithTag(cdnUrl, cb);
|
||||
} else {
|
||||
ajax({url: cdnUrl, dataType: opts.css ? "text": "script", cache: true}).then(cb);
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
import InputValidation from 'discourse/models/input-validation';
|
||||
import { default as computed } from 'ember-addons/ember-computed-decorators';
|
||||
|
||||
export default Ember.Mixin.create({
|
||||
|
||||
// Validate the name.
|
||||
@computed('accountName')
|
||||
nameValidation() {
|
||||
if (this.siteSettings.full_name_required && Ember.isEmpty(this.get('accountName'))) {
|
||||
return InputValidation.create({ failed: true });
|
||||
}
|
||||
|
||||
return InputValidation.create({ok: true});
|
||||
}
|
||||
});
|
||||
@ -40,7 +40,7 @@ export default Ember.Mixin.create({
|
||||
}
|
||||
|
||||
// If too short
|
||||
if (accountUsername.length < Discourse.SiteSettings.min_username_length) {
|
||||
if (accountUsername.length < this.siteSettings.min_username_length) {
|
||||
return InputValidation.create({
|
||||
failed: true,
|
||||
reason: I18n.t('user.username.too_short')
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<div class='ac-message'>
|
||||
{{{accountCreated.message}}}
|
||||
</div>
|
||||
{{#if accountCreated.username}}
|
||||
{{#if accountCreated.show_controls}}
|
||||
{{activation-controls sendActivationEmail=(action "sendActivationEmail")
|
||||
editActivationEmail=(action "editActivationEmail")}}
|
||||
{{/if}}
|
||||
|
||||
@ -1,7 +1,10 @@
|
||||
{{d-button action=sendActivationEmail
|
||||
label="login.resend_title"
|
||||
icon="envelope"
|
||||
class="btn-primary resend"}}
|
||||
{{#unless siteSettings.must_approve_users}}
|
||||
{{d-button action=sendActivationEmail
|
||||
label="login.resend_title"
|
||||
icon="envelope"
|
||||
class="btn-primary resend"}}
|
||||
{{/unless}}
|
||||
|
||||
{{d-button action=editActivationEmail
|
||||
label="login.change_email"
|
||||
icon="pencil"
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
{{#if visible}}
|
||||
<div class="row">
|
||||
<div id="banner" class={{overlay}}>
|
||||
<div class="close" {{action "dismiss"}}><i class="fa fa-times" title="{{i18n 'banner.close'}}"></i></div>
|
||||
<div id="banner-content">
|
||||
<div class="close" {{action "dismiss"}}><i class="fa fa-times" title="{{i18n 'banner.close'}}"></i></div>
|
||||
{{{banner.html}}}
|
||||
{{#if currentUser.staff}}
|
||||
<p><a href="{{banner.url}}">{{{i18n "banner.edit"}}}</a></p>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
<div class="full-width">
|
||||
<div id="list-area">
|
||||
{{plugin-outlet name="discovery-list-container-top"
|
||||
args=(hash category=category)}}
|
||||
args=(hash category=category listLoading=loading)}}
|
||||
{{outlet "list-container"}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -14,9 +14,9 @@
|
||||
|
||||
{{#if successMessage}}
|
||||
<p>{{successMessage}}</p>
|
||||
{{else}}
|
||||
{{else}}
|
||||
|
||||
<p>{{{yourEmailMessage}}}
|
||||
<p>{{{yourEmailMessage}}}
|
||||
{{#if externalAuthsEnabled}}
|
||||
{{i18n 'invites.social_login_available'}}
|
||||
{{/if}}
|
||||
@ -24,14 +24,17 @@
|
||||
|
||||
<form>
|
||||
<label>{{i18n 'user.username.title'}}</label>
|
||||
|
||||
<div class="input username-input">
|
||||
{{input value=accountUsername id="new-account-username" name="username" maxlength=maxUsernameLength autocomplete="off"}}
|
||||
{{input-tip validation=usernameValidation id="username-validation"}}
|
||||
</div>
|
||||
|
||||
<label>{{i18n 'invites.password_label'}}</label>
|
||||
<label>{{nameLabel}}</label>
|
||||
<div class="input name-input">
|
||||
{{input value=accountName id="new-account-name" name="name"}}
|
||||
</div>
|
||||
|
||||
<label>{{i18n 'invites.password_label'}}</label>
|
||||
<div class="input password-input">
|
||||
{{password-field value=accountPassword type="password" id="new-account-password" capsLockOn=capsLockOn}}
|
||||
{{input-tip validation=passwordValidation}}
|
||||
@ -39,7 +42,7 @@
|
||||
|
||||
<div class="instructions">
|
||||
<div class="caps-lock-warning {{unless capsLockOn 'invisible'}}"><i class="fa fa-exclamation-triangle"></i> {{i18n 'login.caps_lock_warning'}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class='btn btn-primary' {{action "submit"}} disabled={{submitDisabled}}>{{i18n 'invites.accept_invite'}}</button>
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ import { createWidget } from 'discourse/widgets/widget';
|
||||
import transformPost from 'discourse/lib/transform-post';
|
||||
import { Placeholder } from 'discourse/lib/posts-with-placeholders';
|
||||
import { addWidgetCleanCallback } from 'discourse/components/mount-widget';
|
||||
import { keyDirty } from 'discourse/widgets/widget';
|
||||
|
||||
let transformCallbacks = null;
|
||||
function postTransformCallbacks(transformed) {
|
||||
@ -35,12 +36,14 @@ export function cloak(post, component) {
|
||||
const $post = $(`#post_${post.post_number}`);
|
||||
_cloaked[post.id] = true;
|
||||
_heights[post.id] = $post.outerHeight();
|
||||
keyDirty(`post-${post.id}`);
|
||||
Ember.run.debounce(component, 'queueRerender', 1000);
|
||||
}
|
||||
|
||||
export function uncloak(post, component) {
|
||||
if (!CLOAKING_ENABLED || !_cloaked[post.id]) { return; }
|
||||
_cloaked[post.id] = null;
|
||||
keyDirty(`post-${post.id}`);
|
||||
component.queueRerender();
|
||||
}
|
||||
|
||||
|
||||
@ -549,12 +549,20 @@ section.details {
|
||||
padding: 5px;
|
||||
clear: both;
|
||||
text-align: right;
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
.btn {
|
||||
margin: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.display-row.associations .value {
|
||||
width: 750px;
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
width: 100%;
|
||||
width: 75%;
|
||||
float: right;
|
||||
text-align: left;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -580,11 +588,22 @@ section.details {
|
||||
width: 17.65765%;
|
||||
float: left;
|
||||
margin-left: 12px;
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
margin-left: 0;
|
||||
line-height: 20px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
.value {
|
||||
width: 250px;
|
||||
float: left;
|
||||
margin-left: 12px;
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
width: 75%;
|
||||
float: right;
|
||||
text-align: left;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
.long-value {
|
||||
width: 800px;
|
||||
@ -602,10 +621,13 @@ section.details {
|
||||
float: left;
|
||||
margin-left: 12px;
|
||||
@media (max-width: $mobile-breakpoint) {
|
||||
width: 100%;
|
||||
width: 75%;
|
||||
float: right;
|
||||
text-align: left;
|
||||
margin-left: 0;
|
||||
}
|
||||
.btn {
|
||||
margin-right: 5px;
|
||||
margin: 2px 5px 2px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -746,16 +768,25 @@ section.details {
|
||||
.message { background-color: dark-light-diff($highlight, $secondary, 50%, -70%); }
|
||||
.message:hover { background-color: dark-light-diff($highlight, $secondary, 60%, -60%); }
|
||||
|
||||
.flagged-post-avatar {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.excerpt {
|
||||
padding: 8px;
|
||||
word-wrap: break-word;
|
||||
.fa { display: inline-block; }
|
||||
h3 {
|
||||
max-height: 1.2em;
|
||||
overflow: hidden;
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
tr.message td {
|
||||
padding-left: 60px;
|
||||
}
|
||||
|
||||
.flagged-posts { background: $danger; }
|
||||
@ -1274,10 +1305,6 @@ table.api-keys {
|
||||
}
|
||||
}
|
||||
|
||||
.staff-action-logs-instructions {
|
||||
margin: 0 0 10px 10px;
|
||||
}
|
||||
|
||||
// Ember.ListView
|
||||
|
||||
.ember-list-view {
|
||||
@ -1828,6 +1855,20 @@ table#user-badges {
|
||||
left: -100%;
|
||||
}
|
||||
|
||||
.mobile-view .admin-flags {
|
||||
.flaggers {
|
||||
padding: 2px;
|
||||
.avatar {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
tr.message td {
|
||||
padding-left: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.cboxcontainer {
|
||||
display: inline-block;
|
||||
padding: 8px;
|
||||
|
||||
@ -45,6 +45,11 @@ html {
|
||||
}
|
||||
|
||||
body {
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin-top: 0;
|
||||
margin-bottom: .5rem;
|
||||
}
|
||||
|
||||
background-attachment: fixed;
|
||||
background-size: cover;
|
||||
min-height: 100%;
|
||||
@ -188,6 +193,11 @@ body {
|
||||
}
|
||||
}
|
||||
|
||||
.flex-center-align {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.unread-private-messages {
|
||||
color: $secondary;
|
||||
background: $success;
|
||||
|
||||
@ -103,7 +103,5 @@ $input-width: 220px;
|
||||
button#login-link, button#new-account-link
|
||||
{
|
||||
background: transparent;
|
||||
padding-left: 0;
|
||||
margin-left: 20px;
|
||||
color: dark-light-choose(scale-color($primary, $lightness: 35%), scale-color($secondary, $lightness: 65%));
|
||||
}
|
||||
|
||||
@ -144,10 +144,6 @@ body {
|
||||
font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* page not found styles */
|
||||
h1.page-not-found {
|
||||
line-height: 30px;
|
||||
|
||||
@ -45,8 +45,8 @@
|
||||
}
|
||||
|
||||
.modal-footer .btn + .btn {
|
||||
margin-right: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-left: 5px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.modal-close {
|
||||
|
||||
@ -313,7 +313,6 @@ a.star {
|
||||
|
||||
#topic-footer-buttons {
|
||||
@include clearfix;
|
||||
border-top: 1px solid dark-light-diff($primary, $secondary, 90%, -60%);
|
||||
padding: 20px 0 0 0;
|
||||
.fa-bookmark.bookmarked { color: $tertiary; }
|
||||
|
||||
|
||||
@ -44,7 +44,9 @@
|
||||
}
|
||||
|
||||
.topic-status-info {
|
||||
margin-left: 10px;
|
||||
padding-left: 10px;
|
||||
border-top: 1px solid dark-light-diff($primary, $secondary, 90%, -75%);
|
||||
padding-top: 10px;
|
||||
h3 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@ -2,8 +2,12 @@ class Admin::StaffActionLogsController < Admin::AdminController
|
||||
|
||||
def index
|
||||
filters = params.slice(*UserHistory.staff_filters)
|
||||
|
||||
staff_action_logs = UserHistory.staff_action_records(current_user, filters).to_a
|
||||
render_serialized(staff_action_logs, UserHistorySerializer)
|
||||
render json: StaffActionLogsSerializer.new({
|
||||
staff_action_logs: staff_action_logs,
|
||||
user_history_actions: UserHistory.staff_actions.sort.map{|name| {id: UserHistory.actions[name], name: name}}
|
||||
}, root: false)
|
||||
end
|
||||
|
||||
def diff
|
||||
|
||||
@ -273,7 +273,7 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
unless theme_key
|
||||
key, seq = cookies[:theme_key]&.split(",")
|
||||
if key && seq && seq.to_i == user_option&.theme_key_seq
|
||||
if key && seq && seq.to_i == user_option&.theme_key_seq.to_i
|
||||
theme_key = key
|
||||
end
|
||||
end
|
||||
@ -554,8 +554,9 @@ class ApplicationController < ActionController::Base
|
||||
def redirect_to_login_if_required
|
||||
return if current_user || (request.format.json? && is_api?)
|
||||
|
||||
# redirect user to the SSO page if we need to log in AND SSO is enabled
|
||||
if SiteSetting.login_required?
|
||||
flash.keep
|
||||
|
||||
if SiteSetting.enable_sso?
|
||||
# save original URL in a session so we can redirect after login
|
||||
session[:destination_url] = destination_url
|
||||
|
||||
@ -29,11 +29,13 @@ class InvitesController < ApplicationController
|
||||
end
|
||||
|
||||
def perform_accept_invitation
|
||||
params.require(:id)
|
||||
params.permit(:username, :name, :password)
|
||||
invite = Invite.find_by(invite_key: params[:id])
|
||||
|
||||
if invite.present?
|
||||
begin
|
||||
user = invite.redeem(username: params[:username], password: params[:password])
|
||||
user = invite.redeem(username: params[:username], name: params[:name], password: params[:password])
|
||||
if user.present?
|
||||
log_on_user(user)
|
||||
post_process_invite(user)
|
||||
|
||||
@ -102,7 +102,12 @@ class StaticController < ApplicationController
|
||||
|
||||
data = DistributedMemoizer.memoize('favicon' + SiteSetting.favicon_url, 60*30) do
|
||||
begin
|
||||
file = FileHelper.download(SiteSetting.favicon_url, 50.kilobytes, "favicon.png", true)
|
||||
file = FileHelper.download(
|
||||
SiteSetting.favicon_url,
|
||||
max_file_size: 50.kilobytes,
|
||||
tmp_file_name: "favicon.png",
|
||||
follow_redirect: true
|
||||
)
|
||||
data = file.read
|
||||
file.unlink
|
||||
data
|
||||
|
||||
@ -605,7 +605,7 @@ class TopicsController < ApplicationController
|
||||
topic_ids = params[:topic_ids].map {|t| t.to_i}
|
||||
elsif params[:filter] == 'unread'
|
||||
tq = TopicQuery.new(current_user)
|
||||
topics = TopicQuery.unread_filter(tq.joined_topic_user, staff: guardian.is_staff?).listable_topics
|
||||
topics = TopicQuery.unread_filter(tq.joined_topic_user, current_user.id, staff: guardian.is_staff?).listable_topics
|
||||
topics = topics.where('category_id = ?', params[:category_id]) if params[:category_id]
|
||||
topic_ids = topics.pluck(:id)
|
||||
else
|
||||
|
||||
@ -62,7 +62,11 @@ class UploadsController < ApplicationController
|
||||
if file.nil?
|
||||
if url.present? && is_api?
|
||||
maximum_upload_size = [SiteSetting.max_image_size_kb, SiteSetting.max_attachment_size_kb].max.kilobytes
|
||||
tempfile = FileHelper.download(url, maximum_upload_size, "discourse-upload-#{type}") rescue nil
|
||||
tempfile = FileHelper.download(
|
||||
url,
|
||||
max_file_size: maximum_upload_size,
|
||||
tmp_file_name: "discourse-upload-#{type}"
|
||||
) rescue nil
|
||||
filename = File.basename(URI.parse(url).path)
|
||||
end
|
||||
else
|
||||
|
||||
@ -134,7 +134,13 @@ class UserAvatarsController < ApplicationController
|
||||
|
||||
unless File.exist? path
|
||||
FileUtils.mkdir_p PROXY_PATH
|
||||
tmp = FileHelper.download(url, 1.megabyte, filename, true, 10)
|
||||
tmp = FileHelper.download(
|
||||
url,
|
||||
max_file_size: 1.megabyte,
|
||||
tmp_file_name: filename,
|
||||
follow_redirect: true,
|
||||
read_timeout: 10
|
||||
)
|
||||
FileUtils.mv tmp.path, path
|
||||
end
|
||||
|
||||
|
||||
@ -537,12 +537,16 @@ class UsersController < ApplicationController
|
||||
|
||||
@custom_body_class = "static-account-created"
|
||||
@message = session['user_created_message'] || I18n.t('activation.missing_session')
|
||||
@account_created = { message: @message }
|
||||
@account_created = {
|
||||
message: @message,
|
||||
show_controls: false
|
||||
}
|
||||
|
||||
if session_user_id = session[SessionController::ACTIVATE_USER_KEY]
|
||||
if user = User.where(id: session_user_id.to_i).first
|
||||
@account_created[:username] = user.username
|
||||
@account_created[:email] = user.email
|
||||
@account_created[:show_controls] = true
|
||||
end
|
||||
end
|
||||
|
||||
@ -618,6 +622,8 @@ class UsersController < ApplicationController
|
||||
RateLimiter.new(nil, "activate-min-#{request.remote_ip}", 6, 1.minute).performed!
|
||||
end
|
||||
|
||||
raise Discourse::InvalidAccess.new if SiteSetting.must_approve_users?
|
||||
|
||||
if params[:username].present?
|
||||
@user = User.find_by_username_or_email(params[:username].to_s)
|
||||
end
|
||||
@ -626,7 +632,7 @@ class UsersController < ApplicationController
|
||||
if !current_user&.staff? &&
|
||||
@user.id != session[SessionController::ACTIVATE_USER_KEY]
|
||||
|
||||
raise Discourse::InvalidAccess
|
||||
raise Discourse::InvalidAccess.new
|
||||
end
|
||||
|
||||
session.delete(SessionController::ACTIVATE_USER_KEY)
|
||||
|
||||
@ -26,7 +26,7 @@ module Jobs
|
||||
end
|
||||
|
||||
def badge
|
||||
@badge ||= Badge.find(Badge::FirstEmoji)
|
||||
Badge.find(Badge::FirstEmoji)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -25,7 +25,7 @@ module Jobs
|
||||
end
|
||||
|
||||
def badge
|
||||
@badge ||= Badge.find(Badge::FirstReplyByEmail)
|
||||
Badge.find(Badge::FirstReplyByEmail)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -35,7 +35,7 @@ module Jobs
|
||||
end
|
||||
|
||||
def badge
|
||||
@badge ||= Badge.find(Badge::FirstOnebox)
|
||||
Badge.find(Badge::FirstOnebox)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -1,55 +1,13 @@
|
||||
require 'open-uri'
|
||||
require 'nokogiri'
|
||||
require 'excon'
|
||||
require 'final_destination'
|
||||
|
||||
module Jobs
|
||||
class CrawlTopicLink < Jobs::Base
|
||||
|
||||
class ReadEnough < StandardError; end
|
||||
|
||||
# Retrieve a header regardless of case sensitivity
|
||||
def self.header_for(head, name)
|
||||
header = head.headers.detect do |k, _|
|
||||
name == k.downcase
|
||||
end
|
||||
header[1] if header
|
||||
end
|
||||
|
||||
def self.request_headers(uri)
|
||||
{ "User-Agent" => "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36",
|
||||
"Accept" => "text/html",
|
||||
"Host" => uri.host }
|
||||
end
|
||||
|
||||
# Follow any redirects that might exist
|
||||
def self.final_uri(url, limit=5)
|
||||
return if limit < 0
|
||||
|
||||
uri = URI(url)
|
||||
return if uri.blank? || uri.host.blank?
|
||||
return unless ['https', 'http'].include?(uri.scheme)
|
||||
return unless [80, 443].include?(uri.port)
|
||||
|
||||
headers = CrawlTopicLink.request_headers(uri)
|
||||
head = Excon.head(url, read_timeout: 20, headers: headers)
|
||||
|
||||
# If the site does not allow HEAD, just try the url
|
||||
return uri if head.status == 405
|
||||
|
||||
if head.status == 200
|
||||
uri = nil unless header_for(head, 'content-type') =~ /text\/html/
|
||||
return uri
|
||||
end
|
||||
|
||||
location = header_for(head, 'location')
|
||||
if location
|
||||
location = "#{uri.scheme}://#{uri.host}#{location}" if location[0] == "/"
|
||||
return final_uri(location, limit - 1)
|
||||
end
|
||||
|
||||
nil
|
||||
end
|
||||
|
||||
def self.max_chunk_size(uri)
|
||||
# Amazon leaves the title until very late. Normally it's a bad idea to make an exception for
|
||||
# one host but amazon is a big one.
|
||||
@ -64,7 +22,8 @@ module Jobs
|
||||
# Never crawl in test mode
|
||||
return if Rails.env.test?
|
||||
|
||||
uri = final_uri(url)
|
||||
fd = FinalDestination.new(url)
|
||||
uri = fd.resolve
|
||||
return "" unless uri
|
||||
|
||||
result = ""
|
||||
@ -76,7 +35,7 @@ module Jobs
|
||||
# that matter!)
|
||||
raise ReadEnough.new if result.size > (CrawlTopicLink.max_chunk_size(uri) * 1024)
|
||||
end
|
||||
Excon.get(uri.to_s, response_block: streamer, read_timeout: 20, headers: CrawlTopicLink.request_headers(uri))
|
||||
Excon.get(uri.to_s, response_block: streamer, read_timeout: 20, headers: fd.request_headers)
|
||||
result
|
||||
|
||||
rescue Excon::Errors::SocketError => ex
|
||||
|
||||
@ -36,7 +36,12 @@ module Jobs
|
||||
# have we already downloaded that file?
|
||||
unless downloaded_urls.include?(src)
|
||||
begin
|
||||
hotlinked = FileHelper.download(src, @max_size, "discourse-hotlinked", true)
|
||||
hotlinked = FileHelper.download(
|
||||
src,
|
||||
max_file_size: @max_size,
|
||||
tmp_file_name: "discourse-hotlinked",
|
||||
follow_redirect: true
|
||||
)
|
||||
rescue Discourse::InvalidParameters
|
||||
end
|
||||
if hotlinked
|
||||
|
||||
@ -2,7 +2,7 @@ require 'badge_granter'
|
||||
|
||||
module Jobs
|
||||
class GrantNewUserOfTheMonthBadges < Jobs::Scheduled
|
||||
every 1.month
|
||||
every 1.day
|
||||
|
||||
MAX_AWARDED = 2
|
||||
|
||||
@ -33,6 +33,9 @@ module Jobs
|
||||
def scores
|
||||
scores = {}
|
||||
|
||||
current_owners = UserBadge.where(badge_id: Badge::NewUserOfTheMonth).pluck(:user_id)
|
||||
current_owners = [-1] if current_owners.blank?
|
||||
|
||||
# Find recent accounts and come up with a score based on how many likes they
|
||||
# received, based on how much they posted and how old the accounts of the people
|
||||
# who voted on them are.
|
||||
@ -62,7 +65,8 @@ module Jobs
|
||||
u.id > 0 AND
|
||||
NOT(u.admin) AND
|
||||
NOT(u.moderator) AND
|
||||
u.created_at >= CURRENT_TIMESTAMP - '1 month'::INTERVAL
|
||||
u.created_at >= CURRENT_TIMESTAMP - '1 month'::INTERVAL AND
|
||||
u.id NOT IN (#{current_owners.join(',')})
|
||||
GROUP BY u.id
|
||||
HAVING COUNT(DISTINCT p.id) > 1
|
||||
AND COUNT(DISTINCT p.topic_id) > 1
|
||||
|
||||
@ -7,30 +7,35 @@ module Jobs
|
||||
every 1.hour
|
||||
|
||||
def execute(args)
|
||||
if SiteSetting.notify_about_flags_after > 0 &&
|
||||
PostAction.flagged_posts_count > 0 &&
|
||||
flag_ids.size > 0 && last_notified_id.to_i < flag_ids.max
|
||||
if SiteSetting.notify_about_flags_after > 0
|
||||
|
||||
mentions = active_moderator_usernames.size > 0 ?
|
||||
"@#{active_moderator_usernames.join(', @')} " : ""
|
||||
flagged_posts_count = PostAction.flagged_posts_count
|
||||
|
||||
PostCreator.create(
|
||||
Discourse.system_user,
|
||||
target_group_names: Group[:moderators].name,
|
||||
archetype: Archetype.private_message,
|
||||
subtype: TopicSubtype.system_message,
|
||||
title: I18n.t('flags_reminder.subject_template', { count: PostAction.flagged_posts_count }),
|
||||
raw: mentions + I18n.t('flags_reminder.flags_were_submitted', { count: SiteSetting.notify_about_flags_after })
|
||||
)
|
||||
return unless flagged_posts_count > 0
|
||||
|
||||
self.last_notified_id = flag_ids.max
|
||||
flag_ids = pending_flag_ids
|
||||
|
||||
if flag_ids.size > 0 && last_notified_id.to_i < flag_ids.max
|
||||
|
||||
usernames = active_moderator_usernames
|
||||
mentions = usernames.size > 0 ? "@#{usernames.join(', @')} " : ""
|
||||
|
||||
PostCreator.create(
|
||||
Discourse.system_user,
|
||||
target_group_names: Group[:moderators].name,
|
||||
archetype: Archetype.private_message,
|
||||
subtype: TopicSubtype.system_message,
|
||||
title: I18n.t('flags_reminder.subject_template', { count: flagged_posts_count }),
|
||||
raw: mentions + I18n.t('flags_reminder.flags_were_submitted', { count: SiteSetting.notify_about_flags_after })
|
||||
)
|
||||
|
||||
self.last_notified_id = flag_ids.max
|
||||
end
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def flag_ids
|
||||
@_flag_ids ||= FlagQuery.flagged_post_actions('active')
|
||||
def pending_flag_ids
|
||||
FlagQuery.flagged_post_actions('active')
|
||||
.where('post_actions.created_at < ?', SiteSetting.notify_about_flags_after.to_i.hours.ago)
|
||||
.pluck(:id)
|
||||
end
|
||||
@ -44,12 +49,11 @@ module Jobs
|
||||
end
|
||||
|
||||
def self.last_notified_key
|
||||
"last_notified_pending_flag_id"
|
||||
"last_notified_pending_flag_id".freeze
|
||||
end
|
||||
|
||||
def active_moderator_usernames
|
||||
@_active_moderator_usernames ||=
|
||||
User.where(moderator: true)
|
||||
User.where(moderator: true)
|
||||
.human_users
|
||||
.order('last_seen_at DESC')
|
||||
.limit(3)
|
||||
|
||||
@ -6,17 +6,19 @@ module Jobs
|
||||
def execute(args)
|
||||
return true unless SiteSetting.notify_about_queued_posts_after > 0 && SiteSetting.contact_email
|
||||
|
||||
if should_notify_ids.size > 0 && last_notified_id.to_i < should_notify_ids.max
|
||||
message = PendingQueuedPostsMailer.notify(count: should_notify_ids.size)
|
||||
queued_post_ids = should_notify_ids
|
||||
|
||||
if queued_post_ids.size > 0 && last_notified_id.to_i < queued_post_ids.max
|
||||
message = PendingQueuedPostsMailer.notify(count: queued_post_ids.size)
|
||||
Email::Sender.new(message, :pending_queued_posts_reminder).send
|
||||
self.last_notified_id = should_notify_ids.max
|
||||
self.last_notified_id = queued_post_ids.max
|
||||
end
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def should_notify_ids
|
||||
@_should_notify_ids ||= QueuedPost.new_posts.visible.where('created_at < ?', SiteSetting.notify_about_queued_posts_after.hours.ago).pluck(:id)
|
||||
QueuedPost.new_posts.visible.where('created_at < ?', SiteSetting.notify_about_queued_posts_after.hours.ago).pluck(:id)
|
||||
end
|
||||
|
||||
def last_notified_id
|
||||
@ -28,7 +30,7 @@ module Jobs
|
||||
end
|
||||
|
||||
def self.last_notified_key
|
||||
"last_notified_queued_post_id"
|
||||
"last_notified_queued_post_id".freeze
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -19,7 +19,7 @@ module Jobs
|
||||
end
|
||||
|
||||
def feed_key
|
||||
@feed_key ||= "feed-modified:#{Digest::SHA1.hexdigest(SiteSetting.feed_polling_url)}"
|
||||
"feed-modified:#{Digest::SHA1.hexdigest(SiteSetting.feed_polling_url)}"
|
||||
end
|
||||
|
||||
def poll_feed
|
||||
|
||||
@ -246,7 +246,12 @@ class OptimizedImage < ActiveRecord::Base
|
||||
# download if external
|
||||
if external
|
||||
url = SiteSetting.scheme + ":" + previous_url
|
||||
file = FileHelper.download(url, max_file_size_kb, "discourse", true) rescue nil
|
||||
file = FileHelper.download(
|
||||
url,
|
||||
max_file_size: max_file_size_kb,
|
||||
tmp_file_name: "discourse",
|
||||
follow_redirect: true
|
||||
) rescue nil
|
||||
path = file.path
|
||||
else
|
||||
path = local_store.path_for(optimized_image)
|
||||
|
||||
@ -170,7 +170,6 @@ class Topic < ActiveRecord::Base
|
||||
|
||||
before_create do
|
||||
initialize_default_values
|
||||
inherit_auto_close_from_category
|
||||
end
|
||||
|
||||
after_create do
|
||||
@ -187,6 +186,10 @@ class Topic < ActiveRecord::Base
|
||||
if title_changed?
|
||||
write_attribute :fancy_title, Topic.fancy_title(title)
|
||||
end
|
||||
|
||||
if category_id_changed? || new_record?
|
||||
inherit_auto_close_from_category
|
||||
end
|
||||
end
|
||||
|
||||
after_save do
|
||||
@ -614,8 +617,7 @@ SQL
|
||||
old_category = category
|
||||
|
||||
if self.category_id != new_category.id
|
||||
self.category_id = new_category.id
|
||||
self.update_column(:category_id, new_category.id)
|
||||
self.update!(category_id: new_category.id)
|
||||
Category.where(id: old_category.id).update_all("topic_count = topic_count - 1") if old_category
|
||||
|
||||
# when a topic changes category we may have to start watching it
|
||||
|
||||
@ -89,7 +89,11 @@ class TopicEmbed < ActiveRecord::Base
|
||||
embed_classname_whitelist = SiteSetting.embed_classname_whitelist if SiteSetting.embed_classname_whitelist.present?
|
||||
|
||||
response = FetchResponse.new
|
||||
html = open(URI.encode(url), allow_redirections: :safe).read
|
||||
begin
|
||||
html = open(URI.encode(url), allow_redirections: :safe).read
|
||||
rescue OpenURI::HTTPError
|
||||
return
|
||||
end
|
||||
|
||||
raw_doc = Nokogiri::HTML(html)
|
||||
auth_element = raw_doc.at('meta[@name="author"]')
|
||||
|
||||
@ -157,9 +157,10 @@ end
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# category_id :integer
|
||||
# public_type :boolean default(TRUE)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# idx_topic_id_status_type_deleted_at (topic_id,status_type) UNIQUE
|
||||
# idx_topic_id_public_type_deleted_at (topic_id) UNIQUE
|
||||
# index_topic_timers_on_user_id (user_id)
|
||||
#
|
||||
|
||||
@ -186,7 +186,7 @@ class TopicTrackingState
|
||||
if opts && opts[:skip_unread]
|
||||
"1=0"
|
||||
else
|
||||
TopicQuery.unread_filter(Topic, staff: opts && opts[:staff]).where_values.join(" AND ")
|
||||
TopicQuery.unread_filter(Topic, -999, staff: opts && opts[:staff]).where_values.join(" AND ").sub("-999", ":user_id")
|
||||
end
|
||||
|
||||
new =
|
||||
|
||||
@ -46,11 +46,6 @@ class TopicUser < ActiveRecord::Base
|
||||
notification_level: notification_level,
|
||||
notifications_reason_id: reason
|
||||
)
|
||||
|
||||
MessageBus.publish("/topic/#{topic_id}", {
|
||||
notification_level_change: notification_level,
|
||||
notifications_reason_id: reason
|
||||
}, user_ids: [user_id])
|
||||
end
|
||||
end
|
||||
|
||||
@ -139,23 +134,26 @@ SQL
|
||||
end
|
||||
|
||||
if attrs[:notification_level]
|
||||
MessageBus.publish(
|
||||
"/topic/#{topic_id}",
|
||||
{ notification_level_change: attrs[:notification_level] },
|
||||
user_ids: [user_id]
|
||||
)
|
||||
|
||||
DiscourseEvent.trigger(:topic_notification_level_changed,
|
||||
attrs[:notification_level],
|
||||
user_id,
|
||||
topic_id
|
||||
)
|
||||
notification_level_change(user_id, topic_id, attrs[:notification_level], attrs[:notifications_reason_id])
|
||||
end
|
||||
|
||||
rescue ActiveRecord::RecordNotUnique
|
||||
# In case of a race condition to insert, do nothing
|
||||
end
|
||||
|
||||
def notification_level_change(user_id, topic_id, notification_level, reason_id)
|
||||
message = { notification_level_change: notification_level }
|
||||
message[:notifications_reason_id] = reason_id if reason_id
|
||||
MessageBus.publish("/topic/#{topic_id}", message, user_ids: [user_id])
|
||||
|
||||
DiscourseEvent.trigger(:topic_notification_level_changed,
|
||||
notification_level,
|
||||
user_id,
|
||||
topic_id
|
||||
)
|
||||
|
||||
end
|
||||
|
||||
def create_missing_record(user_id, topic_id, attrs)
|
||||
now = DateTime.now
|
||||
|
||||
@ -297,7 +295,7 @@ SQL
|
||||
end
|
||||
|
||||
if before != after
|
||||
MessageBus.publish("/topic/#{topic_id}", { notification_level_change: after }, user_ids: [user.id])
|
||||
notification_level_change(user.id, topic_id, after, nil)
|
||||
end
|
||||
end
|
||||
|
||||
@ -328,7 +326,7 @@ SQL
|
||||
end
|
||||
end
|
||||
|
||||
MessageBus.publish("/topic/#{topic_id}", { notification_level_change: args[:new_status] }, user_ids: [user.id])
|
||||
notification_level_change(user.id, topic_id, args[:new_status], nil)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -93,7 +93,12 @@ class Upload < ActiveRecord::Base
|
||||
# download if external
|
||||
if external
|
||||
url = SiteSetting.scheme + ":" + previous_url
|
||||
file = FileHelper.download(url, max_file_size_kb, "discourse", true) rescue nil
|
||||
file = FileHelper.download(
|
||||
url,
|
||||
max_file_size: max_file_size_kb,
|
||||
tmp_file_name: "discourse",
|
||||
follow_redirect: true
|
||||
) rescue nil
|
||||
path = file.path
|
||||
else
|
||||
path = local_store.path_for(upload)
|
||||
|
||||
@ -20,13 +20,20 @@ class UserAvatar < ActiveRecord::Base
|
||||
|
||||
max = Discourse.avatar_sizes.max
|
||||
gravatar_url = "http://www.gravatar.com/avatar/#{email_hash}.png?s=#{max}&d=404"
|
||||
tempfile = FileHelper.download(gravatar_url, SiteSetting.max_image_size_kb.kilobytes, "gravatar")
|
||||
upload = UploadCreator.new(tempfile, 'gravatar.png', origin: gravatar_url, type: "avatar").create_for(user_id)
|
||||
tempfile = FileHelper.download(
|
||||
gravatar_url,
|
||||
max_file_size: SiteSetting.max_image_size_kb.kilobytes,
|
||||
tmp_file_name: "gravatar",
|
||||
skip_rate_limit: true
|
||||
)
|
||||
if tempfile
|
||||
upload = UploadCreator.new(tempfile, 'gravatar.png', origin: gravatar_url, type: "avatar").create_for(user_id)
|
||||
|
||||
if gravatar_upload_id != upload.id
|
||||
gravatar_upload.try(:destroy!) rescue nil
|
||||
self.gravatar_upload = upload
|
||||
save!
|
||||
if gravatar_upload_id != upload.id
|
||||
gravatar_upload.try(:destroy!) rescue nil
|
||||
self.gravatar_upload = upload
|
||||
save!
|
||||
end
|
||||
end
|
||||
rescue OpenURI::HTTPError
|
||||
save!
|
||||
@ -61,7 +68,14 @@ class UserAvatar < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def self.import_url_for_user(avatar_url, user, options=nil)
|
||||
tempfile = FileHelper.download(avatar_url, SiteSetting.max_image_size_kb.kilobytes, "sso-avatar", true)
|
||||
tempfile = FileHelper.download(
|
||||
avatar_url,
|
||||
max_file_size: SiteSetting.max_image_size_kb.kilobytes,
|
||||
tmp_file_name: "sso-avatar",
|
||||
follow_redirect: true
|
||||
)
|
||||
|
||||
return unless tempfile
|
||||
|
||||
ext = FastImage.type(tempfile).to_s
|
||||
tempfile.rewind
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
class SearchPostSerializer < BasicPostSerializer
|
||||
has_one :topic, serializer: TopicListItemSerializer
|
||||
has_one :topic, serializer: SearchTopicListItemSerializer
|
||||
|
||||
attributes :like_count, :blurb, :post_number
|
||||
|
||||
|
||||
12
app/serializers/search_topic_list_item_serializer.rb
Normal file
12
app/serializers/search_topic_list_item_serializer.rb
Normal file
@ -0,0 +1,12 @@
|
||||
class SearchTopicListItemSerializer < ListableTopicSerializer
|
||||
attributes :tags,
|
||||
:category_id
|
||||
|
||||
def include_tags?
|
||||
SiteSetting.tagging_enabled
|
||||
end
|
||||
|
||||
def tags
|
||||
object.tags.map(&:name)
|
||||
end
|
||||
end
|
||||
12
app/serializers/staff_action_logs_serializer.rb
Normal file
12
app/serializers/staff_action_logs_serializer.rb
Normal file
@ -0,0 +1,12 @@
|
||||
class StaffActionLogsSerializer < ApplicationSerializer
|
||||
attributes :user_history_actions
|
||||
has_many :staff_action_logs, serializer: UserHistorySerializer, embed: :objects
|
||||
|
||||
def staff_action_logs
|
||||
object[:staff_action_logs]
|
||||
end
|
||||
|
||||
def user_history_actions
|
||||
object[:user_history_actions]
|
||||
end
|
||||
end
|
||||
@ -1,3 +1,5 @@
|
||||
require_dependency 'distributed_mutex'
|
||||
|
||||
class PostAlerter
|
||||
|
||||
def self.post_created(post)
|
||||
@ -222,20 +224,22 @@ class PostAlerter
|
||||
|
||||
notification_type = Notification.types[:group_message_summary]
|
||||
|
||||
Notification.where(notification_type: notification_type, user_id: user.id).each do |n|
|
||||
n.destroy if n.data_hash[:group_id] == stat[:group_id]
|
||||
end
|
||||
DistributedMutex.synchronize("group_message_notify_#{user.id}") do
|
||||
Notification.where(notification_type: notification_type, user_id: user.id).each do |n|
|
||||
n.destroy if n.data_hash[:group_id] == stat[:group_id]
|
||||
end
|
||||
|
||||
Notification.create(
|
||||
notification_type: notification_type,
|
||||
user_id: user.id,
|
||||
data: {
|
||||
group_id: stat[:group_id],
|
||||
group_name: stat[:group_name],
|
||||
inbox_count: stat[:inbox_count],
|
||||
username: user.username_lower
|
||||
}.to_json
|
||||
)
|
||||
Notification.create(
|
||||
notification_type: notification_type,
|
||||
user_id: user.id,
|
||||
data: {
|
||||
group_id: stat[:group_id],
|
||||
group_name: stat[:group_name],
|
||||
inbox_count: stat[:inbox_count],
|
||||
username: user.username_lower
|
||||
}.to_json
|
||||
)
|
||||
end
|
||||
|
||||
# TODO decide if it makes sense to also publish a desktop notification
|
||||
end
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
PARAMS="$@"
|
||||
CMD="cd /src && RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 LD_PRELOAD=/usr/lib/libjemalloc.so RAILS_ENV=${RAILS_ENV:=development} rake $PARAMS"
|
||||
CMD="cd /src && RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 LD_PRELOAD=/usr/lib/libjemalloc.so RAILS_ENV=${RAILS_ENV:=development} bundle exec rake $PARAMS"
|
||||
docker exec -it -u discourse:discourse discourse_dev /bin/bash -c "$CMD"
|
||||
|
||||
@ -12,8 +12,6 @@ require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
|
||||
|
||||
|
||||
if ENV['RAILS_ENV'] != 'production'
|
||||
is_mac = !!(RUBY_PLATFORM =~ /darwin/)
|
||||
|
||||
require 'bootsnap'
|
||||
|
||||
Bootsnap.setup(
|
||||
@ -21,7 +19,7 @@ if ENV['RAILS_ENV'] != 'production'
|
||||
load_path_cache: true, # Should we optimize the LOAD_PATH with a cache?
|
||||
autoload_paths_cache: true, # Should we optimize ActiveSupport autoloads with cache?
|
||||
disable_trace: false, # Sets `RubyVM::InstructionSequence.compile_option = { trace_instruction: false }`
|
||||
compile_cache_iseq: is_mac, # Should compile Ruby code into ISeq cache?
|
||||
compile_cache_yaml: false # Should compile YAML into a cache?
|
||||
compile_cache_iseq: true, # Should compile Ruby code into ISeq cache?
|
||||
compile_cache_yaml: false # Skip YAML cache for now, cause we were seeing issues with it
|
||||
)
|
||||
end
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# Some sanity checking so we don't count on an unindexed column on boot
|
||||
if User.limit(20).count < 20 && User.where(admin: true).count == 1
|
||||
if User.limit(20).count < 20 && User.where(admin: true).human_users.count == 0
|
||||
notice =
|
||||
if GlobalSetting.developer_emails.blank?
|
||||
"Congratulations, you installed Discourse! Unfortunately, no administrator emails were defined during setup, so finalizing the configuration <a href='https://meta.discourse.org/t/how-to-create-an-administrator-account-after-install/14046'>may be difficult</a>."
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
require_dependency 'twitter_api'
|
||||
|
||||
Onebox.options = {
|
||||
twitter_client: TwitterApi
|
||||
twitter_client: TwitterApi,
|
||||
redirect_limit: 1,
|
||||
user_agent: "Discourse Forum Onebox v#{Discourse::VERSION::STRING}"
|
||||
}
|
||||
|
||||
@ -234,7 +234,7 @@ ar:
|
||||
generic_error: "نأسف، حدث عطل ما."
|
||||
generic_error_with_reason: "حدث عطل ما: %{error}"
|
||||
sign_up: "سجّل حسابا"
|
||||
log_in: "لِج"
|
||||
log_in: "تسجل الدخول"
|
||||
age: "العمر"
|
||||
joined: "انضم في"
|
||||
admin_title: "المدير"
|
||||
@ -305,7 +305,7 @@ ar:
|
||||
bookmark: "انقر لتعليم أوّل مشاركة في هذا الموضوع"
|
||||
unbookmark: "انقر لإزالة كلّ العلامات في هذا الموضوع"
|
||||
bookmarks:
|
||||
not_logged_in: "نأسف، عليك الولوج لتعليم المشاركات"
|
||||
not_logged_in: "نأسف، عليك الدخول لتعليم المشاركات"
|
||||
created: "لقد علّمت هذه المشاركة"
|
||||
not_bookmarked: "لقد قرأتَ هذه المشاركة، انقر لتعليمها"
|
||||
last_read: "هذا آخر مشاركة قرأتها، انقر لتعليمها"
|
||||
@ -947,7 +947,7 @@ ar:
|
||||
most_liked_users: "أكثر من أعجبه"
|
||||
most_replied_to_users: "أكثر من رَدّ عليه"
|
||||
no_likes: "لا إعجابات بعد."
|
||||
associated_accounts: "جلسات الولوج"
|
||||
associated_accounts: "جلسات الدخول"
|
||||
ip_address:
|
||||
title: "عنوان IP الأخير"
|
||||
registration_ip_address:
|
||||
@ -990,7 +990,7 @@ ar:
|
||||
refresh: "تحديث"
|
||||
read_only_mode:
|
||||
enabled: "هذا الموقع في وضع القراءة فقط. نأمل أن تتابع تصفّحه، ولكنّ الرّدّ، والإعجاب وغيرها من إجراءات معطّلة حاليًّا."
|
||||
login_disabled: "الولوج معطّل في حال كان الموقع في وضع القراءة فقط."
|
||||
login_disabled: "الدخول معطّل في حال كان الموقع في وضع القراءة فقط."
|
||||
logout_disabled: "الخروج معطّل في حال كان الموقع في وضع القراءة فقط."
|
||||
too_few_topics_and_posts_notice: " يوجد حاليا<strong>%{currentTopics} / %{requiredTopics}</strong> المواضيع و <strong>%{currentPosts} / %{requiredPosts}</strong> المشاركات. "
|
||||
too_few_topics_notice: "قم بإنشاء على الاقل 5 مواضيع عامة و %{posts} عامة للبدء بالمناقشة , المستخدمين الجدد لايمكن أن يحصلوا على مستوى الثقة حتى يكون هناك محتوى لهم , هذه الرسالة تظهر فقط للمدير"
|
||||
@ -1024,7 +1024,7 @@ ar:
|
||||
sign_up: "إشترك"
|
||||
hide_session: "ذكرني غدا"
|
||||
hide_forever: "لا شكرا"
|
||||
hidden_for_session: "لا بأس، سأسلك غدًا. يمكنك دومًا استخدام ’لِج‘ لإنشاء حساب."
|
||||
hidden_for_session: "لا بأس، سأسلك غدًا. يمكنك دومًا استخدام ’تسجل الدخول‘ لإنشاء حساب."
|
||||
intro: "يا مرحبًا! :heart_eyes: يبدو أنّك مستمتع بقراءة هذا النّقاش، ولكنّك لم تسجّل حسابًا بعد."
|
||||
value_prop: "عندما تنتهي من إنشاء الحساب، سترجع إلى حيث توقّفت، فنحن نتذكّر دومًا المكان الذي توقّفت عنده. يمكنك أيضًا استقبال الإشعارات عبر الموقع والبريد الإلكترونيّ متى ما نُشرت مشاركات جديدة. ولا تنسَ إبداء إعجابك بتلك المشاركات التي تحبّها. :heartbeat:"
|
||||
summary:
|
||||
@ -1066,13 +1066,13 @@ ar:
|
||||
complete_username_not_found: "لا حساب يطابق اسم المستخدم <b>%{username}</b>"
|
||||
complete_email_not_found: "لا حساب يطابق <b>%{email}</b>"
|
||||
login:
|
||||
title: "لِج"
|
||||
title: "سجل دخولك"
|
||||
username: "المستخدم"
|
||||
password: "كلمة السّرّ"
|
||||
email_placeholder: "البريد الإلكتروني أو اسم المستخدم"
|
||||
caps_lock_warning: "مفتاح Caps Lock مفعّل"
|
||||
error: "خطأ مجهول"
|
||||
rate_limit: "رجاءً انتظر قبل أن تلج مرّة أخرى."
|
||||
rate_limit: "رجاءً انتظر قبل أن تسجل الدخول مرّة أخرى."
|
||||
blank_username_or_password: "رجاءً أدخل اسم المستخدم (أو البريد الإلكترونيّ) وكلمة السّرّ."
|
||||
reset_password: 'صفّر كلمة السّرّ'
|
||||
logging_in: "يلج..."
|
||||
@ -1080,15 +1080,15 @@ ar:
|
||||
authenticating: "يستوثق..."
|
||||
awaiting_approval: "لم يوافق أيّ من أعضاء الطّاقم على حسابك بعد. سيُرسل إليك بريد حالما يتمّ ذلك."
|
||||
requires_invite: "المَعذرة، الوصول لهذا الموقع خاص بالمدعويين فقط."
|
||||
not_activated: "لا يمكنك الولوج بعد. لقد أرسلنا سابقًا بريدًا إلى <b>{{sentTo}}</b>. رجاء اتّبع الإرشادات فيه لتفعيل حسابك."
|
||||
not_allowed_from_ip_address: "لا يمكنك الولوج من عنوان IP هذا."
|
||||
admin_not_allowed_from_ip_address: "لا يمكنك الولوج كمدير من عنوان IP هذا."
|
||||
not_activated: "لا يمكنك الدخول بعد. لقد أرسلنا سابقًا بريدًا إلى <b>{{sentTo}}</b>. رجاء اتّبع الإرشادات فيه لتفعيل حسابك."
|
||||
not_allowed_from_ip_address: "لا يمكنك الدخول من عنوان IP هذا."
|
||||
admin_not_allowed_from_ip_address: "لا يمكنك تسجيل الدخول كمدير من عنوان IP هذا."
|
||||
resend_activation_email: "انقر هنا لإرسال بريد التّفعيل مرّة أخرى."
|
||||
sent_activation_email_again: "لقد أرسلنا بريد تفعيل آخر إلى <b>{{currentEmail}}</b>. قد يستغرق وصوله بضعة دقائق. تحقّق من فحص مجلّد السّخام."
|
||||
to_continue: "رجاءً لِج"
|
||||
preferences: "عليك الولوج لتغيير تفضيلاتك الشّخصيّة."
|
||||
to_continue: "رجاءً سجل دخولك"
|
||||
preferences: "عليك تسجيل الدخول لتغيير تفضيلاتك الشّخصيّة."
|
||||
forgot: "لا أذكر معلومات حسابي"
|
||||
not_approved: "لم تتمّ الموافقة على حسابك بعد. سيصلك إشعار عبر البريد عندما يجهز لتلج."
|
||||
not_approved: "لم تتمّ الموافقة على حسابك بعد. سيصلك إشعار عبر البريد عندما يجهز لتسجل دخولك."
|
||||
google:
|
||||
title: "عبر غوغل"
|
||||
message: "يستوثق عبر غوغل (تأكّد من تعطيل مانعات المنبثقات)"
|
||||
@ -1114,10 +1114,10 @@ ar:
|
||||
accept_title: "دعوة"
|
||||
welcome_to: "مرحباً بك في %{site_name}!"
|
||||
invited_by: "لقد دعاك:"
|
||||
social_login_available: "يمكنك أيضًا الولوج عبر أيّ شبكة اجتماعيّة مستخدمًا هذا البريد."
|
||||
social_login_available: "يمكنك أيضًا الدخول عبر أيّ شبكة اجتماعيّة مستخدمًا هذا البريد."
|
||||
your_email: "بريدك الإلكتروني <b>%{email}</b>."
|
||||
accept_invite: "قُبول الدعوة "
|
||||
success: "أُنشئ حسابك وقد ولجت الآن."
|
||||
success: "أُنشئ حسابك وقد سجلت الدخول الآن."
|
||||
password_label: "تعيين رمز سري (اختياري)"
|
||||
password_reset:
|
||||
continue: "تابع نحو %{site_name}"
|
||||
@ -1437,7 +1437,7 @@ ar:
|
||||
invalid_access:
|
||||
title: "الموضوع خاص"
|
||||
description: "لا تملك صلاحيات للوصول لهذا الموضوع"
|
||||
login_required: "عليك الولوج لمشاهدة هذا الموضوع."
|
||||
login_required: "عليك بتسجيل الدخول لمشاهدة هذا الموضوع."
|
||||
server_error:
|
||||
title: "فشل تحميل الموضوع"
|
||||
description: "آسفون، تعذر علينا تحميل هذا الموضوع، قد يرجع ذلك إلى مشكلة بالاتصال. من فضلك حاول مجددا. أخبرنا بالمشكلة إن استمر حدوثها."
|
||||
@ -1633,7 +1633,7 @@ ar:
|
||||
username_placeholder: "اسم المستخدم"
|
||||
action: 'أرسل دعوة'
|
||||
help: 'ادعُ الغير إلى هذا الموضوع عبر البريد الإلكترونيّ أو الإشعارات'
|
||||
to_forum: "سنُرسل بريدًا يتيح لصديقك الانضمام مباشرةً بنقر رابط ما، الولوج غير مطلوب."
|
||||
to_forum: "سنُرسل بريدًا يتيح لصديقك الانضمام مباشرةً بنقر رابط ما، الدخول غير مطلوب."
|
||||
sso_enabled: "أدخل اسم مَن تريد دعوته إلى هذا الموضوع."
|
||||
to_topic_blank: "أدخل اسم مَن تريد دعوته إلى هذا الموضوع أو بريده."
|
||||
to_topic_email: "لقد أدخلت عنوان بريد إلكترونيّ. سنرسل بريدًا يحتوي دعوة تتيح لصديقك الرّد مباشرة على هذا الموضوع."
|
||||
@ -1643,7 +1643,7 @@ ar:
|
||||
success_email: "قمنا بإرسال دعوة بالبريد لـ <b>{{emailOrUsername}}</b> . سيتم تنبيهك عند قبول الدعوة , تحقق من تبويب الدعوات في صفحتك الشخصية لمتابعة دعوتك."
|
||||
success_username: "دعونا هذا العضو للمشاركة في هذا الموضوع."
|
||||
error: "نأسف لا يمكنك دعوة هذا المُستَخدم , ربما لأنه مُسَجِل لدينا مسبقاً (الدعوات محدودة)"
|
||||
login_reply: 'عليك الولوج للرّدّ'
|
||||
login_reply: 'عليك تسجيل الدخول للرّدّ'
|
||||
filters:
|
||||
n_posts:
|
||||
zero: "لا مشاركات"
|
||||
@ -1781,7 +1781,7 @@ ar:
|
||||
too_many_dragged_and_dropped_files: "آسفون، يمكنك فقط رفع 10 ملفّات كلّ مرة."
|
||||
image_upload_not_allowed_for_new_user: "نأسف، لا يمكن للمستخدمين الجدد رفع الصّور."
|
||||
attachment_upload_not_allowed_for_new_user: "نأسف، لا يمكن للمستخدمين الجدد رفع المرفقات."
|
||||
attachment_download_requires_login: "نأسف، عليك الولوج لتنزيل المرفقات."
|
||||
attachment_download_requires_login: "نأسف، عليك تسجيل الدخول لتنزيل المرفقات."
|
||||
abandon:
|
||||
confirm: "أمتأكد من التخلي عن المشاركة؟"
|
||||
no_value: "لا، أبقها"
|
||||
@ -1798,7 +1798,7 @@ ar:
|
||||
has_liked: "أعجبتك هذه المشاركة"
|
||||
undo_like: "ألغِ الإعجاب"
|
||||
edit: "عدّل المشاركة"
|
||||
edit_anonymous: "نأسف، عليك الولوج لتعديل المشاركة."
|
||||
edit_anonymous: "نأسف، عليك تسجيل الدخول لتعديل المشاركة."
|
||||
flag: "بلَغ عن هذا الموضوع او ارسل تنبيه خاص لأدارة الموقع."
|
||||
delete: "احذف المشاركة"
|
||||
undelete: "التراجع عن حذف المشاركة"
|
||||
@ -2928,7 +2928,6 @@ ar:
|
||||
do_nothing: "لا تفعل شيء"
|
||||
staff_actions:
|
||||
title: "عمليات المشرفين"
|
||||
instructions: "إضغط على أسماء الإعضاء والإجراءات لتصفيه القائمة . إضغط على صورة العرض للإنتقال لصفحة العضو"
|
||||
clear_filters: "إظهار كل شيء"
|
||||
staff_user: "عضو إداري"
|
||||
target_user: "عضو مستهدف"
|
||||
@ -3295,7 +3294,7 @@ ar:
|
||||
legal: "قانوني"
|
||||
uncategorized: 'أخرى'
|
||||
backups: "النسخ الإحتياطية"
|
||||
login: "الولوج"
|
||||
login: "تسجيل الدخول"
|
||||
plugins: "الإضافات "
|
||||
user_preferences: "تفضيلات العضو"
|
||||
tags: "الوسوم"
|
||||
|
||||
@ -1968,7 +1968,6 @@ bs_BA:
|
||||
do_nothing: "do nothing"
|
||||
staff_actions:
|
||||
title: "Staff Actions"
|
||||
instructions: "Click usernames and actions to filter the list. Click avatars to go to user pages."
|
||||
clear_filters: "Show Everything"
|
||||
staff_user: "Staff User"
|
||||
target_user: "Target User"
|
||||
|
||||
@ -2569,7 +2569,6 @@ cs:
|
||||
do_nothing: "nedělat nic"
|
||||
staff_actions:
|
||||
title: "Akce redaktorů"
|
||||
instructions: "Pro filtrování seznamu klikejte na uživatele a akce. Kliknutí na avatar otevře profil uživatele."
|
||||
clear_filters: "Zobrazit vše"
|
||||
staff_user: "Člen redakce"
|
||||
target_user: "Cílový uživatel"
|
||||
|
||||
@ -2761,7 +2761,6 @@ da:
|
||||
do_nothing: "gør intet"
|
||||
staff_actions:
|
||||
title: "Handlinger"
|
||||
instructions: "Klik på brugernavne og handlinger for at filtrere listen. Klik på profilbillederne for at gå til brugersiderne."
|
||||
clear_filters: "Vis alt"
|
||||
staff_user: "Bruger"
|
||||
target_user: "Bruger"
|
||||
|
||||
@ -518,6 +518,7 @@ de:
|
||||
first_notification: "Deine erste Benachrichtigung! Wähle sie aus um fortzufahren."
|
||||
disable_jump_reply: "Springe nicht zu meinem Beitrag, nachdem ich geantwortet habe"
|
||||
dynamic_favicon: "Zeige die Anzahl der neuen und geänderten Themen im Browser-Symbol an"
|
||||
theme_default_on_all_devices: "Übernehme dieses Theme für alle meine Geräte."
|
||||
external_links_in_new_tab: "Öffne alle externen Links in einem neuen Tab"
|
||||
enable_quoting: "Aktiviere Zitatantwort mit dem hervorgehobenen Text"
|
||||
change: "ändern"
|
||||
@ -754,6 +755,7 @@ de:
|
||||
rescinded: "Einladung zurückgenommen"
|
||||
reinvite: "Einladung erneut senden"
|
||||
reinvite_all: "Alle Einladungen erneut senden"
|
||||
reinvite_all_confirm: "Bist Du dir sicher alle Einladungen nochmals zu senden?"
|
||||
reinvited: "Einladung erneut gesendet"
|
||||
reinvited_all: "Alle Einladungen erneut gesendet!"
|
||||
time_read: "Lesezeit"
|
||||
@ -1029,6 +1031,7 @@ de:
|
||||
cannot_see_mention:
|
||||
category: "Du hast {{username}} erwähnt, aber diese Person wird nicht benachrichtigt da sie keinen Zugriff auf diese Kategorie hat. Füge sie einer Gruppe hinzu die Zugriff auf diese Kategorie hat."
|
||||
private: "Du hast {{username}} erwähnt, aber diese Person wird nicht benachrichtigt da sie diese persönliche Nachricht nicht sehen kann. Lade sie zu dieser PM ein."
|
||||
duplicate_link: "Es sieht so aus als wäre dein Link auf <b>{{domain}}</b> in dem Thema bereits geschrieben worden von <b>@{{username}}</b> in <a href='{{post_url}}'>einer Antwort vor {{ago}}</a> – bist du sicher, dass du ihn noch einmal schreiben möchtest?"
|
||||
error:
|
||||
title_missing: "Titel ist erforderlich"
|
||||
title_too_short: "Titel muss mindestens {{min}} Zeichen lang sein"
|
||||
@ -1118,6 +1121,7 @@ de:
|
||||
moved_post: "<i title='Beitrag verschoben' class='fa fa-sign-out'></i><p><span>{{username}}</span> hat {{description}} verschoben</p>"
|
||||
linked: "<i title='linked post' class='fa fa-link'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
granted_badge: "<i title='Abzeichen verliehen' class='fa fa-certificate'></i><p>Abzeichen '{{description}}' erhalten</p>"
|
||||
topic_reminder: "<i title='topic reminder' class='fa fa-hand-o-right'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
watching_first_post: "<i title='new topic' class='fa fa-dot-circle-o'></i><p><span>Neues Thema</span> {{description}}</p>"
|
||||
group_message_summary:
|
||||
one: "<i title='messages in group inbox' class='fa fa-group'></i><p> Eine Nachricht in deinem {{group_name}} Postfach</p>"
|
||||
@ -1234,6 +1238,7 @@ de:
|
||||
select_all: "Wähle alle aus"
|
||||
clear_all: "Auswahl aufheben"
|
||||
unlist_topics: "Themen unsichtbar machen"
|
||||
relist_topics: "Themen neu auflisten"
|
||||
reset_read: "Gelesene zurücksetzen"
|
||||
delete: "Themen löschen"
|
||||
dismiss: "Ignorieren"
|
||||
@ -1244,8 +1249,10 @@ de:
|
||||
dismiss_new: "Neue Themen ignorieren"
|
||||
toggle: "zu Massenoperationen auf Themen umschalten"
|
||||
actions: "Massenoperationen"
|
||||
change_category: "Kategorie auswählen"
|
||||
close_topics: "Themen schließen"
|
||||
archive_topics: "Themen archivieren"
|
||||
notification_level: "Benachrichtigungen"
|
||||
choose_new_category: "Neue Kategorie für die gewählten Themen:"
|
||||
selected:
|
||||
one: "Du hast <b>ein</b> Thema ausgewählt."
|
||||
@ -1354,6 +1361,7 @@ de:
|
||||
later_this_week: "Später in dieser Woche"
|
||||
this_weekend: "Dieses Wochenende"
|
||||
next_week: "Nächste Woche"
|
||||
next_month: "Nächster Monat"
|
||||
pick_date_and_time: "Datum und Zeit wählen"
|
||||
set_based_on_last_post: "Schließen basierend auf dem letzten Beitrag"
|
||||
publish_to_category:
|
||||
@ -1369,11 +1377,17 @@ de:
|
||||
label: "Thema automatisch schließen (Stunden):"
|
||||
error: "Bitte gib einen gültigen Wert ein."
|
||||
based_on_last_post: "Nicht schließen, bevor der letzte Beitrag in dem Thema mindestens so alt ist."
|
||||
auto_delete:
|
||||
title: "Thema automatisch löschen"
|
||||
reminder:
|
||||
title: "Erinnere mich"
|
||||
status_update_notice:
|
||||
auto_open: "Dieses Thema wird automatisch geöffnet %{timeLeft}."
|
||||
auto_close: "Dieses Thema wird automatisch geschlossen %{timeLeft}."
|
||||
auto_publish_to_category: "Dieses Thema wird in <a href=%{categoryUrl}>#%{categoryName}</a> veröffentlicht %{timeLeft}."
|
||||
auto_close_based_on_last_post: "Dieses Thema wird %{duration} nach der letzten Antwort geschlossen."
|
||||
auto_delete: "Dieses Thema wird automatisch gelöscht %{timeLeft}."
|
||||
auto_reminder: "Du wirst über dieses Thema erinnert %{timeLeft}."
|
||||
auto_close_title: 'Automatisches Schließen'
|
||||
auto_close_immediate:
|
||||
one: "Der letzte Beitrag in diesem Thema ist bereits eine Stunde alt. Das Thema wird daher sofort geschlossen."
|
||||
@ -2126,6 +2140,8 @@ de:
|
||||
granted_on: "Verliehen %{date}"
|
||||
others_count: "Andere mit diesem Abzeichen (%{count})"
|
||||
title: Abzeichen
|
||||
allow_title: "Du kannst dieses Abzeichen als Titel verwenden"
|
||||
multiple_grant: "Du kannst dieses Abzeichen mehrmals verliehen bekommen"
|
||||
badge_count:
|
||||
one: "1 Abzeichen"
|
||||
other: "%{count} Abzeichen"
|
||||
@ -2594,10 +2610,17 @@ de:
|
||||
color_scheme_select: "Wähle Farben für dieses Theme"
|
||||
custom_sections: "Benutzerdefinierte Abschnitte:"
|
||||
theme_components: "Theme-Komponenten"
|
||||
uploads: "Uploads"
|
||||
no_uploads: "Du kannst Medieninhalte hochladen, die zu deinem Theme gehören, wie etwa Schriftarten und Bilder."
|
||||
add_upload: "Upload hinzufügen"
|
||||
upload_file_tip: "Wähle einen hochzuladenen Medieninhalt aus (png, woff2, usw.)"
|
||||
variable_name: "SCSS Variablen-Name:"
|
||||
upload: "Hochladen"
|
||||
child_themes_check: "Theme beinhaltet andere Kinder-Themes"
|
||||
css_html: "Benutzerdefiniertes CSS/HTML"
|
||||
edit_css_html: "Bearbeite CSS/HTML"
|
||||
edit_css_html_help: "Du hast kein CSS oder HTML bearbeitet"
|
||||
delete_upload_confirm: "Upload löschen? (Theme-CSS funktioniert eventuell nicht mehr!)"
|
||||
import_web_tip: "Repository mit dem Theme"
|
||||
import_file_tip: ".dcstyle.json Datei mit dem Theme"
|
||||
about_theme: "Über das Theme"
|
||||
@ -2758,7 +2781,6 @@ de:
|
||||
do_nothing: "nichts tun"
|
||||
staff_actions:
|
||||
title: "Team-Aktionen"
|
||||
instructions: "Klicke auf die Benutzernamen und Aktionen, um die Liste zu filtern. Klicke auf das Profilbild, um die Benutzerseiten zu sehen."
|
||||
clear_filters: "Alles anzeigen"
|
||||
staff_user: "Team-Mitglied"
|
||||
target_user: "Betroffener Benutzer"
|
||||
@ -3193,6 +3215,7 @@ de:
|
||||
sample: "Benutze den folgenden HTML code für deine Site um Discourse Beiträge zu erstellen und einzubetten. Ersetze <b>REPLACE_ME</b> mit der URL der Site in die du sie einbetten möchtest."
|
||||
title: "Einbettung"
|
||||
host: "Erlaubte Hosts"
|
||||
class_name: "Klassenname"
|
||||
path_whitelist: "Pfad Whitelist"
|
||||
edit: "bearbeiten"
|
||||
category: "In Kategorie Beitrag schreiben"
|
||||
@ -3212,6 +3235,7 @@ de:
|
||||
embed_classname_whitelist: "Erlaubte CSS-Klassen"
|
||||
feed_polling_enabled: "Beiträge über RSS/ATOM importieren"
|
||||
feed_polling_url: "URL des RSS/ATOM Feeds für den Import"
|
||||
feed_polling_frequency_mins: "Häufigkeit der Feed-Abfrage (in Minuten)"
|
||||
save: "Einbettungseinstellungen speichern"
|
||||
permalink:
|
||||
title: "Permanentlinks"
|
||||
|
||||
@ -2632,7 +2632,6 @@ el:
|
||||
do_nothing: "μην κάνεις τίποτα"
|
||||
staff_actions:
|
||||
title: "Δράσεις συνεργατών"
|
||||
instructions: "Κάνε κλικ στα χρηστώνυμα και τις δράσεις για να φιλτράρεις τη λίστα. Κάνε κλικ στις εικόνες προφίλ για να πας στις σελίδες των χρηστών. "
|
||||
clear_filters: "Δείξτα όλα"
|
||||
staff_user: "Συνεργάτης"
|
||||
target_user: "Χρήστη που τον αφορά"
|
||||
|
||||
@ -1099,6 +1099,8 @@ en:
|
||||
your_email: "Your account email address is <b>%{email}</b>."
|
||||
accept_invite: "Accept Invitation"
|
||||
success: "Your account has been created and you're now logged in."
|
||||
name_label: "Name"
|
||||
name_label_optional: "Name (optional)"
|
||||
password_label: "Set Password (optional)"
|
||||
|
||||
password_reset:
|
||||
@ -1144,7 +1146,7 @@ en:
|
||||
cannot_see_mention:
|
||||
category: "You mentioned {{username}} but they won't be notified because they do not have access to this category. You will need to add them to a group that has access to this category."
|
||||
private: "You mentioned {{username}} but they won't be notified because they are unable to see this personal message. You will need to invite them to this PM."
|
||||
duplicate_link: "It looks like your link to <b>{{domain}}</b> was already posted in the topic by <b>@{{username}}</b> in <a href='{{post_url}}'>a reply {{ago}} ago</a> – are you sure you want to post it again?"
|
||||
duplicate_link: "It looks like your link to <b>{{domain}}</b> was already posted in the topic by <b>@{{username}}</b> in <a href='{{post_url}}'>a reply on {{ago}}</a> – are you sure you want to post it again?"
|
||||
|
||||
error:
|
||||
title_missing: "Title is required"
|
||||
@ -3023,8 +3025,9 @@ en:
|
||||
block: "block"
|
||||
do_nothing: "do nothing"
|
||||
staff_actions:
|
||||
all: "all"
|
||||
filter: "Filter:"
|
||||
title: "Staff Actions"
|
||||
instructions: "Click usernames and actions to filter the list. Click profile pictures to go to user pages."
|
||||
clear_filters: "Show Everything"
|
||||
staff_user: "Staff User"
|
||||
target_user: "Target User"
|
||||
@ -3077,6 +3080,8 @@ en:
|
||||
change_readonly_mode: "change readonly mode"
|
||||
backup_download: "download backup"
|
||||
backup_destroy: "destroy backup"
|
||||
reviewed_post: "reviewed post"
|
||||
custom_staff: "plugin custom action"
|
||||
screened_emails:
|
||||
title: "Screened Emails"
|
||||
description: "When someone tries to create a new account, the following email addresses will be checked and the registration will be blocked, or some other action performed."
|
||||
@ -3254,6 +3259,8 @@ en:
|
||||
reset_bounce_score:
|
||||
label: "Reset"
|
||||
title: "Reset bounce score back to 0"
|
||||
visit_profile: "Visit <a href='%{url}'>this user's preferences page</a> to edit their profile"
|
||||
|
||||
deactivate_explanation: "A deactivated user must re-validate their email."
|
||||
suspended_explanation: "A suspended user can't log in."
|
||||
block_explanation: "A blocked user can't post or start topics."
|
||||
|
||||
@ -30,10 +30,10 @@ es:
|
||||
timeline_date: "MMM YYYY"
|
||||
long_no_year: "MMM D h:mm a"
|
||||
long_no_year_no_time: "MMM D"
|
||||
full_no_year_no_time: "MMMM Do"
|
||||
full_no_year_no_time: "D MMMM"
|
||||
long_with_year: "MMM D, YYYY h:mm a"
|
||||
long_with_year_no_time: "MMM D, YYYY"
|
||||
full_with_year_no_time: "MMMM Do, YYYY"
|
||||
full_with_year_no_time: "D MMMM YYYY"
|
||||
long_date_with_year: "D MMM, 'YY LT"
|
||||
long_date_without_year: "D MMM, LT"
|
||||
long_date_with_year_without_time: "D MMM, 'YY"
|
||||
@ -101,7 +101,7 @@ es:
|
||||
other: "%{count} años después"
|
||||
previous_month: 'Mes anterior'
|
||||
next_month: 'Próximo mes'
|
||||
placeholder: Elige una fecha
|
||||
placeholder: Escoge una fecha
|
||||
share:
|
||||
topic: 'comparte un enlace a este tema'
|
||||
post: 'post #%{postNumber}'
|
||||
@ -140,7 +140,7 @@ es:
|
||||
enabled: 'hizo de esto un banner %{when}. Aparecerá en la parte superior de cada página hasta que sea descartada por el usuario.'
|
||||
disabled: 'eliminado este banner %{when}. Ya no aparecerá en la parte superior de cada página.'
|
||||
topic_admin_menu: "acciones de administrador para el tema"
|
||||
wizard_required: "¡Bienvenido a tu nuevo Discourse! Empezaremos con <a href='%{url}' data-auto-route='true'>el asistente de configuración</a> ✨"
|
||||
wizard_required: "¡Bienvenido a tu nuevo Discourse! Empecemos con <a href='%{url}' data-auto-route='true'>el asistente de configuración</a> ✨"
|
||||
emails_are_disabled: "Todos los emails salientes han sido desactivados por un administrador. No se enviará ninguna notificación por email."
|
||||
bootstrap_mode_enabled: "Para lanzar tu nuevo sitio más fácilmente, estás en modo de arranque. A todos los nuevos usuarios se les concederá el nivel 1 de confianza y recibirán resúmenes diarios por email. Esto se desactivará automáticamente cuando el número total de usuarios exceda los %{min_users}."
|
||||
bootstrap_mode_disabled: "El modo de arranque se desactivará en las próximas 24 horas."
|
||||
@ -206,7 +206,7 @@ es:
|
||||
one: "{{count}} carácter"
|
||||
other: "{{count}} caracteres"
|
||||
suggested_topics:
|
||||
title: "Temas Sugeridos"
|
||||
title: "Temas sugeridos"
|
||||
pm_title: "Mensajes sugeridos"
|
||||
about:
|
||||
simple_title: "Acerca de"
|
||||
@ -270,7 +270,7 @@ es:
|
||||
choose_topic:
|
||||
none_found: "Ningún tema encontrado."
|
||||
title:
|
||||
search: "Buscar un Tema por nombre, url o id:"
|
||||
search: "Buscar tema por nombre, URL o ID:"
|
||||
placeholder: "escribe el título de tema aquí"
|
||||
queue:
|
||||
topic: "Tema:"
|
||||
@ -427,8 +427,8 @@ es:
|
||||
flair_preview_image: "Previsualización de la imagen"
|
||||
flair_note: "Nota: el adorno solo se mostrará para el grupo primario del usuario."
|
||||
user_action_groups:
|
||||
'1': "'Me gusta' Dados"
|
||||
'2': "'Me gusta' Recibidos"
|
||||
'1': "'Me gusta' dados"
|
||||
'2': "'Me gusta' recibidos"
|
||||
'3': "Marcadores"
|
||||
'4': "Temas"
|
||||
'5': "Posts"
|
||||
@ -436,7 +436,7 @@ es:
|
||||
'7': "Menciones"
|
||||
'9': "Citas"
|
||||
'11': "Ediciones"
|
||||
'12': "Elementos Enviados"
|
||||
'12': "Elementos enviados"
|
||||
'13': "Bandeja de entrada"
|
||||
'14': "Pendiente"
|
||||
categories:
|
||||
@ -490,8 +490,8 @@ es:
|
||||
download_archive:
|
||||
button_text: "Descargar mis posts"
|
||||
confirm: "¿Seguro que quieres descargar tus posts?"
|
||||
success: "Descarga iniciada, se te notificará por mensaje cuando el proceso se haya completado."
|
||||
rate_limit_error: "Los posts pueden ser descargados una vez por día, por favor, inténtalo de nuevo mañana."
|
||||
success: "Descarga iniciada, se te notificará con un mensaje cuando el proceso se haya completado."
|
||||
rate_limit_error: "Los posts pueden ser descargados una vez al día. Por favor, inténtalo de nuevo mañana."
|
||||
new_private_message: "Nuevo mensaje"
|
||||
private_message: "Mensaje"
|
||||
private_messages: "Mensajes"
|
||||
@ -500,8 +500,8 @@ es:
|
||||
expand_profile: "Expandir"
|
||||
bookmarks: "Marcadores"
|
||||
bio: "Acerca de mí"
|
||||
invited_by: "Invitado Por"
|
||||
trust_level: "Nivel de Confianza"
|
||||
invited_by: "Invitado por"
|
||||
trust_level: "Nivel de confianza"
|
||||
notifications: "Notificaciones"
|
||||
statistics: "Estadísticas"
|
||||
desktop_notifications:
|
||||
@ -512,8 +512,8 @@ es:
|
||||
perm_denied_expl: "Has denegado los permisos para las notificaciones en tu navegador web. Configura tu navegador para permitir notificaciones. "
|
||||
disable: "Desactivar notificaciones"
|
||||
enable: "Activar notificaciones"
|
||||
each_browser_note: "Nota: Tendrás que cambiar esta opción para cada navegador que uses."
|
||||
dismiss_notifications: "Descartar todos"
|
||||
each_browser_note: "Nota: tendrás que cambiar esta opción para cada navegador que uses."
|
||||
dismiss_notifications: "Descartar todas"
|
||||
dismiss_notifications_tooltip: "Marcar todas las notificaciones no leídas como leídas"
|
||||
first_notification: "¡Tu primera notificación! Selecciónala para comenzar."
|
||||
disable_jump_reply: "No dirigirme a mi post cuando responda"
|
||||
@ -557,9 +557,9 @@ es:
|
||||
watched_first_post_tags_instructions: "Se te notificará del primer post en cada nuevo tema con estas etiquetas."
|
||||
muted_categories: "Silenciado"
|
||||
muted_categories_instructions: "No serás notificado de ningún tema en estas categorías, y no aparecerán en la página de mensajes recientes."
|
||||
delete_account: "Borrar Mi Cuenta"
|
||||
delete_account_confirm: "¿Estás seguro que quieres borrar permanentemente tu cuenta? ¡Esta acción no puede ser revertida!"
|
||||
deleted_yourself: "Tu cuenta ha sido borrada exitosamente."
|
||||
delete_account: "Borrar mi cuenta"
|
||||
delete_account_confirm: "¿Estás seguro de que quieres borrar permanentemente tu cuenta? ¡Esta acción se puede deshacer!"
|
||||
deleted_yourself: "Tu cuenta ha sido con éxito."
|
||||
delete_yourself_not_allowed: "No puedes borrar tu cuenta en este momento. Contacta a un administrador para borrar tu cuenta en tu nombre."
|
||||
unread_message_count: "Mensajes"
|
||||
admin_delete: "Eliminar"
|
||||
@ -613,16 +613,16 @@ es:
|
||||
title: "Cambiar 'Acerca de mí'"
|
||||
error: "Hubo un error al cambiar este valor."
|
||||
change_username:
|
||||
title: "Cambiar Nombre de Usuario"
|
||||
title: "Cambiar nombre de usuario"
|
||||
confirm: "Si cambias tu nombre de usuario, todas las citas anteriores a tus posts y menciones a tu @nombre se romperán. ¿Seguro que quieres hacerlo?"
|
||||
taken: "Lo sentimos, ese nombre de usuario ya está siendo usado."
|
||||
error: "Ha ocurrido un error al cambiar tu nombre de usuario."
|
||||
invalid: "Este nombre de usuario no es válido. Debe incluir sólo números y letras"
|
||||
change_email:
|
||||
title: "Cambiar E-mail"
|
||||
taken: "Lo sentimos, pero ese e-mail no está disponible."
|
||||
title: "Cambiar email"
|
||||
taken: "Lo sentimos, pero ese email no está disponible."
|
||||
error: "Ha ocurrido un error al cambiar tu email. ¿Tal vez esa dirección ya está en uso?"
|
||||
success: "Te hemos enviado un e-mail a esa dirección. Por favor sigue las instrucciones de confirmación."
|
||||
success: "Te hemos enviado un email a esa dirección. Por favor sigue las instrucciones de confirmación."
|
||||
change_avatar:
|
||||
title: "Cambiar tu imagen de perfil"
|
||||
gravatar: "<a href='//gravatar.com/emails' target='_blank'>Gravatar</a>, basado en"
|
||||
@ -632,19 +632,19 @@ es:
|
||||
uploaded_avatar: "Foto personalizada"
|
||||
uploaded_avatar_empty: "Añade una foto personalizada"
|
||||
upload_title: "Sube tu foto"
|
||||
upload_picture: "Subir Imagen"
|
||||
image_is_not_a_square: "Advertencia: hemos recortado su imagen; la anchura y la altura no eran iguales."
|
||||
cache_notice: "Has cambiado correctamente tu imagen de perfil pero podría tardar un poco en aparecer debido al caching del navegador."
|
||||
upload_picture: "Subir imagen"
|
||||
image_is_not_a_square: "Aviso: hemos recortado su imagen; la anchura y la altura no eran iguales."
|
||||
cache_notice: "Has cambiado correctamente tu imagen de perfil pero podría tardar un poco en aparecer debido al caché del navegador."
|
||||
change_profile_background:
|
||||
title: "Fondo de perfil"
|
||||
instructions: "Fondos de perfil serán centrados y tendrán un ancho por default de 850px."
|
||||
instructions: "Fondos de perfil serán centrados y tendrán un ancho por defecto de 850px."
|
||||
change_card_background:
|
||||
title: "Fondo de Tarjeta de Usuario"
|
||||
instructions: "Imágenes de fondo serán centrados y tendrán un ancho por default de 590px."
|
||||
title: "Fondo de tarjeta de usuario"
|
||||
instructions: "Imágenes de fondo serán centrados y tendrán un ancho por defecto de 590px."
|
||||
email:
|
||||
title: "E-mail"
|
||||
title: "Emai"
|
||||
instructions: "nunca se mostrará al público"
|
||||
ok: "Te enviaremos un email para confirmar"
|
||||
ok: "Te enviaremos un email para confirmarlo"
|
||||
invalid: "Por favor, introduce una dirección de correo válida"
|
||||
authenticated: "Tu dirección de correo ha sido autenticada por {{provider}}"
|
||||
frequency_immediately: "Te enviaremos un email inmediatamente si no has leído aquello que vamos a enviarte."
|
||||
@ -682,22 +682,22 @@ es:
|
||||
log_out: "Cerrar sesión"
|
||||
location: "Ubicación"
|
||||
card_badge:
|
||||
title: "Distintivo de Tarjeta de Usuario"
|
||||
title: "Distintivo de tarjeta de usuario"
|
||||
website: "Sitio Web"
|
||||
email_settings: "E-mail"
|
||||
email_settings: "Email"
|
||||
like_notification_frequency:
|
||||
title: "Notificar cuando me dan Me gusta"
|
||||
title: "Notificarme cuando me den Me gusta"
|
||||
always: "Con cada Me gusta que reciban mis posts"
|
||||
first_time_and_daily: "Al primer Me gusta que reciben mis posts y luego diariamente si reciben más"
|
||||
first_time: "Al primer Me gusta que reciben mi posts"
|
||||
first_time_and_daily: "Al primer Me gusta que reciban mis posts y luego diariamente si reciben más"
|
||||
first_time: "Al primer Me gusta que reciban mi posts"
|
||||
never: "Nunca"
|
||||
email_previous_replies:
|
||||
title: "Incluir respuestas previas al pie de los emails"
|
||||
title: "Incluir respuestas previas en el pie de los emails"
|
||||
unless_emailed: "a menos que se hayan enviado previamente"
|
||||
always: "siempre"
|
||||
never: "nunca"
|
||||
email_digests:
|
||||
title: "Cuando no visite el sitio, envíame un email con un resumen de los temas y respuestas populares"
|
||||
title: "Cuando no visite la página, envíame un email con un resumen de los temas y respuestas populares"
|
||||
every_30_minutes: "cada 30 minutos"
|
||||
every_hour: "cada hora"
|
||||
daily: "diariamente"
|
||||
@ -708,7 +708,7 @@ es:
|
||||
email_in_reply_to: "Incluir un extracto del post al que se responde en los emails"
|
||||
email_direct: "Envíame un email cuando alguien me cite, responda a mis posts, mencione mi @usuario o me invite a un tema"
|
||||
email_private_messages: "Notifícame por email cuando alguien me envíe un mensaje"
|
||||
email_always: "Quiero recibir notificaciones por email incluso cuando esté de forma activa por el sitio"
|
||||
email_always: "Quiero recibir notificaciones por email incluso cuando esté de forma activa en la página"
|
||||
other_settings: "Otros"
|
||||
categories_settings: "Categorías"
|
||||
new_topic_duration:
|
||||
@ -734,7 +734,7 @@ es:
|
||||
invited:
|
||||
search: "escribe para buscar invitaciones..."
|
||||
title: "Invitaciones"
|
||||
user: "Invitar Usuario"
|
||||
user: "Invitar usuario"
|
||||
sent: "Enviadas"
|
||||
none: "No hay ninguna invitación pendiente que mostrar."
|
||||
truncated:
|
||||
@ -744,31 +744,31 @@ es:
|
||||
redeemed_tab: "Usado"
|
||||
redeemed_tab_with_count: "Aceptadas ({{count}})"
|
||||
redeemed_at: "Aceptada"
|
||||
pending: "Invitaciones Pendientes"
|
||||
pending: "Invitaciones pendientes"
|
||||
pending_tab: "Pendiente"
|
||||
pending_tab_with_count: "Pendientes ({{count}})"
|
||||
topics_entered: "Temas Vistos"
|
||||
topics_entered: "Temas vistos"
|
||||
posts_read_count: "Posts leídos"
|
||||
expired: "Esta invitación ha caducado."
|
||||
rescind: "Remover"
|
||||
rescinded: "Invitación eliminada"
|
||||
reinvite: "Reenviar Invitación"
|
||||
reinvite: "Reenviar invitación"
|
||||
reinvite_all: "Reenviar todas las invitaciones"
|
||||
reinvite_all_confirm: "¿Estás seguro que quieres reenviar todas las invitaciones?"
|
||||
reinvited: "Invitación reenviada"
|
||||
reinvited_all: "¡Todas las invitaciones han sido reenviadas!"
|
||||
time_read: "Tiempo de Lectura"
|
||||
days_visited: "Días Visitados"
|
||||
time_read: "Tiempo de lectura"
|
||||
days_visited: "Días visitados"
|
||||
account_age_days: "Antigüedad de la cuenta en días"
|
||||
create: "Enviar una Invitación"
|
||||
generate_link: "Copiar Enlace de Invitación"
|
||||
link_generated: "¡Enlace de invitación generado satisfactoriamente!"
|
||||
valid_for: "El enlace de invitación sólo es válido para esta dirección: %{email}"
|
||||
create: "Enviar una invitación"
|
||||
generate_link: "Copiar enlace de invitación"
|
||||
link_generated: "¡Enlace de invitación generado con éxito!"
|
||||
valid_for: "El enlace de invitación sólo es válido para esta dirección de emai: %{email}"
|
||||
bulk_invite:
|
||||
none: "No has invitado a nadie aún. Puedes enviar invitaciones individuales o invitar a varias personas a la vez <a href='https://meta.discourse.org/t/send-bulk-invites/16468'>subiendo un archivo de invitación en masa</a>."
|
||||
text: "Archivo de Invitación en Masa"
|
||||
text: "Archivo de invitación en masa"
|
||||
success: "Archivo subido correctamente, se te notificará con un mensaje cuando se complete el proceso."
|
||||
error: "Lo siento, el archivo debe tener formato CSV. "
|
||||
error: "Lo sentimos, el archivo debe tener formato CSV. "
|
||||
password:
|
||||
title: "Contraseña"
|
||||
too_short: "Tu contraseña es demasiada corta."
|
||||
@ -838,20 +838,20 @@ es:
|
||||
errors:
|
||||
prev_page: "mientras se intentaba cargar"
|
||||
reasons:
|
||||
network: "Error de Red"
|
||||
server: "Error del Servidor"
|
||||
forbidden: "Acceso Denegado"
|
||||
network: "Error de red"
|
||||
server: "Error del servidor"
|
||||
forbidden: "Acceso denegado"
|
||||
unknown: "Error"
|
||||
not_found: "Página no encontrada"
|
||||
desc:
|
||||
network: "Por favor revisa tu conexión."
|
||||
network_fixed: "Parece que ha vuelto."
|
||||
server: "Código de error: {{status}}"
|
||||
forbidden: "No estás permitido para ver eso."
|
||||
forbidden: "No tienes permitido ver eso."
|
||||
not_found: "¡Ups! la aplicación intentó cargar una URL inexistente."
|
||||
unknown: "Algo salió mal."
|
||||
buttons:
|
||||
back: "Volver Atrás"
|
||||
back: "Volver atrás"
|
||||
again: "Intentar de Nuevo"
|
||||
fixed: "Cargar Página"
|
||||
close: "Cerrar"
|
||||
@ -859,7 +859,7 @@ es:
|
||||
logout: "Has cerrado sesión."
|
||||
refresh: "Actualizar"
|
||||
read_only_mode:
|
||||
enabled: "Este sitio está en modo solo-lectura. Puedes continuar navegando pero algunas acciones como responder o dar \"me gusta\" no están disponibles por ahora."
|
||||
enabled: "Este sitio está en modo de solo lectura. Puedes continuar navegando pero algunas acciones como responder o dar \"Me gusta\" no estarán disponibles por ahora."
|
||||
login_disabled: "Iniciar sesión está desactivado mientras el foro esté en modo solo lectura."
|
||||
logout_disabled: "Cerrar sesión está desactivado mientras el sitio se encuentre en modo de sólo lectura."
|
||||
too_few_topics_and_posts_notice: "¡Vamos a <a href='http://blog.discourse.org/2014/08/building-a-discourse-community/'>dar por comenzada la comunidad!</a> Hay <strong>%{currentTopics} / %{requiredTopics}</strong> temas y <strong>%{currentPosts} / %{requiredPosts}</strong> posts. Los nuevos visitantes necesitan algo que leer y a lo que responder."
|
||||
@ -942,7 +942,7 @@ es:
|
||||
caps_lock_warning: "Está activado Bloqueo de Mayúsculas"
|
||||
error: "Error desconocido"
|
||||
rate_limit: "Por favor, espera un poco antes de volver a intentar iniciar sesión."
|
||||
blank_username_or_password: "Por favor, introducir tu e-mail o usuario, y tu contraseña."
|
||||
blank_username_or_password: "Por favor, introduce tu e-mail o usuario, y tu contraseña."
|
||||
reset_password: 'Restablecer Contraseña'
|
||||
logging_in: "Iniciando Sesión"
|
||||
or: "O"
|
||||
@ -952,7 +952,7 @@ es:
|
||||
requires_invite: "Lo sentimos pero solo se puede acceder a este foro mediante invitación."
|
||||
not_activated: "No puedes iniciar sesión todavía. Anteriormente te hemos enviado un email de activación a <b>{{sentTo}}</b>. Por favor sigue las instrucciones en ese email para activar tu cuenta."
|
||||
not_allowed_from_ip_address: "No puedes iniciar sesión desde esa dirección IP."
|
||||
admin_not_allowed_from_ip_address: "No puedes iniciar sesión como admin desde esta dirección IP."
|
||||
admin_not_allowed_from_ip_address: "No puedes iniciar sesión como administrador desde esta dirección IP."
|
||||
resend_activation_email: "Has clic aquí para enviar el email de activación nuevamente."
|
||||
resend_title: "Enviar de nuevo el email de activación"
|
||||
change_email: "Cambiar dirección de email"
|
||||
@ -986,10 +986,10 @@ es:
|
||||
message: "Autenticando con GitHub (asegúrate de desactivar cualquier bloqueador de pop ups)"
|
||||
invites:
|
||||
accept_title: "Invitación"
|
||||
welcome_to: "Bienvenido a %{site_name}!"
|
||||
welcome_to: "¡Bienvenido a %{site_name}!"
|
||||
invited_by: "Has sido invitado por:"
|
||||
social_login_available: "También serás capaz de loguearte usando cualquier red social usando ese email."
|
||||
your_email: "Tu cuenta de correo electrónico es <b>%{email}</b>."
|
||||
your_email: "La dirección de email de tu cuenta es <b>%{email}</b>."
|
||||
accept_invite: "Aceptar invitación"
|
||||
success: "Tu nueva cuenta está confirmada y ahora estás logueado/a."
|
||||
password_label: "Establecer contraseña (opcional)"
|
||||
@ -1002,8 +1002,8 @@ es:
|
||||
emoji_one: "Emoji One"
|
||||
win10: "Win10"
|
||||
category_page_style:
|
||||
categories_only: "Sólo categorías"
|
||||
categories_with_featured_topics: "Categorías y temas destacados"
|
||||
categories_only: "Solo categorías"
|
||||
categories_with_featured_topics: "Categorías con temas destacados"
|
||||
categories_and_latest_topics: "Categorías y temas recientes"
|
||||
shortcut_modifier_key:
|
||||
shift: 'Shift'
|
||||
@ -1030,7 +1030,7 @@ es:
|
||||
cannot_see_mention:
|
||||
category: "Mencionaste a {{username}} pero no será notificado porque no tiene acceso a esta categoría. Necesitarás añadirlo a un grupo para que tenga acceso a esta categoría."
|
||||
private: "Mencionaste a {{username}} pero no se les notificará porque no pueden ver este mensaje personal. Necesitarás invitarlos a este MP."
|
||||
duplicate_link: "Parece que el enlace a <b>{{domain}}</b> ya ha sido publicado en el tema por <b>@{{username}}</b> en <a href='{{post_url}}'>una respuesta hace {{ago}}</a> – ¿Estás seguro de que quieres publicarlo de nuevo?"
|
||||
duplicate_link: "Parece que tu enlace a <b>{{domain}}</b> ya ha sido publicado en el tema por <b>@{{username}}</b> en <a href='{{post_url}}'>una respuesta {{ago}}</a> – ¿seguro que que quieres publicarlo de nuevo?"
|
||||
error:
|
||||
title_missing: "Es necesario un título"
|
||||
title_too_short: "El título debe ser por lo menos de {{min}} caracteres."
|
||||
@ -1120,6 +1120,7 @@ es:
|
||||
moved_post: "<i title='moved post' class='fa fa-sign-out'></i><p><span>{{username}}</span> movió {{description}}</p>"
|
||||
linked: "<i title='linked post' class='fa fa-link'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
granted_badge: "<i title='badge granted' class='fa fa-certificate'></i><p>Se te ha concedido '{{description}}'</p>"
|
||||
topic_reminder: "<i title='topic reminder' class='fa fa-hand-o-right'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
watching_first_post: "<i title='new topic' class='fa fa-dot-circle-o'></i><p><span>Nuevo Tema</span> {{description}}</p>"
|
||||
group_message_summary:
|
||||
one: "<i title='mensaje en tu bandeja de grupo' class='fa fa-group'></i><p> {{count}} mensaje en la bandeja del grupo {{group_name}}</p>"
|
||||
@ -1359,6 +1360,7 @@ es:
|
||||
later_this_week: "Esta semana, más tarde"
|
||||
this_weekend: "Este fin de semana"
|
||||
next_week: "Próxima semana"
|
||||
next_month: "Próximo mes"
|
||||
pick_date_and_time: "Elegir fecha y hora"
|
||||
set_based_on_last_post: "Cerrar basándose en el último mensaje"
|
||||
publish_to_category:
|
||||
@ -1376,12 +1378,15 @@ es:
|
||||
based_on_last_post: "No cerrar hasta que el último post en el tema sea al menos así de antiguo."
|
||||
auto_delete:
|
||||
title: "Eliminar Automáticamente el Tema"
|
||||
reminder:
|
||||
title: "Recuérdame"
|
||||
status_update_notice:
|
||||
auto_open: "Este tema se abrirá automáticamente %{timeLeft}."
|
||||
auto_close: "Este tema se cerrará automáticamente %{timeLeft}."
|
||||
auto_publish_to_category: "Este tema será publicado en <a href=%{categoryUrl}>#%{categoryName}</a> %{timeLeft}."
|
||||
auto_close_based_on_last_post: "Este tema se cerrará %{duration} después de la última respuesta."
|
||||
auto_delete: "Este tema se eliminará automáticamente %{timeLeft}."
|
||||
auto_reminder: "Te recordaremos sobre este tema %{timeLeft}."
|
||||
auto_close_title: 'Configuración de auto-cerrado'
|
||||
auto_close_immediate:
|
||||
one: "El último post se publicó hace 1 hora, por lo que el tema se cerrará inmediatamente."
|
||||
@ -2779,7 +2784,6 @@ es:
|
||||
do_nothing: "no hacer nada"
|
||||
staff_actions:
|
||||
title: "Acciones del staff"
|
||||
instructions: "Clic en los usuarios y acciones para filtrar la lista. Clic en las imágenes de perfil para ir a páginas de usuario."
|
||||
clear_filters: "Mostrar todo"
|
||||
staff_user: "Usuario administrador"
|
||||
target_user: "Usuario enfocado"
|
||||
@ -3004,6 +3008,7 @@ es:
|
||||
reset_bounce_score:
|
||||
label: "Restablecer"
|
||||
title: "Restablece la puntuación de rebote de nuevo a 0"
|
||||
visit_profile: "Visita <a href='%{url}'>las preferencias del usuario</a> para editar su perfil"
|
||||
deactivate_explanation: "Un usuario desactivado debe rehabilitar su dirección de correo."
|
||||
suspended_explanation: "Un usuario suspendido no puede ingresar al sitio."
|
||||
block_explanation: "Un usuario bloqueado no puede publicar posts ni crear temas."
|
||||
|
||||
@ -2600,7 +2600,6 @@ et:
|
||||
do_nothing: "ära tee midagi"
|
||||
staff_actions:
|
||||
title: "Tiimi tegevused"
|
||||
instructions: "Kliki kasutajanimedele ja tegevustele nimekirja filtreerimiseks. Kliki profiilipiltidele, et minna kasutajalehtedele."
|
||||
clear_filters: "Näita kõike"
|
||||
staff_user: "Meeskonnaliige"
|
||||
target_user: "Sihtkasutaja"
|
||||
|
||||
@ -489,6 +489,7 @@ fa_IR:
|
||||
first_notification: "اولین پیام اطلاعرسانی شما! برای شروع آنرا انتخاب کنید."
|
||||
disable_jump_reply: "بعد از پاسخ من به پست من پرش نکن"
|
||||
dynamic_favicon: " تعداد موضوعات جدید یا بروز شده را روی آیکون مرورگر نمایش بده"
|
||||
theme_default_on_all_devices: "از این قالب، به عنوان قالب پیشفرض در تمام وسایل من استفاده کن."
|
||||
external_links_in_new_tab: "همهٔ پیوندهای خروجی را در یک تب جدید باز کن"
|
||||
enable_quoting: "فعال کردن نقل قول گرفتن از متن انتخاب شده"
|
||||
change: "تغییر"
|
||||
@ -989,7 +990,6 @@ fa_IR:
|
||||
cannot_see_mention:
|
||||
category: "شما به {{username}} اشاره کردید ولی ایشان به دلیل نداشتن دسترسی به این دستهبندی، مطلع نخواهند شد. برای دسترسی باید آنها را به گروهی که به این دستهبندی دسترسی دارند اضافه کنید."
|
||||
private: "شما به {{username}} اشاره کردید ولی به دلیل نداشتن دسترسی به این پیام خصوصی مطلع نخواهند شد. برای دسترسی باید آنها را به این پیام خصوصی دعوت کنید."
|
||||
duplicate_link: "به نظر میرسد لینک شما به <b>{{domain}}</b> در حال حاضر توسط <b>@{{username}}</b> در <a href='{{post_url}}'> {{ago}} پاسخ قبل ارسال شده</a> – آیا میخواهید مجددا آن را ارسال کنید؟"
|
||||
error:
|
||||
title_missing: "عنوان الزامی است"
|
||||
title_too_short: "عنوان دستکم باید {{min}} نویسه باشد"
|
||||
@ -1078,6 +1078,7 @@ fa_IR:
|
||||
moved_post: "<i title='moved post' class='fa fa-sign-out'></i><p><span>{{username}}</span> moved {{description}}</p>"
|
||||
linked: "<i title='linked post' class='fa fa-link'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
granted_badge: "<i title='badge granted' class='fa fa-certificate'></i><p>'{{description}}' را بدست آورده</p>"
|
||||
topic_reminder: "<i title='topic reminder' class='fa fa-hand-o-right'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
watching_first_post: "<i title='new topic' class='fa fa-dot-circle-o'></i><p><span>موضوع جدید</span> {{description}}</p"
|
||||
group_message_summary:
|
||||
other: "<i title='messages in group inbox' class='fa fa-group'></i><p> {{count}} پیام در صندوق دریافتی {{group_name}}</p>"
|
||||
@ -1307,6 +1308,7 @@ fa_IR:
|
||||
later_this_week: "این هفته"
|
||||
this_weekend: "آخر هفته"
|
||||
next_week: "هفته بعد"
|
||||
next_month: "ماه بعد"
|
||||
pick_date_and_time: "انتخاب زمان و تاریخ"
|
||||
set_based_on_last_post: "بستن با توجه به آخرین نوشته"
|
||||
publish_to_category:
|
||||
@ -1324,12 +1326,15 @@ fa_IR:
|
||||
based_on_last_post: "تا زمانی آخرین پست موضوع این قدر قدیمی نشده، موضوع را نبند."
|
||||
auto_delete:
|
||||
title: "حذف خودکار موضوع"
|
||||
reminder:
|
||||
title: "یادآوری کن"
|
||||
status_update_notice:
|
||||
auto_open: "این موضوع به صورت خودکار در %{timeLeft} باز خواهد شد."
|
||||
auto_close: "این موضوع به صورت خودکار در %{timeLeft} بسته خواهد شد."
|
||||
auto_publish_to_category: "این موضوع در <a href=%{categoryUrl}>#%{categoryName}</a> منتشر میشود %{timeLeft}."
|
||||
auto_close_based_on_last_post: "این موضوع در %{duration} بعد از آخرین پاسخ بسته خواهد شد."
|
||||
auto_delete: "این موضوع به صورت خودکار در %{timeLeft} حذف میشود"
|
||||
auto_reminder: "درباره این موضوع به شما یادآوری خواهد شد %{timeLeft}."
|
||||
auto_close_title: 'تنظیمات بستن خوکار'
|
||||
auto_close_immediate:
|
||||
other: "از آخرین نوشته این موضوع %{count} ساعت گذشته، بنابراین موضوع بسته میشود."
|
||||
@ -2666,7 +2671,6 @@ fa_IR:
|
||||
do_nothing: "هیچ کاری نکن"
|
||||
staff_actions:
|
||||
title: "عملیات همکارا"
|
||||
instructions: "بر روی نام کاربر کلیک کنید تا عمل فیلتر لیست انجام شود. بر روی عکس نمایه کلیک کنید تا به صفحه کاربر هدایت شوید."
|
||||
clear_filters: "همه چیز را نشان بده "
|
||||
staff_user: "کاربر همکار"
|
||||
target_user: "کاربر هدف"
|
||||
|
||||
@ -518,6 +518,7 @@ fi:
|
||||
first_notification: "Ensimmäinen ilmoitus sinulle! Valitse se niin aloitetaan."
|
||||
disable_jump_reply: "Älä siirry uuteen viestiini lähetettyäni sen"
|
||||
dynamic_favicon: "Näytä uusien / päivittyneiden ketjujen määrä selaimen ikonissa"
|
||||
theme_default_on_all_devices: "Tee tästä oletusteema kaikille laitteilleni"
|
||||
external_links_in_new_tab: "Avaa sivuston ulkopuoliset linkit uudessa välilehdessä"
|
||||
enable_quoting: "Ota käyttöön viestin lainaaminen tekstiä valitsemalla"
|
||||
change: "vaihda"
|
||||
@ -993,6 +994,8 @@ fi:
|
||||
your_email: "Tilisi sähköpostiosoite on <b>%{email}</b>."
|
||||
accept_invite: "Hyväksy kutsu"
|
||||
success: "Tili luotiin, ja olet nyt kirjautunut sisään."
|
||||
name_label: "Nimi"
|
||||
name_label_optional: "Nimi (valinnainen)"
|
||||
password_label: "Aseta salasana (valinnainen)"
|
||||
password_reset:
|
||||
continue: "Jatka sivustolle %{site_name}"
|
||||
@ -1031,7 +1034,7 @@ fi:
|
||||
cannot_see_mention:
|
||||
category: "Mainitsit käyttäjän {{username}} mutta hän ei saa ilmoitusta, koska hänellä ei ole pääsyä tälle alueelle. Hänet tulee lisätä ryhmään, jolla on pääsy alueelle."
|
||||
private: "Mainitsit käyttäjän {{username}} mutta hän ei saa ilmoitusta, koska hän ei näe tätä yksityiskeskustelua. Hänet tulee kutsua tähän yksityiskeskusteluun."
|
||||
duplicate_link: "Näyttää siltä, että <b>@{{username}}</b> on jo lähettänyt saman linkin kohteeseen <b>{{domain}}</b> ketjun <a href='{{post_url}}'>aiemmassa viestissä {{ago}}</a> – oletko varma, että haluat lähettää sen uudestaan?"
|
||||
duplicate_link: "Näyttää siltä, että <b>@{{username}}</b> linkitti jo samaan kohteeseen <b>{{domain}}</b> ketjun <a href='{{post_url}}'>aiemmassa viestissä {{ago}}</a> – oletko varma, että haluat lähettää sen uudestaan?"
|
||||
error:
|
||||
title_missing: "Otsikko on pakollinen"
|
||||
title_too_short: "Otsikon täytyy olla vähintään {{min}} merkkiä pitkä"
|
||||
@ -1121,6 +1124,7 @@ fi:
|
||||
moved_post: "<i title='siirsi viestin' class='fa fa-sign-out'></i><p><span>{{username}}</span> siirsi {{description}}</p>"
|
||||
linked: "<i title='linkkasi viestiin' class='fa fa-link'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
granted_badge: "<i title='ansiomerkki myönnetty' class='fa fa-certificate'></i><p>Ansaitsit '{{description}}'</p>"
|
||||
topic_reminder: "<i title='topic reminder' class='fa fa-hand-o-right'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
watching_first_post: "<i title='new topic' class='fa fa-dot-circle-o'></i><p><span>Uusi ketju</span> {{description}}</p>"
|
||||
group_message_summary:
|
||||
one: "<i title='messages in group inbox' class='fa fa-group'></i><p> {{count}} viesti ryhmän {{group_name}} saapuneissa</p>"
|
||||
@ -1360,6 +1364,7 @@ fi:
|
||||
later_this_week: "Myöhemmin tällä viikolla"
|
||||
this_weekend: "Viikonloppuna"
|
||||
next_week: "Ensi viikolla"
|
||||
next_month: "Ensi kuussa"
|
||||
pick_date_and_time: "Valitse päivämäärä ja kellonaika"
|
||||
set_based_on_last_post: "Sulje viimeisimmän viestin mukaan"
|
||||
publish_to_category:
|
||||
@ -1377,12 +1382,15 @@ fi:
|
||||
based_on_last_post: "Älä sulje ennen kuin viimeisin viesti ketjussa on ainakin näin vanha."
|
||||
auto_delete:
|
||||
title: "Poista ketju ajastetusti"
|
||||
reminder:
|
||||
title: "Muistuta minua"
|
||||
status_update_notice:
|
||||
auto_open: "Ketju avautuu automaattisesti %{timeLeft}."
|
||||
auto_close: "Ketju suljetaan ajastetusti %{timeLeft}."
|
||||
auto_publish_to_category: "Ketju julkaistaan alueella <a href=%{categoryUrl}>#%{categoryName}</a> %{timeLeft}."
|
||||
auto_close_based_on_last_post: "Ketju sulkeutuu %{duration} viimeisimmästä viestistä."
|
||||
auto_delete: "Ketju poistetaan ajastetusti %{timeLeft} kuluttua."
|
||||
auto_reminder: "Sinua muistutetaan tästä ketjusta %{timeLeft}."
|
||||
auto_close_title: 'Automaattisen sulkemisen asetukset'
|
||||
auto_close_immediate:
|
||||
one: "Ketjun viimeisin viesti on jo tunnin vanha, joten ketju suljetaan heti."
|
||||
@ -2563,8 +2571,8 @@ fi:
|
||||
export_json:
|
||||
button_text: "Vie"
|
||||
invite:
|
||||
button_text: "Lähetä kutsut"
|
||||
button_title: "Lähetä kutsut"
|
||||
button_text: "Lähetä kutsuja"
|
||||
button_title: "Lähetä kutsuja"
|
||||
customize:
|
||||
title: "Mukauta"
|
||||
long_title: "Sivuston mukautukset"
|
||||
@ -2778,7 +2786,6 @@ fi:
|
||||
do_nothing: "älä tee mitään"
|
||||
staff_actions:
|
||||
title: "Henkilökunnan toimet"
|
||||
instructions: "Klikkaa käyttäjänimiä tai toimintoja suodattaaksesi listaa. Klikkaa profiilikuvaa siirtyäksesi käyttäjäsivulle."
|
||||
clear_filters: "Näytä kaikki"
|
||||
staff_user: "Palstan edustaja"
|
||||
target_user: "Kohteena ollut käyttäjä"
|
||||
@ -3003,6 +3010,7 @@ fi:
|
||||
reset_bounce_score:
|
||||
label: "Palauta"
|
||||
title: "Palauta palautuspisteiksi 0"
|
||||
visit_profile: "Muokkaa <a href='%{url}'>tämän käyttäjän käyttäjäasetuksia</a> hänen profiilissaan"
|
||||
deactivate_explanation: "Käytöstä poistetun käyttäjän täytyy uudelleen vahvistaa sähköpostiosoitteensa."
|
||||
suspended_explanation: "Hyllytetty käyttäjä ei voi kirjautua sisään."
|
||||
block_explanation: "Estetty käyttäjä ei voi luoda viestejä tai ketjuja."
|
||||
@ -3225,12 +3233,14 @@ fi:
|
||||
embed_by_username: "Käyttäjänimi ketjun luomiseksi"
|
||||
embed_post_limit: "Upotettavien viestien maksimimäärä"
|
||||
embed_username_key_from_feed: "Avain, jolla erotetaan Discourse-käyttäjänimi syötteestä"
|
||||
embed_title_scrubber: "Säännöllinen lauseke, jolla riisutaan viestien otsikkoja"
|
||||
embed_truncate: "Typistä upotetut viestit"
|
||||
embed_whitelist_selector: "CSS valitsin elementeille, jotka sallitaan upotetuissa viesteissä"
|
||||
embed_blacklist_selector: "CSS valitstin elementeille, jotka poistetaan upotetuista viesteistä"
|
||||
embed_classname_whitelist: "Sallitut CSS luokat"
|
||||
feed_polling_enabled: "Tuo kirjoitukset RSS/ATOM syötteen avulla"
|
||||
feed_polling_url: "RSS/ATOM syötteen URL"
|
||||
feed_polling_frequency_mins: "Syötteen kyselyn taajuus (minuutteina)"
|
||||
save: "Tallenna upotusasetukset"
|
||||
permalink:
|
||||
title: "Ikilinkit"
|
||||
|
||||
@ -518,6 +518,7 @@ fr:
|
||||
first_notification: "Votre première notification ! Cliquez-la pour démarrer."
|
||||
disable_jump_reply: "Ne pas aller à mon nouveau message après avoir répondu"
|
||||
dynamic_favicon: "Faire apparaître le nombre de sujets récemment créés ou mis à jour sur l'icône navigateur"
|
||||
theme_default_on_all_devices: "En faire mon thème par défaut sur tous mes périphériques"
|
||||
external_links_in_new_tab: "Ouvrir tous les liens externes dans un nouvel onglet"
|
||||
enable_quoting: "Proposer de citer le texte sélectionné"
|
||||
change: "modifier"
|
||||
@ -1245,8 +1246,10 @@ fr:
|
||||
dismiss_new: "Ignorer les nouveaux"
|
||||
toggle: "activer la sélection multiple de sujets"
|
||||
actions: "Actions sur la sélection"
|
||||
change_category: "Définir la catégorie"
|
||||
close_topics: "Fermer les sujets"
|
||||
archive_topics: "Archiver les sujets"
|
||||
notification_level: "Notifications"
|
||||
choose_new_category: "Choisissez la nouvelle catégorie pour les sujets :"
|
||||
selected:
|
||||
one: "Vous avez sélectionné <b>1</b> sujet."
|
||||
@ -1355,6 +1358,7 @@ fr:
|
||||
later_this_week: "Plus tard cette semaine"
|
||||
this_weekend: "Ce weekend"
|
||||
next_week: "Semaine prochaine"
|
||||
next_month: "Mois prochai"
|
||||
pick_date_and_time: "Sélectionner une date et heure"
|
||||
set_based_on_last_post: "Fermer par rapport au dernier message"
|
||||
publish_to_category:
|
||||
@ -1370,11 +1374,17 @@ fr:
|
||||
label: "Heures de fermeture automatique du sujet :"
|
||||
error: "Veuillez entrer une valeur valide."
|
||||
based_on_last_post: "Ne pas fermer tant que le dernier message du sujet n'a pas atteint cette ancienneté."
|
||||
auto_delete:
|
||||
title: "Auto-suppression du sujet"
|
||||
reminder:
|
||||
title: "Me rappeler"
|
||||
status_update_notice:
|
||||
auto_open: "Ce sujet sera automatiquement ouvert %{timeLeft}."
|
||||
auto_close: "Ce sujet sera automatiquement fermé %{timeLeft}."
|
||||
auto_publish_to_category: "Ce sujet sera publié dans <a href=%{categoryUrl}>#%{categoryName}</a> %{timeLeft}."
|
||||
auto_close_based_on_last_post: "Ce sujet sera fermé %{duration} après la dernière réponse."
|
||||
auto_delete: "Ce sujet sera automatiquement supprimé %{timeLeft}"
|
||||
auto_reminder: "Vous serez rappelé sur ce sujet %{timeLeft}"
|
||||
auto_close_title: 'Paramètres de fermeture automatique'
|
||||
auto_close_immediate:
|
||||
one: "Le dernier message dans ce sujet est déjà vieux de 1 heure donc le sujet sera immédiatement fermé."
|
||||
@ -2131,6 +2141,8 @@ fr:
|
||||
granted_on: "Accordé le %{date}"
|
||||
others_count: "Autres utilisateurs avec ce badge (%{count})"
|
||||
title: Badges
|
||||
allow_title: "Vous pouvez utiliser ce badge comme titre"
|
||||
multiple_grant: "Vous pouvez le gagner de multiples fois"
|
||||
badge_count:
|
||||
one: "1 badge"
|
||||
other: "%{count} badges"
|
||||
@ -2599,10 +2611,14 @@ fr:
|
||||
color_scheme_select: "Sélectionner les couleurs utilisées par le thème"
|
||||
custom_sections: "Sections personnalisées :"
|
||||
theme_components: "Composants du thème :"
|
||||
uploads: "Uploads"
|
||||
variable_name: "Nom de variable SCSS:"
|
||||
upload: "Upload"
|
||||
child_themes_check: "Thème incluant d'autres thèmes"
|
||||
css_html: "CSS/HTML personnalisé"
|
||||
edit_css_html: "Modifier le CSS/HTML"
|
||||
edit_css_html_help: "Vous n'avez modifié aucun CSS ou HTML"
|
||||
delete_upload_confirm: "Supprimer cet upload? (Le thème CSS pourrait ne plus fonctionner!)"
|
||||
import_web_tip: "Dépôt contenant le thème"
|
||||
import_file_tip: "Fichier .dcstyle.json contenant le thème"
|
||||
about_theme: "À propos du thème"
|
||||
@ -2763,7 +2779,6 @@ fr:
|
||||
do_nothing: "ne rien faire"
|
||||
staff_actions:
|
||||
title: "Actions des responsables"
|
||||
instructions: "Cliquez sur les pseudos et les actions pour filtrer la liste. Cliquez sur les images de profil pour aller aux pages des utilisateurs."
|
||||
clear_filters: "Tout afficher"
|
||||
staff_user: "Responsable"
|
||||
target_user: "Utilisateur cible"
|
||||
@ -3198,6 +3213,7 @@ fr:
|
||||
sample: "Introduire le code HTML suivant dans votre site pour créer et intégrer des sujets Discourse. Remplacer <b>REPLACE_ME</b> avec l'URL de la page dans laquelle vous l'intégrer."
|
||||
title: "Intégration externe"
|
||||
host: "Hôtes autorisés"
|
||||
class_name: "Nom de classe"
|
||||
path_whitelist: "Chemins autorisés"
|
||||
edit: "modifier"
|
||||
category: "Écrire dans la catégorie"
|
||||
|
||||
@ -101,6 +101,7 @@ gl:
|
||||
other: "%{count} anos despois"
|
||||
previous_month: 'Mes anterior'
|
||||
next_month: 'Mes seguinte'
|
||||
placeholder: Escolla unha data
|
||||
share:
|
||||
topic: 'compartir unha ligazón a este tema'
|
||||
post: 'publicación %{postNumber}'
|
||||
@ -1987,7 +1988,6 @@ gl:
|
||||
do_nothing: "non facer nada"
|
||||
staff_actions:
|
||||
title: "Accións do equipo"
|
||||
instructions: "Premer nos nomes dos usuarios e nas accións para filtrar a lista. Premer nas imaxes dos perfís para ir ás páxinas dos usuarios."
|
||||
clear_filters: "Amosar todo"
|
||||
staff_user: "Usuario do equipo"
|
||||
target_user: "Usuario obxectivo"
|
||||
|
||||
@ -518,6 +518,7 @@ he:
|
||||
first_notification: "התראה ראשונה! בחרו אותה כדי להתחיל."
|
||||
disable_jump_reply: "אל תקפצו לפוסטים שלי לאחר שאני משיב/ה"
|
||||
dynamic_favicon: "הצגת מספר נושאים חדשים/מעודכנים על האייקון של הדפדפן"
|
||||
theme_default_on_all_devices: "הפכו תמה זאת לברירת המחדל בכל המכשירים שלי"
|
||||
external_links_in_new_tab: "פתח את כל הקישורים החיצוניים בעמוד חדש"
|
||||
enable_quoting: "אפשרו תגובת ציטוט לטקסט מסומן"
|
||||
change: "שנה"
|
||||
@ -1119,6 +1120,7 @@ he:
|
||||
moved_post: "<i title='moved post' class='fa fa-sign-out'></i><p><span>{{username}}</span> הזיז/ה {{description}}</p>"
|
||||
linked: "<i title='linked post' class='fa fa-link'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
granted_badge: "<i title='עיטור הוענק' class='fa fa-certificate'></i><p>הרוויחו '{{description}}'</p>"
|
||||
topic_reminder: "<i title='topic reminder' class='fa fa-hand-o-right'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
watching_first_post: "<i title='new topic' class='fa fa-dot-circle-o'></i><p><span>נושא חדש</span> {{description}}</p>"
|
||||
group_message_summary:
|
||||
one: "<i title='messages in group inbox' class='fa fa-group'></i><p> {{count}} הודעה בתיבת הודעות הקבוצה {{group_name}}</p>"
|
||||
@ -1360,6 +1362,7 @@ he:
|
||||
later_this_week: "בהמשך השבוע"
|
||||
this_weekend: "בסוף שבוע זה"
|
||||
next_week: "בשבוע הבא"
|
||||
next_month: "חודש הבא"
|
||||
pick_date_and_time: "בחרו תאריך ושעה"
|
||||
set_based_on_last_post: "סגירה מבוססת על הפוסט האחרון"
|
||||
publish_to_category:
|
||||
@ -1377,12 +1380,15 @@ he:
|
||||
based_on_last_post: "אל תסגרו עד שהפוסט האחרון בנושא הוא לפחות בגיל זה."
|
||||
auto_delete:
|
||||
title: "מחיקה-אוטומטית של נושא"
|
||||
reminder:
|
||||
title: "תזכורת"
|
||||
status_update_notice:
|
||||
auto_open: "נושא זה ייפתח אוטומטית %{timeLeft}."
|
||||
auto_close: "נושא זו ייסגר אוטומטית %{timeLeft}."
|
||||
auto_publish_to_category: "נושא זה יפורסם ל-<a href=%{categoryUrl}>#%{categoryName}</a> %{timeLeft}."
|
||||
auto_close_based_on_last_post: "נושא זה ייסגר %{duration} אחרי התגובה האחרונה."
|
||||
auto_delete: "נושא זה יימחק אוטומטית %{timeLeft}."
|
||||
auto_reminder: "אתם תתוזכרו בנוגע לנושא זה %{timeLeft}."
|
||||
auto_close_title: 'הגדרות סגירה אוטומטית'
|
||||
auto_close_immediate:
|
||||
one: "הפוסט האחרון בנושא הוא כבר בן שעה, אז הנושא ייסגר מיידית."
|
||||
@ -2610,7 +2616,9 @@ he:
|
||||
custom_sections: "אזורים מותאמים אישית:"
|
||||
theme_components: "רכיבי התמה"
|
||||
uploads: "העלאות"
|
||||
no_uploads: "אתם יכולים להעלות נכסים שקשורים לתמה שלכם כגון פונטים ותמונות"
|
||||
add_upload: "הוספת העלאה"
|
||||
upload_file_tip: "בחרו נכס להעלאה (png, woff2, וכד׳)"
|
||||
variable_name: "שם משתנה SCSS:"
|
||||
upload: "העלאה"
|
||||
child_themes_check: "תמה כוללת תמות בנות אחרות"
|
||||
@ -2777,8 +2785,9 @@ he:
|
||||
block: "חסום"
|
||||
do_nothing: "עשה כלום"
|
||||
staff_actions:
|
||||
all: "הכל"
|
||||
filter: "סינון:"
|
||||
title: "פעולות צוות"
|
||||
instructions: "הקליקו על שמות משתמשים ופעולות כדי לסנן את הרשימה. הקליקו על תמונות פרופיל כדי ללכת לעמודי המשתמשים."
|
||||
clear_filters: "הראה הכל"
|
||||
staff_user: "משתמש חבר צוות"
|
||||
target_user: "משתמש מטרה"
|
||||
@ -2831,6 +2840,7 @@ he:
|
||||
change_readonly_mode: "שינוי מצב קריאה בלבד"
|
||||
backup_download: "הורדת גיבוי"
|
||||
backup_destroy: "השמדת גיבוי"
|
||||
reviewed_post: "פוסט מסוקר"
|
||||
screened_emails:
|
||||
title: "הודעות דואר מסוננות"
|
||||
description: "כשמישהו מנסה ליצור חשבון חדש, כתובות הדואר האלקטרוני הבאות ייבדקו וההרשמה תחסם או שיבוצו פעולות אחרות."
|
||||
|
||||
@ -226,8 +226,6 @@ id:
|
||||
enable: "Aktifkan"
|
||||
disable: "Nonaktifkan"
|
||||
undo: "Batalkan perintah"
|
||||
revert: "Kembali ke awal"
|
||||
failed: "Gagal"
|
||||
switch_to_anon: "Masuki Mode Anonim"
|
||||
switch_from_anon: "Keluar Mode Anonim"
|
||||
banner:
|
||||
|
||||
@ -370,6 +370,7 @@ it:
|
||||
automatic_group: Gruppo Automatico
|
||||
closed_group: Gruppo Chiuso
|
||||
is_group_user: "Sei un membro di questo gruppo"
|
||||
allow_membership_requests: "Permetti agli utenti di richiedere l'invito ai proprietari del gruppo"
|
||||
membership: "Iscrizione"
|
||||
name: "Nome"
|
||||
user_count: "Numero di Membri"
|
||||
@ -516,6 +517,7 @@ it:
|
||||
first_notification: "La tua prima notifica! Selezionala per iniziare."
|
||||
disable_jump_reply: "Non saltare al mio messaggio dopo la mia risposta"
|
||||
dynamic_favicon: "Visualizza il conteggio degli argomenti nuovi / aggiornati sull'icona del browser"
|
||||
theme_default_on_all_devices: "Rendi questo il mio tema di default su tutti i miei dispositivi"
|
||||
external_links_in_new_tab: "Apri tutti i link esterni in nuove schede"
|
||||
enable_quoting: "Abilita \"rispondi quotando\" per il testo evidenziato"
|
||||
change: "cambia"
|
||||
@ -566,11 +568,13 @@ it:
|
||||
muted_users_instructions: "Occulta tutte le notifiche da questi utenti."
|
||||
muted_topics_link: "Mostra argomenti silenziati"
|
||||
watched_topics_link: "Mostra argomenti osservati"
|
||||
tracked_topics_link: "Mostra gli argomenti seguiti"
|
||||
automatically_unpin_topics: "Spunta automaticamente gli argomenti quando arrivi in fondo."
|
||||
apps: "Applicazioni"
|
||||
revoke_access: "Revoca Accesso"
|
||||
undo_revoke_access: "Annullare Revoca Accesso"
|
||||
api_approved: "Approvato:"
|
||||
theme: "Tema"
|
||||
staff_counters:
|
||||
flags_given: "segnalazioni utili"
|
||||
flagged_posts: "messaggi segnalati"
|
||||
@ -588,6 +592,15 @@ it:
|
||||
move_to_archive: "Archivia"
|
||||
failed_to_move: "Errore nello spostare i messaggi selezionati (forse la tua connessione non è attiva)"
|
||||
select_all: "Seleziona Tutti"
|
||||
preferences_nav:
|
||||
account: "Account"
|
||||
profile: "Profilo"
|
||||
emails: "Email"
|
||||
notifications: "Notifiche"
|
||||
categories: "Categorie"
|
||||
tags: "Etichette"
|
||||
interface: "Interfaccia"
|
||||
apps: "App"
|
||||
change_password:
|
||||
success: "(email inviata)"
|
||||
in_progress: "(invio email in corso)"
|
||||
@ -963,6 +976,8 @@ it:
|
||||
github:
|
||||
title: "con GitHub"
|
||||
message: "Autenticazione con GitHub (assicurati che il blocco pop up non sia attivo)"
|
||||
invites:
|
||||
welcome_to: "Benvenuto su %{site_name}!"
|
||||
password_reset:
|
||||
continue: "Procedi su %{site_name}"
|
||||
emoji_set:
|
||||
@ -987,7 +1002,7 @@ it:
|
||||
unlist: "invisibile"
|
||||
add_warning: "Questo è un avvertimento ufficiale."
|
||||
toggle_whisper: "Attiva/Disattiva Sussurri"
|
||||
toggle_unlisted: "Attiva/Disattiva Invisibili"
|
||||
toggle_unlisted: "Rendi Invisibile"
|
||||
posting_not_on_topic: "A quale argomento vuoi rispondere?"
|
||||
saving_draft_tip: "salvataggio..."
|
||||
saved_draft_tip: "salvato"
|
||||
@ -1304,6 +1319,17 @@ it:
|
||||
jump_reply_up: passa a una risposta precedente
|
||||
jump_reply_down: passa a una risposta successiva
|
||||
deleted: "L'argomento è stato cancellato"
|
||||
auto_update_input:
|
||||
set_based_on_last_post: "Chiudi in base all'ultimo messaggio"
|
||||
temp_close:
|
||||
title: "Chiudi Temporaneamente"
|
||||
auto_close:
|
||||
title: "Chiudi Automaticamente"
|
||||
label: "Ore per la chiusura automatica:"
|
||||
based_on_last_post: "Non chiudere finché l'ultimo messaggio nell'argomento non ha questa anzianità."
|
||||
status_update_notice:
|
||||
auto_close: "Questo argomento si chiuderà automaticamente in %{timeLeft}."
|
||||
auto_close_based_on_last_post: "Questo argomento si chiuderà %{duration}dopo l'ultima risposta."
|
||||
auto_close_title: 'Impostazioni di auto-chiusura'
|
||||
auto_close_immediate:
|
||||
one: "L'ultimo messaggio nell'argomento ha già 1 ora, per cui l'argomento verrà chiuso immediatamente."
|
||||
@ -2022,6 +2048,7 @@ it:
|
||||
granted_on: "Assegnata %{date}"
|
||||
others_count: "Altri utenti con questo distintivo (%{count})"
|
||||
title: Distintivi
|
||||
allow_title: "Puoi usare questo distintivo come qualifica"
|
||||
badge_count:
|
||||
one: "1 Distintivo"
|
||||
other: "%{count} Distintivi"
|
||||
@ -2467,6 +2494,13 @@ it:
|
||||
desktop: "Desktop"
|
||||
mobile: "Mobile"
|
||||
preview: "Anteprima"
|
||||
scss:
|
||||
text: "CSS"
|
||||
head_tag:
|
||||
text: "</head>"
|
||||
title: "HTML che sarà inserito prima del tag </head> "
|
||||
body_tag:
|
||||
text: "</body>"
|
||||
colors:
|
||||
title: "Colori"
|
||||
long_title: "Combinazioni Colori"
|
||||
@ -2588,7 +2622,6 @@ it:
|
||||
do_nothing: "non fare nulla"
|
||||
staff_actions:
|
||||
title: "Azioni Staff"
|
||||
instructions: "Fai clic sul nome utente o sulle azioni per filtrare la lista. Fai clic sulle immagini del profilo per andare alla pagina utente."
|
||||
clear_filters: "Mostra Tutto"
|
||||
staff_user: "Utente"
|
||||
target_user: "Destinatario"
|
||||
@ -2608,6 +2641,8 @@ it:
|
||||
change_trust_level: "cambia livello esperienza"
|
||||
change_username: "cambia nome utente"
|
||||
change_site_setting: "modifica le impostazioni del sito"
|
||||
change_theme: "modifica tema"
|
||||
delete_theme: "cancella tema"
|
||||
change_site_text: "cambia il testo del sito"
|
||||
suspend_user: "utente sospeso"
|
||||
unsuspend_user: "utente riattivato"
|
||||
|
||||
@ -1935,7 +1935,6 @@ ja:
|
||||
do_nothing: "何もしない"
|
||||
staff_actions:
|
||||
title: "スタッフ操作"
|
||||
instructions: "ユーザ名、アクションをクリックすると、リストはフィルタされます。プロフィール画像をクリックするとユーザページに遷移します"
|
||||
clear_filters: "すべて表示する"
|
||||
staff_user: "スタッフユーザ"
|
||||
target_user: "対象ユーザ"
|
||||
|
||||
@ -1969,7 +1969,6 @@ ko:
|
||||
do_nothing: "아무것도 하지 않음"
|
||||
staff_actions:
|
||||
title: "스태프 기록"
|
||||
instructions: "사용자 아이디을 클릭하여 목록에서 차단하십시오. 프로필 사진을 클릭하여 사용자 페이지로 갑니다."
|
||||
clear_filters: "전체 보기"
|
||||
staff_user: "스태프 사용자"
|
||||
target_user: "타겟 사용자"
|
||||
|
||||
@ -518,6 +518,7 @@ nb_NO:
|
||||
first_notification: "Ditt første varsel! Velg det for å komme i gang."
|
||||
disable_jump_reply: "Ikke hopp til ditt nye innlegg etter svar"
|
||||
dynamic_favicon: "Vis antall nye / oppdaterte emner på nettleser ikonet"
|
||||
theme_default_on_all_devices: "Gjør dette til forvalgt drakt på alle mine enheter"
|
||||
external_links_in_new_tab: "Åpne alle eksterne lenker i ny fane"
|
||||
enable_quoting: "Aktiver svar med sitat for uthevet tekst"
|
||||
change: "Endre"
|
||||
@ -754,6 +755,7 @@ nb_NO:
|
||||
rescinded: "Invitasjon fjernet"
|
||||
reinvite: "Send invitasjon igjen"
|
||||
reinvite_all: "Send alle invitasjoner på nytt"
|
||||
reinvite_all_confirm: "Er du sikker på at du vil sende ut alle invitasjoner igjen?"
|
||||
reinvited: "Invitasjon sendt igjen"
|
||||
reinvited_all: "Alle invitasjoner sendt på nytt!"
|
||||
time_read: "Lesetid"
|
||||
@ -991,6 +993,8 @@ nb_NO:
|
||||
your_email: "E-postadressen tilknyttet din konto er <b>%{email}</b>."
|
||||
accept_invite: "Godta invitasjon"
|
||||
success: "Kontoen din har blitt opprettet og du er nå logget inn."
|
||||
name_label: "Navn"
|
||||
name_label_optional: "Navn (valgfritt)"
|
||||
password_label: "Sett passord (valgfritt)"
|
||||
password_reset:
|
||||
continue: "Fortsett til %{site_name}"
|
||||
@ -1057,7 +1061,7 @@ nb_NO:
|
||||
saved: "Lagret!"
|
||||
saved_draft: "Innleggsutkast. Velg for å fortsette."
|
||||
uploading: "Laster opp…"
|
||||
show_preview: 'forhånsvis »'
|
||||
show_preview: 'forhåndsvis »'
|
||||
hide_preview: '« skjul forhåndsvisning'
|
||||
quote_post_title: "Siter hele innlegget"
|
||||
bold_label: "F"
|
||||
@ -1234,6 +1238,7 @@ nb_NO:
|
||||
select_all: "Velg alle"
|
||||
clear_all: "Fjern alle"
|
||||
unlist_topics: "Avlist emner"
|
||||
relist_topics: "List opp emner på nytt"
|
||||
reset_read: "Nullstill lest"
|
||||
delete: "Slett emne"
|
||||
dismiss: "Avslå"
|
||||
@ -1244,8 +1249,10 @@ nb_NO:
|
||||
dismiss_new: "Lest"
|
||||
toggle: "Veksle mellom massevelging av emner"
|
||||
actions: "Massehandlinger"
|
||||
change_category: "Velg kategori"
|
||||
close_topics: "Lukk Emner"
|
||||
archive_topics: "Arkiverte emner"
|
||||
notification_level: "Varsler"
|
||||
choose_new_category: "Velg den nye kategorien for emnene:"
|
||||
selected:
|
||||
one: "Du har valgt <b>1</b> emne."
|
||||
@ -1354,6 +1361,7 @@ nb_NO:
|
||||
later_this_week: "Senere denne uken"
|
||||
this_weekend: "Denne uken"
|
||||
next_week: "Neste uke"
|
||||
next_month: "Neste måned"
|
||||
pick_date_and_time: "Velg dato og tid"
|
||||
set_based_on_last_post: "Lukk basert på siste post"
|
||||
publish_to_category:
|
||||
@ -1369,11 +1377,17 @@ nb_NO:
|
||||
label: "Tidsbolk for autolukking av emne:"
|
||||
error: "Skriv inn en gyldig verdi."
|
||||
based_on_last_post: "Ikke lukk før det siste innlegget i emnet er minst så gammelt."
|
||||
auto_delete:
|
||||
title: "Auto-slett emne"
|
||||
reminder:
|
||||
title: "Påminn meg"
|
||||
status_update_notice:
|
||||
auto_open: "Dette emnet vil automatisk åpnes %{timeLeft}."
|
||||
auto_close: "Dette emnet vil automatisk lukkes %{timeLeft}."
|
||||
auto_publish_to_category: "Dette emnet vil bli publisert til <a href=%{categoryUrl}>#%{categoryName}</a> %{timeLeft}."
|
||||
auto_close_based_on_last_post: "Dette emnet vil bli lukket %{duration} etter det siste innlegget."
|
||||
auto_delete: "Dette emnet vil automatisk slettes %{timeLeft}."
|
||||
auto_reminder: "Du vil bli påminnet om dette emnet %{timeLeft}."
|
||||
auto_close_title: 'Auto-lukk innstillinger'
|
||||
auto_close_immediate:
|
||||
one: "Det siste innlegget i emnet er allerede en time gammelt, så emnet vil stenges umiddelbart."
|
||||
@ -1835,7 +1849,7 @@ nb_NO:
|
||||
email_in_disabled: "Posting av nye emner via e-post er deaktivert i nettstedsinstillingene. For å aktivere posting av nye emner via e-post,"
|
||||
email_in_disabled_click: 'aktiver innstillingen "e-post inn".'
|
||||
suppress_from_homepage: "Utelat denne kategorien fra hjemmesiden."
|
||||
show_subcategory_list: "Vis underkategoriliste over emner i denne kategorien"
|
||||
show_subcategory_list: "Vis underkategoriliste over emner i denne kategorien."
|
||||
num_featured_topics: "Antall emner vist på kategori-siden:"
|
||||
subcategory_num_featured_topics: "Antall framhevede emner på opphavets kategoriside:"
|
||||
all_topics_wiki: "Gjør nye emner til wiki-er som forvalg."
|
||||
@ -2130,6 +2144,8 @@ nb_NO:
|
||||
granted_on: "Tildelt %{date}"
|
||||
others_count: "(%{count}) andre har dette merket"
|
||||
title: Merker
|
||||
allow_title: "Du kan bruke dette merket som tittel"
|
||||
multiple_grant: "Du kan oppnå dette flere ganger"
|
||||
badge_count:
|
||||
one: "Étt merke"
|
||||
other: "%{count} Merker"
|
||||
@ -2425,6 +2441,7 @@ nb_NO:
|
||||
event_type_missing: "Du må sette opp minst en type hendelse."
|
||||
content_type: "Content Type"
|
||||
secret: "Delt hemmelighet"
|
||||
event_chooser: "Hvilke hendelser skal utløse denne vevkroken?"
|
||||
wildcard_event: "Send meg alt"
|
||||
individual_event: "Velg hendelser enkeltvis."
|
||||
verify_certificate: "Kontroller TLSs-sertifikat til payload url"
|
||||
@ -2597,10 +2614,17 @@ nb_NO:
|
||||
color_scheme_select: "Velg farger å bruke i drakten"
|
||||
custom_sections: "Egendefinerte valg:"
|
||||
theme_components: "Drakt-komponenter"
|
||||
uploads: "Opplastinger"
|
||||
no_uploads: "Du kan laste opp effekter tilknyttet din drakt, som skrifter og bilder"
|
||||
add_upload: "Legg til opplasting"
|
||||
upload_file_tip: "Velg en effekt å laste opp (PNG, WOFF2, osv…)"
|
||||
variable_name: "Variabelnavn for SCSS:"
|
||||
upload: "Last opp"
|
||||
child_themes_check: "Drakten inneholder andre underdrakter"
|
||||
css_html: "Egendefinert CSS/HTML"
|
||||
edit_css_html: "Rediger CSS/HTML"
|
||||
edit_css_html_help: "Du har ikke redigert noe CSS eller HTML"
|
||||
delete_upload_confirm: "Slett denne opplastingen? (Draktens CSS kan slutte å virke!)"
|
||||
import_web_tip: "Pakkebrønn inneholdende drakt"
|
||||
import_file_tip: ".dcstyle.json-fil inneholdende drakt"
|
||||
about_theme: "Om drakt"
|
||||
@ -2761,7 +2785,6 @@ nb_NO:
|
||||
do_nothing: "ikke gjør noe"
|
||||
staff_actions:
|
||||
title: "Personalhandlinger"
|
||||
instructions: "Klikk på brukernavn og handlinger for å filtrere listen. Klikk på profilbilder for å gå til brukerens side."
|
||||
clear_filters: "Vis alt"
|
||||
staff_user: "Personale"
|
||||
target_user: "Målbruker"
|
||||
@ -2986,6 +3009,7 @@ nb_NO:
|
||||
reset_bounce_score:
|
||||
label: "Tilbakestill"
|
||||
title: "Sett antall tilbakesendinger tilbake til 0"
|
||||
visit_profile: "Besøk <a href='%{url}'>denne brukerinnstillingssiden</a> for å redigere profilen deres"
|
||||
deactivate_explanation: "En deaktivert bruker må re-validere sin e-post."
|
||||
suspended_explanation: "En bannlyst bruker kan ikke logge inn."
|
||||
block_explanation: "En blokkert bruker kan ikke poste eller starte emner."
|
||||
@ -3196,7 +3220,8 @@ nb_NO:
|
||||
sample: "Bruk følgende HTML-kode på siden din for å bygge inn Discourse-emner. Erstatt <b>ERSTATT_MEG</b> med kanonisk nettadresse fra siden du bygger den inn i."
|
||||
title: "Innbygging"
|
||||
host: "Tillatte verter"
|
||||
path_whitelist: "Hvitliste for søkesti"
|
||||
class_name: "Klassenavn"
|
||||
path_whitelist: "Tillatte stier"
|
||||
edit: "rediger"
|
||||
category: "Legg til innlegg i kategori"
|
||||
add_host: "Legg til vert"
|
||||
|
||||
@ -518,6 +518,7 @@ nl:
|
||||
first_notification: "Uw eerste melding! Selecteer deze om te beginnen."
|
||||
disable_jump_reply: "Niet naar mijn bericht gaan nadat ik antwoord"
|
||||
dynamic_favicon: "Aantal nieuwe / bijgewerkte topics tonen in browserpictogram"
|
||||
theme_default_on_all_devices: "Maak dit mijn standaard thema op al mijn devices"
|
||||
external_links_in_new_tab: "Alle externe koppelingen openen in een nieuw tabblad"
|
||||
enable_quoting: "Antwoord-met-citaat voor geselecteerde tekst inschakelen"
|
||||
change: "wijzigen"
|
||||
@ -754,6 +755,7 @@ nl:
|
||||
rescinded: "Uitnodiging verwijderd"
|
||||
reinvite: "Uitnodiging opnieuw versturen"
|
||||
reinvite_all: "Alle uitnodigingen opnieuw versturen"
|
||||
reinvite_all_confirm: "Weet u zeker dat u alle uitnodigingen opnieuw wilt versturen?"
|
||||
reinvited: "Uitnodiging opnieuw verstuurd"
|
||||
reinvited_all: "Alle uitnodigingen zijn opnieuw verstuurd!"
|
||||
time_read: "Leestijd"
|
||||
@ -948,7 +950,7 @@ nl:
|
||||
authenticating: "Authenticeren..."
|
||||
awaiting_activation: "Uw account wacht op activering; gebruik de koppeling 'Wachtwoord vergeten' om een nieuwe activeringsmail te ontvangen."
|
||||
awaiting_approval: "Uw account is nog niet door een staflid goedgekeurd. U ontvangt een e-mail zodra dat is gebeurd."
|
||||
requires_invite: "Sorry. toegang tot dit forum werkt alleen via uitnodiging."
|
||||
requires_invite: "Sorry, toegang tot dit forum werkt alleen via uitnodiging."
|
||||
not_activated: "U kunt zich nog niet aanmelden. We hebben een activeringsmail naar <b>{{sentTo}}</b> gestuurd. Volg de instructies in dat e-mailbericht om uw account te activeren."
|
||||
not_allowed_from_ip_address: "U kunt zich niet aanmelden vanaf dat IP-adres."
|
||||
admin_not_allowed_from_ip_address: "U kunt zich niet aanmelden als beheerder vanaf dat IP-adres."
|
||||
@ -1029,6 +1031,7 @@ nl:
|
||||
cannot_see_mention:
|
||||
category: "U hebt {{username}} genoemd, maar de gebruiker ontvangt geen melding, omdat hij of zij geen toegang heeft tot deze categorie. U dient de gebruiker toe te voegen aan een groep die toegang heeft tot deze categorie."
|
||||
private: "U hebt {{username}} genoemd, maar de gebruiker ontvangt geen melding, omdat hij of zij dit persoonlijke bericht niet kan zien. U dient de gebruiker voor dit PB uit te nodigen."
|
||||
duplicate_link: "Het lijkt erop dat uw link naar <b>{{domain}}</b> al in het topic gepost is door <b>@{{username}}</b> in <a href='{{post_url}}'>een antwoord op {{ago}}</a> – weet u zeker dat u het opnieuw wilt posten?"
|
||||
error:
|
||||
title_missing: "Titel is vereist"
|
||||
title_too_short: "Titel moet minstens {{min}} tekens bevatten"
|
||||
@ -1118,6 +1121,7 @@ nl:
|
||||
moved_post: "<i title='bericht verplaatst' class='fa fa-sign-out'></i><p><span>{{username}}</span> heeft {{description}} verplaatst</p>"
|
||||
linked: "<i title='bericht gekoppeld' class='fa fa-link'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
granted_badge: "<i title='badge toegekend' class='fa fa-certificate'></i><p>'{{description}}' ontvangen</p>"
|
||||
topic_reminder: "<i title='topic reminder' class='fa fa-hand-o-right'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
watching_first_post: "<i title='nieuw topic' class='fa fa-dot-circle-o'></i><p><span>Nieuw topic</span> {{description}}</p>"
|
||||
group_message_summary:
|
||||
one: "<i title='berichten in groepspostvak' class='fa fa-group'></i><p> {{count}} bericht in uw Postvak IN voor {{group_name}}</p>"
|
||||
@ -1234,6 +1238,7 @@ nl:
|
||||
select_all: "Alles selecteren"
|
||||
clear_all: "Alles wissen"
|
||||
unlist_topics: "Topics onzichtbaar maken"
|
||||
relist_topics: "Topics opnieuw weergeven"
|
||||
reset_read: "Markeren als ongelezen"
|
||||
delete: "Topics verwijderen"
|
||||
dismiss: "Negeren"
|
||||
@ -1244,8 +1249,10 @@ nl:
|
||||
dismiss_new: "Nieuwe berichten negeren"
|
||||
toggle: "bulkselectie van topics in-/uitschakelen"
|
||||
actions: "Bulkacties"
|
||||
change_category: "Categorie wijzigen"
|
||||
close_topics: "Topics sluiten"
|
||||
archive_topics: "Topics archiveren"
|
||||
notification_level: "Meldingen"
|
||||
choose_new_category: "Kies de nieuwe categorie voor de topics:"
|
||||
selected:
|
||||
one: "U hebt <b>1</b> topic geselecteerd."
|
||||
@ -1354,6 +1361,7 @@ nl:
|
||||
later_this_week: "Later deze week"
|
||||
this_weekend: "Dit weekend"
|
||||
next_week: "Volgende week"
|
||||
next_month: "Volgende maand"
|
||||
pick_date_and_time: "Kies datum en tijd"
|
||||
set_based_on_last_post: "Sluiten op basis van laatste bericht"
|
||||
publish_to_category:
|
||||
@ -1369,11 +1377,17 @@ nl:
|
||||
label: "Tijden voor automatisch sluiten van topic:"
|
||||
error: "Voer een geldige waarde in."
|
||||
based_on_last_post: "Pas sluiten als het laatste bericht in het topic minstens zo oud is"
|
||||
auto_delete:
|
||||
title: "Topic automatisch verwijderen"
|
||||
reminder:
|
||||
title: "Herinner mij"
|
||||
status_update_notice:
|
||||
auto_open: "Dit topic zal automatisch %{timeLeft} worden geopend."
|
||||
auto_close: "Dit topic zal automatisch %{timeLeft} worden gesloten."
|
||||
auto_publish_to_category: "Dit topic zal %{timeLeft} naar <a href=%{categoryUrl}>#%{categoryName}</a> worden gepubliceerd."
|
||||
auto_close_based_on_last_post: "Dit topic zal %{duration} na het laatste antwoord worden gesloten."
|
||||
auto_delete: "Dit topic zal %{timeLeft} automatisch verwijderd worden."
|
||||
auto_reminder: "U zult %{timeLeft} aan dit topic herinnerd worden."
|
||||
auto_close_title: 'Instellingen voor automatisch sluiten'
|
||||
auto_close_immediate:
|
||||
one: "Het laatste bericht in dit topic is al 1 uur oud, dus het topic zal meteen worden gesloten."
|
||||
@ -2130,6 +2144,8 @@ nl:
|
||||
granted_on: "Toegekend op %{date}"
|
||||
others_count: "Anderen met deze badge (%{count})"
|
||||
title: Badges
|
||||
allow_title: "U kunt deze badge als een titel gebruiken"
|
||||
multiple_grant: "U kunt dit meerdere keren verdienen"
|
||||
badge_count:
|
||||
one: "1 badge"
|
||||
other: "%{count} badges"
|
||||
@ -2598,10 +2614,17 @@ nl:
|
||||
color_scheme_select: "Kleuren die door thema worden gebruikt selecteren"
|
||||
custom_sections: "Aangepaste secties:"
|
||||
theme_components: "Themaonderdelen"
|
||||
uploads: "Uploads"
|
||||
no_uploads: "U kunt aan uw thema gerelateerde assets uploaden zoals fonts en afbeeldingen"
|
||||
add_upload: "Upload toevoegen"
|
||||
upload_file_tip: "Kies een asset om te uploaden (png, woff2, etc...)"
|
||||
variable_name: "SCSS variabele naam:"
|
||||
upload: "Upload"
|
||||
child_themes_check: "Thema bevat andere onderliggende thema's"
|
||||
css_html: "Aangepaste CSS/HTML"
|
||||
edit_css_html: "CSS/HTML bewerken"
|
||||
edit_css_html_help: "U hebt geen CSS of HTML bewerkt"
|
||||
delete_upload_confirm: "Deze upload verwijderen? (Thema CSS zou kunnen stoppen met werken!)"
|
||||
import_web_tip: "Repository die thema bevat"
|
||||
import_file_tip: ".dcstyle.json-bestand dat thema bevat"
|
||||
about_theme: "Over thema"
|
||||
@ -2762,7 +2785,6 @@ nl:
|
||||
do_nothing: "niets doen"
|
||||
staff_actions:
|
||||
title: "Stafacties"
|
||||
instructions: "Klik op gebruikersnamen en acties om de lijst te filteren. Klik op profielafbeeldingen om naar gebruikerspagina's te gaan."
|
||||
clear_filters: "Alles tonen"
|
||||
staff_user: "Staflid"
|
||||
target_user: "Doelgebruiker"
|
||||
@ -3197,6 +3219,7 @@ nl:
|
||||
sample: "Gebruik de volgende HTML-code in uw website om Discourse-topics te maken en te embedden. Vervang <b>REPLACE_ME</b> door de canonieke URL van de pagina waarin u het topic wilt embedden."
|
||||
title: "Embedden"
|
||||
host: "Toegestane hosts"
|
||||
class_name: "Class naam"
|
||||
path_whitelist: "Toegestane paden"
|
||||
edit: "wijzig"
|
||||
category: "Bericht naar categorie"
|
||||
@ -3216,6 +3239,7 @@ nl:
|
||||
embed_classname_whitelist: "Toegestane CSS-klassenamen"
|
||||
feed_polling_enabled: "Importeer berichten via RSS/ATOM"
|
||||
feed_polling_url: "URL van RSS/ATOM-feed voor crawlen"
|
||||
feed_polling_frequency_mins: "Hoe vaak feed verversen (in minuten)"
|
||||
save: "Embeddingsinstellingen opslaan"
|
||||
permalink:
|
||||
title: "Permalinks"
|
||||
|
||||
@ -2039,6 +2039,10 @@ pl_PL:
|
||||
created: "Utworzony"
|
||||
sort_ascending: 'Rosnąco'
|
||||
sort_descending: 'Malejąco'
|
||||
subcategory_list_styles:
|
||||
rows: "Rzędy"
|
||||
rows_with_featured_topics: "Rzędy z wybranymi tematami"
|
||||
boxes_with_featured_topics: "Ramki z wybranymi tematami"
|
||||
flagging:
|
||||
title: 'Dziękujemy za pomoc w utrzymaniu porządku w naszej społeczności!'
|
||||
action: 'Oflaguj wpis'
|
||||
@ -2792,23 +2796,35 @@ pl_PL:
|
||||
color_scheme: "Schemat kolorów"
|
||||
color_scheme_select: "Wybierz kolory, jakie mają być użyte w motywie"
|
||||
theme_components: "Komponenty motywu"
|
||||
no_uploads: "Możesz załadować zasoby do swojego motywu np. fonty lub obrazy"
|
||||
css_html: "Własny CSS/HTML"
|
||||
edit_css_html: "Edytuj CSS/HTML"
|
||||
edit_css_html_help: "Nie modyfikowałeś CSS ani HTML"
|
||||
delete_upload_confirm: "Czy usunąć ten plik? (CSS motywu może przestać działać!)"
|
||||
about_theme: "O motywie"
|
||||
license: "Licencja"
|
||||
update_to_latest: "Aktualizuj do najnowszego"
|
||||
check_for_updates: "Sprawdź dostępność aktualizacji"
|
||||
updating: "Trwa proces aktualizacji..."
|
||||
up_to_date: "Motyw jest aktualny. Ostatnio sprawdzano:"
|
||||
add: "Dodaj"
|
||||
commits_behind:
|
||||
one: "Motyw jest nieaktualny - dostępna 1 poprawka!"
|
||||
few: "Motyw jest nieaktualny - dostępne {{count}} poprawki!"
|
||||
many: "Motyw jest nieaktualny - dostępne {{count}} poprawek!"
|
||||
other: "Motyw jest nieaktualny - dostępne {{count}} poprawek!"
|
||||
scss:
|
||||
text: "CSS"
|
||||
title: "Wstaw własny CSS, przyjmujemy wszystkie prawidłowe style CSS i SCSS"
|
||||
header:
|
||||
text: "Nagłówek"
|
||||
title: "Wstaw kod HTML do wyświetlenia powyżej nagłówka"
|
||||
after_header:
|
||||
text: "Po nagłówku"
|
||||
title: "Wstaw kod HTML do wyświetlenia po nagłówku"
|
||||
footer:
|
||||
text: "Stopka"
|
||||
title: "Wstaw kod HTML do wyświetlenia w stopce strony"
|
||||
embedded_scss:
|
||||
text: "Osadzony CSS"
|
||||
head_tag:
|
||||
@ -2943,7 +2959,6 @@ pl_PL:
|
||||
do_nothing: "nic nie rób"
|
||||
staff_actions:
|
||||
title: "Działania obsługi"
|
||||
instructions: "Klikając nazwę użytkownika i akcję możesz filtrować listę. Kliknij awatary aby przejść na stronę użytkownika."
|
||||
clear_filters: "Pokaż wszystko"
|
||||
staff_user: "Użytkownik obsługi"
|
||||
target_user: "Użytkownik będący Obiektem"
|
||||
|
||||
@ -2567,7 +2567,6 @@ pt:
|
||||
do_nothing: "não fazer nada"
|
||||
staff_actions:
|
||||
title: "Ações do Pessoal"
|
||||
instructions: "Clique nos nomes de utilizadores e nas ações para filtrar a lista. Clique nas fotografias de perfil para ir para as páginas dos utilizadores."
|
||||
clear_filters: "Mostrar Tudo"
|
||||
staff_user: "Utilizador do Pessoal"
|
||||
target_user: "Utilizador Destino"
|
||||
|
||||
@ -2693,7 +2693,6 @@ pt_BR:
|
||||
do_nothing: "não fazer nada"
|
||||
staff_actions:
|
||||
title: "Ações do Staff"
|
||||
instructions: "Clique nos nomes de usuário e ações para filtrar a lista. Clique nas imagens de perfil para ir para as páginas de usuário."
|
||||
clear_filters: "Mostrar Tudo"
|
||||
staff_user: "Usuário do Staff"
|
||||
target_user: "Usuário Destino"
|
||||
|
||||
@ -2675,7 +2675,6 @@ ro:
|
||||
do_nothing: "nu acționa"
|
||||
staff_actions:
|
||||
title: "Acțiunile membrilor echipei"
|
||||
instructions: "Clic pe numele utilizatorului şi acţiuni pentru a filtra lista. Clic pe poza profilului pentru a vizita pagina utilizatorului."
|
||||
clear_filters: "Arată tot"
|
||||
staff_user: "Utilizator-membru al echipei"
|
||||
target_user: "Utilizator țintă"
|
||||
|
||||
@ -2903,7 +2903,6 @@ ru:
|
||||
do_nothing: "ничего не делать"
|
||||
staff_actions:
|
||||
title: "Действия персонала"
|
||||
instructions: "Кликните по псевдониму или действиям для фильтрации списка. Кликните по аватару для перехода на страницу пользователя."
|
||||
clear_filters: "Показать все"
|
||||
staff_user: "Персонал"
|
||||
target_user: "Целевой пользователь"
|
||||
|
||||
@ -119,6 +119,7 @@ sk:
|
||||
other: "%{count} rokov neskôr"
|
||||
previous_month: 'Predchádzajúci mesiac'
|
||||
next_month: 'Nasledujúci mesiac'
|
||||
placeholder: Zvoľte dátum
|
||||
share:
|
||||
topic: 'zdieľaj odkaz na túto tému'
|
||||
post: 'príspevok #%{postNumber}'
|
||||
@ -2439,7 +2440,6 @@ sk:
|
||||
do_nothing: "nerob nič"
|
||||
staff_actions:
|
||||
title: "Akcie personálu"
|
||||
instructions: "Vyberte používateľské meno a akcie na filtrovanie zoznamu. Kliknite na profilovú fotku pre navigáciu na užívateľské stránky."
|
||||
clear_filters: "Ukázať všetko"
|
||||
staff_user: "Člen redakcie"
|
||||
target_user: "Cieľový používateľ"
|
||||
|
||||
@ -2345,7 +2345,6 @@ sq:
|
||||
do_nothing: "mos bëj asgjë"
|
||||
staff_actions:
|
||||
title: "Veprime Stafi"
|
||||
instructions: "Kliko emrat e anëtarëve apo veprimet për të filtruar listën. Kliko foton e profilit për të shkuar tek faqla e anëtarit. "
|
||||
clear_filters: "Trego gjithshka"
|
||||
staff_user: "Anëtari i stafit"
|
||||
target_user: "Anëtari i prekur"
|
||||
|
||||
@ -2647,7 +2647,6 @@ sv:
|
||||
do_nothing: "gör ingenting"
|
||||
staff_actions:
|
||||
title: "Personalåtgärder"
|
||||
instructions: "Klicka på användarnamn och handling för att filtrera listan. Klicka på profilbilder för att gå till användarnas profiler."
|
||||
clear_filters: "Visa allt"
|
||||
staff_user: "Personalmedlem"
|
||||
target_user: "Målanvändare"
|
||||
|
||||
@ -1384,7 +1384,6 @@ te:
|
||||
do_nothing: "ఏమీ చేయకు"
|
||||
staff_actions:
|
||||
title: "సిబ్బింది చర్యలు"
|
||||
instructions: "వినియోగదారు పేరు మరియు చర్యల వడపోత చిట్టాను నొక్కండి.చిత్రాలు వినియోగదారు పుట కి వెళతాయి."
|
||||
clear_filters: "మొత్తం చూపు"
|
||||
staff_user: "సిబ్బంది సభ్యుడు"
|
||||
target_user: "లక్షిత సభ్యుడు"
|
||||
|
||||
@ -551,6 +551,8 @@ tr_TR:
|
||||
move_to_archive: " Arşiv"
|
||||
failed_to_move: "Seçilen iletileri taşımak başarısız oldu (muhtemelen ağınız çöktü)"
|
||||
select_all: "Tümünü seç"
|
||||
preferences_nav:
|
||||
interface: "Arayüz"
|
||||
change_password:
|
||||
success: "(e-posta gönderildi)"
|
||||
in_progress: "(e-posta yollanıyor)"
|
||||
@ -2476,7 +2478,6 @@ tr_TR:
|
||||
do_nothing: "hiçbir şey yapma"
|
||||
staff_actions:
|
||||
title: "Görevli Eylemleri"
|
||||
instructions: "Kullanıcı adları ve eylemlere tıklayarak listeyi süz. Profil resimlerine tıklayarak kullanıcı sayfalarına git."
|
||||
clear_filters: "Hepsini Göster"
|
||||
staff_user: "Görevli Kullanıcı"
|
||||
target_user: "Hedef Kullanıcı"
|
||||
|
||||
@ -2614,7 +2614,6 @@ ur:
|
||||
do_nothing: "کچھ نہ کریں"
|
||||
staff_actions:
|
||||
title: "سٹاف عوامل"
|
||||
instructions: "فہرست فِلٹر کرنے کیلئے صارف نام اور عوامل پر کلِک کریں۔ صارفیں کے پیج پر جانے کیلئے پروفائل تصاویر کو کلِک کریں۔"
|
||||
clear_filters: "سب کچھ دکھائیں"
|
||||
staff_user: "سٹاف یوزر"
|
||||
target_user: "ہدف صارف"
|
||||
|
||||
@ -2271,7 +2271,6 @@ vi:
|
||||
do_nothing: "không làm gì"
|
||||
staff_actions:
|
||||
title: "Staff Actions"
|
||||
instructions: "Click username và thực hiện lọc danh sách, click ảnh hồ sơ để đến trang thành viên."
|
||||
clear_filters: "Hiện thị mọi thứ"
|
||||
staff_user: "Tài khoản Nhân viên"
|
||||
target_user: "Target User"
|
||||
|
||||
@ -83,6 +83,7 @@ zh_CN:
|
||||
other: "%{count}年后"
|
||||
previous_month: '上个月'
|
||||
next_month: '下个月'
|
||||
placeholder: 选择日期
|
||||
share:
|
||||
topic: '分享指向这个主题的链接'
|
||||
post: '#%{postNumber} 楼'
|
||||
@ -117,10 +118,16 @@ zh_CN:
|
||||
visible:
|
||||
enabled: '%{when}列出'
|
||||
disabled: '于%{when}隐藏'
|
||||
banner:
|
||||
enabled: '%{when}将其设置为横幅。在用户关闭横幅前,横幅将显示在每一页的顶部。'
|
||||
disabled: "%{when}撤销了该横幅。\b横幅将不在显示每一页的顶部。"
|
||||
topic_admin_menu: "管理主题"
|
||||
wizard_required: "欢迎来到你新安装的 Discourse!让我们开始<a href='%{url}' data-auto-route='true'>设置向导</a>✨"
|
||||
emails_are_disabled: "出站邮件已经被管理员全局禁用。将不发送任何邮件提醒。"
|
||||
bootstrap_mode_enabled: "为方便站点准备发布,其正处于初始化模式中。所有新用户将被授予信任等级1,并为他们设置接受每日邮件摘要。初始化模式会在用户数超过 %{min_users} 个时关闭。"
|
||||
bootstrap_mode_disabled: "初始化模式将会在24小时后关闭。"
|
||||
themes:
|
||||
default_description: "默认"
|
||||
s3:
|
||||
regions:
|
||||
us_east_1: "美国东部(N. Virginia)"
|
||||
@ -128,6 +135,7 @@ zh_CN:
|
||||
us_west_2: "美国西部(Oregon)"
|
||||
us_gov_west_1: "政府专用(US)"
|
||||
eu_west_1: "欧洲(Ireland)"
|
||||
eu_west_2: "欧洲(London)"
|
||||
eu_central_1: "欧洲(Frankfurt)"
|
||||
ap_southeast_1: "亚太地区(Singapore)"
|
||||
ap_southeast_2: "亚太地区(Sydney)"
|
||||
@ -179,7 +187,7 @@ zh_CN:
|
||||
other: "%{count} 个字符"
|
||||
suggested_topics:
|
||||
title: "推荐主题"
|
||||
pm_title: "推荐消息"
|
||||
pm_title: "推荐私信"
|
||||
about:
|
||||
simple_title: "关于"
|
||||
title: "关于%{title}"
|
||||
@ -326,7 +334,7 @@ zh_CN:
|
||||
posts: "群组成员没有发布帖子。"
|
||||
members: "群组没有成员。"
|
||||
mentions: "群组从未被提及过。"
|
||||
messages: "群组从未发送过消息。"
|
||||
messages: "群组从未发送过私信。"
|
||||
topics: "群组的成员从未发表主题。"
|
||||
logs: "没有关于群组的日志。"
|
||||
add: "添加"
|
||||
@ -336,6 +344,7 @@ zh_CN:
|
||||
automatic_group: 自动群组
|
||||
closed_group: 封闭群组
|
||||
is_group_user: "你是该群组的一个成员"
|
||||
allow_membership_requests: "允许用户向小组拥有者发送\b\b成员请求"
|
||||
membership: "成员资格"
|
||||
name: "名字"
|
||||
user_count: "成员数目"
|
||||
@ -353,9 +362,10 @@ zh_CN:
|
||||
topics: "主题"
|
||||
posts: "帖子"
|
||||
mentions: "提及"
|
||||
messages: "消息"
|
||||
messages: "私信"
|
||||
notification_level: "小组私信的默认通知等级"
|
||||
alias_levels:
|
||||
title: "谁能@该群组和发送消息?"
|
||||
title: "谁能@该群组和发送私信?"
|
||||
nobody: "没有人"
|
||||
only_admins: "管理员"
|
||||
mods_and_admins: "版主与管理员"
|
||||
@ -367,7 +377,7 @@ zh_CN:
|
||||
notifications:
|
||||
watching:
|
||||
title: "跟踪"
|
||||
description: "你将会在该消息中的每个新帖子发布后收到通知,并且会显示新回复数量。"
|
||||
description: "你将会在该私信中的每个新帖子发布后收到通知,并且会显示新回复数量。"
|
||||
watching_first_post:
|
||||
title: "跟踪"
|
||||
description: "你只会收到此组中每个新主题的第一帖的通知。"
|
||||
@ -451,7 +461,7 @@ zh_CN:
|
||||
download_archive:
|
||||
button_text: "下载我的帖子"
|
||||
confirm: "你确定要下载你的帖子吗?"
|
||||
success: "下载开始,完成后将有消息通知你。"
|
||||
success: "下载开始,完成后将有私信通知你。"
|
||||
rate_limit_error: "帖子只能每天下载一次,请明天再重试。"
|
||||
new_private_message: "发新私信"
|
||||
private_message: "私信"
|
||||
@ -479,6 +489,7 @@ zh_CN:
|
||||
first_notification: "你的头一个通知!选中它开始。"
|
||||
disable_jump_reply: "回复后不跳转至新帖子"
|
||||
dynamic_favicon: "在浏览器图标中显示主题更新数量"
|
||||
theme_default_on_all_devices: "将其设为我所有设备上的默认主题"
|
||||
external_links_in_new_tab: "在新标签页打开外部链接"
|
||||
enable_quoting: "在选择文字时显示引用回复按钮"
|
||||
change: "修改"
|
||||
@ -522,18 +533,20 @@ zh_CN:
|
||||
delete_account_confirm: "你真的要永久删除自己的账号吗?删除之后无法恢复!"
|
||||
deleted_yourself: "你的帐号已被删除。"
|
||||
delete_yourself_not_allowed: "你目前不能删除自己的帐号。联系管理员帮助你删除帐号。"
|
||||
unread_message_count: "消息"
|
||||
unread_message_count: "私信"
|
||||
admin_delete: "删除"
|
||||
users: "用户"
|
||||
muted_users: "静音"
|
||||
muted_users_instructions: "抑制来自这些用户的所有通知。"
|
||||
muted_topics_link: "显示已静音的主题"
|
||||
watched_topics_link: "显示已监看的主题"
|
||||
tracked_topics_link: "显示已跟踪的主题"
|
||||
automatically_unpin_topics: "当我完整阅读了主题时自动解除置顶。"
|
||||
apps: "应用"
|
||||
revoke_access: "撤销许可"
|
||||
undo_revoke_access: "解除撤销许可"
|
||||
api_approved: "已批准:"
|
||||
theme: "主题"
|
||||
staff_counters:
|
||||
flags_given: "采纳标记"
|
||||
flagged_posts: "被标记"
|
||||
@ -546,11 +559,20 @@ zh_CN:
|
||||
sent: "已发送"
|
||||
archive: "存档"
|
||||
groups: "我的群组"
|
||||
bulk_select: "选择消息"
|
||||
bulk_select: "选择私信"
|
||||
move_to_inbox: "移动到收件箱"
|
||||
move_to_archive: "存档"
|
||||
failed_to_move: "移动选中消息失败(可能你的网络出问题了)"
|
||||
failed_to_move: "移动选中私信失败(可能你的网络出问题了)"
|
||||
select_all: "全选"
|
||||
preferences_nav:
|
||||
account: "账号"
|
||||
profile: "个人简介"
|
||||
emails: "邮件"
|
||||
notifications: "通知"
|
||||
categories: "分类"
|
||||
tags: "标签"
|
||||
interface: "界面"
|
||||
apps: "应用"
|
||||
change_password:
|
||||
success: "(邮件已发送)"
|
||||
in_progress: "(正在发送邮件)"
|
||||
@ -656,7 +678,7 @@ zh_CN:
|
||||
include_tl0_in_digests: "摘要邮件中包含新用户的内容"
|
||||
email_in_reply_to: "邮件中包含回复你的内容节选"
|
||||
email_direct: "当有人引用和回复我的帖子、@我或邀请我至主题时,发送邮件提醒"
|
||||
email_private_messages: "有人发消息给我时邮件提醒"
|
||||
email_private_messages: "有人发私信给我时邮件提醒"
|
||||
email_always: "即使我在论坛中活跃时也发送邮件提醒"
|
||||
other_settings: "其它"
|
||||
categories_settings: "分类"
|
||||
@ -702,6 +724,7 @@ zh_CN:
|
||||
rescinded: "邀请已删除"
|
||||
reinvite: "重新发送邀请"
|
||||
reinvite_all: "重发所有邀请"
|
||||
reinvite_all_confirm: "确定要重发这些邀请吗?"
|
||||
reinvited: "邀请已重新发送"
|
||||
reinvited_all: "所有邀请已重新发送!"
|
||||
time_read: "阅读时间"
|
||||
@ -714,7 +737,7 @@ zh_CN:
|
||||
bulk_invite:
|
||||
none: "你还没有邀请任何人。你可以单独邀请,也可以通过 <a href='https://meta.discourse.org/t/send-bulk-invites/16468'>上传CSV文件</a>批量邀请。"
|
||||
text: "通过文件批量邀请"
|
||||
success: "文件上传成功,当操作完成时将通过消息通知你。"
|
||||
success: "文件上传成功,当操作完成时将通过私信通知你。"
|
||||
error: "抱歉,文件必须是CSV格式。"
|
||||
password:
|
||||
title: "密码"
|
||||
@ -764,7 +787,7 @@ zh_CN:
|
||||
title: "注册 IP 地址"
|
||||
avatar:
|
||||
title: "头像"
|
||||
header_title: "个人页面、消息、书签和设置"
|
||||
header_title: "个人页面、私信、书签和设置"
|
||||
title:
|
||||
title: "头衔"
|
||||
filters:
|
||||
@ -848,8 +871,8 @@ zh_CN:
|
||||
private_message_info:
|
||||
title: "私信"
|
||||
invite: "邀请其他人..."
|
||||
remove_allowed_user: "确定将 {{name}} 从本条消息中移除?"
|
||||
remove_allowed_group: "确定将 {{name}} 从本条消息中移除?"
|
||||
remove_allowed_user: "确定将 {{name}} 从本条私信中移除?"
|
||||
remove_allowed_group: "确定将 {{name}} 从本条私信中移除?"
|
||||
email: '邮箱'
|
||||
username: '用户名'
|
||||
last_seen: '最后活动'
|
||||
@ -885,12 +908,17 @@ zh_CN:
|
||||
logging_in: "登录中..."
|
||||
or: "或"
|
||||
authenticating: "验证中..."
|
||||
awaiting_activation: "你的帐号尚未激活,点击忘记密码链接以重新发送激活邮件。"
|
||||
awaiting_approval: "你的帐号尚未被论坛版主审核。请等待一段时间,当你的帐号被审核时会收到一封电子邮件。"
|
||||
requires_invite: "抱歉,本论坛仅接受邀请注册。"
|
||||
not_activated: "你还不能登录。我们已经发送了一封邮件至 <b>{{sentTo}}</b>,请打开它并完成账号激活。"
|
||||
not_allowed_from_ip_address: "你使用的 IP 地址已被封禁。"
|
||||
admin_not_allowed_from_ip_address: "你不能从这个 IP 地址以管理员身份登录。"
|
||||
resend_activation_email: "点击此处重新发送激活邮件。"
|
||||
resend_title: "重发激活邮件"
|
||||
change_email: "更改邮件地址"
|
||||
provide_new_email: "给个新地址!然后我们会再给你发一封确认邮件。"
|
||||
submit_new_email: "更新邮件地址"
|
||||
sent_activation_email_again: "我们又向 <b>{{currentEmail}}</b> 发送了一封激活邮件,邮件送达可能需要几分钟;请检查一下你邮箱的垃圾邮件文件夹。"
|
||||
to_continue: "请登录"
|
||||
preferences: "需要登入后更改设置"
|
||||
@ -925,6 +953,8 @@ zh_CN:
|
||||
your_email: "你的帐户邮箱地址是<b>%{email}</b>。"
|
||||
accept_invite: "接受邀请"
|
||||
success: "已创建您的帐号,您现在可以登录了。"
|
||||
name_label: "昵称"
|
||||
name_label_optional: "昵称(可选)"
|
||||
password_label: "设置密码(可选)"
|
||||
password_reset:
|
||||
continue: "转入到 %{site_name}"
|
||||
@ -962,6 +992,7 @@ zh_CN:
|
||||
cannot_see_mention:
|
||||
category: "你提到了{{userrname}},然而他们不能访问该分类,所以他们不会被通知。你需要把他们加入到能访问该分类的群组中。"
|
||||
private: "你提到了{{userrname}},然而他们不能访问该私信,所以他们不会被通知。你需要邀请他们至私信中。"
|
||||
duplicate_link: "好像<b>@{{username}}</b>在<a href='{{post_url}}'>{{ago}}</a>中前的回复中已经发了你的链接 <b>{{domain}}</b> - 你想再次发表链接吗?"
|
||||
error:
|
||||
title_missing: "标题为空"
|
||||
title_too_short: "标题过短,至少 {{min}} 个字"
|
||||
@ -1022,13 +1053,13 @@ zh_CN:
|
||||
toggler: "隐藏或显示编辑面板"
|
||||
modal_ok: "确认"
|
||||
modal_cancel: "取消"
|
||||
cant_send_pm: "抱歉,你不能向 %{username} 发送消息。"
|
||||
cant_send_pm: "抱歉,你不能向 %{username} 发送私信。"
|
||||
yourself_confirm:
|
||||
title: "你忘记添加收信人了吗?"
|
||||
body: "目前该私信只发给了你自己!"
|
||||
admin_options_title: "本主题可选设置"
|
||||
notifications:
|
||||
title: "使用@提到你,回复你的内容、消息以及其他的通知"
|
||||
title: "使用@提到你,回复你的内容、私信以及其他的通知"
|
||||
none: "现在无法载入通知"
|
||||
empty: "未发现通知"
|
||||
more: "看历史通知"
|
||||
@ -1050,9 +1081,10 @@ zh_CN:
|
||||
moved_post: "<i title='移动了帖子' class='fa fa-sign-out'></i><p><span>{{username}}</span>移动了{{description}}</p>"
|
||||
linked: "<i title='关联帖子' class='fa fa-link'></i><p><span>{{username}}</span>{{description}}</p>"
|
||||
granted_badge: "<i title='徽章授予' class='fa fa-certificate'></i><p>获得“{{description}}”</p>"
|
||||
topic_reminder: "<i title='topic reminder' class='fa fa-hand-o-right'></i><p><span>{{username}}</span> {{description}}</p>"
|
||||
watching_first_post: "<i title='近期主题' class='fa fa-dot-circle-o'></i><p><span>近期主题</span>{{description}}</p>"
|
||||
group_message_summary:
|
||||
other: "<i title='群组收件箱中的消息' class='fa fa-group'></i><p> {{count}} 条消息在{{group_name}}组的收件箱中</p>"
|
||||
other: "<i title='群组收件箱中的私信' class='fa fa-group'></i><p> {{count}} 条私信在{{group_name}}组的收件箱中</p>"
|
||||
alt:
|
||||
mentioned: "被提及"
|
||||
quoted: "被引用"
|
||||
@ -1067,7 +1099,7 @@ zh_CN:
|
||||
moved_post: "你的帖子被移动自"
|
||||
linked: "链接至你的帖子"
|
||||
granted_badge: "勋章授予"
|
||||
group_message_summary: "在群组收件箱中的消息"
|
||||
group_message_summary: "在群组收件箱中的私信"
|
||||
popup:
|
||||
mentioned: '{{username}}在“{{topic}}”提到了你 - {{site_title}}'
|
||||
group_mentioned: '{{username}}在“{{topic}}”提到了你 - {{site_title}}'
|
||||
@ -1094,6 +1126,7 @@ zh_CN:
|
||||
sort_by: "排序"
|
||||
relevance: "最相关"
|
||||
latest_post: "最新发帖"
|
||||
latest_topic: "最新主题"
|
||||
most_viewed: "最多阅读"
|
||||
most_liked: "最多赞"
|
||||
select_all: "全选"
|
||||
@ -1106,11 +1139,12 @@ zh_CN:
|
||||
no_more_results: "没有找到更多结果。"
|
||||
searching: "搜索中..."
|
||||
post_format: "#{{post_number}} 来自于 {{username}}"
|
||||
results_page: "搜索结果"
|
||||
context:
|
||||
user: "搜索 @{{username}} 的帖子"
|
||||
category: "搜索 #{{category}} 分类"
|
||||
topic: "搜索本主题"
|
||||
private_messages: "搜索消息"
|
||||
private_messages: "搜索私信"
|
||||
advanced:
|
||||
title: 高级搜索
|
||||
posted_by:
|
||||
@ -1134,6 +1168,8 @@ zh_CN:
|
||||
first: 是第一帖
|
||||
pinned: 是置顶的
|
||||
unpinned: 不是置顶的
|
||||
seen: 我已经读过的
|
||||
unseen: 我还没有读过的
|
||||
wiki: 公共编辑
|
||||
statuses:
|
||||
label: 当主题
|
||||
@ -1160,6 +1196,7 @@ zh_CN:
|
||||
select_all: "选择全部"
|
||||
clear_all: "清除全部"
|
||||
unlist_topics: "未在列表的主题"
|
||||
relist_topics: "把主题重新置于主题列表中"
|
||||
reset_read: "设为未读"
|
||||
delete: "删除主题"
|
||||
dismiss: "忽略"
|
||||
@ -1170,8 +1207,10 @@ zh_CN:
|
||||
dismiss_new: "设为已读"
|
||||
toggle: "切换至批量选择"
|
||||
actions: "批量操作"
|
||||
change_category: "设置分类"
|
||||
close_topics: "关闭主题"
|
||||
archive_topics: "存档主题"
|
||||
notification_level: "通知"
|
||||
choose_new_category: "选择新分类:"
|
||||
selected:
|
||||
other: "已选择 <b>{{count}}</b>个主题"
|
||||
@ -1215,11 +1254,11 @@ zh_CN:
|
||||
create_long: '创建新的主题'
|
||||
private_message: '开始发私信'
|
||||
archive_message:
|
||||
help: '移动消息到存档'
|
||||
help: '移动私信到存档'
|
||||
title: '存档'
|
||||
move_to_inbox:
|
||||
title: '移动到收件箱'
|
||||
help: '移动消息到收件箱'
|
||||
help: '移动私信到收件箱'
|
||||
list: '主题'
|
||||
new: '近期主题'
|
||||
unread: '未读'
|
||||
@ -1259,6 +1298,46 @@ zh_CN:
|
||||
jump_reply_up: 转到更早的回复
|
||||
jump_reply_down: 转到更新的回复
|
||||
deleted: "此主题已被删除"
|
||||
topic_status_update:
|
||||
title: "设置主题计时器"
|
||||
save: "设置计时器"
|
||||
num_of_hours: "小时数:"
|
||||
remove: "撤销计时器"
|
||||
publish_to: "发布至:"
|
||||
when: "时间:"
|
||||
auto_update_input:
|
||||
later_today: "今天的某个时候"
|
||||
tomorrow: "明天"
|
||||
later_this_week: "这周的某个时候"
|
||||
this_weekend: "周末"
|
||||
next_week: "下个星期"
|
||||
next_month: "下个月"
|
||||
pick_date_and_time: "选择日期和时间"
|
||||
set_based_on_last_post: "按照最新帖子关闭"
|
||||
publish_to_category:
|
||||
title: "计划发布"
|
||||
temp_open:
|
||||
title: "临时开启"
|
||||
auto_reopen:
|
||||
title: "自动开启主题"
|
||||
temp_close:
|
||||
title: "临时关闭"
|
||||
auto_close:
|
||||
title: "自动关闭主题"
|
||||
label: "自动关闭于几小时后:"
|
||||
error: "请输入一个有效值。"
|
||||
based_on_last_post: "最后回复发布之后的多少时间内不自动关闭主题。"
|
||||
auto_delete:
|
||||
title: "自动删除主题"
|
||||
reminder:
|
||||
title: "提醒我"
|
||||
status_update_notice:
|
||||
auto_open: "本主题将在%{timeLeft}自动开启。"
|
||||
auto_close: "本主题将在%{timeLeft}自动关闭。"
|
||||
auto_publish_to_category: "主题%{timeLeft}将发布到<a href=%{categoryUrl}>#%{categoryName}</a> 。"
|
||||
auto_close_based_on_last_post: "主题在%{duration}内没有新回复后将被关闭。"
|
||||
auto_delete: "主题在%{timeLeft}后将被自动删除。"
|
||||
auto_reminder: "你将在%{timeLeft}后收到该主题的提醒。"
|
||||
auto_close_title: '自动关闭设置'
|
||||
auto_close_immediate:
|
||||
other: "主题中的最后一帖是 %{hours} 小时前发出的,所以主题将会立即关闭。"
|
||||
@ -1288,6 +1367,10 @@ zh_CN:
|
||||
'3_2': '因为你正在监看该主题,你将会收到通知。'
|
||||
'3_1': '因为你创建了这个主题,你将会收到通知。'
|
||||
'3': '因为你正在监看该主题,你将会收到通知。'
|
||||
'2_8': '因为你追踪了该分类,所以你会看到新回复的数量。'
|
||||
'2_4': '因为你回复过该主题,所以你会看到新回复的数量。'
|
||||
'2_2': '因为你追踪了该主题,所以你会看到新回复的数量。'
|
||||
'2': '因为你<a href="/u/{{username}}/preferences">读过该主题</a>,所以你会看到新回复的数量。'
|
||||
'1_2': '如果有人@你或回复你,将通知你。'
|
||||
'1': '如果有人@你或回复你,将通知你。'
|
||||
'0_7': '你将忽略关于该分类的所有通知。'
|
||||
@ -1295,13 +1378,13 @@ zh_CN:
|
||||
'0': '你将忽略关于该主题的所有通知。'
|
||||
watching_pm:
|
||||
title: "监看"
|
||||
description: "消息有新回复时提醒我,并显示新回复数量。"
|
||||
description: "私信有新回复时提醒我,并显示新回复数量。"
|
||||
watching:
|
||||
title: "监看"
|
||||
description: "在此主题里,每一个新回复将通知你,还将显示新回复的数量。"
|
||||
tracking_pm:
|
||||
title: "跟踪"
|
||||
description: "在消息标题后显示新回复数量。你只会在别人@你或回复你的帖子时才会收到通知。"
|
||||
description: "在私信标题后显示新回复数量。你只会在别人@你或回复你的帖子时才会收到通知。"
|
||||
tracking:
|
||||
title: "跟踪"
|
||||
description: "将为该主题显示新回复的数量。如果有人@你或回复你,将通知你。"
|
||||
@ -1313,7 +1396,7 @@ zh_CN:
|
||||
description: "如果有人@你或回复你,将通知你。"
|
||||
muted_pm:
|
||||
title: "静音"
|
||||
description: "不会收到该消息的任何通知。"
|
||||
description: "不会收到该私信的任何通知。"
|
||||
muted:
|
||||
title: "静音"
|
||||
description: "你不会收到此主题的任何通知,它也不会出现在“最新”主题列表。"
|
||||
@ -1323,6 +1406,7 @@ zh_CN:
|
||||
open: "打开主题"
|
||||
close: "关闭主题"
|
||||
multi_select: "选择帖子..."
|
||||
timed_update: "设置主题计时器..."
|
||||
pin: "置顶主题..."
|
||||
unpin: "取消置顶主题..."
|
||||
unarchive: "取消存档主题"
|
||||
@ -1381,12 +1465,12 @@ zh_CN:
|
||||
inviting: "邀请中..."
|
||||
automatically_add_to_groups: "邀请将把用户加入群组:"
|
||||
invite_private:
|
||||
title: '邀请至消息'
|
||||
title: '邀请至私信'
|
||||
email_or_username: "受邀人的邮箱或用户名"
|
||||
email_or_username_placeholder: "电子邮件地址或者用户名"
|
||||
action: "邀请"
|
||||
success: "成功邀请了用户至该消息。"
|
||||
success_group: "成功邀请了群组至该消息。"
|
||||
success: "成功邀请了用户至该私信。"
|
||||
success_group: "成功邀请了群组至该私信。"
|
||||
error: "抱歉,邀请时出了点小问题。"
|
||||
group_name: "群组名"
|
||||
controls: "主题控件"
|
||||
@ -1437,6 +1521,7 @@ zh_CN:
|
||||
other: "请选择<b>{{old_user}}</b>创建的 {{count}} 个帖子的新作者。"
|
||||
instructions_warn: "要注意关于帖子的通知不会被转移给新作者。<br>警告:目前,与帖子关联的任何数据都不会转移至新用户。谨慎使用。"
|
||||
change_timestamp:
|
||||
title: "修改时间"
|
||||
action: "修改时间"
|
||||
invalid_timestamp: "不能是未来的时间。"
|
||||
error: "更改主题时间时发生错误。"
|
||||
@ -1461,7 +1546,7 @@ zh_CN:
|
||||
wiki_last_edited_on: "维基最后修改于"
|
||||
last_edited_on: "最后修改于"
|
||||
reply_as_new_topic: "回复为联结主题"
|
||||
reply_as_new_private_message: "向相同的收件人回复新消息"
|
||||
reply_as_new_private_message: "向相同的收件人回复新私信"
|
||||
continue_discussion: "自 {{postLink}} 继续讨论:"
|
||||
follow_quote: "转到所引用的帖子"
|
||||
show_full: "显示所有帖子"
|
||||
@ -1568,7 +1653,7 @@ zh_CN:
|
||||
notify_moderators:
|
||||
other: "你和其他 {{count}} 人标记了本帖要求管理人员处理"
|
||||
notify_user:
|
||||
other: "你和其他 {{count}} 人发了消息给该用户"
|
||||
other: "你和其他 {{count}} 人发了私信给该用户"
|
||||
bookmark:
|
||||
other: "你和其他 {{count}} 人收藏了这个帖子"
|
||||
like:
|
||||
@ -1585,7 +1670,7 @@ zh_CN:
|
||||
notify_moderators:
|
||||
other: "{{count}} 人标记本帖要求管理人员处理"
|
||||
notify_user:
|
||||
other: "{{count}} 人给这个用户发送了消息"
|
||||
other: "{{count}} 人给这个用户发送了私信"
|
||||
bookmark:
|
||||
other: "{{count}} 人收藏了这个帖子"
|
||||
like:
|
||||
@ -1619,6 +1704,18 @@ zh_CN:
|
||||
button: 'HTML'
|
||||
side_by_side_markdown:
|
||||
title: "并排显示源码,分开标示增加和删除的内容"
|
||||
button: '原始'
|
||||
raw_email:
|
||||
displays:
|
||||
raw:
|
||||
title: "显示原始邮件地址"
|
||||
button: '原始'
|
||||
text_part:
|
||||
title: "显示邮件的文字部分"
|
||||
button: '文字'
|
||||
html_part:
|
||||
title: "显示邮件的 HTML 部分"
|
||||
button: 'HTML'
|
||||
category:
|
||||
can: '能够… '
|
||||
none: '(未分类)'
|
||||
@ -1669,7 +1766,13 @@ zh_CN:
|
||||
email_in_disabled_click: '启用“邮件发表”设置。'
|
||||
suppress_from_homepage: "不在主页中显示这个分类。"
|
||||
show_subcategory_list: "在这个分类中把子分类列表显示在主题的上面"
|
||||
num_featured_topics: "分类页面上显示的主题数量:"
|
||||
subcategory_num_featured_topics: "父分类页面上的推荐主题数量:"
|
||||
all_topics_wiki: "默认将新主题设为维基主题"
|
||||
subcategory_list_style: "子分类列表样式:"
|
||||
sort_order: "列表样式,按排序:"
|
||||
default_view: "默认主题列表:"
|
||||
default_top_period: "默认热门时长:"
|
||||
allow_badges_label: "允许在这个分类中授予徽章"
|
||||
edit_permissions: "编辑权限"
|
||||
add_permission: "添加权限"
|
||||
@ -1707,11 +1810,16 @@ zh_CN:
|
||||
created: "创建"
|
||||
sort_ascending: '升序'
|
||||
sort_descending: '降序'
|
||||
subcategory_list_styles:
|
||||
rows: "行"
|
||||
rows_with_featured_topics: "有推荐主题的行"
|
||||
boxes: "盒子"
|
||||
boxes_with_featured_topics: "有推荐主题的盒子"
|
||||
flagging:
|
||||
title: '感谢你帮助我们建设文明社区!'
|
||||
action: '标记帖子'
|
||||
take_action: "立即执行"
|
||||
notify_action: '消息'
|
||||
notify_action: '私信'
|
||||
official_warning: '正式警告'
|
||||
delete_spammer: "删除垃圾发布者"
|
||||
delete_confirm_MF: "你将删除该用户的{POSTS, plural, one {<b>1</b>个帖子} other {<b>#</b>个帖子}} and {TOPICS, plural, one {<b>1</b>个主题} other {<b>#</b>个主题}}、该账户,并阻止其IP地址 <b>%{ip_address}</b> 再次注册,并将其邮件地址 <b>%{email}</b> 加入黑名单。你确定这用户是广告散布者吗?"
|
||||
@ -1738,7 +1846,7 @@ zh_CN:
|
||||
flagging_topic:
|
||||
title: "感谢你帮助我们建设文明社区!"
|
||||
action: "标记帖子"
|
||||
notify_action: "消息"
|
||||
notify_action: "私信"
|
||||
topic_map:
|
||||
title: "主题概要"
|
||||
participants_title: "主要发帖者"
|
||||
@ -1799,6 +1907,7 @@ zh_CN:
|
||||
history: "历史"
|
||||
changed_by: "由 {{author}}"
|
||||
raw_email:
|
||||
title: "进站邮件"
|
||||
not_available: "不可用!"
|
||||
categories_list: "分类列表"
|
||||
filters:
|
||||
@ -1935,6 +2044,8 @@ zh_CN:
|
||||
granted_on: "授予于%{date}"
|
||||
others_count: "其他有该徽章的人(%{count})"
|
||||
title: 徽章
|
||||
allow_title: "你可以将该徽章设为头衔"
|
||||
multiple_grant: "可多次赢得"
|
||||
badge_count:
|
||||
other: "%{count} Badges"
|
||||
more_badges:
|
||||
@ -2105,7 +2216,7 @@ zh_CN:
|
||||
agree_title: "确认这个标记有效且正确"
|
||||
agree_flag_modal_title: "确认标记并执行..."
|
||||
agree_flag_hide_post: "确认标记(隐藏帖子并发送私信)"
|
||||
agree_flag_hide_post_title: "隐藏帖子并自动发送消息要求用户修改"
|
||||
agree_flag_hide_post_title: "隐藏帖子并自动发送私信要求用户修改"
|
||||
agree_flag_restore_post: "确认 (还原帖子)"
|
||||
agree_flag_restore_post_title: "还原这篇帖子"
|
||||
agree_flag: "确认标记"
|
||||
@ -2172,6 +2283,7 @@ zh_CN:
|
||||
add_members: "添加成员"
|
||||
custom: "定制"
|
||||
bulk_complete: "用户已被添加到群组。"
|
||||
bulk_complete_users_not_added: "这些用户还没有被添加(请确保他们已经有账户了):"
|
||||
bulk: "批量添加到群组"
|
||||
bulk_paste: "粘贴用户名邮件列表,一行一个:"
|
||||
bulk_select: "( 选择一个群组 )"
|
||||
@ -2184,6 +2296,8 @@ zh_CN:
|
||||
add_owners: 添加所有者
|
||||
incoming_email: "自定义进站电子邮件地址"
|
||||
incoming_email_placeholder: "输入邮箱地址"
|
||||
none_selected: "选择一个小组以开始"
|
||||
no_custom_groups: "创建一个自定义小组"
|
||||
api:
|
||||
generate_master: "生成主 API 密钥"
|
||||
none: "当前没有可用的 API 密钥。"
|
||||
@ -2219,6 +2333,7 @@ zh_CN:
|
||||
event_type_missing: "你必须设置一个事件类型。"
|
||||
content_type: "内容格式"
|
||||
secret: "密钥"
|
||||
event_chooser: "哪些事件可以触发该 webhook?"
|
||||
wildcard_event: "发送任何事件。"
|
||||
individual_event: "选择各个事件。"
|
||||
verify_certificate: "检查 Payload URL 的 TLS 证书"
|
||||
@ -2316,6 +2431,8 @@ zh_CN:
|
||||
without_uploads: "是(不包括文件)"
|
||||
download:
|
||||
label: "下载"
|
||||
title: "发送含下载链接的邮件"
|
||||
alert: "包含下载备份链接的邮件已经发送给你了。\b"
|
||||
destroy:
|
||||
title: "删除备份"
|
||||
confirm: "你确定要删除该备份吗?"
|
||||
@ -2329,7 +2446,7 @@ zh_CN:
|
||||
title: "将数据库回滚到之前的工作状态"
|
||||
confirm: "你确定要将数据库回滚到之前的工作状态吗?"
|
||||
export_csv:
|
||||
success: "导出开始,完成后你将被通过消息通知。"
|
||||
success: "导出开始,完成后你将被通过私信通知。"
|
||||
failed: "导出失败。请检查日志。"
|
||||
button_text: "导出"
|
||||
button_title:
|
||||
@ -2347,15 +2464,21 @@ zh_CN:
|
||||
title: "定制"
|
||||
long_title: "站点定制"
|
||||
preview: "预览"
|
||||
explain_preview: "看看站点应用该主题后的样子"
|
||||
save: "保存"
|
||||
new: "新建"
|
||||
new_style: "新样式"
|
||||
import: "导入"
|
||||
delete: "删除"
|
||||
delete_confirm: "删除该主题?"
|
||||
about: "修改站点的 CSS 样式表和 HTML 头部。添加一个自定义方案开始。"
|
||||
color: "颜色"
|
||||
opacity: "透明度"
|
||||
copy: "复制"
|
||||
copy_to_clipboard: "复制到剪贴板"
|
||||
copied_to_clipboard: "已复制到剪贴板"
|
||||
copy_to_clipboard_error: "复制到剪贴板时出错"
|
||||
theme_owner: "禁止编辑,拥有者:"
|
||||
email_templates:
|
||||
title: "邮件模板"
|
||||
subject: "主题"
|
||||
@ -2364,9 +2487,75 @@ zh_CN:
|
||||
none_selected: "选择一个邮件模板开始编辑。"
|
||||
revert: "撤销更变"
|
||||
revert_confirm: "你确定要撤销你的更变吗?"
|
||||
theme:
|
||||
import_theme: "导入主题"
|
||||
customize_desc: "定制:"
|
||||
title: "主题"
|
||||
long_title: "修改你站点的色彩、CSS 和 HTML"
|
||||
edit: "编辑"
|
||||
edit_confirm: "这是一个远程主题。如果你编辑了 CSS/HTML,在下一次更新该主题后这些自定义项目将会被删除。"
|
||||
common: "通用"
|
||||
desktop: "桌面"
|
||||
mobile: "移动"
|
||||
preview: "预览"
|
||||
is_default: "主题默认启用"
|
||||
user_selectable: "用户可选择主题"
|
||||
color_scheme: "色彩方案"
|
||||
color_scheme_select: "选择主题使用的颜色"
|
||||
custom_sections: "自定义段落:"
|
||||
theme_components: "主题组件"
|
||||
uploads: "上传"
|
||||
no_uploads: "你可以上传与主题相关的组件,例如字体和图片"
|
||||
add_upload: "添加上传"
|
||||
upload_file_tip: "选择资源上传(png、woff2,其他...)"
|
||||
variable_name: "SCSS 变量名:"
|
||||
upload: "上传"
|
||||
child_themes_check: "主题包括其他子类主题"
|
||||
css_html: "自定义 CSS/HTML"
|
||||
edit_css_html: "编辑 CSS/HTML"
|
||||
edit_css_html_help: "你还未编辑任何 CSS 或 HTML"
|
||||
delete_upload_confirm: "删除这个上传?(主题 CSS 可能会出问题!)"
|
||||
import_web_tip: "目录包含主题"
|
||||
import_file_tip: ".dcstyle.json 文件包含主题"
|
||||
about_theme: "关于主题"
|
||||
license: "许可证"
|
||||
component_of: "主题是其组件:"
|
||||
update_to_latest: "更新到最新"
|
||||
check_for_updates: "检查更新"
|
||||
updating: "更新..."
|
||||
up_to_date: "主题已经是最新版本,上次检查:"
|
||||
add: "添加"
|
||||
commits_behind:
|
||||
other: "主题落后了 {{count}} 个变更!"
|
||||
scss:
|
||||
text: "CSS"
|
||||
title: "输入自定义 CSS,我们接受所有有效的 CSS 和 SCSS 样式"
|
||||
header:
|
||||
text: "头部"
|
||||
title: "输入显示在站点头部的 HTML"
|
||||
after_header:
|
||||
text: "添加头部"
|
||||
title: "输入显示在所有页面的头部之后的 HTML"
|
||||
footer:
|
||||
text: "尾部"
|
||||
title: "输入显示在页面尾部后的 HTML"
|
||||
embedded_scss:
|
||||
text: "嵌入使用的 CSS"
|
||||
title: "输入用于嵌入评论的自定义 CSS "
|
||||
head_tag:
|
||||
text: "</head>"
|
||||
title: "将在 </head> 标签前插入的 HTML"
|
||||
body_tag:
|
||||
text: "</body>"
|
||||
title: "将在 </body> 标签前插入的 HTML"
|
||||
colors:
|
||||
select_base:
|
||||
title: "选择基础颜色方案"
|
||||
description: "基础颜色方案"
|
||||
title: "颜色"
|
||||
edit: "修改颜色方案"
|
||||
long_title: "颜色方案"
|
||||
about: "修改你主题使用的颜色。创建新的色彩方案以开始。"
|
||||
new_name: "新的颜色方案"
|
||||
copy_name_prefix: "复制于"
|
||||
delete_confirm: "删除这个颜色方案?"
|
||||
@ -2484,8 +2673,9 @@ zh_CN:
|
||||
block: "封禁"
|
||||
do_nothing: "无操作"
|
||||
staff_actions:
|
||||
all: "全部"
|
||||
filter: "过滤器:"
|
||||
title: "管理人员操作"
|
||||
instructions: "点击用户名和操作可以过滤列表。点击头像可以访问用户个人页面。"
|
||||
clear_filters: "显示全部"
|
||||
staff_user: "管理人员"
|
||||
target_user: "目标用户"
|
||||
@ -2505,6 +2695,8 @@ zh_CN:
|
||||
change_trust_level: "更改信任等级"
|
||||
change_username: "修改用户名"
|
||||
change_site_setting: "更改站点设置"
|
||||
change_theme: "\b更改主题"
|
||||
delete_theme: "删除主题"
|
||||
change_site_text: "更改站点文字"
|
||||
suspend_user: "封禁用户"
|
||||
unsuspend_user: "解禁用户"
|
||||
@ -2536,6 +2728,8 @@ zh_CN:
|
||||
change_readonly_mode: "更改只读模式"
|
||||
backup_download: "下载备份文件"
|
||||
backup_destroy: "删除备份"
|
||||
reviewed_post: "已审核的帖子"
|
||||
custom_staff: "插件自定义操作"
|
||||
screened_emails:
|
||||
title: "被屏蔽的邮件地址"
|
||||
description: "当有人试图用以下邮件地址注册时,将受到阻止或其它系统操作。"
|
||||
@ -2636,7 +2830,7 @@ zh_CN:
|
||||
staged: "暂存?"
|
||||
show_admin_profile: "管理员"
|
||||
refresh_browsers: "强制浏览器刷新"
|
||||
refresh_browsers_message: "消息发送至所有用户!"
|
||||
refresh_browsers_message: "私信发送至所有用户!"
|
||||
show_public_profile: "显示公开介绍"
|
||||
impersonate: '检视角度'
|
||||
action_logs: "操作日志"
|
||||
@ -2645,6 +2839,7 @@ zh_CN:
|
||||
logged_out: "用户在所有设备都已退出"
|
||||
revoke_admin: '吊销管理员资格'
|
||||
grant_admin: '赋予管理员资格'
|
||||
grant_admin_confirm: "我们已经发送了一封邮件以验证新管理员。请打开邮件并按照指示完成确认。"
|
||||
revoke_moderation: '吊销论坛版主资格'
|
||||
grant_moderation: '赋予论坛版主资格'
|
||||
unblock: '解封'
|
||||
@ -2700,6 +2895,7 @@ zh_CN:
|
||||
reset_bounce_score:
|
||||
label: "重置"
|
||||
title: "重置累计退信分值为 0"
|
||||
visit_profile: "访问<a href='%{url}'>用户设置页面</a>编辑他们的个人页"
|
||||
deactivate_explanation: "已停用的用户必须重新验证他们的电子邮件。"
|
||||
suspended_explanation: "一个被封禁的用户不能登录。"
|
||||
block_explanation: "被封禁的用户不能发表主题或者评论。"
|
||||
@ -2908,6 +3104,7 @@ zh_CN:
|
||||
sample: "使用下列 HTML 代码至你的站点创建和嵌入 Discourse 主题。把<b>REPLACE_ME</b> 替换成你将嵌入至的网址。"
|
||||
title: "嵌入"
|
||||
host: "允许的主机"
|
||||
class_name: "class 名"
|
||||
path_whitelist: "路径白名单"
|
||||
edit: "编辑"
|
||||
category: "发布到分类"
|
||||
@ -2927,6 +3124,7 @@ zh_CN:
|
||||
embed_classname_whitelist: "允许 CSS class 名称"
|
||||
feed_polling_enabled: "通过 RSS/ATOM 导入帖子"
|
||||
feed_polling_url: "用于抓取的 RSS/ATOM 流的 URL"
|
||||
feed_polling_frequency_mins: "消息轮询频率(分钟)"
|
||||
save: "保存嵌入设置"
|
||||
permalink:
|
||||
title: "永久链接"
|
||||
|
||||
@ -2486,7 +2486,6 @@ zh_TW:
|
||||
do_nothing: "無動作"
|
||||
staff_actions:
|
||||
title: "工作人員動作"
|
||||
instructions: "點擊使用者名稱會過濾列表,點擊使用者圖片則會連結至使用者頁面。"
|
||||
clear_filters: "全部顯示"
|
||||
staff_user: "工作人員用戶"
|
||||
target_user: "目標用戶"
|
||||
|
||||
@ -620,7 +620,6 @@ ar:
|
||||
long_form: 'أبلغ أن هذا خارج الموضوع.'
|
||||
spam:
|
||||
title: 'مزعج'
|
||||
description: 'هذه المشاركة تعتبر إعلانًا. ليست مفيدة أو ذات علاقة بالموضوع الحاليّ، بل ترويجيّة فحسب.'
|
||||
long_form: 'علّم هذا على أنّه غير لائق'
|
||||
email_title: '"%{title}" عُلّم على أنّه موضوع غير لائق'
|
||||
email_body: "%{link}\n\n%{message}"
|
||||
@ -1202,7 +1201,6 @@ ar:
|
||||
enable_names: "عرض الاسم الكامل للعضو , بطاقة العضو , ورسائل البريد الالكتروني , تعطيل عرض الاسم في اي مكان "
|
||||
display_name_on_posts: "عرض الاسم الكامل للعضو على التعليقات بالاضافة الى @username."
|
||||
show_time_gap_days: "إذا تم إجراء وظيفتين في حد كثير من الأيام، عرض الفجوة الزمنية في الموضوع."
|
||||
invites_per_page: "الدعوات الافتراضية تظهر في صفحة العضو"
|
||||
short_progress_text_threshold: "بعد نعدي عدد المشاركات في الموضوع اكثر من هذا الرقم, شريط المهام فقط سوف يعرض رقم المشاركه الحاليه.اذا غيرت عرض شريط المهام, ربما تحتاج لتغير هذه القيمه"
|
||||
default_code_lang: "تسليط الضوء علي تركيب جمله اللغه البرمجيه يطبق الي مكعبات اكواد GitHub (lang-auto, ruby, python etc.)"
|
||||
warn_reviving_old_topic_age: "عندما يبدا احدهم بالرد علي الموضوع و اخر كان اقدم من هذه الايام, سوف يظهر تحذير, عطل عن طريق الضبط الي 0"
|
||||
@ -1449,16 +1447,6 @@ ar:
|
||||
subject_template: "المشاركة مخفية بتصويت الاعضاء"
|
||||
welcome_user:
|
||||
subject_template: "مرحبا بك في %{site_name}!"
|
||||
text_body_template: |
|
||||
شكراً لأنضمامك %{site_name}, ومرحباً بك!
|
||||
|
||||
%{new_user_tips}
|
||||
|
||||
نحن نؤمن [سلوك المجتمع المتحضر](%{base_url}/guidelines) في جميع الأوقات.
|
||||
|
||||
أستمتع بوقتك!
|
||||
|
||||
(أذا كنت بحاجة للتواصل مع [الموظفين](%{base_url}/about) كمستخدم جديد, فقط مجرد الرد على هذه الرسالة.)
|
||||
welcome_invite:
|
||||
subject_template: "مرحبا بك في %{site_name}!"
|
||||
backup_succeeded:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user