diff --git a/Gemfile b/Gemfile
index be623dde76..92c81e10bd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -35,7 +35,8 @@ gem 'barber'
gem 'babel-transpiler'
gem 'message_bus'
-gem 'rails_multisite', path: 'vendor/gems/rails_multisite'
+
+gem 'rails_multisite'
gem 'fast_xs'
@@ -121,7 +122,7 @@ group :test, :development do
gem 'rspec-given'
gem 'pry-nav'
gem 'spork-rails'
- gem 'byebug'
+ gem 'byebug', require: ENV['RM_INFO'].nil?
end
group :development do
diff --git a/Gemfile.lock b/Gemfile.lock
index d96defd9c0..6557c6915a 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,8 +1,3 @@
-PATH
- remote: vendor/gems/rails_multisite
- specs:
- rails_multisite (0.0.1)
-
GEM
remote: https://rubygems.org/
specs:
@@ -47,12 +42,12 @@ GEM
activerecord (>= 3.2, <= 4.3)
rake (~> 10.4)
arel (6.0.3)
- aws-sdk (2.1.23)
- aws-sdk-resources (= 2.1.23)
- aws-sdk-core (2.1.23)
+ aws-sdk (2.1.29)
+ aws-sdk-resources (= 2.1.29)
+ aws-sdk-core (2.1.29)
jmespath (~> 1.0)
- aws-sdk-resources (2.1.23)
- aws-sdk-core (= 2.1.23)
+ aws-sdk-resources (2.1.29)
+ aws-sdk-core (= 2.1.29)
babel-source (5.8.19)
babel-transpiler (0.7.0)
babel-source (>= 4.0, < 6)
@@ -304,6 +299,7 @@ GEM
loofah (~> 2.0)
rails-observers (0.1.2)
activemodel (~> 4.0)
+ rails_multisite (1.0.2)
railties (4.2.4)
actionpack (= 4.2.4)
activesupport (= 4.2.4)
@@ -504,7 +500,7 @@ DEPENDENCIES
rack-protection
rails (~> 4.2)
rails-observers
- rails_multisite!
+ rails_multisite
rake
rb-fsevent
rb-inotify (~> 0.9)
diff --git a/README.md b/README.md
index f9ec9f906e..e7dba166c0 100644
--- a/README.md
+++ b/README.md
@@ -11,8 +11,8 @@ To learn more about the philosophy and goals of the project, [visit **discourse.
## Screenshots
-
-
+
+
diff --git a/app/assets/javascripts/admin/models/admin-user.js.es6 b/app/assets/javascripts/admin/models/admin-user.js.es6
index e8db973a88..1e83de6206 100644
--- a/app/assets/javascripts/admin/models/admin-user.js.es6
+++ b/app/assets/javascripts/admin/models/admin-user.js.es6
@@ -228,7 +228,7 @@ const AdminUser = Discourse.User.extend({
type: 'POST',
data: { username_or_email: this.get('username') }
}).then(function() {
- document.location = Discourse.getURL("/");
+ document.location = Discourse.BaseUri;
}).catch(function(e) {
if (e.status === 404) {
bootbox.alert(I18n.t('admin.impersonate.not_found'));
diff --git a/app/assets/javascripts/admin/templates/modal/admin_agree_flag.hbs b/app/assets/javascripts/admin/templates/modal/admin_agree_flag.hbs
index 14e1ae9c51..ef77954b99 100644
--- a/app/assets/javascripts/admin/templates/modal/admin_agree_flag.hbs
+++ b/app/assets/javascripts/admin/templates/modal/admin_agree_flag.hbs
@@ -1,11 +1,11 @@
-{{#if user_deleted}}
+{{#if model.user_deleted}}
{{else}}
- {{#unless postHidden}}
+ {{#unless model.postHidden}}
{{/unless}}
{{/if}}
-{{#if canDeleteAsSpammer}}
+{{#if model.canDeleteAsSpammer}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/modal/admin_delete_flag.hbs b/app/assets/javascripts/admin/templates/modal/admin_delete_flag.hbs
index 5762101a1f..de5d62b2db 100644
--- a/app/assets/javascripts/admin/templates/modal/admin_delete_flag.hbs
+++ b/app/assets/javascripts/admin/templates/modal/admin_delete_flag.hbs
@@ -1,5 +1,5 @@
-{{#if canDeleteAsSpammer}}
+{{#if model.canDeleteAsSpammer}}
{{/if}}
diff --git a/app/assets/javascripts/admin/templates/site-text-edit.hbs b/app/assets/javascripts/admin/templates/site-text-edit.hbs
index 438887f85f..2a6693e8f3 100644
--- a/app/assets/javascripts/admin/templates/site-text-edit.hbs
+++ b/app/assets/javascripts/admin/templates/site-text-edit.hbs
@@ -2,7 +2,7 @@
{{model.description}}
{{#if model.markdown}} - {{pagedown-editor value=model.value}} + {{d-editor value=model.value}} {{/if}} {{#if model.plainText}} {{textarea value=model.value class="plain"}} diff --git a/app/assets/javascripts/discourse/components/d-editor-modal.js.es6 b/app/assets/javascripts/discourse/components/d-editor-modal.js.es6 new file mode 100644 index 0000000000..0b6f6920a6 --- /dev/null +++ b/app/assets/javascripts/discourse/components/d-editor-modal.js.es6 @@ -0,0 +1,52 @@ +import { observes, on } from 'ember-addons/ember-computed-decorators'; + +export default Ember.Component.extend({ + classNameBindings: [':d-editor-modal', 'hidden'], + + @observes('hidden') + _hiddenChanged() { + if (!this.get('hidden')) { + Ember.run.scheduleOnce('afterRender', () => { + const $modal = this.$(); + const $parent = this.$().closest('.d-editor'); + const w = $parent.width(); + const h = $parent.height(); + $modal.css({ left: (w / 2) - ($modal.outerWidth() / 2) }); + parent.$('.d-editor-overlay').removeClass('hidden').css({ width: w, height: h}); + this.$('input').focus(); + }); + } else { + parent.$('.d-editor-overlay').addClass('hidden'); + } + }, + + @on('didInsertElement') + _listenKeys() { + this.$().on('keydown.d-modal', key => { + if (this.get('hidden')) { return; } + + if (key.keyCode === 27) { + this.send('cancel'); + } + if (key.keyCode === 13) { + this.send('ok'); + } + }); + }, + + @on('willDestoryElement') + _stopListening() { + this.$().off('keydown.d-modal'); + }, + + actions: { + ok() { + this.set('hidden', true); + this.sendAction('okAction'); + }, + + cancel() { + this.set('hidden', true); + } + } +}); diff --git a/app/assets/javascripts/discourse/components/d-editor.js.es6 b/app/assets/javascripts/discourse/components/d-editor.js.es6 new file mode 100644 index 0000000000..4d8061c6e6 --- /dev/null +++ b/app/assets/javascripts/discourse/components/d-editor.js.es6 @@ -0,0 +1,263 @@ +import loadScript from 'discourse/lib/load-script'; +import { default as property, on } from 'ember-addons/ember-computed-decorators'; +import { showSelector } from "discourse/lib/emoji/emoji-toolbar"; + +// Our head can be a static string or a function that returns a string +// based on input (like for numbered lists). +function getHead(head, prev) { + if (typeof head === "string") { + return [head, head.length]; + } else { + return getHead(head(prev)); + } +} + +export default Ember.Component.extend({ + classNames: ['d-editor'], + ready: false, + insertLinkHidden: true, + link: '', + lastSel: null, + + @on('didInsertElement') + _loadSanitizer() { + this._applyEmojiAutocomplete(); + loadScript('defer/html-sanitizer-bundle').then(() => this.set('ready', true)); + }, + + @property('ready', 'value') + preview(ready, value) { + if (!ready) { return; } + + const text = Discourse.Dialect.cook(value || "", {}); + return text ? text : ""; + }, + + _applyEmojiAutocomplete() { + if (!this.siteSettings.enable_emoji) { return; } + + const container = this.container; + const template = container.lookup('template:emoji-selector-autocomplete.raw'); + const self = this; + + this.$('.d-editor-input').autocomplete({ + template: template, + key: ":", + + transformComplete(v) { + if (v.code) { + return `${v.code}:`; + } else { + showSelector({ + appendTo: self.$(), + container, + onSelect: title => self._addText(`${title}:`) + }); + return ""; + } + }, + + dataSource(term) { + return new Ember.RSVP.Promise(resolve => { + const full = `:${term}`; + term = term.toLowerCase(); + + if (term === "") { + return resolve(["smile", "smiley", "wink", "sunny", "blush"]); + } + + if (Discourse.Emoji.translations[full]) { + return resolve([Discourse.Emoji.translations[full]]); + } + + const options = Discourse.Emoji.search(term, {maxResults: 5}); + + return resolve(options); + }).then(list => list.map(code => { + return {code, src: Discourse.Emoji.urlFor(code)}; + })).then(list => { + if (list.length) { + list.push({ label: I18n.t("composer.more_emoji") }); + } + return list; + }); + } + }); + }, + + _getSelected() { + if (!this.get('ready')) { return; } + + const textarea = this.$('textarea.d-editor-input')[0]; + let start = textarea.selectionStart; + let end = textarea.selectionEnd; + + if (start === end) { + start = end = textarea.value.length; + } + + const value = textarea.value.substring(start, end); + const pre = textarea.value.slice(0, start); + const post = textarea.value.slice(end); + + return { start, end, value, pre, post }; + }, + + _selectText(from, length) { + Ember.run.scheduleOnce('afterRender', () => { + const textarea = this.$('textarea.d-editor-input')[0]; + textarea.focus(); + textarea.selectionStart = from; + textarea.selectionEnd = textarea.selectionStart + length; + }); + }, + + _applySurround(head, tail, exampleKey) { + const sel = this._getSelected(); + const pre = sel.pre; + const post = sel.post; + + const tlen = tail.length; + if (sel.start === sel.end) { + if (tlen === 0) { return; } + + const [hval, hlen] = getHead(head); + const example = I18n.t(`composer.${exampleKey}`); + this.set('value', `${pre}${hval}${example}${tail}${post}`); + this._selectText(pre.length + hlen, example.length); + } else { + const lines = sel.value.split("\n"); + + let [hval, hlen] = getHead(head); + if (lines.length === 1 && pre.slice(-tlen) === tail && post.slice(0, hlen) === hval) { + this.set('value', `${pre.slice(0, -hlen)}${sel.value}${post.slice(tlen)}`); + this._selectText(sel.start - hlen, sel.value.length); + } else { + const contents = lines.map(l => { + if (l.length === 0) { return l; } + + if (l.slice(0, hlen) === hval && tlen === 0 || l.slice(-tlen) === tail) { + if (tlen === 0) { + const result = l.slice(hlen); + [hval, hlen] = getHead(head, hval); + return result; + } else if (l.slice(-tlen) === tail) { + const result = l.slice(hlen, -tlen); + [hval, hlen] = getHead(head, hval); + return result; + } + } + const result = `${hval}${l}${tail}`; + [hval, hlen] = getHead(head, hval); + return result; + }).join("\n"); + + this.set('value', `${pre}${contents}${post}`); + if (lines.length === 1 && tlen > 0) { + this._selectText(sel.start + hlen, contents.length - hlen - hlen); + } else { + this._selectText(sel.start, contents.length); + } + } + } + }, + + _applyList(head, exampleKey) { + const sel = this._getSelected(); + if (sel.value.indexOf("\n") !== -1) { + this._applySurround(head, '', exampleKey); + } else { + + const [hval, hlen] = getHead(head); + if (sel.start === sel.end) { + sel.value = I18n.t(`composer.${exampleKey}`); + } + + const trimmedPre = sel.pre.trim(); + const number = (sel.value.indexOf(hval) === 0) ? sel.value.slice(hlen) : `${hval}${sel.value}`; + const preLines = trimmedPre.length ? `${trimmedPre}\n\n` : ""; + + const trimmedPost = sel.post.trim(); + const post = trimmedPost.length ? `\n\n${trimmedPost}` : trimmedPost; + + this.set('value', `${preLines}${number}${post}`); + this._selectText(preLines.length, number.length); + } + }, + + _addText(text, sel) { + sel = sel || this._getSelected(); + const insert = `${sel.pre}${text}`; + this.set('value', `${insert}${sel.post}`); + this._selectText(insert.length, 0); + }, + + actions: { + bold() { + this._applySurround('**', '**', 'bold_text'); + }, + + italic() { + this._applySurround('*', '*', 'italic_text'); + }, + + showLinkModal() { + this._lastSel = this._getSelected(); + this.set('insertLinkHidden', false); + }, + + insertLink() { + const link = this.get('link'); + + if (Ember.isEmpty(link)) { return; } + const m = / "([^"]+)"/.exec(link); + if (m && m.length === 2) { + const description = m[1]; + const remaining = link.replace(m[0], ''); + this._addText(`[${description}](${remaining})`, this._lastSel); + } else { + this._addText(`[${link}](${link})`, this._lastSel); + } + + this.set('link', ''); + }, + + code() { + const sel = this._getSelected(); + if (sel.value.indexOf("\n") !== -1) { + this._applySurround(' ', '', 'code_text'); + } else { + this._applySurround('`', '`', 'code_text'); + } + }, + + quote() { + this._applySurround('> ', "", 'code_text'); + }, + + bullet() { + this._applyList('* ', 'list_item'); + }, + + list() { + this._applyList(i => !i ? "1. " : `${parseInt(i) + 1}. `, 'list_item'); + }, + + heading() { + this._applyList('## ', 'heading_text'); + }, + + rule() { + this._addText("\n\n----------\n"); + }, + + emoji() { + showSelector({ + appendTo: this.$(), + container: this.container, + onSelect: title => this._addText(`:${title}:`) + }); + } + } + +}); diff --git a/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 b/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 index eb4e893f1f..dc4673c171 100644 --- a/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 +++ b/app/assets/javascripts/discourse/components/desktop-notification-config.js.es6 @@ -1,22 +1,24 @@ import computed from 'ember-addons/ember-computed-decorators'; +import KeyValueStore from 'discourse/lib/key-value-store'; + +const keyValueStore = new KeyValueStore("discourse_desktop_notifications_"); export default Ember.Component.extend({ classNames: ['controls'], - @computed - notificationsPermission() { - if (this.get('isNotSupported')) return ''; - return Notification.permission; + @computed("isNotSupported") + notificationsPermission(isNotSupported) { + return isNotSupported ? "" : Notification.permission; }, @computed notificationsDisabled: { set(value) { - localStorage.setItem('notifications-disabled', value); - return localStorage.getItem('notifications-disabled'); + keyValueStore.setItem('notifications-disabled', value); + return keyValueStore.getItem('notifications-disabled'); }, get() { - return localStorage.getItem('notifications-disabled'); + return keyValueStore.getItem('notifications-disabled'); } }, @@ -25,44 +27,40 @@ export default Ember.Component.extend({ return typeof window.Notification === "undefined"; }, - isDefaultPermission: function() { - if (this.get('isNotSupported')) return false; + @computed("isNotSupported", "notificationsPermission") + isDefaultPermission(isNotSupported, notificationsPermission) { + return isNotSupported ? false : notificationsPermission === "default"; + }, - return Notification.permission === "default"; - }.property('isNotSupported', 'notificationsPermission'), + @computed("isNotSupported", "notificationsPermission") + isDeniedPermission(isNotSupported, notificationsPermission) { + return isNotSupported ? false : notificationsPermission === "denied"; + }, - isDeniedPermission: function() { - if (this.get('isNotSupported')) return false; + @computed("isNotSupported", "notificationsPermission") + isGrantedPermission(isNotSupported, notificationsPermission) { + return isNotSupported ? false : notificationsPermission === "granted"; + }, - return Notification.permission === "denied"; - }.property('isNotSupported', 'notificationsPermission'), - - isGrantedPermission: function() { - if (this.get('isNotSupported')) return false; - - return Notification.permission === "granted"; - }.property('isNotSupported', 'notificationsPermission'), - - isEnabled: function() { - if (!this.get('isGrantedPermission')) return false; - - return !this.get('notificationsDisabled'); - }.property('isGrantedPermission', 'notificationsDisabled'), + @computed("isGrantedPermission", "notificationsDisabled") + isEnabled(isGrantedPermission, notificationsDisabled) { + return isGrantedPermission ? !notificationsDisabled : false; + }, actions: { requestPermission() { - const self = this; - Notification.requestPermission(function() { - self.propertyDidChange('notificationsPermission'); - }); + Notification.requestPermission(() => this.propertyDidChange('notificationsPermission')); }, + recheckPermission() { this.propertyDidChange('notificationsPermission'); }, + turnoff() { this.set('notificationsDisabled', 'disabled'); this.propertyDidChange('notificationsPermission'); }, + turnon() { this.set('notificationsDisabled', ''); this.propertyDidChange('notificationsPermission'); diff --git a/app/assets/javascripts/discourse/components/menu-panel.js.es6 b/app/assets/javascripts/discourse/components/menu-panel.js.es6 index 7300b309f9..5fb1e034ab 100644 --- a/app/assets/javascripts/discourse/components/menu-panel.js.es6 +++ b/app/assets/javascripts/discourse/components/menu-panel.js.es6 @@ -133,8 +133,7 @@ export default Ember.Component.extend({ this._resizeInterval = setInterval(() => { Ember.run(() => { const $panelBodyContents = this.$('.panel-body-contents'); - - if ($panelBodyContents.length) { + if ($panelBodyContents && $panelBodyContents.length) { const contentHeight = parseInt($panelBodyContents.height()); if (contentHeight !== this._lastHeight) { this.performLayout(); } this._lastHeight = contentHeight; diff --git a/app/assets/javascripts/discourse/components/pagedown-editor.js.es6 b/app/assets/javascripts/discourse/components/pagedown-editor.js.es6 deleted file mode 100644 index 6f04e77152..0000000000 --- a/app/assets/javascripts/discourse/components/pagedown-editor.js.es6 +++ /dev/null @@ -1,25 +0,0 @@ -import { observes, on } from 'ember-addons/ember-computed-decorators'; -import loadScript from 'discourse/lib/load-script'; - -export default Ember.Component.extend({ - classNameBindings: [':pagedown-editor'], - - @on("didInsertElement") - _initializeWmd() { - loadScript('defer/html-sanitizer-bundle').then(() => { - this.$('.wmd-input').data('init', true); - this._editor = Discourse.Markdown.createEditor({ containerElement: this.element }); - this._editor.run(); - Ember.run.scheduleOnce('afterRender', this, this._refreshPreview); - }); - }, - - @observes("value") - observeValue() { - Ember.run.scheduleOnce('afterRender', this, this._refreshPreview); - }, - - _refreshPreview() { - this._editor.refreshPreview(); - } -}); diff --git a/app/assets/javascripts/discourse/components/post-menu.js.es6 b/app/assets/javascripts/discourse/components/post-menu.js.es6 index 1cfa0114ba..765539245a 100644 --- a/app/assets/javascripts/discourse/components/post-menu.js.es6 +++ b/app/assets/javascripts/discourse/components/post-menu.js.es6 @@ -364,7 +364,9 @@ const PostMenuComponent = Ember.Component.extend(StringBuffer, { rebakePostIcon = iconHTML('cog'), rebakePostText = I18n.t('post.controls.rebake'), unhidePostIcon = iconHTML('eye'), - unhidePostText = I18n.t('post.controls.unhide'); + unhidePostText = I18n.t('post.controls.unhide'), + changePostOwnerIcon = iconHTML('user'), + changePostOwnerText = I18n.t('post.controls.change_owner'); const html = ''; @@ -404,6 +407,10 @@ const PostMenuComponent = Ember.Component.extend(StringBuffer, { this.sendAction("unhidePost", this.get("post")); }, + clickChangePostOwner() { + this.sendAction("changePostOwner", this.get("post")); + }, + buttonForShowMoreActions() { return new Button('showMoreActions', 'show_more', 'ellipsis-h'); }, diff --git a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 index 211e27a7ef..532b21a0bb 100644 --- a/app/assets/javascripts/discourse/controllers/change-owner.js.es6 +++ b/app/assets/javascripts/discourse/controllers/change-owner.js.es6 @@ -42,7 +42,10 @@ export default Ember.Controller.extend(SelectedPostsCount, ModalFunctionality, { Discourse.Topic.changeOwners(this.get('topicController.model.id'), saveOpts).then(function() { // success self.send('closeModal'); - self.get('topicController').send('toggleMultiSelect'); + self.get('topicController').send('deselectAll'); + if (self.get('topicController.multiSelect')) { + self.get('topicController').send('toggleMultiSelect'); + } Em.run.next(() => { DiscourseURL.routeTo(self.get("topicController.model.url")); }); }, function() { // failure diff --git a/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 b/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 index 3e7c2e52a9..8786828d7a 100644 --- a/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery-sortable.js.es6 @@ -12,12 +12,10 @@ export var queryParams = { // Basic controller options var controllerOpts = { needs: ['discovery/topics'], - queryParams: Ember.keys(queryParams) + queryParams: Ember.keys(queryParams), }; // Aliases for the values -controllerOpts.queryParams.forEach(function(p) { - controllerOpts[p] = Em.computed.alias('controllers.discovery/topics.' + p); -}); +controllerOpts.queryParams.forEach(p => controllerOpts[p] = Em.computed.alias(`controllers.discovery/topics.${p}`)); export default Ember.Controller.extend(controllerOpts); diff --git a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 index 99f0a4b025..0a2b046237 100644 --- a/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 +++ b/app/assets/javascripts/discourse/controllers/discovery/topics.js.es6 @@ -25,6 +25,7 @@ const controllerOpts = { } else { this.setProperties({ order: sortBy, ascending: false }); } + this.get('model').refreshSort(sortBy, this.get('ascending')); }, @@ -41,7 +42,7 @@ const controllerOpts = { refresh() { const filter = this.get('model.filter'); - this.setProperties({ order: 'default', ascending: false }); + this.setProperties({ order: "default", ascending: false }); // Don't refresh if we're still loading if (this.get('controllers.discovery.loading')) { return; } @@ -51,7 +52,7 @@ const controllerOpts = { // Lesson learned: Don't call `loading` yourself. this.set('controllers.discovery.loading', true); - this.store.findFiltered('topicList', {filter}).then((list) => { + this.store.findFiltered('topicList', {filter}).then(list => { Discourse.TopicList.hideUniformCategory(list, this.get('category')); this.setProperties({ model: list }); diff --git a/app/assets/javascripts/discourse/controllers/login.js.es6 b/app/assets/javascripts/discourse/controllers/login.js.es6 index 3297e1c051..50abf282d7 100644 --- a/app/assets/javascripts/discourse/controllers/login.js.es6 +++ b/app/assets/javascripts/discourse/controllers/login.js.es6 @@ -80,7 +80,7 @@ export default Ember.Controller.extend(ModalFunctionality, { const shouldRedirectToUrl = self.session.get("shouldRedirectToUrl"); $hidden_login_form.find('input[name=username]').val(self.get('loginName')); $hidden_login_form.find('input[name=password]').val(self.get('loginPassword')); - if (self.get('loginRequired') && destinationUrl) { + if (destinationUrl) { // redirect client to the original URL $.cookie('destination_url', null); $hidden_login_form.find('input[name=redirect]').val(destinationUrl); @@ -113,21 +113,26 @@ export default Ember.Controller.extend(ModalFunctionality, { if(customLogin){ customLogin(); } else { - this.set('authenticate', name); - const left = this.get('lastX') - 400; - const top = this.get('lastY') - 200; + var authUrl = Discourse.getURL("/auth/" + name); + if (loginMethod.get("fullScreenLogin")) { + window.location = authUrl; + } else { + this.set('authenticate', name); + const left = this.get('lastX') - 400; + const top = this.get('lastY') - 200; - const height = loginMethod.get("frameHeight") || 400; - const width = loginMethod.get("frameWidth") || 800; - const w = window.open(Discourse.getURL("/auth/" + name), "_blank", - "menubar=no,status=no,height=" + height + ",width=" + width + ",left=" + left + ",top=" + top); - const self = this; - const timer = setInterval(function() { - if(!w || w.closed) { - clearInterval(timer); - self.set('authenticate', null); - } - }, 1000); + const height = loginMethod.get("frameHeight") || 400; + const width = loginMethod.get("frameWidth") || 800; + const w = window.open(authUrl, "_blank", + "menubar=no,status=no,height=" + height + ",width=" + width + ",left=" + left + ",top=" + top); + const self = this; + const timer = setInterval(function() { + if(!w || w.closed) { + clearInterval(timer); + self.set('authenticate', null); + } + }, 1000); + } } }, diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index 70f3a967ac..968cd4e68d 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -15,7 +15,7 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, { selectedPosts: null, selectedReplies: null, queryParams: ['filter', 'username_filters', 'show_deleted'], - loadedAllPosts: false, + loadedAllPosts: Em.computed.or('model.postStream.loadedAllPosts', 'model.postStream.loadingLastPost'), enteredAt: null, firstPostExpanded: false, retrying: false, @@ -36,22 +36,6 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, { } }.observes('model.title', 'category'), - postStreamLoadedAllPostsChanged: function() { - // semantics of loaded all posts are slightly diff at topic level, - // it just means that we "once" loaded all posts, this means we don't - // keep re-rendering the suggested topics when new posts zoom in - let loaded = this.get('model.postStream.loadedAllPosts'); - - if (loaded) { - this.set('model.loadedTopicId', this.get('model.id')); - } else { - loaded = this.get('model.loadedTopicId') === this.get('model.id'); - } - - this.set('loadedAllPosts', loaded); - - }.observes('model.postStream', 'model.postStream.loadedAllPosts'), - @computed('model.postStream.summary') show_deleted: { set(value) { @@ -458,6 +442,11 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, { unhidePost(post) { post.unhide(); + }, + + changePostOwner(post) { + this.get('selectedPosts').addObject(post); + this.send('changeOwner'); } }, @@ -594,7 +583,9 @@ export default Ember.Controller.extend(SelectedPostsCount, BufferedContent, { } case "created": { postStream.triggerNewPostInStream(data.id); - Discourse.notifyBackgroundCountIncrement(); + if (self.get('currentUser.id') !== data.user_id) { + Discourse.notifyBackgroundCountIncrement(); + } return; } default: { diff --git a/app/assets/javascripts/discourse/dialects/dialect.js b/app/assets/javascripts/discourse/dialects/dialect.js index 1614c1c0f1..cfb7b67f00 100644 --- a/app/assets/javascripts/discourse/dialects/dialect.js +++ b/app/assets/javascripts/discourse/dialects/dialect.js @@ -135,7 +135,7 @@ function invalidBoundary(args, prev) { var last = prev[prev.length - 1]; if (typeof last !== "string") { return false; } - if (args.wordBoundary && (last.match(/(\w|\/)$/))) { return true; } + if (args.wordBoundary && (!last.match(/\W$/))) { return true; } if (args.spaceBoundary && (!last.match(/\s$/))) { return true; } if (args.spaceOrTagBoundary && (!last.match(/(\s|\>)$/))) { return true; } } diff --git a/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 b/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 index b7b269f78f..3d2bd23b5f 100644 --- a/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 +++ b/app/assets/javascripts/discourse/initializers/enable-emoji.js.es6 @@ -9,7 +9,15 @@ export default { window.PagedownCustom.appendButtons.push({ id: 'wmd-emoji-button', description: I18n.t("composer.emoji"), - execute: showSelector + execute() { + showSelector({ + container, + onSelect(title) { + const composerController = container.lookup('controller:composer'); + composerController.appendTextAtCursor(`:${title}:`, {space: true}); + }, + }); + } }); } } diff --git a/app/assets/javascripts/discourse/initializers/load-all-helpers.js.es6 b/app/assets/javascripts/discourse/initializers/load-all-helpers.js.es6 index f9ec0d71c7..9347778775 100644 --- a/app/assets/javascripts/discourse/initializers/load-all-helpers.js.es6 +++ b/app/assets/javascripts/discourse/initializers/load-all-helpers.js.es6 @@ -1,11 +1,12 @@ +export function loadAllHelpers() { + Ember.keys(requirejs.entries).forEach(entry => { + if ((/\/helpers\//).test(entry)) { + require(entry, null, null, true); + } + }); +} + export default { name: 'load-all-helpers', - - initialize: function() { - Ember.keys(requirejs.entries).forEach(function(entry) { - if ((/\/helpers\//).test(entry)) { - require(entry, null, null, true); - } - }); - } + initialize: loadAllHelpers }; diff --git a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 b/app/assets/javascripts/discourse/lib/autocomplete.js.es6 index cbaffc2b85..34a8acd08c 100644 --- a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 +++ b/app/assets/javascripts/discourse/lib/autocomplete.js.es6 @@ -130,10 +130,13 @@ export default function(options) { if (options.transformComplete) { term = options.transformComplete(term); } - var text = me.val(); - text = text.substring(0, completeStart) + (options.key || "") + term + ' ' + text.substring(completeEnd + 1, text.length); - me.val(text); - Discourse.Utilities.setCaretPosition(me[0], completeStart + 1 + term.length); + + if (term) { + var text = me.val(); + text = text.substring(0, completeStart) + (options.key || "") + term + ' ' + text.substring(completeEnd + 1, text.length); + me.val(text); + Discourse.Utilities.setCaretPosition(me[0], completeStart + 1 + term.length); + } } } closeAutocomplete(); @@ -284,7 +287,7 @@ export default function(options) { if (options.key && e.which === options.key.charCodeAt(0)) { caretPosition = Discourse.Utilities.caretPosition(me[0]); var prevChar = me.val().charAt(caretPosition - 1); - if (!prevChar || /\W/.test(prevChar)) { + if (!prevChar || /[^\w\)\]]/.test(prevChar)) { completeStart = completeEnd = caretPosition; updateAutoComplete(options.dataSource("")); } @@ -338,7 +341,7 @@ export default function(options) { stopFound = prev === options.key; if (stopFound) { prev = me[0].value[c - 1]; - if (!prev || /\W/.test(prev)) { + if (!prev || /[^\w\)\]]/.test(prev)) { completeStart = c; caretPosition = completeEnd = initial; term = me[0].value.substring(c + 1, initial); diff --git a/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 b/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 index 641b721cfe..b556316232 100644 --- a/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 +++ b/app/assets/javascripts/discourse/lib/desktop-notifications.js.es6 @@ -1,5 +1,6 @@ import DiscourseURL from 'discourse/lib/url'; import PageTracker from 'discourse/lib/page-tracker'; +import KeyValueStore from 'discourse/lib/key-value-store'; let primaryTab = false; let liveEnabled = false; @@ -10,6 +11,8 @@ let lastAction = -1; const focusTrackerKey = "focus-tracker"; const idleThresholdTime = 1000 * 10; // 10 seconds +const keyValueStore = new KeyValueStore("discourse_desktop_notifications_"); + // Called from an initializer function init(messageBus) { liveEnabled = false; @@ -20,7 +23,7 @@ function init(messageBus) { } try { - localStorage.getItem(focusTrackerKey); + keyValueStore.getItem(focusTrackerKey); } catch (e) { Em.Logger.info('Discourse desktop notifications are disabled - localStorage denied.'); return; @@ -66,7 +69,7 @@ function setupNotifications() { window.addEventListener("focus", function() { if (!primaryTab) { primaryTab = true; - localStorage.setItem(focusTrackerKey, mbClientId); + keyValueStore.setItem(focusTrackerKey, mbClientId); } }); @@ -74,7 +77,7 @@ function setupNotifications() { primaryTab = false; } else { primaryTab = true; - localStorage.setItem(focusTrackerKey, mbClientId); + keyValueStore.setItem(focusTrackerKey, mbClientId); } if (document) { @@ -95,7 +98,7 @@ function onNotification(data) { if (!liveEnabled) { return; } if (!primaryTab) { return; } if (!isIdle()) { return; } - if (localStorage.getItem('notifications-disabled')) { return; } + if (keyValueStore.getItem('notifications-disabled')) { return; } const notificationTitle = I18n.t(i18nKey(data.notification_type), { site_title: Discourse.SiteSettings.title, diff --git a/app/assets/javascripts/discourse/lib/emoji/emoji-groups.js.es6 b/app/assets/javascripts/discourse/lib/emoji/emoji-groups.js.es6 new file mode 100644 index 0000000000..71ef4eb903 --- /dev/null +++ b/app/assets/javascripts/discourse/lib/emoji/emoji-groups.js.es6 @@ -0,0 +1,57 @@ +// note that these categories are copied from Slack +// be careful, there are ~20 differences in synonyms, e.g. :boom: vs. :collision: +// a few Emoji are actually missing from the Slack categories as well (?), and were added +const groups = [ + { + name: "people", + fullname: "People", + tabicon: "grinning", + icons: ["grinning", "grin", "joy", "smiley", "smile", "sweat_smile", "laughing", "innocent", "smiling_imp", "imp", "wink", "blush", "relaxed", "yum", "relieved", "heart_eyes", "sunglasses", "smirk", "neutral_face", "expressionless", "unamused", "sweat", "pensive", "confused", "confounded", "kissing", "kissing_heart", "kissing_smiling_eyes", "kissing_closed_eyes", "stuck_out_tongue", "stuck_out_tongue_winking_eye", "stuck_out_tongue_closed_eyes", "disappointed", "worried", "angry", "rage", "cry", "persevere", "triumph", "disappointed_relieved", "frowning", "anguished", "fearful", "weary", "sleepy", "tired_face", "grimacing", "sob", "open_mouth", "hushed", "cold_sweat", "scream", "astonished", "flushed", "sleeping", "dizzy_face", "no_mouth", "mask", "smile_cat", "joy_cat", "smiley_cat", "heart_eyes_cat", "smirk_cat", "kissing_cat", "pouting_cat", "crying_cat_face", "scream_cat", "footprints", "bust_in_silhouette", "busts_in_silhouette", "baby", "boy", "girl", "man", "woman", "family", "couple", "two_men_holding_hands", "two_women_holding_hands", "dancers", "bride_with_veil", "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban", "older_man", "older_woman", "cop", "construction_worker", "princess", "guardsman", "angel", "santa", "ghost", "japanese_ogre", "japanese_goblin", "hankey", "skull", "alien", "space_invader", "bow", "information_desk_person", "no_good", "ok_woman", "raising_hand", "person_with_pouting_face", "person_frowning", "massage", "haircut", "couple_with_heart", "couplekiss", "raised_hands", "clap", "hand", "ear", "eyes", "nose", "lips", "kiss", "tongue", "nail_care", "wave", "+1", "-1", "point_up", "point_up_2", "point_down", "point_left", "point_right", "ok_hand", "v", "facepunch", "fist", "raised_hand", "muscle", "open_hands", "pray"] + }, + { + name: "nature", + fullname: "Nature", + tabicon: "evergreen_tree", + icons: ["seedling", "evergreen_tree", "deciduous_tree", "palm_tree", "cactus", "tulip", "cherry_blossom", "rose", "hibiscus", "sunflower", "blossom", "bouquet", "ear_of_rice", "herb", "four_leaf_clover", "maple_leaf", "fallen_leaf", "leaves", "mushroom", "chestnut", "rat", "mouse2", "mouse", "hamster", "ox", "water_buffalo", "cow2", "cow", "tiger2", "leopard", "tiger", "rabbit2", "rabbit", "cat2", "cat", "racehorse", "horse", "ram", "sheep", "goat", "rooster", "chicken", "baby_chick", "hatching_chick", "hatched_chick", "bird", "penguin", "elephant", "dromedary_camel", "camel", "boar", "pig2", "pig", "pig_nose", "dog2", "poodle", "dog", "wolf", "bear", "koala", "panda_face", "monkey_face", "see_no_evil", "hear_no_evil", "speak_no_evil", "monkey", "dragon", "dragon_face", "crocodile", "snake", "turtle", "frog", "whale2", "whale", "dolphin", "octopus", "fish", "tropical_fish", "blowfish", "shell", "snail", "bug", "ant", "bee", "beetle", "feet", "zap", "fire", "crescent_moon", "sunny", "partly_sunny", "cloud", "droplet", "sweat_drops", "umbrella", "dash", "snowflake", "star2", "star", "stars", "sunrise_over_mountains", "sunrise", "rainbow", "ocean", "volcano", "milky_way", "mount_fuji", "japan", "globe_with_meridians", "earth_africa", "earth_americas", "earth_asia", "new_moon", "waxing_crescent_moon", "first_quarter_moon", "moon", "full_moon", "waning_gibbous_moon", "last_quarter_moon", "waning_crescent_moon", "new_moon_with_face", "full_moon_with_face", "first_quarter_moon_with_face", "last_quarter_moon_with_face", "sun_with_face"] + }, + { + name: "food", + fullname: "Food & Drink", + tabicon: "hamburger", + icons: ["tomato", "eggplant", "corn", "sweet_potato", "grapes", "melon", "watermelon", "tangerine", "lemon", "banana", "pineapple", "apple", "green_apple", "pear", "peach", "cherries", "strawberry", "hamburger", "pizza", "meat_on_bone", "poultry_leg", "rice_cracker", "rice_ball", "rice", "curry", "ramen", "spaghetti", "bread", "fries", "dango", "oden", "sushi", "fried_shrimp", "fish_cake", "icecream", "shaved_ice", "ice_cream", "doughnut", "cookie", "chocolate_bar", "candy", "lollipop", "custard", "honey_pot", "cake", "bento", "stew", "egg", "fork_and_knife", "tea", "coffee", "sake", "wine_glass", "cocktail", "tropical_drink", "beer", "beers", "baby_bottle"] + }, + { + name: "celebration", + fullname: "Celebration", + tabicon: "gift", + icons: ["ribbon", "gift", "birthday", "jack_o_lantern", "christmas_tree", "tanabata_tree", "bamboo", "rice_scene", "fireworks", "sparkler", "tada", "confetti_ball", "balloon", "dizzy", "sparkles", "boom", "mortar_board", "crown", "dolls", "flags", "wind_chime", "crossed_flags", "izakaya_lantern", "ring", "heart", "broken_heart", "love_letter", "two_hearts", "revolving_hearts", "heartbeat", "heartpulse", "sparkling_heart", "cupid", "gift_heart", "heart_decoration", "purple_heart", "yellow_heart", "green_heart", "blue_heart"] + }, + { + name: "activity", + fullname: "Activities", + tabicon: "soccer", + icons: ["runner", "walking", "dancer", "rowboat", "swimmer", "surfer", "bath", "snowboarder", "ski", "snowman", "bicyclist", "mountain_bicyclist", "horse_racing", "tent", "fishing_pole_and_fish", "soccer", "basketball", "football", "baseball", "tennis", "rugby_football", "golf", "trophy", "running_shirt_with_sash", "checkered_flag", "musical_keyboard", "guitar", "violin", "saxophone", "trumpet", "musical_note", "notes", "musical_score", "headphones", "microphone", "performing_arts", "ticket", "tophat", "circus_tent", "clapper", "art", "dart", "8ball", "bowling", "slot_machine", "game_die", "video_game", "flower_playing_cards", "black_joker", "mahjong", "carousel_horse", "ferris_wheel", "roller_coaster"] + }, + { + name: "travel", + fullname: "Travel & Places", + tabicon: "airplane", + icons: ["train", "mountain_railway", "railway_car", "steam_locomotive", "monorail", "bullettrain_side", "bullettrain_front", "train2", "metro", "light_rail", "station", "tram", "bus", "oncoming_bus", "trolleybus", "minibus", "ambulance", "fire_engine", "police_car", "oncoming_police_car", "rotating_light", "taxi", "oncoming_taxi", "car", "oncoming_automobile", "blue_car", "truck", "articulated_lorry", "tractor", "bike", "busstop", "fuelpump", "construction", "vertical_traffic_light", "traffic_light", "rocket", "helicopter", "airplane", "seat", "anchor", "ship", "speedboat", "boat", "aerial_tramway", "mountain_cableway", "suspension_railway", "passport_control", "customs", "baggage_claim", "left_luggage", "yen", "euro", "pound", "dollar", "statue_of_liberty", "moyai", "foggy", "tokyo_tower", "fountain", "european_castle", "japanese_castle", "city_sunrise", "city_sunset", "night_with_stars", "bridge_at_night", "house", "house_with_garden", "office", "department_store", "factory", "post_office", "european_post_office", "hospital", "bank", "hotel", "love_hotel", "wedding", "church", "convenience_store", "school", "cn", "de", "es", "fr", "gb", "it", "jp", "kr", "ru", "us"] + }, + { + name: "objects", + fullname: "Objects & Symbols", + tabicon: "eyeglasses", + icons: ["watch", "iphone", "calling", "computer", "alarm_clock", "hourglass_flowing_sand", "hourglass", "camera", "video_camera", "movie_camera", "tv", "radio", "pager", "telephone_receiver", "phone", "fax", "minidisc", "floppy_disk", "cd", "dvd", "vhs", "battery", "electric_plug", "bulb", "flashlight", "satellite", "credit_card", "money_with_wings", "moneybag", "gem", "closed_umbrella", "pouch", "purse", "handbag", "briefcase", "school_satchel", "lipstick", "eyeglasses", "womans_hat", "sandal", "high_heel", "boot", "mans_shoe", "athletic_shoe", "bikini", "dress", "kimono", "womans_clothes", "shirt", "necktie", "jeans", "door", "shower", "bathtub", "toilet", "barber", "syringe", "pill", "microscope", "telescope", "crystal_ball", "wrench", "hocho", "nut_and_bolt", "hammer", "bomb", "smoking", "gun", "bookmark", "newspaper", "key", "email", "envelope_with_arrow", "incoming_envelope", "e-mail", "inbox_tray", "outbox_tray", "package", "postal_horn", "postbox", "mailbox_closed", "mailbox", "mailbox_with_mail", "mailbox_with_no_mail", "page_facing_up", "page_with_curl", "bookmark_tabs", "chart_with_upwards_trend", "chart_with_downwards_trend", "bar_chart", "date", "calendar", "low_brightness", "high_brightness", "scroll", "clipboard", "book", "notebook", "notebook_with_decorative_cover", "ledger", "closed_book", "green_book", "blue_book", "orange_book", "books", "card_index", "link", "paperclip", "pushpin", "scissors", "triangular_ruler", "round_pushpin", "straight_ruler", "triangular_flag_on_post", "file_folder", "open_file_folder", "black_nib", "pencil2", "memo", "lock_with_ink_pen", "closed_lock_with_key", "lock", "unlock", "mega", "loudspeaker", "sound", "loud_sound", "speaker", "mute", "zzz", "bell", "no_bell", "thought_balloon", "speech_balloon", "children_crossing", "mag", "mag_right", "no_entry_sign", "no_entry", "name_badge", "no_pedestrians", "do_not_litter", "no_bicycles", "non-potable_water", "no_mobile_phones", "underage", "accept", "ideograph_advantage", "white_flower", "secret", "congratulations", "u5408", "u6e80", "u7981", "u6709", "u7121", "u7533", "u55b6", "u6708", "u5272", "u7a7a", "sa", "koko", "u6307", "chart", "sparkle", "eight_spoked_asterisk", "negative_squared_cross_mark", "white_check_mark", "eight_pointed_black_star", "vibration_mode", "mobile_phone_off", "vs", "a", "b", "ab", "cl", "o2", "sos", "id", "parking", "wc", "cool", "free", "new", "ng", "ok", "up", "atm", "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius", "sagittarius", "capricorn", "aquarius", "pisces", "restroom", "mens", "womens", "baby_symbol", "wheelchair", "potable_water", "no_smoking", "put_litter_in_its_place", "arrow_forward", "arrow_backward", "arrow_up_small", "arrow_down_small", "fast_forward", "rewind", "arrow_double_up", "arrow_double_down", "arrow_right", "arrow_left", "arrow_up", "arrow_down", "arrow_upper_right", "arrow_lower_right", "arrow_lower_left", "arrow_upper_left", "arrow_up_down", "left_right_arrow", "arrows_counterclockwise", "arrow_right_hook", "leftwards_arrow_with_hook", "arrow_heading_up", "arrow_heading_down", "twisted_rightwards_arrows", "repeat", "repeat_one", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "keycap_ten", "1234", "hash", "abc", "abcd", "capital_abcd", "information_source", "signal_strength", "cinema", "symbols", "heavy_plus_sign", "heavy_minus_sign", "wavy_dash", "heavy_division_sign", "heavy_multiplication_x", "heavy_check_mark", "arrows_clockwise", "tm", "copyright", "registered", "currency_exchange", "heavy_dollar_sign", "curly_loop", "loop", "part_alternation_mark", "exclamation", "bangbang", "question", "grey_exclamation", "grey_question", "interrobang", "x", "o", "100", "end", "back", "on", "top", "soon", "cyclone", "m", "ophiuchus", "six_pointed_star", "beginner", "trident", "warning", "hotsprings", "recycle", "anger", "diamond_shape_with_a_dot_inside", "spades", "clubs", "hearts", "diamonds", "ballot_box_with_check", "white_circle", "black_circle", "radio_button", "red_circle", "large_blue_circle", "small_red_triangle", "small_red_triangle_down", "small_orange_diamond", "small_blue_diamond", "large_orange_diamond", "large_blue_diamond", "black_small_square", "white_small_square", "black_large_square", "white_large_square", "black_medium_square", "white_medium_square", "black_medium_small_square", "white_medium_small_square", "black_square_button", "white_square_button", "clock1", "clock2", "clock3", "clock4", "clock5", "clock6", "clock7", "clock8", "clock9", "clock10", "clock11", "clock12", "clock130", "clock230", "clock330", "clock430", "clock530", "clock630", "clock730", "clock830", "clock930", "clock1030", "clock1130", "clock1230"] + } +]; + +// scrub groups +groups.forEach(group => { + group.icons = group.icons.reject(obj => !Discourse.Emoji.exists(obj)); +}); + +// export so others can modify +Discourse.Emoji.groups = groups; + +export default groups; diff --git a/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6 b/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6 index ee449e3ccd..ffd54875ce 100644 --- a/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6 +++ b/app/assets/javascripts/discourse/lib/emoji/emoji-toolbar.js.es6 @@ -1,148 +1,85 @@ -// note that these categories are copied from Slack -// be careful, there are ~20 differences in synonyms, e.g. :boom: vs. :collision: -// a few Emoji are actually missing from the Slack categories as well (?), and were added -var groups = [ - { - name: "people", - fullname: "People", - tabicon: "grinning", - icons: ["grinning", "grin", "joy", "smiley", "smile", "sweat_smile", "laughing", "innocent", "smiling_imp", "imp", "wink", "blush", "relaxed", "yum", "relieved", "heart_eyes", "sunglasses", "smirk", "neutral_face", "expressionless", "unamused", "sweat", "pensive", "confused", "confounded", "kissing", "kissing_heart", "kissing_smiling_eyes", "kissing_closed_eyes", "stuck_out_tongue", "stuck_out_tongue_winking_eye", "stuck_out_tongue_closed_eyes", "disappointed", "worried", "angry", "rage", "cry", "persevere", "triumph", "disappointed_relieved", "frowning", "anguished", "fearful", "weary", "sleepy", "tired_face", "grimacing", "sob", "open_mouth", "hushed", "cold_sweat", "scream", "astonished", "flushed", "sleeping", "dizzy_face", "no_mouth", "mask", "smile_cat", "joy_cat", "smiley_cat", "heart_eyes_cat", "smirk_cat", "kissing_cat", "pouting_cat", "crying_cat_face", "scream_cat", "footprints", "bust_in_silhouette", "busts_in_silhouette", "baby", "boy", "girl", "man", "woman", "family", "couple", "two_men_holding_hands", "two_women_holding_hands", "dancers", "bride_with_veil", "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban", "older_man", "older_woman", "cop", "construction_worker", "princess", "guardsman", "angel", "santa", "ghost", "japanese_ogre", "japanese_goblin", "hankey", "skull", "alien", "space_invader", "bow", "information_desk_person", "no_good", "ok_woman", "raising_hand", "person_with_pouting_face", "person_frowning", "massage", "haircut", "couple_with_heart", "couplekiss", "raised_hands", "clap", "hand", "ear", "eyes", "nose", "lips", "kiss", "tongue", "nail_care", "wave", "+1", "-1", "point_up", "point_up_2", "point_down", "point_left", "point_right", "ok_hand", "v", "facepunch", "fist", "raised_hand", "muscle", "open_hands", "pray"] - }, - { - name: "nature", - fullname: "Nature", - tabicon: "evergreen_tree", - icons: ["seedling", "evergreen_tree", "deciduous_tree", "palm_tree", "cactus", "tulip", "cherry_blossom", "rose", "hibiscus", "sunflower", "blossom", "bouquet", "ear_of_rice", "herb", "four_leaf_clover", "maple_leaf", "fallen_leaf", "leaves", "mushroom", "chestnut", "rat", "mouse2", "mouse", "hamster", "ox", "water_buffalo", "cow2", "cow", "tiger2", "leopard", "tiger", "rabbit2", "rabbit", "cat2", "cat", "racehorse", "horse", "ram", "sheep", "goat", "rooster", "chicken", "baby_chick", "hatching_chick", "hatched_chick", "bird", "penguin", "elephant", "dromedary_camel", "camel", "boar", "pig2", "pig", "pig_nose", "dog2", "poodle", "dog", "wolf", "bear", "koala", "panda_face", "monkey_face", "see_no_evil", "hear_no_evil", "speak_no_evil", "monkey", "dragon", "dragon_face", "crocodile", "snake", "turtle", "frog", "whale2", "whale", "dolphin", "octopus", "fish", "tropical_fish", "blowfish", "shell", "snail", "bug", "ant", "bee", "beetle", "feet", "zap", "fire", "crescent_moon", "sunny", "partly_sunny", "cloud", "droplet", "sweat_drops", "umbrella", "dash", "snowflake", "star2", "star", "stars", "sunrise_over_mountains", "sunrise", "rainbow", "ocean", "volcano", "milky_way", "mount_fuji", "japan", "globe_with_meridians", "earth_africa", "earth_americas", "earth_asia", "new_moon", "waxing_crescent_moon", "first_quarter_moon", "moon", "full_moon", "waning_gibbous_moon", "last_quarter_moon", "waning_crescent_moon", "new_moon_with_face", "full_moon_with_face", "first_quarter_moon_with_face", "last_quarter_moon_with_face", "sun_with_face"] - }, - { - name: "food", - fullname: "Food & Drink", - tabicon: "hamburger", - icons: ["tomato", "eggplant", "corn", "sweet_potato", "grapes", "melon", "watermelon", "tangerine", "lemon", "banana", "pineapple", "apple", "green_apple", "pear", "peach", "cherries", "strawberry", "hamburger", "pizza", "meat_on_bone", "poultry_leg", "rice_cracker", "rice_ball", "rice", "curry", "ramen", "spaghetti", "bread", "fries", "dango", "oden", "sushi", "fried_shrimp", "fish_cake", "icecream", "shaved_ice", "ice_cream", "doughnut", "cookie", "chocolate_bar", "candy", "lollipop", "custard", "honey_pot", "cake", "bento", "stew", "egg", "fork_and_knife", "tea", "coffee", "sake", "wine_glass", "cocktail", "tropical_drink", "beer", "beers", "baby_bottle"] - }, - { - name: "celebration", - fullname: "Celebration", - tabicon: "gift", - icons: ["ribbon", "gift", "birthday", "jack_o_lantern", "christmas_tree", "tanabata_tree", "bamboo", "rice_scene", "fireworks", "sparkler", "tada", "confetti_ball", "balloon", "dizzy", "sparkles", "boom", "mortar_board", "crown", "dolls", "flags", "wind_chime", "crossed_flags", "izakaya_lantern", "ring", "heart", "broken_heart", "love_letter", "two_hearts", "revolving_hearts", "heartbeat", "heartpulse", "sparkling_heart", "cupid", "gift_heart", "heart_decoration", "purple_heart", "yellow_heart", "green_heart", "blue_heart"] - }, - { - name: "activity", - fullname: "Activities", - tabicon: "soccer", - icons: ["runner", "walking", "dancer", "rowboat", "swimmer", "surfer", "bath", "snowboarder", "ski", "snowman", "bicyclist", "mountain_bicyclist", "horse_racing", "tent", "fishing_pole_and_fish", "soccer", "basketball", "football", "baseball", "tennis", "rugby_football", "golf", "trophy", "running_shirt_with_sash", "checkered_flag", "musical_keyboard", "guitar", "violin", "saxophone", "trumpet", "musical_note", "notes", "musical_score", "headphones", "microphone", "performing_arts", "ticket", "tophat", "circus_tent", "clapper", "art", "dart", "8ball", "bowling", "slot_machine", "game_die", "video_game", "flower_playing_cards", "black_joker", "mahjong", "carousel_horse", "ferris_wheel", "roller_coaster"] - }, - { - name: "travel", - fullname: "Travel & Places", - tabicon: "airplane", - icons: ["train", "mountain_railway", "railway_car", "steam_locomotive", "monorail", "bullettrain_side", "bullettrain_front", "train2", "metro", "light_rail", "station", "tram", "bus", "oncoming_bus", "trolleybus", "minibus", "ambulance", "fire_engine", "police_car", "oncoming_police_car", "rotating_light", "taxi", "oncoming_taxi", "car", "oncoming_automobile", "blue_car", "truck", "articulated_lorry", "tractor", "bike", "busstop", "fuelpump", "construction", "vertical_traffic_light", "traffic_light", "rocket", "helicopter", "airplane", "seat", "anchor", "ship", "speedboat", "boat", "aerial_tramway", "mountain_cableway", "suspension_railway", "passport_control", "customs", "baggage_claim", "left_luggage", "yen", "euro", "pound", "dollar", "statue_of_liberty", "moyai", "foggy", "tokyo_tower", "fountain", "european_castle", "japanese_castle", "city_sunrise", "city_sunset", "night_with_stars", "bridge_at_night", "house", "house_with_garden", "office", "department_store", "factory", "post_office", "european_post_office", "hospital", "bank", "hotel", "love_hotel", "wedding", "church", "convenience_store", "school", "cn", "de", "es", "fr", "gb", "it", "jp", "kr", "ru", "us"] - }, - { - name: "objects", - fullname: "Objects & Symbols", - tabicon: "eyeglasses", - icons: ["watch", "iphone", "calling", "computer", "alarm_clock", "hourglass_flowing_sand", "hourglass", "camera", "video_camera", "movie_camera", "tv", "radio", "pager", "telephone_receiver", "phone", "fax", "minidisc", "floppy_disk", "cd", "dvd", "vhs", "battery", "electric_plug", "bulb", "flashlight", "satellite", "credit_card", "money_with_wings", "moneybag", "gem", "closed_umbrella", "pouch", "purse", "handbag", "briefcase", "school_satchel", "lipstick", "eyeglasses", "womans_hat", "sandal", "high_heel", "boot", "mans_shoe", "athletic_shoe", "bikini", "dress", "kimono", "womans_clothes", "shirt", "necktie", "jeans", "door", "shower", "bathtub", "toilet", "barber", "syringe", "pill", "microscope", "telescope", "crystal_ball", "wrench", "hocho", "nut_and_bolt", "hammer", "bomb", "smoking", "gun", "bookmark", "newspaper", "key", "email", "envelope_with_arrow", "incoming_envelope", "e-mail", "inbox_tray", "outbox_tray", "package", "postal_horn", "postbox", "mailbox_closed", "mailbox", "mailbox_with_mail", "mailbox_with_no_mail", "page_facing_up", "page_with_curl", "bookmark_tabs", "chart_with_upwards_trend", "chart_with_downwards_trend", "bar_chart", "date", "calendar", "low_brightness", "high_brightness", "scroll", "clipboard", "book", "notebook", "notebook_with_decorative_cover", "ledger", "closed_book", "green_book", "blue_book", "orange_book", "books", "card_index", "link", "paperclip", "pushpin", "scissors", "triangular_ruler", "round_pushpin", "straight_ruler", "triangular_flag_on_post", "file_folder", "open_file_folder", "black_nib", "pencil2", "memo", "lock_with_ink_pen", "closed_lock_with_key", "lock", "unlock", "mega", "loudspeaker", "sound", "loud_sound", "speaker", "mute", "zzz", "bell", "no_bell", "thought_balloon", "speech_balloon", "children_crossing", "mag", "mag_right", "no_entry_sign", "no_entry", "name_badge", "no_pedestrians", "do_not_litter", "no_bicycles", "non-potable_water", "no_mobile_phones", "underage", "accept", "ideograph_advantage", "white_flower", "secret", "congratulations", "u5408", "u6e80", "u7981", "u6709", "u7121", "u7533", "u55b6", "u6708", "u5272", "u7a7a", "sa", "koko", "u6307", "chart", "sparkle", "eight_spoked_asterisk", "negative_squared_cross_mark", "white_check_mark", "eight_pointed_black_star", "vibration_mode", "mobile_phone_off", "vs", "a", "b", "ab", "cl", "o2", "sos", "id", "parking", "wc", "cool", "free", "new", "ng", "ok", "up", "atm", "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius", "sagittarius", "capricorn", "aquarius", "pisces", "restroom", "mens", "womens", "baby_symbol", "wheelchair", "potable_water", "no_smoking", "put_litter_in_its_place", "arrow_forward", "arrow_backward", "arrow_up_small", "arrow_down_small", "fast_forward", "rewind", "arrow_double_up", "arrow_double_down", "arrow_right", "arrow_left", "arrow_up", "arrow_down", "arrow_upper_right", "arrow_lower_right", "arrow_lower_left", "arrow_upper_left", "arrow_up_down", "left_right_arrow", "arrows_counterclockwise", "arrow_right_hook", "leftwards_arrow_with_hook", "arrow_heading_up", "arrow_heading_down", "twisted_rightwards_arrows", "repeat", "repeat_one", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "keycap_ten", "1234", "hash", "abc", "abcd", "capital_abcd", "information_source", "signal_strength", "cinema", "symbols", "heavy_plus_sign", "heavy_minus_sign", "wavy_dash", "heavy_division_sign", "heavy_multiplication_x", "heavy_check_mark", "arrows_clockwise", "tm", "copyright", "registered", "currency_exchange", "heavy_dollar_sign", "curly_loop", "loop", "part_alternation_mark", "exclamation", "bangbang", "question", "grey_exclamation", "grey_question", "interrobang", "x", "o", "100", "end", "back", "on", "top", "soon", "cyclone", "m", "ophiuchus", "six_pointed_star", "beginner", "trident", "warning", "hotsprings", "recycle", "anger", "diamond_shape_with_a_dot_inside", "spades", "clubs", "hearts", "diamonds", "ballot_box_with_check", "white_circle", "black_circle", "radio_button", "red_circle", "large_blue_circle", "small_red_triangle", "small_red_triangle_down", "small_orange_diamond", "small_blue_diamond", "large_orange_diamond", "large_blue_diamond", "black_small_square", "white_small_square", "black_large_square", "white_large_square", "black_medium_square", "white_medium_square", "black_medium_small_square", "white_medium_small_square", "black_square_button", "white_square_button", "clock1", "clock2", "clock3", "clock4", "clock5", "clock6", "clock7", "clock8", "clock9", "clock10", "clock11", "clock12", "clock130", "clock230", "clock330", "clock430", "clock530", "clock630", "clock730", "clock830", "clock930", "clock1030", "clock1130", "clock1230"] - } -]; +import groups from 'discourse/lib/emoji/emoji-groups'; +import KeyValueStore from "discourse/lib/key-value-store"; -// scrub groups -groups.forEach(function(group){ - group.icons = _.reject(group.icons, function(obj){ - return !Discourse.Emoji.exists(obj); - }); -}); +const keyValueStore = new KeyValueStore("discourse_emojis_"); +const EMOJI_USAGE = "emojiUsage"; -// export so others can modify -Discourse.Emoji.groups = groups; +const PER_ROW = 12, PER_PAGE = 60; +let ungroupedIcons, recentlyUsedIcons; -var closeSelector = function(){ +if (!keyValueStore.getObject(EMOJI_USAGE)) { + keyValueStore.setObject({key: EMOJI_USAGE, value: {}}); +} + +function closeSelector() { $('.emoji-modal, .emoji-modal-wrapper').remove(); $('body, textarea').off('keydown.emoji'); -}; +} -var ungroupedIcons, recentlyUsedIcons; +function initializeUngroupedIcons() { + const groupedIcons = {}; -var initializeUngroupedIcons = function(){ - ungroupedIcons = []; - - var groupedIcons = {}; - _.each(groups, function(group){ - _.each(group.icons, function(icon){ - groupedIcons[icon] = true; - }); + groups.forEach(group => { + group.icons.forEach(icon => groupedIcons[icon] = true); }); - var emojis = Discourse.Emoji.list(); - _.each(emojis, function(emoji){ - if(groupedIcons[emoji] !== true){ + ungroupedIcons = []; + const emojis = Discourse.Emoji.list(); + emojis.forEach(emoji => { + if (groupedIcons[emoji] !== true) { ungroupedIcons.push(emoji); } }); - if(ungroupedIcons.length > 0){ + if (ungroupedIcons.length) { groups.push({name: 'ungrouped', icons: ungroupedIcons}); } -}; - -try { - if (localStorage && !localStorage.emojiUsage) { localStorage.emojiUsage = "{}"; } -} catch(e){ -/* localStorage can be disabled, or cookies disabled, do not crash script here - * TODO introduce a global wrapper for dealing with local storage - * */ } -var trackEmojiUsage = function(title){ - var recent = JSON.parse(localStorage.emojiUsage); +function trackEmojiUsage(title) { + const recent = keyValueStore.getObject(EMOJI_USAGE); if (!recent[title]) { recent[title] = { title: title, usage: 0 }; } recent[title]["usage"]++; - localStorage.emojiUsage = JSON.stringify(recent); + keyValueStore.setObject({key: EMOJI_USAGE, value: recent}); // clear the cache recentlyUsedIcons = null; -}; +} -var initializeRecentlyUsedIcons = function(){ +function sortByUsage(a, b) { + if (a.usage > b.usage) { return -1; } + if (b.usage > a.usage) { return 1; } + return a.title.localeCompare(b.title); +} + +function initializeRecentlyUsedIcons() { recentlyUsedIcons = []; - var usage = _.map(JSON.parse(localStorage.emojiUsage)); - usage.sort(function(a,b){ - if(a.usage > b.usage){ - return -1; + const usage = _.map(keyValueStore.getObject(EMOJI_USAGE)).sort(sortByUsage); + const recent = usage.slice(0, PER_ROW); + + if (recent.length > 0) { + + recent.forEach(emoji => recentlyUsedIcons.push(emoji.title)); + + const recentGroup = groups.findProperty('name', 'recent'); + if (recentGroup) { + recentGroup.icons = recentlyUsedIcons; + } else { + groups.push({ name: 'recent', icons: recentlyUsedIcons }); } - if(b.usage > a.usage){ - return 1; - } - return a.title.localeCompare(b.title); - }); - - var recent = _.take(usage, PER_ROW); - - if(recent.length > 0){ - _.each(recent, function(emoji){ - recentlyUsedIcons.push(emoji.title); - }); - - var recentGroup = _.find(groups, {name: 'recent'}); - if(!recentGroup){ - recentGroup = {name: 'recent', icons: []}; - groups.push(recentGroup); - } - - recentGroup.icons = recentlyUsedIcons; } -}; +} -var toolbar = function(selected){ +function toolbar(selected) { if (!ungroupedIcons) { initializeUngroupedIcons(); } if (!recentlyUsedIcons) { initializeRecentlyUsedIcons(); } - return _.map(groups, function(g, i){ - var icon = g.tabicon; - var title = g.fullname; + return groups.map((g, i) => { + let icon = g.tabicon; + let title = g.fullname; if (g.name === "recent") { icon = "star"; title = "Recent"; @@ -150,60 +87,48 @@ var toolbar = function(selected){ icon = g.icons[0]; title = "Custom"; } - var row = {src: Discourse.Emoji.urlFor(icon), title: title, groupId: i}; - if(i === selected){ - row.selected = true; - } - return row; + + return { src: Discourse.Emoji.urlFor(icon), + title, + groupId: i, + selected: i === selected }; }); -}; +} -var PER_ROW = 12, PER_PAGE = 60; - -var bindEvents = function(page, offset, options) { - var composerController = Discourse.__container__.lookup('controller:composer'); - - $('.emoji-page a').click(function(){ - var title = $(this).attr('title'); +function bindEvents(page, offset, options) { + $('.emoji-page a').click(e => { + const title = $(e.currentTarget).attr('title'); trackEmojiUsage(title); - - const prefix = options.skipPrefix ? "" : ":"; - composerController.appendTextAtCursor(`${prefix}${title}:`, {space: !options.skipPrefix}); + options.onSelect(title); closeSelector(); return false; - }).hover(function(){ - var title = $(this).attr('title'); - var html = "{{i18n "login.preferences"}}
+ + {{d-button class="btn-primary" action="showLogin" label="log_in"}} + {{d-button action="showForgotPassword" label="login.forgot"}} +<%=t "login.close_window" %>
Einladungslink erfolgreich generiert!
Der Einladungslink ist nur für folgende E-Mail-Adresse gültig: %{invitedEmail}
' bulk_invite: none: "Du hast noch niemanden hierher eingeladen. Du kannst individuelle Einladungen verschicken oder eine Masseneinladung an eine Gruppe von Leuten verschicken indem du eine Datei für Masseneinladung hochlädst." text: "Masseneinladung aus Datei" @@ -608,11 +617,13 @@ de: server: "Server-Fehler" forbidden: "Zugriff verweigert" unknown: "Fehler" + not_found: "Seite nicht gefunden" desc: network: "Bitte überprüfe deine Netzwerkverbindung." network_fixed: "Sieht aus, als wäre es wieder da." server: "Fehlercode: {{status}}" forbidden: "Du darfst das nicht ansehen." + not_found: "Hoppla! Die Anwendung hat versucht eine URL zu laden, die nicht existiert." unknown: "Etwas ist schief gelaufen." buttons: back: "Zurück" @@ -645,7 +656,7 @@ de: sign_up: "Registrieren" hide_session: "Erinnere mich morgen" hide_forever: "Nein danke" - hidden_for_session: "In Ordnung, ich frag dich morgen wieder. Du kannst dir auch jederzeit mit „Anmelden“ ein Benutzerkonto erstellen." + hidden_for_session: "In Ordnung, ich frag dich morgen wieder. Du kannst dir auch jederzeit unter „Anmelden“ ein Benutzerkonto erstellen." intro: "Hallo! :heart_eyes: Es sieht so aus, als würde dir die Diskussion gefallen. Du hast aber noch kein Benutzerkonto." value_prop: "Wenn du ein Benutzerkonto anlegst, merken wir uns, was du gelesen hast, damit du immer dort fortsetzten kannst, wo du aufgehört hast. Du kannst auch Benachrichtigungen – hier oder per E-Mail – erhalten, wenn neue Beiträge verfasst werden. Beiträge, die dir gefallen, kannst du mit einem Like versehen und diese Freude mit allen teilen. :heartbeat:" methods: @@ -737,6 +748,7 @@ de: emoji_one: "Emoji One" composer: emoji: "Emoji :smile:" + more_emoji: "mehr..." options: "Optionen" whisper: "flüstern" add_warning: "Dies ist eine offizielle Warnung." @@ -837,6 +849,11 @@ de: liked: "Gefällt dein Beitrag" private_message: "Nachricht von" invited_to_private_message: "Zu Unterhaltung eingeladen von" + invited_to_topic: "Zu Thema eingeladen von" + invitee_accepted: "Einladung angenommen von" + moved_post: "Dein Beitrag wurde verschoben von" + linked: "Link zu deinem Beitrag" + granted_badge: "Abzeichen erhalten" popup: mentioned: '{{username}} hat dich in "{{topic}}" - {{site_title}} erwähnt' quoted: '{{username}} hat dich in "{{topic}}" - {{site_title}} zitiert' @@ -861,7 +878,7 @@ de: search: sort_by: "Sortieren nach" relevance: "Relevanz" - latest_post: "letztem Beitrag" + latest_post: "letzter Beitrag" most_viewed: "Anzahl der Aufrufe" most_liked: "Anzahl der Likes" select_all: "Alle auswählen" @@ -880,6 +897,7 @@ de: category: "Kategorie „{{category}}“ durchsuchen" topic: "Dieses Thema durchsuchen" private_messages: "Nachrichten durchsuchen" + hamburger_menu: "wechsel zu einem anderen Beitragsliste oder Kategorie" new_item: "neu" go_back: 'zurückgehen' not_logged_in_user: 'Benutzerseite mit einer Zusammenfassung der Benutzeraktivitäten und Einstellungen' @@ -1078,6 +1096,7 @@ de: unpin: "Dieses Thema vom Anfang der {{categoryLink}} Kategorie loslösen." unpin_until: "Dieses Thema vom Anfang der {{categoryLink}} Kategorie loslösen oder bis %{until} warten." pin_note: "Benutzer können das Thema für sich selbst loslösen." + pin_validation: "Ein Datum wird benötigt um diesen Beitrag zu fixieren." already_pinned: zero: "Es sind in {{categoryLink}} keine Themen angeheftet." one: "Momentan in {{categoryLink}} angeheftete Themen: 1" @@ -1223,6 +1242,7 @@ de: no_value: "Nein, beibehalten" yes_value: "Ja, verwerfen" via_email: "dieser Beitrag ist per E-Mail eingetroffen" + whisper: "Dieser Beitrag ist Privat für Moderatoren." wiki: about: "dieser Beitrag ist ein Wiki; Anwärter können diesen bearbeiten" archetypes: @@ -1383,6 +1403,7 @@ de: topic_template: "Themenvorlage" delete: 'Kategorie löschen' create: 'Neue Kategorie' + create_long: 'Eine neue Kategorie erstellen' save: 'Kategorie speichern' slug: 'Sprechender Name für URL' slug_placeholder: '(Optional) mit Bindestrich getrennte Wörter für URL' @@ -1412,6 +1433,7 @@ de: email_in_allow_strangers: "Akzeptiere E-Mails von nicht registrierten, anonymen Benutzern" email_in_disabled: "Das Erstellen von neuen Themen per E-Mail ist in den Website-Einstellungen deaktiviert. Um das Erstellen von neuen Themen per E-Mail zu erlauben," email_in_disabled_click: 'aktiviere die Einstellung „email in“.' + suppress_from_homepage: "Löse diese Kategorie von der Webseite." allow_badges_label: "Erlaube das Verleihen von Abzeichen in dieser Kategorie" edit_permissions: "Berechtigungen bearbeiten" add_permission: "Berechtigung hinzufügen" @@ -1424,13 +1446,16 @@ de: notifications: watching: title: "Beobachten" + description: "Du wirst automatisch alle neuen Themen in diesen Kategorien beobachten. Du wirst über jeden neuen Beitrag in jedem Thema benachrichtigt und die Anzahl neuer Antworten wird angezeigt." tracking: title: "Verfolgen" + description: "Du wirst automatisch allen neuen Themen in diesen Kategorien folgen. Du wirst benachrichtigt, wenn dich jemand mit @Name erwähnt oder dir antwortet, und die Anzahl neuer Antworten wird angezeigt." regular: title: "Normal" description: "Du wirst benachrichtigt, wenn jemand deinen @Namen erwähnt oder dir antwortet." muted: title: "Stummgeschaltet" + description: "Du erhältst keine Benachrichtigungen über neue Themen in diesen Kategorien und sie werden nicht in deinem \"ungelesen\"-Tab erscheinen." flagging: title: 'Danke für deine Mithilfe!' private_reminder: 'Meldungen sind vertraulich und nur für Mitarbeiter sichtbar' @@ -1476,6 +1501,8 @@ de: help: "Dieses Thema ist geschlossen. Das Antworten ist nicht mehr möglich." archived: help: "Dieses Thema ist archiviert; es ist eingefroren und kann nicht mehr geändert werden" + locked_and_archived: + help: "Dieses Thema ist geschlossen. Das Antworten oder das Bearbeiten ist nicht mehr möglich." unpinned: title: "Losgelöst" help: "Dieses Thema ist für dich losgelöst; es wird in der normalen Reihenfolge angezeigt" @@ -1955,6 +1982,7 @@ de: ip_address: "IP" topic_id: "Themen-ID" post_id: "Beitrags-ID" + category_id: "Kategorie-ID" delete: 'Löschen' edit: 'Bearbeiten' save: 'Speichern' @@ -1995,6 +2023,9 @@ de: impersonate: "Nutzersicht" anonymize_user: "Benutzer anonymisieren" roll_up: "IP-Adressen zusammenfassen" + change_category_settings: "Kategorieeinstellungen ändern" + delete_category: "Kategorie löschen" + create_category: "Kategorie erstellen" screened_emails: title: "Gefilterte E-Mails" description: "Wenn jemand ein Konto erstellt, werden die folgenden E-Mail-Adressen überprüft und es wird die Anmeldung blockiert oder eine andere Aktion ausgeführt." @@ -2345,10 +2376,19 @@ de: title: "Einbettung" host: "Erlaubte Hosts" edit: "bearbeiten" + category: "In Kategorie Beitrag schreiben" add_host: "Host hinzufügen" settings: "Einbettungseinstellungen" feed_settings: "Feed-Einstellungen" crawling_settings: "Crawler-Einstellungen" + embed_by_username: "Benutzername für Beitragserstellung" + embed_post_limit: "Maximale Anzahl der Beiträge, welche eingebettet werden" + embed_username_key_from_feed: "Schlüssel, um Discourse-Benutzernamen aus Feed zu extrahieren." + embed_truncate: "Kürze die eingebetteten Beiträge" + embed_whitelist_selector: "CSS Selektor für Elemente, die in Einbettungen erlaubt sind." + whitelist_example: "article, #story, .post" + embed_blacklist_selector: "CSS Selektor für Elemente, die in Einbettungen entfernt werden." + blacklist_example: ".ad-unit, header" feed_polling_enabled: "Beiträge über RSS/ATOM importieren" feed_polling_url: "URL des RSS/ATOM Feeds für den Import" save: "Einbettungseinstellungen speichern" @@ -2535,10 +2575,10 @@ de: description: Hat einen externen Link veröffentlicht, der mindestens 50 Klicks erhalten hat. hot_link: name: Angesagter Link - description: Hat einen externen Link veröffentlicht, der mindestens 300 Klicks erhalten hat. + description: Hat einen externen Link veröffentlicht, welcher mindestens 300 Klicks erhalten hat. famous_link: name: Berühmter Link - description: Hat einen externen Link veröffentlicht, der mindestens 1000 Klicks erhalten hat. + description: Hat einen externen Link veröffentlicht, welcher mindestens 1000 Klicks erhalten hat. google_search: |diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 1a0a800d49..82363c09eb 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -460,7 +460,7 @@ en: tracked_categories: "Tracked" tracked_categories_instructions: "You will automatically track all new topics in these categories. A count of new posts will appear next to the topic." muted_categories: "Muted" - muted_categories_instructions: "You will not be notified of anything about new topics in these categories, and they will not appear on your unread tab." + muted_categories_instructions: "You will not be notified of anything about new topics in these categories, and they will not appear in latest." delete_account: "Delete My Account" delete_account_confirm: "Are you sure you want to permanently delete your account? This action cannot be undone!" deleted_yourself: "Your account has been deleted successfully." @@ -807,6 +807,9 @@ en: admin_not_allowed_from_ip_address: "You can't log in as admin from that IP address." resend_activation_email: "Click here to send the activation email again." sent_activation_email_again: "We sent another activation email to you at {{currentEmail}}. It might take a few minutes for it to arrive; be sure to check your spam folder." + to_continue: "Please Log In" + preferences: "You need to be logged in to change your user preferences." + forgot: "I don't recall my account details" google: title: "with Google" message: "Authenticating with Google (make sure pop up blockers are not enabled)" @@ -870,7 +873,7 @@ en: show_edit_reason: "(add edit reason)" reply_placeholder: "Type here. Use Markdown, BBCode, or HTML to format. Drag or paste images." view_new_post: "View your new post." - saving: "Saving..." + saving: "Saving" saved: "Saved!" saved_draft: "Post draft in progress. Select to resume." uploading: "Uploading..." @@ -886,6 +889,7 @@ en: link_description: "enter link description here" link_dialog_title: "Insert Hyperlink" link_optional_text: "optional title" + link_placeholder: "http://example.com \"optional text\"" quote_title: "Blockquote" quote_text: "Blockquote" code_title: "Preformatted text" @@ -898,10 +902,10 @@ en: heading_title: "Heading" heading_text: "Heading" hr_title: "Horizontal Rule" - undo_title: "Undo" - redo_title: "Redo" help: "Markdown Editing Help" toggler: "hide or show the composer panel" + modal_ok: "OK" + modal_cancel: "Cancel" admin_options_title: "Optional staff settings for this topic" auto_close: @@ -1175,7 +1179,7 @@ en: description: "You will never be notified of anything about this message." muted: title: "Muted" - description: "You will never be notified of anything about this topic, and it will not appear on your unread tab." + description: "You will never be notified of anything about this topic, and it will not appear in latest." actions: recover: "Un-Delete Topic" @@ -1420,6 +1424,7 @@ en: revert_to_regular: "Remove Staff Color" rebake: "Rebuild HTML" unhide: "Unhide" + change_owner: "Change Ownership" actions: flag: 'Flag' @@ -1611,7 +1616,7 @@ en: description: "You will be notified if someone mentions your @name or replies to you." muted: title: "Muted" - description: "You will never be notified of anything about new topics in these categories, and they will not appear on your unread tab." + description: "You will never be notified of anything about new topics in these categories, and they will not appear in latest." flagging: title: 'Thanks for helping to keep our community civil!' @@ -1668,7 +1673,7 @@ en: help: "This topic is unpinned for you; it will display in regular order" pinned_globally: title: "Pinned Globally" - help: "This topic is pinned globally; it will display at the top of all lists" + help: "This topic is pinned globally; it will display at the top of latest and its category" pinned: title: "Pinned" help: "This topic is pinned for you; it will display at the top of its category" diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml index b56b946bdb..bb349741bb 100644 --- a/config/locales/client.es.yml +++ b/config/locales/client.es.yml @@ -557,7 +557,6 @@ es: user: "Invitar Usuario" sent: "Enviadas" none: "No hay ninguna invitación pendiente que mostrar." - truncated: "Mostrando las primeras {{count}} invitaciones." redeemed: "Invitaciones aceptadas" redeemed_tab: "Usado" redeemed_tab_with_count: "Aceptadas ({{count}})" diff --git a/config/locales/client.fa_IR.yml b/config/locales/client.fa_IR.yml index 53bd89678e..06d2bd7984 100644 --- a/config/locales/client.fa_IR.yml +++ b/config/locales/client.fa_IR.yml @@ -464,7 +464,6 @@ fa_IR: search: "بنویسید تا فراخوانهها را جستجو کنید..." title: "فراخوانهها" user: "کاربر فراخوانده شده" - truncated: "نمایش {{count}} فراخوانهٔ نخست" redeemed: "آزاد سازی دعوتنامه" redeemed_tab: "آزاد شده" redeemed_at: "آزاد سازی" diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml index 068a927619..0b98358657 100644 --- a/config/locales/client.fi.yml +++ b/config/locales/client.fi.yml @@ -143,7 +143,7 @@ fi: admin_title: "Ylläpito" flags_title: "Liput" show_more: "näytä lisää" - show_help: "astukset" + show_help: "asetukset" links: "Linkit" links_lowercase: one: "linkki" @@ -557,7 +557,6 @@ fi: user: "Kutsuttu käyttäjä" sent: "Lähetetty" none: "Avoimia kutsuja ei ole." - truncated: "Näytetään ensimmäiset {{count}} kutsua." redeemed: "Hyväksytyt kutsut" redeemed_tab: "Hyväksytyt" redeemed_tab_with_count: "Hyväksytyt ({{count}})" @@ -1519,10 +1518,10 @@ fi: posts_lowercase: "viestejä" posts_long: "tässä ketjussa on {{number}} viestiä" posts_likes_MF: | - Tässä ketjussa on {count, plural, one {1 vastaus, jolla on} other {# vastausta, joilla on}} {ratio, select, - low {suuri määrä tykkäyksiä suhteessa viestien määrään} - med {erittäin suuri määrä tykkäyksiä suhteessa viestien määrään} - high {äärimmäisen suuri määrä tykkäyksiä suhteessa viestien määrään} + Tässä ketjussa on {count, plural, one {1 vastaus} other {# vastausta}} {ratio, select, + low {, joilla on suuri määrä tykkäyksiä suhteessa viestien määrään} + med {, joilla on erittäin suuri määrä tykkäyksiä suhteessa viestien määrään} + high {, joilla on äärimmäisen suuri määrä tykkäyksiä suhteessa viestien määrään} other {}} original_post: "Aloitusviesti" views: "Katselut" @@ -2420,7 +2419,7 @@ fi: lightbox: download: "lataa" search_help: - title: 'Etsi ohjetta' + title: 'Haun ohje' keyboard_shortcuts_help: title: 'Näppäinoikotiet' jump_to: diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml index 84e11b5aea..1cc54b4c3a 100644 --- a/config/locales/client.fr.yml +++ b/config/locales/client.fr.yml @@ -557,7 +557,6 @@ fr: user: "Utilisateurs" sent: "Envoyé" none: "Il n'y a plus d'invitation en attente à afficher." - truncated: "Affichage des {{count}} premières invitations." redeemed: "Invitations acceptées" redeemed_tab: "Utilisés" redeemed_tab_with_count: "Invitations acceptées ({{count}})" diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index f6c5b7accd..dc7098909b 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -101,7 +101,7 @@ he: one: "אחרי שנה אחת" other: "אחרי {{count}}% שנים" share: - topic: 'שתפו קישור לנושא זה' + topic: 'שתפו קישור לפוסט זה' post: 'פרסום #%{postNumber}' close: 'סגור' twitter: 'שתפו קישור זה בטוויטר' @@ -109,6 +109,7 @@ he: google+: 'שתף קישור זה בגוגל+' email: 'שלח קישור בדוא"ל' action_codes: + split_topic: "פצל את הפוסט %{when}" autoclosed: enabled: 'סגר %{when}' disabled: 'פתח %{when}' @@ -127,9 +128,9 @@ he: visible: enabled: 'נכנס לרשימה %{when}' disabled: 'הוצא מהרשימה %{when}' - topic_admin_menu: "פעולות ניהול לנושא" + topic_admin_menu: "פעולות ניהול לפוסט" emails_are_disabled: "כל הדוא\"ל היוצא נוטרל באופן גורף על ידי מנהל אתר. שום הודעת דוא\"ל, מכל סוג שהוא, תשלח." - edit: 'ערוך את הכותרת והקטגוריה של הנושא' + edit: 'ערוך את הכותרת והקטגוריה של הפוסט' not_implemented: "סליחה, תכונה זו עדיין לא מומשה!" no_value: "לא" yes_value: "כן" @@ -171,7 +172,7 @@ he: one: "תו אחד" other: "{{count}} תווים" suggested_topics: - title: "נושאים מוצעים" + title: "פוסטים מוצעים" about: simple_title: "אודות" title: "אודות %{title}" @@ -183,7 +184,7 @@ he: last_7_days: "7 הימים האחרונים" last_30_days: "ב-30 הימים האחרונים" like_count: "לייקים" - topic_count: "נושאים" + topic_count: "פוסטים" post_count: "פרסומים" user_count: "חדשים" active_user_count: "משתמשים פעילים" @@ -193,24 +194,24 @@ he: title: "סימניה" clear_bookmarks: "ניקוי סימניות" help: - bookmark: "הקליקו כדי ליצור סימניה לפרסום הראשון בנושא זה" - unbookmark: "הקליקו להסרת כל הסימניות בנושא זה" + bookmark: "הקליקו כדי ליצור סימניה לפרסום הראשון בפוסט זה" + unbookmark: "הקליקו להסרת כל הסימניות בפוסט זה" bookmarks: not_logged_in: "סליחה, עליך להיות מחובר כדי להוסיף פוסט למועדפים" created: "סימנת הודעה זו כמועדפת" not_bookmarked: "קראת הודעה זו, לחץ להוספה למועדפים" last_read: "זו ההודעה האחרונה שקראת, לחץ להוספה למועדפים" remove: "הסר מהמועדפים" - confirm_clear: "האם את/ה בטוחים שאתם מעוניינים לנקות את כל הסימניות מנושא זה?" + confirm_clear: "האם את/ה בטוחים שאתם מעוניינים לנקות את כל הסימניות מפוסט זה?" topic_count_latest: - one: "נושא חדש או עדכון {{count}} ." - other: "{{count}} נושאים חדשים או עדכונים." + one: "פוסט חדש או עדכון {{count}} ." + other: "{{count}} פוסטים חדשים או עדכונים." topic_count_unread: one: "נושא שלא נקרא {{count}}." - other: "{{count}} נושאים שלא נקראו." + other: "{{count}} פוסטים שלא נקראו." topic_count_new: - one: "נושא {{count}} חדש." - other: "{{count}} נושאים חדשים." + one: "פוסט {{count}} חדש." + other: "{{count}} פוסטים חדשים." click_to_show: "הקליקו כדי להציג." preview: "תצוגה מקדימה" cancel: "ביטול" @@ -227,16 +228,17 @@ he: revert: "לחזור" failed: "נכשל" switch_to_anon: "מצב אנונימי" + switch_from_anon: "צא ממצב אנונימי" banner: close: "שחרור באנר זה." edit: "ערוך את הבאנר" choose_topic: - none_found: "לא נמצאו נושאים." + none_found: "לא נמצאו פוסטים." title: - search: "חפש נושא לפי שם, כתובת או מזהה:" - placeholder: "הקלד את כותרת הנושא כאן" + search: "חפש פוסט לפי שם, כתובת או מזהה:" + placeholder: "הקלד את כותרת הפוסט כאן" queue: - topic: "נושא:" + topic: "פוסט:" approve: 'לאשר' reject: 'לדחות' delete_user: 'מחק משתמש' @@ -247,7 +249,7 @@ he: view_pending: "הצג הודעות ממתינות" has_pending_posts: one: " בנושא זה ישנה הודעה אחת הממתינה לאישור" - other: "בנושא זה ישנם {{count}} הודעות הממתינות לאישור" + other: "בפוסט זה ישנם {{count}} הודעות הממתינות לאישור" confirm: "שמור שינויים" delete_prompt: "אתה בטוח שאתה רוצה למחוק את המשתמש %{username}? פעולה זו תמחק את כל ההודעות , תחסום את הדואר האלקטרוני וכתובת ה-IP של המשתמש." approval: @@ -258,12 +260,12 @@ he: other: "יש לך {{count}} הודעות ממתינות." ok: "אשר" user_action: - user_posted_topic: "{{user}} פרסם את הנושא" - you_posted_topic: "את/ה פרסמת את הנושא" + user_posted_topic: "{{user}} פרסם את הפוסט" + you_posted_topic: "את/ה פרסמת את הפוסט" user_replied_to_post: "{{user}} הגיב ל: {{post_number}}" you_replied_to_post: "את/ה הגבת ל: {{post_number}}" - user_replied_to_topic: "{{user}} הגיב לנושא הזה" - you_replied_to_topic: "את/ה הגבת לנושא הזה" + user_replied_to_topic: "{{user}} הגיב לפוסט הזה" + you_replied_to_topic: "את/ה הגבת לפוסט הזה" user_mentioned_user: "{{user}} הזכיר את {{another_user}}" user_mentioned_you: "{{user}} הזכיר אותך" you_mentioned_user: "את/ה הזכרת את {{another_user}}" @@ -277,10 +279,10 @@ he: likes_given: "ניתנ/ו" likes_received: "התקבל/ו" topics_entered: "כניסות" - topics_entered_long: "נושאים אליהם נכנסת" + topics_entered_long: "פוסטים אליהם נכנסת" time_read: "זמן קריאה" - topic_count: "נושאים" - topic_count_long: "נושאים שנוצרו" + topic_count: "פוסטים" + topic_count_long: "פוסטים שנוצרו" post_count: "תגובות" post_count_long: "תגובות שפורסמו" no_results: "לא נמצאו תוצאות" @@ -312,7 +314,7 @@ he: '1': "לייקים שניתנו" '2': "לייקים שהתקבלו" '3': "מועדפים" - '4': "נושאים" + '4': "פוסטים" '5': "תשובות" '6': "תגובות" '7': "אזכורים" @@ -336,15 +338,15 @@ he: apply_all: "הפעל" position: "מיקום" posts: "פרסומים" - topics: "נושאים" + topics: "פוסטים" latest: "לאחרונה" latest_by: "לאחרונה על ידי" toggle_ordering: "שנה בקר סדר" subcategories: "תתי קטגוריות" - topic_stats: "מספר הנושאים החדשים." + topic_stats: "מספר הפוסטים החדשים." topic_stat_sentence: - one: "נושא חדש אחד ב-%{unit}." - other: "%{count} נושאים חדשים ב-%{unit}." + one: "פוסט חדש אחד ב-%{unit}." + other: "%{count} פוסטים חדשים ב-%{unit}." post_stats: "מספר ההודעות החדשות." post_stat_sentence: one: "הודעה חדשה אחת ב-%{unit}." @@ -361,11 +363,11 @@ he: username: "שם משתמש" trust_level: "TL" read_time: "זמן צפייה" - topics_entered: "כניסה לנושאים" + topics_entered: "כניסה לפוסטים" post_count: "# פרסומים" confirm_delete_other_accounts: "אתה בטוח שברצונך למחוק חשבונות אלו?" user_fields: - none: "(בחר נושא)" + none: "(בחר אפשרות)" user: said: "{{username}}:" profile: "פרופיל" @@ -397,7 +399,7 @@ he: dismiss_notifications: "סימון הכל כנקרא" dismiss_notifications_tooltip: "סימון כל ההתראות שלא נקראו כהתראות שנקראו" disable_jump_reply: "אל תקפצו לפרסומים שלי לאחר שאני משיב/ה" - dynamic_favicon: "הצג את מספר נושאים חדשים/מעודכנים על האייקון של הדפדפן" + dynamic_favicon: "הצג את מספר פוסטים חדשים/מעודכנים על האייקון של הדפדפן" edit_history_public: "אפשרו למשתמשים אחרים לראות את תיקוני הפרסומים שלי" external_links_in_new_tab: "פתח את כל הקישורים החיצוניים בעמוד חדש" enable_quoting: "אפשרו תגובת ציטוט לטקסט מסומן" @@ -410,11 +412,11 @@ he: suspended_notice: "המשתמש הזה מושעה עד לתאריך: {{date}}." suspended_reason: "הסיבה: " github_profile: "גיטהאב" - mailing_list_mode: "שלחו לי דוא\"ל על כל פרסום חדש (אלא אם אשתיק את המעקב אחר הנושא או הקטגוריה)" + mailing_list_mode: "שלחו לי דוא\"ל על כל פרסום חדש (אלא אם אשתיק את המעקב אחר הפוסט או הקטגוריה)" watched_categories: "עוקב" - watched_categories_instructions: "תעקבו באופן אוטומטי אחרי כל הנושאים החדשים בקטגוריות אלה. תקבלו התראה על כל פרסום ונושא חדש." + watched_categories_instructions: "תעקבו באופן אוטומטי אחרי כל הפוסטים החדשים בקטגוריות אלה. תקבלו התראה על כל פרסום ופוסט חדש." tracked_categories: "רגיל+" - tracked_categories_instructions: "בקטגוריות אלה סך הפרסומים החדשים שלא נקראו יופיע לצד שם הנושא." + tracked_categories_instructions: "בקטגוריות אלה סך הפרסומים החדשים שלא נקראו יופיע לצד שם הפוסט." muted_categories: "מושתק" muted_categories_instructions: "לא תקבלו התראות על נושאים חדשים בקטגוריות אלו, והם לא יופיעו בעמוד הלא נקראו שלך." delete_account: "מחק את החשבון שלי" @@ -525,20 +527,20 @@ he: every_three_days: "כל שלושה ימים" weekly: "שבועית" every_two_weeks: "כל שבועיים" - email_direct: "שלחו לי דוא\"ל כשמישהו/י מצטטים אותי, מגיבם לפרסום שלי, מזכירים את @שם_המשתמש/ת שלי, או מזמינים אותי לנושא" + email_direct: "שלחו לי דוא\"ל כשמישהו/י מצטטים אותי, מגיבם לפרסום שלי, מזכירים את @שם_המשתמש/ת שלי, או מזמינים אותי לפוסט" email_private_messages: "שלחו לי דוא\"ל כשמישהו/י שולחים לי מסר" email_always: "שלח לי נוטיפקציות מייל גם כשאני פעיל/ה באתר. " other_settings: "אחר" categories_settings: "קטגוריות" new_topic_duration: - label: "נושא יחשב כנושא חדש כאשר" + label: "פוסט יחשב כפוסט חדש כאשר" not_viewed: "עוד לא ראיתי אותם" last_here: "נוצרו מאז הביקור האחרון שלי כאן" after_1_day: "נוצר ביום האחרון" after_2_days: "נוצר במהלך היומיים האחרונים" after_1_week: "נוצר במהלך השבוע האחרון" after_2_weeks: "נוצר בשבועיים האחרונים" - auto_track_topics: "מעקב אוטומטי נושאים אליהם נכנסתי" + auto_track_topics: "מעקב אוטומטי פוסטים אליהם נכנסתי" auto_track_options: never: "אף פעם" immediately: "מיידי" @@ -555,7 +557,9 @@ he: user: "משתמש/ת שהוזמנו" sent: "נשלח" none: "אין הזמנות ממתינות להציג" - truncated: "מראה את {{count}} ההזמנות הראשונות." + truncated: + one: "מראה את ההזמנה הראשונה." + other: "מראה את {{count}} ההזמנות הראשונות." redeemed: "הזמנות נוצלו" redeemed_tab: "נענו" redeemed_tab_with_count: "נוצלו ({{count}})" @@ -563,7 +567,7 @@ he: pending: "הזמנות ממתינות" pending_tab: "ממתין" pending_tab_with_count: "ממתינות ({{count}})" - topics_entered: "נושאים נצפו" + topics_entered: "פוסטים נצפו" posts_read_count: "הודעות נקראו" expired: "פג תוקף ההזמנה." rescind: "הסרה" @@ -606,7 +610,7 @@ he: posted_by: "פורסם על ידי" sent_by: "נשלח על ידי" private_message: "הודעה" - the_topic: "הנושא" + the_topic: "הפוסט" loading: "טוען..." errors: prev_page: "בזמן הניסיון לטעון" @@ -615,11 +619,13 @@ he: server: "שגיאת שרת" forbidden: "תקלת גישה" unknown: "תקלה" + not_found: "העמוד אותו אתה מחפש לא נמצא" desc: network: "אנא בדקו את החיבור שלכם" network_fixed: "נראה שזה חזר לעבוד." server: "קוד שגיאה: {{status}}" forbidden: "אינך רשא/ית לצפות בזה." + not_found: "אופס, ניסינו לטעון עמוד שאיננו קיים." unknown: "משהו השתבש." buttons: back: "חזרה" @@ -632,13 +638,16 @@ he: read_only_mode: enabled: "מופעל מצב קריאה בלבד. אפשר להמשיך לגלוש באתר, אך חלק מהפעולות עלולות לא לעבוד." login_disabled: "התחברות אינה מתאפשרת כשהאתר במצב קריאה בלבד." + too_few_topics_and_posts_notice: "בוא נתחיל את הדיון הזה! יש כרגע %{currentTopics} / %{requiredTopics} נושאים ו-%{currentPosts} / %{requiredPosts} הודעות. אורחים חדשים צריכים כמה דיונים לקרוא ולהגיב אליהם." + too_few_topics_notice: "בוא נתחיל את הדיון הזה! יש כרגע %{currentTopics} / %{requiredTopics} נושאים. אורחים חדשים צריכים כמה דיונים לקרוא ולהגיב אליהם." + too_few_posts_notice: "בוא נתחיל את הדיון הזה! יש כרגע %{currentPosts} / %{requiredPosts} הודעות. אורחים חדשים צריכים כמה דיונים לקרוא ולהגיב אליהם." learn_more: "למד עוד..." year: 'שנה' - year_desc: 'נושאים שפורסמו ב-365 הימים האחרונים' + year_desc: 'פוסטים שפורסמו ב-365 הימים האחרונים' month: 'חודש' - month_desc: 'נושאים שפורסמו ב-30 הימים האחרונים' + month_desc: 'פוסטים שפורסמו ב-30 הימים האחרונים' week: 'שבוע' - week_desc: 'נושאים שפורסמו ב-7 הימים האחרונים' + week_desc: 'פוסטים שפורסמו ב-7 הימים האחרונים' day: 'יום' first_post: הודעה ראשונה mute: השתק @@ -648,15 +657,27 @@ he: replies_lowercase: one: תגובה other: תגובות + signup_cta: + sign_up: "הרשמה" + hide_session: "הזכר לי מחר" + hide_forever: "לא תודה" + hidden_for_session: "אוקי, אשאל אותך מחר. אתה גם תמיד יכול להשתמש ב'התחבר' כדי ליצור משתמש." + intro: "שלום לך :heart_eyes: זה נראה כאילו אתה נהנה מקריאה אבל אתה לא רשום." + value_prop: "כשאתה נרשם, אנחנו זוכרים בדיוק מה קראת כך כשאתה חוזר אתה ממשיך בדיוק מאיפה שהפסקת. בנוסף אתה תקבל התראות דרך האתר ודרך הדואר האלקטרוני שלך כשפוסטים חדשים נוצרים ועוד משהו, אתה יכול לעשות לייק לפוסטים שאהבת. :heartbeat:" + methods: + sso: "להירשם זה קל: כל מה שאתה צריך זה משתמש באתר הראשי." + only_email: "להירשם זה קל: כל מה שאתה צריך זה אימייל וסיסמה." + only_other: "השתמש במשתמש %{provider} שלך כדי להירשם." + one_and_email: "השתמש במשתמש %{provider} שלך, או כתוב אימייל וסיסמה כדי להירשם." summary: - enabled_description: "אתם צופים בסיכום נושא זה: הפרסומים המעניינים ביותר כפי שסומנו על ידי הקהילה." + enabled_description: "אתם צופים בסיכום פוסט זה: הפרסומים המעניינים ביותר כפי שסומנו על ידי הקהילה." description: "ישנן {{count}} תגובות" description_time: "ישנן {{count}} תגובות, עם הערכת זמן קריאה של כ- {{readingTime}} דקות ." - enable: 'סכם נושא זה' + enable: 'סכם פוסט זה' disable: 'הצג את כל ההודעות' deleted_filter: - enabled_description: "נושא זה מכיל פרסומים שנמחקו ולכן אינם מוצגים." - disabled_description: "פרסומים שנמחקו בנושא זה מוצגים כעת." + enabled_description: "פוסט זה מכיל פרסומים שנמחקו ולכן אינם מוצגים." + disabled_description: "פרסומים שנמחקו בפוסט זה מוצגים כעת." enable: "הסתר פרסומים שנמחקו" disable: "הצגת פרסומים שנמחקו" private_message_info: @@ -729,12 +750,14 @@ he: emoji_one: "Emoji One" composer: emoji: "Emoji :smile:" + more_emoji: "עוד..." + options: "אפשרויות" add_warning: "זוהי התראה רשמית." - posting_not_on_topic: "לאיזה נושא רצית להגיב?" + posting_not_on_topic: "לאיזה פוסט רצית להגיב?" saving_draft_tip: "שמירה..." saved_draft_tip: "נשמר" saved_local_draft_tip: "נשמר מקומית" - similar_topics: "הנושא שלך דומה ל..." + similar_topics: "הפוסט שלך דומה ל..." drafts_offline: "טיוטות מנותקות" error: title_missing: "יש להזין כותרת." @@ -745,11 +768,11 @@ he: try_like: 'האם ניסית את כפתור ה-' category_missing: "עליך לבחור קטגוריה." save_edit: "שמירת עריכה" - reply_original: "תגובה לנושא המקורי" + reply_original: "תגובה לפוסט המקורי" reply_here: "תגובה כאן" reply: "תגובה" cancel: "ביטול" - create_topic: "יצירת נושא" + create_topic: "יצירת פוסט" create_pm: "הודעה" title: "או לחץ Ctrl+Enter" users_placeholder: "הוספת משתמש" @@ -789,21 +812,21 @@ he: redo_title: "חזור" help: "עזרה על כתיבה ב-Markdown" toggler: "הסתר או הצג את פאנל העריכה" - admin_options_title: "אפשרויות צוות אופציונליות לנושא זה" + admin_options_title: "אפשרויות צוות אופציונליות לפוסט זה" auto_close: - label: "מועד סגירה אוטומטית של נושא:" + label: "מועד סגירה אוטומטית של פוסט:" error: "הזינו בבקשה ערך תקין." - based_on_last_post: "לא לסגור עד שהפרסום האחרון בנושא זה יהיה לפחות בגיל זה." + based_on_last_post: "לא לסגור עד שהפרסום האחרון בפוסט זה יהיה לפחות בגיל זה." all: examples: 'הזינו מספר שעות (24), שעה מדוייקת (17:30) או חותמת זמן (2013-11-22 14:00).' limited: units: "(# מספר שעות)" examples: 'הזינו מספר שעות (24).' notifications: - title: "התראות אודות אזכור @שם, תגובות לפרסומים ולנושאים שלך, הודעות וכו'" + title: "התראות אודות אזכור @שם, תגובות לפרסומים ולפוסטים שלך, הודעות וכו'" none: "לא ניתן לטעון כעת התראות." more: "הצגת התראות ישנות יותר" - total_flagged: "סך הכל נושאים מדוגללים" + total_flagged: "סך הכל פוסטים מדוגללים" mentioned: "
{{username}} {{description}}
" quoted: "{{username}} {{description}}
" replied: "{{username}} {{description}}
" @@ -826,7 +849,7 @@ he: liked: "אהב את הפרסום שלך" private_message: "הודעה פרטית מ" invited_to_private_message: "הזמנה להודעה פרטית מ" - invited_to_topic: "הוזמנת לנושא חדש מ" + invited_to_topic: "הוזמנת לפוסט חדש מ" invitee_accepted: "הזמנה התקבלה על ידי" moved_post: "הפרסום שלך הוזז על ידי" linked: "קישור לפרסום שלך" @@ -853,9 +876,17 @@ he: select_file: "בחר קובץ" image_link: "קישור לתמונה יצביע ל" search: + sort_by: "מיון על פי" + relevance: "רלוונטיות" + latest_post: "הפוסטים האחרונים" + most_viewed: "הנצפה ביותר" + most_liked: "האהובים ביותר" select_all: "בחר הכל" clear_all: "נקה הכל" - title: "חיפוש נושאים, פרסומים, משתמשים או קטגוריות" + result_count: + one: "תוצאה אחת ל \"{{term}}\"" + other: "{{count}} תוצאות ל \"{{term}}\"" + title: "חיפוש פוסטים, פרסומים, משתמשים או קטגוריות" no_results: "אין תוצאות." no_more_results: "לא נמצאו עוד תוצאות." search_help: עזרה בחיפוש @@ -864,9 +895,9 @@ he: context: user: "חיפוש פרסומים לפי @{{username}}" category: "חיפוש בקטגוריה \"{{category}}\"" - topic: "חפשו בנושא זה" + topic: "חפשו בפוסט זה" private_messages: "חיפוש הודעות" - hamburger_menu: "עבור לרשימת נושאים אחרת או קטגוריה" + hamburger_menu: "עבור לרשימת פוסטים אחרת או קטגוריה" new_item: "חדש" go_back: 'חזור אחורה' not_logged_in_user: 'עמוד משתמש עם סיכום פעילות נוכחית והעדפות' @@ -874,19 +905,19 @@ he: topics: bulk: reset_read: "איפוס נקראו" - delete: "מחיקת נושאים" + delete: "מחיקת פוסטים" dismiss_posts: "ביטול פרסומים" - dismiss_posts_tooltip: "ניקוי ספירת הלא-נקראים בנושאים אלו, תווך המשך הצגתם ברשימת הלא נקראים כאשר נוספים פרסומים חדשים" - dismiss_topics: "דחיית נושאים" - dismiss_topics_tooltip: "הפסקת הצגת נושאים אלו ברשימת הלא-נקראו האישית כאשר נוספים פרסומים חדשים" + dismiss_posts_tooltip: "ניקוי ספירת הלא-נקראים בפוסטים אלו, תווך המשך הצגתם ברשימת הלא נקראים כאשר נוספים פרסומים חדשים" + dismiss_topics: "דחיית פוסטים" + dismiss_topics_tooltip: "הפסקת הצגת פוסטים אלו ברשימת הלא-נקראו האישית כאשר נוספים פרסומים חדשים" dismiss_new: "שחרור חדשים" - toggle: "החלף קבוצה מסומנת של נושאים" + toggle: "החלף קבוצה מסומנת של פוסטים" actions: "מקבץ פעולות" change_category: "שינוי קטגוריה" - close_topics: "סגירת נושאים" - archive_topics: "ארכיון הנושאים" + close_topics: "סגירת פוסטים" + archive_topics: "ארכיון הפוסטים" notification_level: "שינוי רמת התראה" - choose_new_category: "בחרו את הקטגוריה עבור הנושאים:" + choose_new_category: "בחרו את הקטגוריה עבור הפוסטים:" selected: one: "בחרת נושא אחד." other: "בחרת {{count}} נושאים." @@ -895,86 +926,86 @@ he: new: "אין לך נושאים חדשים." read: "עדיין לא קראת אף נושא." posted: "עדיין לא פרסמת באף נושא." - latest: "אין נושאים מדוברים. זה עצוב." - hot: "אין נושאים חמים." - bookmarks: "אין לך עדיין סימניות לנושאים." - category: "אין נושאים בקטגוריה {{category}}." - top: "אין נושאים מובילים." + latest: "אין פוסטים מדוברים. זה עצוב." + hot: "אין פוסטים חמים." + bookmarks: "אין לך עדיין סימניות לפוסטים." + category: "אין פוסטים בקטגוריה {{category}}." + top: "אין פוסטים מובילים." search: "אין תוצאות חיפוש" educate: - new: 'הנושאים החדשים שלך יופיעו כאן.
כברירת מחדל, נושאים נחשבים חדשים ויופיעו עם האינדיקציה חדש אם הם נוצרו ב-2 הימים האחרונים. .
תוכלו לשנות זאת ב העדפות .
' - unread: 'הנושאים הלא-נקראים שלך מופיעים כאן.
כברירת מחדל נושאים נחשבים ככאלה שלא נקראו ויוצגו כ- 1 אם את/ה:
או אם כיוונתם את הנושא הזה להיות תחת מעקב או צפייה באמצעות כפתור ההתראות שבתחתית כל נושא.
את/ה יכולים לשנות זאת בהעדפות.
' + new: 'הפוסטים החדשים שלך יופיעו כאן.
כברירת מחדל, פוסטים נחשבים חדשים ויופיעו עם האינדיקציה חדש אם הם נוצרו ב-2 הימים האחרונים. .
תוכלו לשנות זאת ב העדפות .
' + unread: 'הפוסטים הלא-נקראים שלך מופיעים כאן.
כברירת מחדל פוסטים נחשבים ככאלה שלא נקראו ויוצגו כ- 1 אם את/ה:
או אם כיוונתם את הנושא הזה להיות תחת מעקב או צפייה באמצעות כפתור ההתראות שבתחתית כל פוסט.
את/ה יכולים לשנות זאת בהעדפות.
' bottom: - latest: "אין עוד נושאים מדוברים." - hot: "אין עוד נושאים חמים." - posted: "אין עוד נושאים שפורסמו." - read: "אין עוד נושאים שנקראו." - new: "אין עוד נושאים חדשים." - unread: "אין עוד נושאים שלא נקראו." - category: "אין עוד נושאים בקטגוריה {{category}}." - top: "אין עוד נושאים מובילים." - bookmarks: "אין עוד סימניות לנושאים." + latest: "אין עוד פוסטים מדוברים." + hot: "אין עוד פוסטים חמים." + posted: "אין עוד פוסטים שפורסמו." + read: "אין עוד פוסטים שנקראו." + new: "אין עוד פוסטים חדשים." + unread: "אין עוד פוסטים שלא נקראו." + category: "אין עוד פוסטים בקטגוריה {{category}}." + top: "אין עוד פוסטים מובילים." + bookmarks: "אין עוד סימניות לפוסטים." search: "אין עוד תוצאות חיפוש" topic: unsubscribe: stop_notifications: "תקבלו פחות התראות עבור {{title}}" change_notification_state: "מצב ההתראות הנוכחי שלך הוא" - filter_to: "{{post_count}} הודעות בנושא" - create: 'נושא חדש' - create_long: 'יצירת נושא חדש' + filter_to: "{{post_count}} הודעות בפוסט" + create: 'פוסט חדש' + create_long: 'יצירת פוסט חדש' private_message: 'תחילת הודעה' - list: 'נושאים' - new: 'נושא חדש' + list: 'פוסטים' + new: 'פוסט חדש' unread: 'לא נקרא/ו' new_topics: - one: 'נושא חדש אחד' - other: '{{count}} נושאים חדשים' + one: 'פוסט חדש אחד' + other: '{{count}} פוסטים חדשים' unread_topics: one: '1 שלא נקרא' - other: '{{count}} נושאים שלא נקראו' - title: 'נושא' + other: '{{count}} פוסטים שלא נקראו' + title: 'פוסט' invalid_access: - title: "הנושא פרטי" - description: "סליחה, איך אין לך גישה לנושא הזה!" - login_required: "עליכם להתחבר כדי לצפות בנושא זה." + title: "הפוסט פרטי" + description: "סליחה, איך אין לך גישה לפוסט הזה!" + login_required: "עליכם להתחבר כדי לצפות בפוסט זה." server_error: - title: "שגיאה בטעינת נושא" - description: "סליחה, לא יכולנו לטעון את הנושא הזה, ייתכן שבשל תקלת תקשורת. אנא נסי שוב. אם הבעיה נמשכת, הודיעו לנו." + title: "שגיאה בטעינת הפוסט" + description: "סליחה, לא יכולנו לטעון את הפוסט הזה, ייתכן שבשל תקלת תקשורת. אנא נסי שוב. אם הבעיה נמשכת, הודיעו לנו." not_found: - title: "נושא לא נמצא" - description: "סליחה, לא יכולנו למצוא את הנושא הזה. אולי הוא הוסר על ידי מנהל?" + title: "הפוסט לא נמצא" + description: "סליחה, לא יכולנו למצוא את הפוסט הזה. אולי הוא הוסר על ידי מנהל?" total_unread_posts: one: "יש לכם פרסום אחד שלא נקרא בנושא זה" - other: "יש לכם {{count}} פרסומים שלא נקראו בנושא זה" + other: "יש לכם {{count}} פרסומים שלא נקראו בפוסט זה" unread_posts: one: "יש לך הודעה אחת שלא נקראה בנושא הזה" - other: "יש לך {{count}} הודעות ישנות שלא נקראו בנושא הזה" + other: "יש לך {{count}} הודעות ישנות שלא נקראו בפוסט הזה" new_posts: one: "יש הודעה אחת חדשה בנושא הזה מאז שקראת אותו לאחרונה" - other: "יש {{count}} הודעות חדשות בנושא הזה מאז שקראת אותו לאחרונה" + other: "יש {{count}} הודעות חדשות בפוסט הזה מאז שקראת אותו לאחרונה" likes: one: "יש לייק אחד בנושא הזה" - other: "יש {{count}} לייקים בנושא הזה" - back_to_list: "חזרה לרשימת נושאים" - options: "אפשרויות נושא" - show_links: "הצג קישורים בתוך הנושא הזה" - toggle_information: "הצגת פרטי נושא" - read_more_in_category: "רוצה לקרוא עוד? עיין נושאים אחרים ב {{catLink}} או {{latestLink}}." + other: "יש {{count}} לייקים בפוסט הזה" + back_to_list: "חזרה לרשימת הפוסטים" + options: "אפשרויות פוסט" + show_links: "הצג קישורים בתוך הפוסט הזה" + toggle_information: "הצגת פרטי פוסט" + read_more_in_category: "רוצה לקרוא עוד? עיין פוסטים אחרים ב {{catLink}} או {{latestLink}}." read_more: "רוצה לקרוא עוד? {{catLink}} or {{latestLink}}." read_more_MF: "There { UNREAD, plural, =0 {} one { is 1 unread } other { are # unread } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false {is } other{}} 1 new topic} other { {BOTH, select, true{and } false {are } other{}} # new topics} } remaining, or {CATEGORY, select, true {browse other topics in {catLink}} false {{latestLink}} other {}}" browse_all_categories: עיין בכל הקטגוריות - view_latest_topics: הצגת נושאים מדוברים - suggest_create_topic: לחץ כאן כדי ליצור נושא חדש. + view_latest_topics: הצגת פוסטים מדוברים + suggest_create_topic: לחץ כאן כדי ליצור פוסט חדש. jump_reply_up: קפיצה לתגובה קודמת jump_reply_down: קפיצה לתגובה מאוחרת - deleted: "הנושא הזה נמחק" - auto_close_notice: "הנושא הזה ינעל אוטומטית %{timeLeft}." - auto_close_notice_based_on_last_post: "נושא זה ייסגר %{duration} אחר התגובה האחרונה." + deleted: "הפוסט הזה נמחק" + auto_close_notice: "הפוסט הזה ינעל אוטומטית %{timeLeft}." + auto_close_notice_based_on_last_post: "פוסט זה ייסגר %{duration} אחר התגובה האחרונה." auto_close_title: 'הגדרות נעילה אוטומטית' auto_close_save: "שמור" - auto_close_remove: "אל תנעל נושא זה אוטומטית" + auto_close_remove: "אל תנעל פוסט זה אוטומטית" progress: - title: התקדמות נושא + title: התקדמות פוסט go_top: "למעלה" go_bottom: "למטה" go: "קדימה" @@ -986,31 +1017,31 @@ he: notifications: reasons: '3_6': 'תקבלו התראות כיוון שאת/ה עוקב אחרי קטגוריה זו.' - '3_5': 'תקבל/י התראות כיוון שהתחלת לעקוב אחרי הנושא הזה אוטומטית.' - '3_2': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי נושא הזה.' - '3_1': 'תקבל/י התראות כיוון שאת/ה יצרת את הנושא הזה.' - '3': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי נושא זה.' + '3_5': 'תקבל/י התראות כיוון שהתחלת לעקוב אחרי הפוסט הזה אוטומטית.' + '3_2': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי הפוסט הזה.' + '3_1': 'תקבל/י התראות כיוון שאת/ה יצרת את הפוסט הזה.' + '3': 'תקבל/י התראות כיוון שאת/ה עוקב אחרי פוסט זה.' '2_8': 'תקבלו התראות כיוון שאת/ה צופה בקטגוריה הזו.' - '2_4': 'תקבל/י התראות כיוון שפרסמת תגובה לנושא הזה.' - '2_2': 'תקבל/י התראות כיוון שאת/ה צופה אחרי הנושא הזה.' - '2': 'תקבל/י התראות כיוון שקראת את הנושא הזה.' + '2_4': 'תקבל/י התראות כיוון שפרסמת תגובה לפוסט הזה.' + '2_2': 'תקבל/י התראות כיוון שאת/ה צופה אחרי הפוסט הזה.' + '2': 'תקבל/י התראות כיוון שקראת את הפוסט הזה.' '1_2': 'תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך.' '1': 'תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך.' '0_7': 'את/ה מתעלם/מתעלמת מכל ההתראות בקטגוריה זו.' - '0_2': 'אתה מתעלם מכל ההתראות בנושא זה.' - '0': 'אתה מתעלם מכל ההתראות בנושא זה.' + '0_2': 'אתה מתעלם מכל ההתראות בפוסט זה.' + '0': 'אתה מתעלם מכל ההתראות בפוסט זה.' watching_pm: title: "עוקב" description: "תקבל/י התראה על כל תגובה חדשה בהודעה זו. בנוסף מספר התגובות שלא נקראו יופיעו ליד ההודעה. " watching: title: "עוקב" - description: "תקבל/י התראה על כל תגובה חדשה בנושא זה ומספר התגובות החדשות יוצג. " + description: "תקבל/י התראה על כל תגובה חדשה בפוסט זה ומספר התגובות החדשות יוצג. " tracking_pm: title: "רגיל+" description: "כמו רגיל, בנוסף מספר התגובות החדשות יוצג ליד ההודעה. " tracking: title: "רגיל+" - description: "כמו רגיל, בנוסף מספר התגובות שלא נקראו יוצג לנושא זה. " + description: "כמו רגיל, בנוסף מספר התגובות שלא נקראו יוצג לפוסט זה. " regular: title: "רגיל" description: "תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך." @@ -1022,67 +1053,67 @@ he: description: "לעולם לא תקבל/י התראה בנוגע להודעה זו." muted: title: "מושתק" - description: "לעולם לא תקבל/י התראות על הנושא הזה, והוא לא יופיע בעמוד ה\"לא נקראו\" שלך." + description: "לעולם לא תקבל/י התראות על הפוסט הזה, והוא לא יופיע בעמוד ה\"לא נקראו\" שלך." actions: - recover: "שחזר נושא" - delete: "מחק נושא" - open: "פתח נושא" - close: "נעל נושא" + recover: "שחזר פוסט" + delete: "מחק פוסט" + open: "פתח פוסט" + close: "נעל פוסט" multi_select: "בחר/י פרסומים..." auto_close: "סגירה אוטומטית..." - pin: "נעיצת נושא.." - unpin: "שחרור נעיצת נושא..." - unarchive: "הוצא נושא מארכיון" - archive: "הכנס נושא לארכיון" + pin: "נעיצת פוסט.." + unpin: "שחרור נעיצת פוסט..." + unarchive: "הוצא פוסט מארכיון" + archive: "הכנס פוסט לארכיון" invisible: "הסתרה" visible: "גילוי" reset_read: "אפס מידע שנקרא" feature: - pin: "נעיצת נושא" - unpin: "שחרור נעיצת נושא" - pin_globally: "נעיצת נושא גלובלית" - make_banner: "באנר נושא" - remove_banner: "הסרת באנר נושא" + pin: "נעיצת פוסט" + unpin: "שחרור נעיצת פוסט" + pin_globally: "נעיצת פוסט גלובלית" + make_banner: "באנר פוסט" + remove_banner: "הסרת באנר פוסט" reply: title: 'תגובה' - help: 'החל בכתיבת הודעה לנושא זה' + help: 'החל בכתיבת הודעה לפוסט זה' clear_pin: title: "נקה נעיצה" - help: "נקה סטטוס נעוץ של נושא זה כדי שהוא לא יופיע עוד בראש רשימת הנושאים שלך" + help: "נקה סטטוס נעוץ של פוסט זה כדי שהוא לא יופיע עוד בראש רשימת הפוסטים שלך" share: title: 'שיתוף' - help: 'שתפו קישור לנושא זה' + help: 'שתפו קישור לפוסט זה' flag_topic: title: 'סימון' - help: 'סמנו נושא זה באופן פרטי לתשומת לב או שלחו התראה פרטית בנוגע אליו' - success_message: 'סמנת נושא זה בהצלחה.' + help: 'סמנו פוסט זה באופן פרטי לתשומת לב או שלחו התראה פרטית בנוגע אליו' + success_message: 'סמנת פוסט זה בהצלחה.' feature_topic: - title: "הצגת נושא זה" - pin: "גרמו לנושא זה להופיע בראש קטגוריה {{categoryLink}} עד" - confirm_pin: "יש לך כבר {{count}} נושאים נעוצים. מספר גדול מידי של נושאים נעוצים עשויים להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם רוצים להצמיד נושא נוסף בקטגוריה זו? " - unpin: "הסרת נושא זה מראש הקטגוריה {{categoryLink}}." - unpin_until: "גרמו לנושא זה להופיע בראש הקטגוריה {{categoryLink}} או המתן עד %{until}." - pin_note: "המשתמש/ת יכולים להסיר את הנושא באופן עצמאי עבור עצמם." - pin_validation: "דרוש תאריך על מנת לנעוץ את הנושא. " + title: "הצגת פוסט זה" + pin: "גרמו לפוסט זה להופיע בראש קטגוריה {{categoryLink}} עד" + confirm_pin: "יש לך כבר {{count}} פוסטים נעוצים. מספר גדול מידי של פוסטים נעוצים עשויים להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם רוצים להצמיד פוסט נוסף בקטגוריה זו? " + unpin: "הסרת פוסט זה מראש הקטגוריה {{categoryLink}}." + unpin_until: "גרמו לפוסט זה להופיע בראש הקטגוריה {{categoryLink}} או המתן עד %{until}." + pin_note: "המשתמש/ת יכולים להסיר את הפוסט באופן עצמאי עבור עצמם." + pin_validation: "דרוש תאריך על מנת לנעוץ את הפוסט. " already_pinned: - zero: "אין נושאים מוצמדים בקטגוריה {{categoryLink}}." - one: "נושאים שנעוצים ב {{categoryLink}}: 1." - other: "נושאים שנעוצים ב{{categoryLink}}: {{count}}." - pin_globally: "גרמו לנושא זה להופיע בראש כל רשימות הנושאים עד" - confirm_pin_globally: "יש לך כבר {{count}} נושאים המוצמדים באופן גלובאלי. עודף נושאים מוצמדים עשוי להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם מעוניינים להצמיד נושא גלובאלי נוסף?" - unpin_globally: "הסרת נושא זה מראש כל רשימות הנושאים." - unpin_globally_until: "הסרת נושא זה מראש כל רשימות הנושאים או המתינו עד %{until}." - global_pin_note: "משתמשים יכולים להסיר את הצמדת הנושא באופן עצמאי לעצמם." + zero: "אין פוסטים מוצמדים בקטגוריה {{categoryLink}}." + one: "פוסטים שנעוצים ב {{categoryLink}}: 1." + other: "פוסטים שנעוצים ב{{categoryLink}}: {{count}}." + pin_globally: "גרמו לפוסט זה להופיע בראש כל רשימות הפוסטים עד" + confirm_pin_globally: "יש לך כבר {{count}} פוסטים המוצמדים באופן גלובאלי. עודף פוסטים מוצמדים עשוי להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם מעוניינים להצמיד פוסט גלובאלי נוסף?" + unpin_globally: "הסרת פוסט זה מראש כל רשימות הפוסטים." + unpin_globally_until: "הסרת פוסט זה מראש כל רשימות הפוסטים או המתינו עד %{until}." + global_pin_note: "משתמשים יכולים להסיר את הצמדת הפוסט באופן עצמאי לעצמם." already_pinned_globally: - zero: "אין נושאים המוצמדים באופן גלובלי." - one: "נושאים שכרגע נעוצים גלובלית: 1." - other: "נושאים שכרגע מוצמדים גלובלית: {{count}}." - make_banner: "הפכו נושא זה לבאנר אשר מופיע בראש כל העמודים." + zero: "אין פוסטים המוצמדים באופן גלובלי." + one: "פוסטים שכרגע נעוצים גלובלית: 1." + other: "פוסטים שכרגע מוצמדים גלובלית: {{count}}." + make_banner: "הפכו פוסט זה לבאנר אשר מופיע בראש כל העמודים." remove_banner: "הסרת הבאנר שמופיע בראש כל העמודים." - banner_note: "משתמשים יכולים לבטל את הבאנר על ידי סגירתו. רק נושא אחד יכול לשמש כבאנר בזמן נתון." + banner_note: "משתמשים יכולים לבטל את הבאנר על ידי סגירתו. רק פוסט אחד יכול לשמש כבאנר בזמן נתון." already_banner: - zero: "לא מוגדר באנר נושא" - one: "יש כרגע באנר נושאי." + zero: "לא מוגדר באנר פוסט" + one: "יש כרגע באנר פוסט." inviting: "מזמין..." automatically_add_to_groups_optional: "הזמנה זו כוללת גישה לקבוצות הללו: (אופציונלי, רק מנהל/ת)" automatically_add_to_groups_required: "הזמנה זו כוללת גישה לקבוצות הללו: (חובה, רק מנהל/ת)" @@ -1098,16 +1129,16 @@ he: title: 'הזמנה' username_placeholder: "שם משתמש" action: 'שלח הזמנה' - help: 'הזמן אנשים אחרים לנושא זה דרך דואר אלקטרוני או התראות' + help: 'הזמן אנשים אחרים לפוסט זה דרך דואר אלקטרוני או התראות' to_forum: "נשלח מייל קצר המאפשר לחברך להצטרף באופן מיידי באמצעות לחיצה על קישור, ללא צורך בהתחברות למערכת הפורומים." - sso_enabled: "הכנס את שם המשתמש של האדם שברצונך להזמין לנושא זה." - to_topic_blank: "הכנס את שם המשתמש או כתובת דואר האלקטרוני של האדם שברצונך להזמין לנושא זה." - to_topic_email: "הזנת כתובת אימייל. אנחנו נשלח הזמנה שתאפשר לחברך להשיב לנושא הזה." - to_topic_username: "הזנת שם משתמש/ת. נשלח התראה עם לינק הזמנה לנושא הזה. " - to_username: "הכנסת את שם המשתמש של האדם שברצונך להזמין. אנו נשלח התראה למשתמש זה עם קישור המזמין אותו לנושא זה." + sso_enabled: "הכנס את שם המשתמש של האדם שברצונך להזמין לפוסט זה." + to_topic_blank: "הכנס את שם המשתמש או כתובת דואר האלקטרוני של האדם שברצונך להזמין לפוסט זה." + to_topic_email: "הזנת כתובת אימייל. אנחנו נשלח הזמנה שתאפשר לחברך להשיב לפוסט הזה." + to_topic_username: "הזנת שם משתמש/ת. נשלח התראה עם לינק הזמנה לפוסט הזה. " + to_username: "הכנסת את שם המשתמש של האדם שברצונך להזמין. אנו נשלח התראה למשתמש זה עם קישור המזמין אותו לפוסט זה." email_placeholder: 'name@example.com' success_email: "שלחנו הזמנה ל: {{emailOrUsername}}. נודיע לך כשהזמנה תענה. בדוק את טאב ההזמנות בעמוד המשתמש שלך בשביל לעקוב אחרי ההזמנות ששלחת. " - success_username: "הזמנו את המשתמש להשתתף בנושא." + success_username: "הזמנו את המשתמש להשתתף בפוסט." error: "מצטערים, לא יכלנו להזמין האיש הזה. אולי הוא כבר הוזמן בעבר? (תדירות שליחת ההזמנות מוגבלת)" login_reply: 'התחברו כדי להשיב' filters: @@ -1116,20 +1147,20 @@ he: other: "{{count}} הודעות" cancel: "הסרת הסינון" split_topic: - title: "העבר לנושא חדש" - action: "העבר לנושא חדש" - topic_name: "שם הנושא החדש" - error: "הייתה שגיאה בהעברת ההודעות לנושא החדש." + title: "העבר לפוסט חדש" + action: "העבר לפוסט חדש" + topic_name: "שם הפוסט החדש" + error: "הייתה שגיאה בהעברת ההודעות לפוסט החדש." instructions: - one: "אתה עומד ליצור נושא חדש ולמלא אותו עם ההודעה שבחרת." - other: "אתה עומד ליצור נושא חדש ולמלא אותו עם {{count}} ההודעות שבחרת." + one: "אתה עומד ליצור פוסט חדש ולמלא אותו עם ההודעה שבחרת." + other: "אתה עומד ליצור פוסט חדש ולמלא אותו עם {{count}} ההודעות שבחרת." merge_topic: - title: "העבר לנושא קיים" - action: "העבר לנושא קיים" - error: "התרחשה שגיאה בהעברת ההודעות לנושא הזה." + title: "העבר לפוסט קיים" + action: "העבר לפוסט קיים" + error: "התרחשה שגיאה בהעברת ההודעות לפוסט הזה." instructions: one: "בבקשה בחר נושא אליו הייתי רוצה להעביר את ההודעה" - other: "בבקשה בחר את הנושא אליו תרצה להעביר את {{count}} ההודעות." + other: "בבקשה בחר את הפוסט אליו תרצה להעביר את {{count}} ההודעות." change_owner: title: "שנה בעלים של הודעות" action: "שנה בעלות" @@ -1144,8 +1175,8 @@ he: title: "שנה חותמת זמן" action: "זנה חותמת זמן" invalid_timestamp: "חותמת זמן לא יכולה להיות בעתיד" - error: "הייתה שגיאה בשינוי חותמת הזמן של הנושא" - instructions: "אנא בחרו את חותמת הזמן החדשה של הנושא. פרסומים בנושא יועדכנו לאותם הפרשי זמנים." + error: "הייתה שגיאה בשינוי חותמת הזמן של הפוסט" + instructions: "אנא בחרו את חותמת הזמן החדשה של הפוסט. פרסומים בפוסט יועדכנו לאותם הפרשי זמנים." multi_select: select: 'בחירה' selected: 'נבחרו ({{count}})' @@ -1165,7 +1196,7 @@ he: edit_reason: "סיבה: " post_number: "הודעה {{number}}" last_edited_on: "הודעה נערכה לאחרונה ב" - reply_as_new_topic: "תגובה כנושא מקושר" + reply_as_new_topic: "תגובה כפוסט מקושר" continue_discussion: "ממשיך את הדיון מ {{postLink}}:" follow_quote: "מעבר להודעה המצוטטת" show_full: "הראה הודעה מלאה" @@ -1260,7 +1291,7 @@ he: like: "בטל לייק" vote: "בטל הצבעה" people: - off_topic: "{{icons}} סומן כמחוץ לנושא" + off_topic: "{{icons}} סומן כמחוץ לנושא הפוסט" spam: "{{icons}} סומן כספאם" spam_with_url: "{{icons}} סימון של זה כספאם " inappropriate: "{{icons}} סומן בלתי ראוי" @@ -1272,7 +1303,7 @@ he: like: "{{icons}} נתנו לייק" vote: "{{icons}} הצביעו עבור זה" by_you: - off_topic: "סמ נת פרסום זה כמחוץ לנושא" + off_topic: "סמנת פרסום זה כמחוץ לנושא הפוסט" spam: "סמנת את זה כספאם" inappropriate: "סמנת את זה כלא ראוי" notify_moderators: "סמנת את זה עבור המנהלים" @@ -1283,7 +1314,7 @@ he: by_you_and_others: off_topic: one: "אתה ועוד אחד דגללתם את זה כאוף-טופיק" - other: "את/ה ועוד {{count}} אנשים אחרים סמנתם את זה כמחוץ לנושא" + other: "את/ה ועוד {{count}} אנשים אחרים סמנתם את זה כמחוץ לנושא הפוסט" spam: one: "אתה ועוד אחד דגללתם את זה כספאם" other: "את/ה ועוד {{count}} אנשים אחרים סמנתם את זה כספאם" @@ -1364,10 +1395,10 @@ he: choose: 'בחר קטגוריה…' edit: 'ערוך' edit_long: "עריכה" - view: 'הצג נושאים בקטגוריה' + view: 'הצג פוסטים בקטגוריה' general: 'כללי' settings: 'הגדרות' - topic_template: "תבנית נושא" + topic_template: "תבנית פוסט" delete: 'מחק קטגוריה' create: 'קטגוריה חדשה' create_long: 'צור קטגוריה חדשה' @@ -1395,11 +1426,11 @@ he: security: "אבטחה" special_warning: "Warning: This category is a pre-seeded category and the security settings cannot be edited. If you do not wish to use this category, delete it instead of repurposing it." images: "תמונות" - auto_close_label: "נעל נושאים אוטומטית אחרי:" + auto_close_label: "נעל פוסטים אוטומטית אחרי:" auto_close_units: "שעות" email_in: "כתובת דואר נכנס מותאמת אישית:" email_in_allow_strangers: "קבלת דוא\"ל ממשתמשים אנונימיים ללא חשבונות במערכת הפורומים" - email_in_disabled: "האפשרות פרסום נושאים חדשים דרך הדוא\"ל נוטרלה דרך הגדרות האתר. לאפשר פרסום באמצעות משלוח דוא\"ל." + email_in_disabled: "האפשרות פרסום פוסטים חדשים דרך הדוא\"ל נוטרלה דרך הגדרות האתר. לאפשר פרסום באמצעות משלוח דוא\"ל." email_in_disabled_click: 'אפשרו את את ההגדרה "דוא"ל נכנס"' suppress_from_homepage: "הרחק קטגוריה זו מהעמוד הראשי" allow_badges_label: "הרשו לתגים (badges) להיות מוענקים בקטגוריה זו" @@ -1414,12 +1445,16 @@ he: notifications: watching: title: "עוקב" + description: "אתה תצפה באופן אוטומטי בכל הנושאים החדשים בקטגוריות אלה. תקבל התראות על כל הודעה חדשה בכל נושא, ומונה תגובות חדשות יופיע." tracking: title: "רגיל+" + description: "אתה תעקוב באופן אוטומטי בכל הנושאים החדשים בקטגוריות אלה. תקבל התראות אם מישהו ציין את @שמך או מגיב לך, ומונה תגובות חדשות יופיע." regular: + title: "נורמלי" description: "תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך." muted: title: "מושתק" + description: " אתה לעולם לא תקבל התראות על פוסטים חדשים מקטגוריות אלו והם לא יופיעו בטאב ״לא נקראו״." flagging: title: 'תודה על עזרתך לשמירה על תרבות הקהילה שלנו!' private_reminder: 'דגלים הם פרטיים וניתנים לצפייה ע"י הצוות בלבד' @@ -1427,7 +1462,7 @@ he: take_action: "בצע פעולה" notify_action: 'הודעה' delete_spammer: "מחק ספאמר" - delete_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} נושאים של המשתמש הזה, להסיר את החשבון שלהם, לחסור הרשמה מכתובת ה-IP שלהם %{ip_address}, ולהוסיף את כתובת הדואר האלקטרוני %{email} לרשימה שחורה. אתה בטוח שזה באמת ספאמר?" + delete_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} פוסטים של המשתמש הזה, להסיר את החשבון שלהם, לחסור הרשמה מכתובת ה-IP שלהם %{ip_address}, ולהוסיף את כתובת הדואר האלקטרוני %{email} לרשימה שחורה. אתה בטוח שזה באמת ספאמר?" yes_delete_spammer: "כן, מחק ספאמר" ip_address_missing: "(N/A)" hidden_email_address: "(מוסתר)" @@ -1435,7 +1470,7 @@ he: take_action_tooltip: "הגעה באופן מיידי למספר הסימונים האפשרי, במקום להמתין לסימונים נוספים מן הקהילה" cant: "סליחה, לא ניתן לסמן הודעה זו כרגע." formatted_name: - off_topic: "מחוץ לנושא" + off_topic: "מחוץ לנושא הפוסט" inappropriate: "לא ראוי" spam: "זהו ספאם" custom_placeholder_notify_user: "היה ממוקד, חיובי ואדיב תמיד." @@ -1446,10 +1481,10 @@ he: left: "{{n}} נותרו" flagging_topic: title: "תודה על עזרתך לשמירה על תרבות הקהילה שלנו!" - action: "סימון נושא" + action: "סימון פוסט" notify_action: "הודעה" topic_map: - title: "סיכום נושא" + title: "סיכום פוסט" participants_title: "מפרסמים מתמידים" links_title: "לינקים פופלארים" links_shown: "הצג את כל הקישורים {{totalLinks}}..." @@ -1460,27 +1495,27 @@ he: warning: help: "זוהי אזהרה רשמית." bookmarked: - help: "יצרת סימניה לנושא זה" + help: "יצרת סימניה לפוסט זה" locked: - help: "הנושא הזה נעול, הוא לא מקבל יותר תגובות חדשות" + help: "הפוסט הזה נעול, הוא לא מקבל יותר תגובות חדשות" archived: - help: "הנושא הזה אוכסן בארכיון; הוא הוקפא ולא ניתן לשנותו" + help: "הפוסט הזה אוכסן בארכיון; הוא הוקפא ולא ניתן לשנותו" locked_and_archived: - help: "הנושא הזה סגור ומאורכב. לא ניתן להגיב בו יותר או לשנות אותו. " + help: "הפוסט הזה סגור ומאורכב. לא ניתן להגיב בו יותר או לשנות אותו. " unpinned: title: "הורד מנעיצה" - help: "נושא זה אינו מקובע עבורך; הוא יופיע בסדר הרגיל" + help: "פוסט זה אינו מקובע עבורך; הוא יופיע בסדר הרגיל" pinned_globally: title: "נעוץ גלובאלית" - help: "הנושא הזה נעוץ גלובאלית; הוא יוצג בראש כל הרשימות" + help: "הפוסט הזה נעוץ גלובאלית; הוא יוצג בראש כל הרשימות" pinned: title: "נעוץ" - help: "נושא זה מקובע עבורך, הוא יופיע בראש הקטגוריה" + help: "פוסט זה מקובע עבורך, הוא יופיע בראש הקטגוריה" invisible: - help: "נושא זה מוסתר; הוא לא יוצג ברשימות הנושאים, וזמין רק באמצעות קישור ישיר." + help: "פוסט זה מוסתר; הוא לא יוצג ברשימות הפוסטים, וזמין רק באמצעות קישור ישיר." posts: "הודעות" posts_lowercase: "פרסומים" - posts_long: "יש {{number}} הודעות בנושא הזה" + posts_long: "יש {{number}} הודעות בפוסט הזה" posts_likes_MF: | לנושא זה יש {count, plural, one {פרסום אחד} other {# פרסומים}} נמוך {עם יחס גבוה של לייקים לפרסום} @@ -1493,13 +1528,13 @@ he: one: "צפיה" other: "צפיות" replies: "תגובות" - views_long: "הנושא הזה נצפה {{number}} פעמים" + views_long: "הפוסט הזה נצפה {{number}} פעמים" activity: "פעילות" likes: "לייקים" likes_lowercase: one: "לייקים" other: "לייקים" - likes_long: "יש {{number}} לייקים לנושא הזה" + likes_long: "יש {{number}} לייקים לפוסט הזה" users: "משתמשים" users_lowercase: one: "משתמש" @@ -1512,33 +1547,33 @@ he: not_available: "לא זמין!" categories_list: "רשימת קטגוריות" filters: - with_topics: "%{filter} נושאים" - with_category: "%{filter} %{category} נושאים" + with_topics: "%{filter} פוסטים" + with_category: "%{filter} %{category} פוסטים" latest: title: zero: "פורסמו לאחרונה" one: "פורסמו לאחרונה" other: "({{count}}) פורסמו לאחרונה" - help: "נושאים עם תגובות לאחרונה" + help: "פוסטים עם תגובות לאחרונה" hot: title: "חם" - help: "מבחר הנושאים החמים ביותר" + help: "מבחר הפוסטים החמים ביותר" read: title: "נקרא" - help: "נושאים שקראת, לפי סדר קריאתם" + help: "פוסטים שקראת, לפי סדר קריאתם" search: title: "חיפוש" - help: "חיפוש בכל הנושאים" + help: "חיפוש בכל הפוסטים" categories: title: "קטגוריות" title_in: "קטגוריה - {{categoryName}}" - help: "כל הנושאים תחת הקטגוריה הזו" + help: "כל הפוסטים תחת הקטגוריה הזו" unread: title: zero: "לא נקרא" one: "לא נקרא (1)" other: "לא נקראו ({{count}})" - help: "נושאים שאתם כרגע צופים או עוקבים אחריהם עם פרסומים שלא נקראו" + help: "פוסטים שאתם כרגע צופים או עוקבים אחריהם עם פרסומים שלא נקראו" lower_title_with_count: one: "1 שלא נקרא" other: "{{count}} שלא נקראו" @@ -1554,19 +1589,19 @@ he: help: "פרסומים נוצרו בימים האחרונים" posted: title: "ההודעות שלי" - help: "נושאים בהם פרסמת" + help: "פוסטים בהם פרסמת" bookmarks: title: "סימניות" - help: "נושאים עבורם יצרת סימניות" + help: "פוסטים עבורם יצרת סימניות" category: title: zero: "{{categoryName}}" one: "{{categoryName}} (1)" other: "{{categoryName}} ({{count}})" - help: "נושאים מדוברים בקטגוריה {{categoryName}}" + help: "פוסטים מדוברים בקטגוריה {{categoryName}}" top: title: "מובילים" - help: "הנושאים הפעילים ביותר בשנה, חודש, שבוע או יום האחרונים" + help: "הפוסטים הפעילים ביותר בשנה, חודש, שבוע או יום האחרונים" all: title: "תמיד" yearly: @@ -1663,18 +1698,18 @@ he: delete: "מחיקה" delete_title: "מחיקת הפרסום המסומן כאן." delete_post_defer_flag: "מחיקת הפרסום ודחיית הסימון" - delete_post_defer_flag_title: "מחיקת הפרסום; אם זהו הפרסום הראשון, מחיקת הנושא" + delete_post_defer_flag_title: "מחיקת הפרסום; אם זהו הפרסום הראשון, מחיקת הפוסט" delete_post_agree_flag: "מחיקת הפרסום והסכמה עם הסימון" - delete_post_agree_flag_title: "מחיקת פרסום; אם זהו הפרסום הראשון, מחיקת הנושא" + delete_post_agree_flag_title: "מחיקת פרסום; אם זהו הפרסום הראשון, מחיקת הפוסט" delete_flag_modal_title: "מחיקה ו..." delete_spammer: "מחיקת ספאמר" - delete_spammer_title: "הסרת המשתמש/ת וכל הפרסומים והנושאים של משתמש/ת אלו." + delete_spammer_title: "הסרת המשתמש/ת וכל הפרסומים והפוסטים של משתמש/ת אלו." disagree_flag_unhide_post: "אי-קבלה (הצגה מחדש של הפרסום)" disagree_flag_unhide_post_title: "הסרה של כל הסימונים מהפרסום הזה והחזרתו למצב תצוגה" disagree_flag: "אי קבלה" disagree_flag_title: "התעלמות מהסימון היות שאינו תקין או אינו נכון" clear_topic_flags: "סיום" - clear_topic_flags_title: "הנושא נבדק והבעיה נפתרה. לחצו על סיום כדי להסיר את הסימונים." + clear_topic_flags_title: "הפוסט נבדק והבעיה נפתרה. לחצו על סיום כדי להסיר את הסימונים." more: "(עוד תגובות...)" dispositions: agreed: "התקבל" @@ -1687,8 +1722,8 @@ he: error: "משהו השתבש" reply_message: "תגובה" no_results: "אין סימונים." - topic_flagged: "הנושא הזה דוגלל." - visit_topic: "בקרו בנושא כדי לנקוט פעולה" + topic_flagged: "הפוסט הזה דוגלל." + visit_topic: "בקרו בפוסט כדי לנקוט פעולה" was_edited: "הפרסום נערך לאחר הסימון הראשון" previous_flags_count: "פרסום זה כבר סומן {{count}} פעמים." summary: @@ -1742,7 +1777,7 @@ he: revoke: "שלול" confirm_regen: "אתה בטוח שברצונך להחליף את מפתח ה-API באחד חדש?" confirm_revoke: "אתה בטוח שברצונך לשלול את המפתח הזה?" - info_html: "מפתח הAPI שלך יאפשר לך ליצור ולעדכן נושאים בעזרת קריאות JSON." + info_html: "מפתח הAPI שלך יאפשר לך ליצור ולעדכן פוסטים בעזרת קריאות JSON." all_users: "כל המשתמשים" note_html: "שמרו על מפתח זה סודי, כל משתמש שיחזיק בו יוכל לייצר פרסומים שרירותית, כאילו היה כל משתמש/ת אחרים." plugins: @@ -1893,10 +1928,10 @@ he: description: "טקסט ואייקונים בכותרת האתר." highlight: name: 'הדגשה' - description: 'צבע הרקע של אלמנטים מודגשים בעמוד, כמו הודעות ונושאים.' + description: 'צבע הרקע של אלמנטים מודגשים בעמוד, כמו הודעות ופוסטים.' danger: name: 'זהירות' - description: 'צבע הדגשה של פעולות כמו מחיקת הודעות ונושאים.' + description: 'צבע הדגשה של פעולות כמו מחיקת הודעות ופוסטים.' success: name: 'הצלחה' description: 'משמש כדי לסמן פעולה מוצלחת.' @@ -1949,7 +1984,7 @@ he: last_match_at: "הותאם לאחרונה" match_count: "תואם" ip_address: "IP" - topic_id: "זהות (ID) נושא" + topic_id: "זהות (ID) פוסט" post_id: "זהות (ID) פרסום" delete: 'מחק' edit: 'ערוך' @@ -1986,11 +2021,14 @@ he: grant_badge: "הענק תג" revoke_badge: "שלול תג" check_email: "בדיקת דוא\"ל" - delete_topic: "מחיקת נושא" + delete_topic: "מחיקת פוסט" delete_post: "מחיקת פרסום" impersonate: "התחזה" anonymize_user: "הפיכת משתמש/ת לאנונימיים" roll_up: "roll up IP blocks" + change_category_settings: "שינוי הגדרות קטגוריה" + delete_category: "מחק קטגוריה" + create_category: "יצירת קטגוריה" screened_emails: title: "הודעות דואר מסוננות" description: "כשמישהו מנסה ליצור חשבון חדש, כתובות הדואר האלקטרוני הבאות ייבדקו וההרשמה תחסם או שיבוצו פעולות אחרות." @@ -2085,7 +2123,7 @@ he: suspend_reason: "סיבה" suspended_by: "הושעה על ידי" delete_all_posts: "מחק את כל ההודעות" - delete_all_posts_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} נושאים. אתה בטוח?" + delete_all_posts_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} פוסטים. אתה בטוח?" suspend: "השעה" unsuspend: "בטל השעייה" suspended: "מושעה?" @@ -2113,10 +2151,10 @@ he: activity: פעילות like_count: לייקים שהוענקו / התקבלו last_100_days: 'ב-100 הימים האחרונים' - private_topics_count: נושאים פרטיים + private_topics_count: פוסטים פרטיים posts_read_count: הודעות שנקראו post_count: הודעות שנוצרו - topics_entered: נושאים שנצפו + topics_entered: פוסטים שנצפו flags_given_count: דגלים שניתנו flags_received_count: סימונים שהתקבלו warnings_received_count: התקבלו אזהרות @@ -2158,7 +2196,7 @@ he: block_failed: 'הייתה בעיה בחסימת המשתמש.' deactivate_explanation: "חשבון משתמש מנוטרל נדרש לוודא דואר אלקטרוני מחדש." suspended_explanation: "משתמש מושעה לא יכול להתחבר." - block_explanation: "משתמש חסום לא יכול לפרסם הודעות או נושאים." + block_explanation: "משתמש חסום לא יכול לפרסם הודעות או פוסטים." trust_level_change_failed: "הייתה בעיה בשינוי רמת האמון של המשתמש." suspend_modal_title: "השעה משתמש" trust_level_2_users: "משתמשי רמת אמון 2" @@ -2174,9 +2212,9 @@ he: requirement_heading: "דרישה" visits: "ביקורים" days: "ימים" - topics_replied_to: "נושאים להם הגיבו" - topics_viewed: "נושאים שנצפו" - topics_viewed_all_time: "נושאים שנצפו (בכל זמן)" + topics_replied_to: "פוסטים להם הגיבו" + topics_viewed: "פוסטים שנצפו" + topics_viewed_all_time: "פוסטים שנצפו (בכל זמן)" posts_read: "פרסומים שנקראו" posts_read_all_time: "פרסומים שנקראו (בכל זמן)" flagged_posts: "הודעות מדוגללות" @@ -2277,7 +2315,7 @@ he: modal_title: תג קבוצות granted_by: הוענק ע"י granted_at: הוענק ב - reason_help: (קישור לפרסום או לנושא) + reason_help: (קישור לפרסום או לפוסט) save: שמור delete: מחק delete_confirm: אתה בטוח שברצונך למחוק את התג הזה? @@ -2350,7 +2388,7 @@ he: feed_description: "לספק פיד RSS/ATOM לאתרך יכול לשפר את היכולת של דיסקורס ליבא את התוכן שלך." crawling_settings: "Crawler Settings" crawling_description: "When Discourse creates topics for your posts, if no RSS/ATOM feed is present it will attempt to parse your content out of your HTML. Sometimes it can be challenging to extract your content, so we provide the ability to specify CSS rules to make extraction easier." - embed_by_username: "שם משתמש ליצירת נושא" + embed_by_username: "שם משתמש ליצירת פוסט" embed_post_limit: "מספר מקסימלי של פרסומים להטמעה." embed_username_key_from_feed: "מפתח למשיכת שם המשתמש ב-discourse מהפיד." embed_truncate: "חיתוך הפרסומים המוטמעים." @@ -2362,8 +2400,8 @@ he: permalink: title: "קישורים קבועים" url: "כתובת" - topic_id: "מזהה לנושא" - topic_title: "נושא" + topic_id: "מזהה לפוסט" + topic_title: "פוסט" post_id: "מזהה לפרסום" post_title: "הודעה" category_id: "מזהה לקטגוריה" @@ -2396,28 +2434,28 @@ he: jump: '# מעבר לפרסום #' back: 'u חזרה' up_down: 'k/j Move selection ↑ ↓' - open: 'o או Enter פתח נושא נבחר' + open: 'o או Enter פתח פוסט נבחר' next_prev: 'shift+j/shift+kלחלק הבא/קודם' application: title: 'יישום' - create: 'c צור נושא חדש' + create: 'c צור פוסט חדש' notifications: 'n פתח התראות' hamburger_menu: '= פתח תפריט המבורגר' user_profile_menu: 'pפתיחת תפריט משתמש/ת' - show_incoming_updated_topics: '. הצגת נושאים שעודכנו' + show_incoming_updated_topics: '. הצגת פוסטים שעודכנו' search: '/ חיפוש' help: '? הצגת עזרת מקלדת' dismiss_new_posts: 'x, r שחרור הודעות/חדשות' - dismiss_topics: 'x, t שחרור נושאים' + dismiss_topics: 'x, t שחרור פוסטים' log_out: 'shift+z shift+z התנתק' actions: title: 'פעולות' - bookmark_topic: 'f החלפת נושא סימניה' - pin_unpin_topic: 'shift+pקיבוע/שחרור נושא' - share_topic: 'shift+s שיתוף הנושא' + bookmark_topic: 'f החלפת פוסט סימניה' + pin_unpin_topic: 'shift+pקיבוע/שחרור פוסט' + share_topic: 'shift+s שיתוף הפוסט' share_post: 's שיתוף הודעה' - reply_as_new_topic: 't תגובה כנושא מקושר' - reply_topic: 'shift+r תשובה לנושא' + reply_as_new_topic: 't תגובה כפוסט מקושר' + reply_topic: 'shift+r תשובה לפוסט' reply_post: 'r להגיב להודעה' quote_post: ' q ציטוט פוסט' like: 'l תן לייק להודעה' @@ -2425,10 +2463,10 @@ he: bookmark: 'b הוסף הודעה למועדפים' edit: 'e ערוך הודעה' delete: 'd מחק הודעה' - mark_muted: 'm, m השתקת נושא' - mark_regular: 'm, r נושא רגיל (ברירת מחדל)' - mark_tracking: 'm, t מעקב נושא' - mark_watching: 'm, wצפייה בנושא' + mark_muted: 'm, m השתקת פוסט' + mark_regular: 'm, r פוסט רגיל (ברירת מחדל)' + mark_tracking: 'm, t מעקב פוסט' + mark_watching: 'm, wצפייה בפוסט' badges: title: תגים allow_title: "יכול לשמש ככותרת" @@ -2490,14 +2528,14 @@ he: name: פרסום מצויין description: קבלת 50 לייקים על פרסום. תג זה יכול להיות מוענק מספר פעמים nice_topic: - name: נושא נחמד - description: קיבל/ה 10 לייקים על נושא. תג זה יכול להיות מוענק כמה פעמים + name: פוסט נחמד + description: קיבל/ה 10 לייקים על פוסט. תג זה יכול להיות מוענק כמה פעמים good_topic: - name: נושא טוב - description: קיבל/ה 25 לייקים על הנושא. תג זה יכול להיות מוענק כמה פעמים + name: פוסט טוב + description: קיבל/ה 25 לייקים על הפוסט. תג זה יכול להיות מוענק כמה פעמים great_topic: - name: נושא מצויין - description: קיבל/ה 50 לייקים על הנושא. תג זה יכול להיות מוענק מספר פעמים + name: פוסט מצויין + description: קיבל/ה 50 לייקים על הפוסט. תג זה יכול להיות מוענק מספר פעמים nice_share: name: שיתוף נחמד description: שיתפ/ה פרסום עם 25 מבקרים ייחודיים @@ -2527,7 +2565,7 @@ he: description: שיתף/שיתפה פרסום first_link: name: קישור (link) ראשון - description: הוסיף/הוסיפה קישור פנימי לנושא אחר + description: הוסיף/הוסיפה קישור פנימי לפוסט אחר first_quote: name: ציטוט ראשון description: ציטוט משתמש @@ -2536,7 +2574,7 @@ he: description: קראו את הכללים המנחים של הקהילה reader: name: מקראה - description: קראו כל פרסום בנושא עם יותר מ-100 פרסומים + description: קראו כל פרסום בפוסט עם יותר מ-100 פרסומים popular_link: name: לינק פופלארי description: פרסם קישור חיצוני עם לפחות 50 לחיצות diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml index 3d047a5e18..9b82a49e3b 100644 --- a/config/locales/client.it.yml +++ b/config/locales/client.it.yml @@ -109,6 +109,7 @@ it: google+: 'Condividi questo link su Google+' email: 'invia questo collegamento via email' action_codes: + split_topic: "suddividi questo argomento %{when}" autoclosed: enabled: 'chiuso %{when}' disabled: 'aperto %{when}' @@ -135,7 +136,7 @@ it: yes_value: "Sì" generic_error: "Spiacenti! C'è stato un problema." generic_error_with_reason: "Si è verificato un errore: %{error}" - sign_up: "Registrati" + sign_up: "Iscriviti" log_in: "Accedi" age: "Età" joined: "Iscritto" @@ -227,6 +228,7 @@ it: revert: "Ripristina" failed: "Fallito" switch_to_anon: "Modalità Anonima" + switch_from_anon: "Abbandona Anonimato" banner: close: "Nascondi questo banner." edit: "Modifica questo annuncio >>" @@ -388,7 +390,7 @@ it: not_supported: "Spiacenti, le notifiche non sono supportate su questo browser." perm_default: "Attiva Notifiche" perm_denied_btn: "Permesso Negato" - perm_denied_expl: "Hai negato il permesso per le notifiche. Usa il browser per abilitare le notifiche, poi premi il bottone quando hai finito. (Per il desktop: l'icona più a sinistra sulla barra degli indirizzi. Mobile: 'Informazioni sul sito'.)" + perm_denied_expl: "Hai negato il permesso per le notifiche. Usa il browser per abilitare le notifiche, poi premi il bottone quando hai finito. (Per il desktop: è l'icona più a sinistra sulla barra degli indirizzi. Mobile: 'Informazioni sul sito'.)" disable: "Disabilita Notifiche" currently_enabled: "(attualmente attivate)" enable: "Abilita Notifiche" @@ -555,7 +557,6 @@ it: user: "Utente Invitato" sent: "Spedito" none: "Non ci sono inviti in sospeso da visualizzare." - truncated: "Mostro i primi {{count}} inviti." redeemed: "Inviti Accettati" redeemed_tab: "Riscattato" redeemed_tab_with_count: "Riscattato ({{count}})" @@ -575,7 +576,7 @@ it: account_age_days: "Età dell'utente in giorni" create: "Invia un Invito" generate_link: "Copia il collegamento di invito" - generated_link_message: 'Il link di invito è stato generato con successo!
Il link sarà disponibile solo per l''email: %{invitedEmail}
' + generated_link_message: 'Il collegamento di invito è stato generato con successo!
Il collegamento sarà valido solo per la seguente email: %{invitedEmail}
' bulk_invite: none: "Non hai ancora invitato nessuno qui. Puoi inviare inviti individuali, o invitare un gruppo di persone caricando un file di invito di massa." text: "Invito di Massa da File" @@ -615,11 +616,13 @@ it: server: "Errore del Server" forbidden: "Accesso Negato" unknown: "Errore" + not_found: "Pagina Non Trovata" desc: network: "Per favore controlla la connessione." network_fixed: "Sembra essere tornato." server: "Codice di errore: {{status}}" forbidden: "Non hai i permessi per visualizzarlo." + not_found: "Oops, l'applicazione ha cercato di caricare una URL inesistente." unknown: "Qualcosa è andato storto." buttons: back: "Torna Indietro" @@ -648,6 +651,19 @@ it: replies_lowercase: one: risposta other: risposte + signup_cta: + sign_up: "Iscriviti" + hide_session: "Ricordamelo domani" + hide_forever: "no grazie" + hidden_for_session: "Ok, te lo chiederò domani. Puoi sempre usare \"Accedi\" per creare un account." + intro: "Ciao! :heart_eyes: A quanto pare ti sta piacendo la discussione, ma non sei ancora iscritto." + methods: + sso: "Iscriversi è facile: basta avere un account sul sito principale." + only_email: "Iscriversi è facile: basta un indirizzo email e una password." + only_other: "Usa il tuo account %{provider} per iscriverti." + one_and_email: "Usa il tuo account %{provider}, o una email e password, per iscriverti." + multiple_no_email: "Iscriversi è facile: usa uno qualsiasi dei nostri %{count} login social." + multiple: "Iscriversi è facile: usa uno qualsiasi dei nostri %{count} login social, oppure una email e password." summary: enabled_description: "Stai visualizzando un riepilogo dell'argomento: è la comunità a determinare quali sono i messaggi più interessanti." description: "Ci sono {{count}} risposte." @@ -729,7 +745,11 @@ it: emoji_one: "Emoji One" composer: emoji: "Emoji :smile:" + more_emoji: "altro..." + options: "Opzioni" + whisper: "sussurra" add_warning: "Questo è un avvertimento ufficiale." + toggle_whisper: "Attiva/Disattiva Sussurra" posting_not_on_topic: "A quale argomento vuoi rispondere?" saving_draft_tip: "salvataggio..." saved_draft_tip: "salvato" @@ -852,6 +872,7 @@ it: select_file: "Seleziona File" image_link: "collegamento a cui la tua immagine punterà" search: + latest_post: "Ultimo Messaggio" select_all: "Seleziona Tutto" clear_all: "Cancella Tutto" title: "cerca argomenti, messaggi, utenti o categorie" @@ -1101,13 +1122,13 @@ it: to_forum: "Invieremo una breve email che permetterà al tuo amico di entrare subito cliccando un collegamento, senza bisogno di effettuare il collegamento." sso_enabled: "Inserisci il nome utente della persona che vorresti invitare su questo argomento." to_topic_blank: "Inserisci il nome utente o l'indirizzo email della persona che vorresti invitare su questo argomento." - to_topic_email: "Hai inserito un indirizzo email. Manderemo una email di invito che permettterà al tuo amico di rispondere subito a questo argomento." - to_topic_username: "Hai inserito un nome utente. Gli mandermo una notifica con un link per invitarlo su questo argomento." - to_username: "Inserisci il nome utente della persona che vorresti invitare. Gli manderemo una notifica con un link di invito a questo argomento." + to_topic_email: "Hai inserito un indirizzo email. Invieremo una email di invito che permetterà al tuo amico di rispondere subito a questo argomento." + to_topic_username: "Hai inserito un nome utente. Gli invieremo una notifica con un collegamento per invitarlo su questo argomento." + to_username: "Inserisci il nome utente della persona che vorresti invitare. Gli invieremo una notifica con un collegamento di invito a questo argomento." email_placeholder: 'nome@esempio.com' - success_email: "Abbiamo mandato un invito via email a {{emailOrUsername}}. Ti avvertiremo quando l'invito verrà riscattato. Controlla la sezione \"inviti\" sulla tua pagina utente per tracciare lo stato degli inviti." + success_email: "Abbiamo inviato un invito via email a {{emailOrUsername}}. Ti avvertiremo quando l'invito verrà riscattato. Controlla la sezione \"inviti\" sulla tua pagina utente per tracciarne lo stato." success_username: "Abbiamo invitato l'utente a partecipare all'argomento." - error: "Spiacente, non siamo riusciti ad invitare questa persona. Forse è stata già invitata? (Gli inviti sono limitati)" + error: "Spiacenti, non siamo riusciti ad invitare questa persona. E' stata per caso già invitata (gli inviti sono limitati)? " login_reply: 'Collegati per Rispondere' filters: n_posts: @@ -1144,7 +1165,7 @@ it: action: "cambia timestamp" invalid_timestamp: "Il timestamp non può essere nel futuro." error: "Errore durante la modifica del timestamp dell'argomento." - instructions: "Seleziona un nuovo timestamp per l'argomento. I messaggi nell'argomento saranno aggiornati senza modificare l'intervallo di tempo" + instructions: "Seleziona il nuovo timestamp per l'argomento. I messaggi nell'argomento saranno aggiornati in modo che abbiano lo stesso intervallo temporale." multi_select: select: 'scegli' selected: 'selezionati ({{count}})' @@ -1179,18 +1200,18 @@ it: more_links: "{{count}} altri..." unread: "Messaggio non letto" has_replies: - one: "Una risposta" - other: "{{count}} risposte" + one: "{{count}} Risposta" + other: "{{count}} Risposte" has_likes: - one: "Un \"Mi piace\"" + one: "{{count}} \"Mi piace\"" other: "{{count}} \"Mi piace\"" has_likes_title: - one: "A una persona piace questo messaggio" - other: "A {{count}} persone piace questo messaggio" + one: "Una persona ha messo \"Mi piace\" a questo messaggio" + other: "{{count}} persone hanno messo \"Mi piace\" a questo messaggio" has_likes_title_you: - zero: "Ti è piaciuto questo messaggio" - one: "A te e ad un'altra persona è piaciuto questo messaggio" - other: "A te e ad altre {{count}} persone è piaciuto questo messaggio" + zero: "Hai messo \"Mi piace\" a questo messaggio" + one: "Tu e un'altra persona avete messo \"Mi piace\" a questo messaggio" + other: "Tu e altre {{count}} persone avete messo \"Mi piace\" a questo messaggio" errors: create: "Spiacenti, si è verificato un errore nel creare il tuo messaggio. Prova di nuovo." edit: "Spiacenti, si è verificato un errore nel modificare il tuo messaggio. Prova di nuovo." @@ -1366,7 +1387,7 @@ it: view: 'Visualizza Argomenti della Categoria' general: 'Generale' settings: 'Impostazioni' - topic_template: "Modello di argomento" + topic_template: "Modello di Argomento" delete: 'Elimina Categoria' create: 'Crea Categoria' create_long: 'Crea una nuova categoria' @@ -1399,7 +1420,7 @@ it: email_in_allow_strangers: "Accetta email da utenti anonimi senza alcun account" email_in_disabled: "Le Impostazioni Sito non permettono di creare nuovi argomenti via email. Per abilitare la creazione di argomenti via email," email_in_disabled_click: 'abilita l''impostazione "email entrante".' - suppress_from_homepage: "Elimina questa categoria dalla homepage" + suppress_from_homepage: "Elimina questa categoria dalla homepage." allow_badges_label: "Permetti che le targhette vengano assegnate in questa categoria" edit_permissions: "Modifica Permessi" add_permission: "Aggiungi Permesso" @@ -1415,6 +1436,7 @@ it: tracking: title: "Seguendo" regular: + title: "Normale" description: "Riceverai una notifica se qualcuno menziona il tuo @nome o ti risponde." muted: title: "Silenziato" @@ -1482,10 +1504,10 @@ it: posts_likes_MF: | Questo argomento ha {count, plural, one {1 risposta} other {# risposte}} {ratio, select, low {con un alto rapporto "mi piace" / messaggi} med {con un altissimo rapporto "mi piace" / messaggi} high {con un estremamente alto rapporto "mi piace" / messaggi} other {}} original_post: "Messaggio Originale" - views: "Visualizzazioni" + views: "Visite" views_lowercase: - one: "vista" - other: "viste" + one: "visita" + other: "visite" replies: "Risposte" views_long: "questo argomento è stato visualizzato {{number}} volte" activity: "Attività" @@ -1724,7 +1746,7 @@ it: automatic_membership_email_domains: "Gli utenti che si registrano con un dominio email che corrisponde esattamente a uno presente in questa lista, saranno aggiunti automaticamente a questo gruppo:" automatic_membership_retroactive: "Applica la stessa regola sul dominio email per aggiungere utenti registrati esistenti" default_title: "Titolo predefinito per tutti gli utenti di questo gruppo" - primary_group: "Imposta automaticamente un gruppo principale" + primary_group: "Imposta automaticamente come gruppo principale" api: generate_master: "Genera una Master API Key" none: "Non ci sono chiavi API attive al momento." @@ -1827,7 +1849,7 @@ it: header: "Intestazione" top: "Alto" footer: "Fondo pagina" - embedded_css: "CSS inclusi" + embedded_css: "CSS incorporato" head_tag: text: "" title: "HTML da inserire prima del tag " @@ -1919,6 +1941,7 @@ it: sent_test: "inviata!" delivery_method: "Metodo di consegna" preview_digest: "Anteprima Riassunto" + preview_digest_desc: "Vedi in anteprima il contenuto delle email di riassunto inviate agli utenti inattivi." refresh: "Aggiorna" format: "Formato" html: "html" @@ -1944,6 +1967,7 @@ it: ip_address: "IP" topic_id: "ID argomento" post_id: "ID messaggio" + category_id: "ID categoria" delete: 'Cancella' edit: 'Modifica' save: 'Salva' @@ -1984,6 +2008,9 @@ it: impersonate: "impersona" anonymize_user: "rendi anonimo l'utente " roll_up: "inibisci blocchi di indirizzi IP" + change_category_settings: "cambia le impostazioni della categoria" + delete_category: "cancella categoria" + create_category: "crea categoria" screened_emails: title: "Email Scansionate" description: "Quando qualcuno cerca di creare un nuovo account, verrando controllati i seguenti indirizzi email e la registrazione viene bloccata, o eseguita qualche altra azione." @@ -2207,11 +2234,11 @@ it: delete_confirm: "Sicuro di voler cancellare il campo utente?" options: "Opzioni" required: - title: "Richiesto durante la registrazione?" + title: "Richiesto durante l'iscrizione?" enabled: "richiesto" disabled: "non richiesto" editable: - title: "Modificabile dopo la registrazione?" + title: "Modificabile dopo l'iscrizione?" enabled: "modificabile" disabled: "non modificabile" show_on_profile: @@ -2255,7 +2282,7 @@ it: backups: "Backup" login: "Accesso" plugins: "Plugin" - user_preferences: "Preferenze utente" + user_preferences: "Preferenze Utente" badges: title: Targhette new_badge: Nuova Targhetta @@ -2330,21 +2357,21 @@ it: image: "Immagine" delete_confirm: "Sicuro di voler cancellare l'emoji :%{name}:?" embedding: - get_started: "Se lo desideri, puoi incorporare Discourse in un altro sito web. Comincia aggiungo il suo nome host" - confirm_delete: "Sei sicuro di volere cancellare questo host?" + get_started: "Se lo desideri, puoi incorporare Discourse in un altro sito web. Comincia aggiungendo il nome dell'host" + confirm_delete: "Sicuro di voler cancellare questo host?" sample: "Utilizza il seguente codice HTML nel tuo sito per creare e incorporare gli argomenti di Discourse. Sostituisci REPLACE_ME con l'URL canonical della pagina in cui lo stai incorporando." - title: "Incorporamento" - host: "Host abilitati" + title: "Incorporo" + host: "Host Abilitati" edit: "modifica" - add_host: "Aggiungi host" - settings: "Impostazioni di incorporamento" - feed_settings: "Impostazioni dei feed" - feed_description: "Aggiungendo un feed RSS/AROM al tuo sito, migliori l'importazione dei tuoi contenuti da parte di Discourse" + add_host: "Aggiungi Host" + settings: "Impostazioni di incorporo" + feed_settings: "Impostazioni Feed" + feed_description: "Aggiungendo un feed RSS/ATOM al tuo sito, migliora la capacità di Discourse di importare i tuoi contenuti." crawling_settings: "Impostazioni del crawler" - crawling_description: "Quando Discourse crea gli argomenti per i messaggi, se non è presente nessun feed RSS/ATOM, cercherà di estrarre il contenuto dal codice HTML. Il contenuto può risultate a volte ostico da estrarre e, per semplificare il processo, forniamo la possibilità di specificare le regole CSS." + crawling_description: "Quando Discourse crea gli argomenti per i tuoi messaggi, se non è presente nessun feed RSS/ATOM, cercherà di estrarre il contenuto dal codice HTML. Il contenuto può risultate a volte ostico da estrarre e, per semplificare il processo, forniamo la possibilità di specificare le regole CSS." embed_by_username: "Nome utente per la creazione dell'argomento" embed_post_limit: "Numero massimo di messaggi da includere" - embed_truncate: "Abbrevia i messaggi incorporati" + embed_truncate: "Tronca i messaggi incorporati" embed_whitelist_selector: "Selettore CSS per gli elementi da includere negli embed" embed_blacklist_selector: "Selettore CSS per gli elementi da rimuovere dagli embed" feed_polling_enabled: "Importa gli articoli via RSS/ATOM" @@ -2364,7 +2391,7 @@ it: form: label: "Nuovo:" add: "Aggiungi" - filter: "Cerca (URL o URL esterna)" + filter: "Cerca (URL o URL Esterna)" lightbox: download: "scaricamento" search_help: @@ -2400,7 +2427,7 @@ it: help: '? Apri l''aiuto per le scorciatoie da tastiera' dismiss_new_posts: 'x, r Chiudi Nuovo/Messaggi' dismiss_topics: 'x, t Chiudi Argomenti' - log_out: 'shift+z shift+z Esci' + log_out: 'shift+z shift+z Scollegati' actions: title: 'Azioni' bookmark_topic: 'f Aggiungi/togli argomento nei segnalibri' @@ -2533,7 +2560,7 @@ it: description: Ha pubblicato un collegamento esterno con almeno 50 clic hot_link: name: Collegamento Caldo - description: Ha pubblicato un collegamento esterno con almeno 300 clic + description: Pubblicato un collegamento esterno con almeno 300 clic famous_link: name: Collegamento Famoso description: Ha pubblicato un collegamento esterno con almeno 1000 clic diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml index 92b0db524b..8fac15c7b0 100644 --- a/config/locales/client.ja.yml +++ b/config/locales/client.ja.yml @@ -479,7 +479,6 @@ ja: search: "招待履歴を検索するためにキーワードを入力してください..." title: "招待" user: "招待したユーザ" - truncated: "最初の {{count}} 個の招待履歴を表示しています。" redeemed: "受理された招待" redeemed_tab: "受理" redeemed_at: "受理日" diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml index d68af672a4..af910a06b7 100644 --- a/config/locales/client.ko.yml +++ b/config/locales/client.ko.yml @@ -195,6 +195,7 @@ ko: saved: "저장 완료!" upload: "업로드" uploading: "업로드 중..." + uploading_filename: "{{filename}} 업로드 중..." uploaded: "업로드 완료!" enable: "활성화" disable: "비활성화" @@ -202,6 +203,7 @@ ko: revert: "되돌리기" failed: "실패" switch_to_anon: "익명 모드" + switch_from_anon: "익명모드 나가기" banner: close: "배너 닫기" edit: "이 배너 수정 >>" @@ -276,6 +278,8 @@ ko: mods_and_admins: "운영자 및 관리자만" members_mods_and_admins: "그룹 멤버, 운영자, 관리자만" everyone: "모두" + trust_levels: + none: "없음" user_action_groups: '1': "선사한 '좋아요'" '2': "받은 '좋아요'" @@ -295,13 +299,20 @@ ko: all_subcategories: "모든 하위 카테고리" no_subcategory: "없음" category: "카테고리" + reorder: + title: "카테고리 순서변경" + title_long: "카테고리 목록 제구성" + fix_order: "위치 고정" + save: "순서 저장" + apply_all: "적용" + position: "위치" posts: "게시글" topics: "토픽" latest: "최근" latest_by: "가장 최근" toggle_ordering: "정렬 컨트롤 토글" subcategories: "하위 카테고리" - topic_stats: "새 글타래 수" + topic_stats: "새로운 토픽 수" topic_stat_sentence: other: "지난 %{unit} 동안 %{count}개의 새로운 토픽이 있습니다." post_stats: "새 게시글 수" @@ -335,6 +346,7 @@ ko: private_messages: "메시지" activity_stream: "활동" preferences: "환경 설정" + expand_profile: "확장" bookmarks: "북마크" bio: "내 소개" invited_by: "(이)가 초대했습니다." @@ -367,13 +379,13 @@ ko: suspended_notice: "이 사용자는 {{date}}까지 접근 금지 되었습니다." suspended_reason: "이유: " github_profile: "Github" - mailing_list_mode: "(글타래가나 카테고리의 알림을 끄지 않는 한) 모든 새로운 글에 대해 메일을 보내주세요." + mailing_list_mode: "(토픽이나 카테고리의 알림을 끄지 않는 한) 모든 새로운 글에 대해 메일을 보내주세요." watched_categories: "지켜보기" - watched_categories_instructions: "이 카테고리 내의 새로운 글타래들을 지켜보도록 자동으로 설정됩니다. 새로운 글이나 글타래에 대하여 알림을 받게되며 글타래 옆에 읽지 않은 글의 수가 표시됩니다." + watched_categories_instructions: "이 카테고리 내의 새로운 토픽들을 지켜보도록 자동으로 설정됩니다. 새로운 게시글이나 토픽에 대하여 알림을 받게되며 토픽 옆에 읽지 않은 게시글의 수가 표시됩니다." tracked_categories: "추적하기" - tracked_categories_instructions: "이 카테고리 내의 새로운 글타래들을 추적하도록 자동으로 설정됩니다. 글타래 옆에 읽지 않은 글의 수가 표시됩니다." + tracked_categories_instructions: "이 카테고리 내의 새로운 토픽들을 추적하도록 자동으로 설정됩니다. 토픽 옆에 읽지 않은 게시글의 수가 표시됩니다." muted_categories: "알림 끄기" - muted_categories_instructions: "이 카테고리들에 새로 작성되는 새로운 글타래에 대한 알림이 오지 않도록 합니다. '읽지 않은'탭에서도 보이지 않게 됩니다." + muted_categories_instructions: "이 카테고리들에 새로 작성되는 새로운 토픽에 대한 알림이 오지 않도록 합니다. '읽지 않은'탭에서도 보이지 않게 됩니다." delete_account: "내 계정 삭제" delete_account_confirm: "정말로 계정을 삭제할까요? 이 작업은 되돌릴 수 없습니다." deleted_yourself: "계정이 삭제 되었습니다." @@ -482,7 +494,7 @@ ko: every_three_days: "매 3일마다" weekly: "매주" every_two_weeks: "격주" - email_direct: "누군가 나를 인용했을 때, 내 글에 답글을 달았을때, 내 이름을 멘션했을때 혹은 글타래에 나를 초대했을 떄 이메일 보내기" + email_direct: "누군가 나를 인용했을 때, 내 글에 답글을 달았을때, 내 이름을 멘션했을때 혹은 토픽에 나를 초대했을 떄 이메일 보내기" email_private_messages: "누군가 나에게 메시지를 보냈을때 이메일 보내기" email_always: "사이트를 이용중 일 때도 이메일 알림 보내기" other_settings: "추가 사항" @@ -490,12 +502,12 @@ ko: new_topic_duration: label: "새글을 정의해주세요." not_viewed: "아직 보지 않았습니다." - last_here: "마지막 방문이후 작성된 글타래" - after_1_day: "지난 하루간 생성된 글타래" - after_2_days: "지난 2일간 생성된 글타래" - after_1_week: "최근 일주일간 생성된 글타래" - after_2_weeks: "지난 2주간 생성된 글타래" - auto_track_topics: "마지막 방문이후 작성된 글타래" + last_here: "마지막 방문이후 작성된 토픽" + after_1_day: "지난 하루간 생성된 토픽" + after_2_days: "지난 2일간 생성된 토픽" + after_1_week: "최근 일주일간 생성된 토픽" + after_2_weeks: "지난 2주간 생성된 토픽" + auto_track_topics: "마지막 방문이후 작성된 토픽" auto_track_options: never: "하지않음" immediately: "즉시" @@ -511,14 +523,13 @@ ko: title: "초대" user: "사용자 초대" sent: "보냄" - truncated: "처음 {{count}}개 초대장 보여주기" redeemed: "초대를 받았습니다." redeemed_tab: "Redeemed" redeemed_at: "에 초대되었습니다." pending: "초대를 보류합니다." pending_tab: "보류" pending_tab_with_count: "지연 ({{count}})" - topics_entered: "글타래가 입력되었습니다." + topics_entered: "토픽이 입력되었습니다." posts_read_count: "글 읽기" expired: "이 초대장의 기한이 만료되었습니다." rescind: "삭제" @@ -561,7 +572,7 @@ ko: posted_by: "에 의해 작성되었습니다" sent_by: "에 의해 전송되었습니다" private_message: "메시지" - the_topic: "글타래" + the_topic: "토픽" loading: "로딩 중..." errors: prev_page: "로드하는 중" @@ -570,6 +581,7 @@ ko: server: "서버 에러" forbidden: "접근 거부됨" unknown: "에러" + not_found: "페이지를 찾을 수 없습니다" desc: network: "접속상태를 확인해주세요." network_fixed: "문제가 해결된 것으로 보입니다." @@ -589,11 +601,11 @@ ko: login_disabled: "사이트가 읽기 전용모드로 되면서 로그인은 비활성화되었습니다." learn_more: "더 배우기" year: '년' - year_desc: '지난 365일간 생성된 글타래' + year_desc: '지난 365일간 생성된 토픽' month: '월' - month_desc: '지난 30일간 생성된 글타래' + month_desc: '지난 30일간 생성된 토픽' week: '주' - week_desc: '지난 7일간 생성된 글타래' + week_desc: '지난 7일간 생성된 토픽' day: '일' first_post: 첫 번째 글 mute: 음소거 @@ -602,14 +614,18 @@ ko: last_reply_lowercase: 마지막 답글 replies_lowercase: other: 답글 + signup_cta: + sign_up: "회원가입" + hide_session: "내일 다시 알리기" + hidden_for_session: "알겠습니다. 내일 다시 물어볼께요. 언제든지 '로그인'을 통해서도 계정을 만들 수 있습니다." summary: - enabled_description: "현재 글타래에서 가장 인기 있는 몇 개의 글들을 보고 있습니다." + enabled_description: "현재 토픽에서 가장 인기 있는 몇 개의 글들을 보고 있습니다." description: "{{count}}개의 답글이 있습니다." description_time: "총 {{count}}개의 댓글이 있습니다. 예상 소요 시간은 {{readingTime}}분입니다.." - enable: '이 글타래를 요약' + enable: '이 토픽을 요약' disable: 'Show All Posts' deleted_filter: - enabled_description: "이 글타래는 삭제된 글들을 포함하고 있습니다. 삭제된 글을 보이지 않습니다." + enabled_description: "이 토픽은 삭제된 글들을 포함하고 있습니다. 삭제된 글을 보이지 않습니다." disabled_description: "삭제된 글들을 표시하고 있습니다." enable: "삭제된 글 숨김" disable: "삭제된 글 보기" @@ -683,12 +699,13 @@ ko: emoji_one: "Emoji One" composer: emoji: "Emoji :smile:" + options: "온셥" add_warning: "공식적인 경고입니다." - posting_not_on_topic: "어떤 글타래에 답글을 작성하시겠습니까?" + posting_not_on_topic: "어떤 토픽에 답글을 작성하시겠습니까?" saving_draft_tip: "저장 중..." saved_draft_tip: "저장 완료" saved_local_draft_tip: "로컬로 저장됩니다." - similar_topics: "작성하려는 내용과 비슷한 글타래들..." + similar_topics: "작성하려는 내용과 비슷한 토픽들..." drafts_offline: "초안" error: title_missing: "제목은 필수 항목입니다" @@ -699,11 +716,11 @@ ko: try_like: ' 버튼을 사용해 보셨나요?' category_missing: "카테고리를 선택해주세요." save_edit: "편집 저장" - reply_original: "기존 글타래에 대해 답글을 작성합니다." + reply_original: "기존 토픽에 대해 답글을 작성합니다." reply_here: "여기에 답글을 작성하세요." reply: "답글 전송" cancel: "취소" - create_topic: "글타래(글) 쓰기" + create_topic: "토픽(글) 쓰기" create_pm: "메시지" title: "혹은 Ctrl + Enter 누름" users_placeholder: "사용자 추가" @@ -734,7 +751,7 @@ ko: upload_description: "업로드 설명을 입력" olist_title: "번호 매기기 목록" ulist_title: "글 머리 기호 목록" - list_item: "글타래" + list_item: "토픽" heading_title: "표제" heading_text: "표제" hr_title: "수평선" @@ -742,18 +759,18 @@ ko: redo_title: "다시" help: "마크다운 편집 도움말" toggler: "작성 패널을 숨기거나 표시" - admin_options_title: "이 글타래에 대한 옵션 설정" + admin_options_title: "이 토픽에 대한 옵션 설정" auto_close: - label: "자동-닫기 글타래 시간:" + label: "토픽 자동-닫기 시간:" error: "유효한 값은 눌러주세요." - based_on_last_post: "적어도 글타래의 마지막 글이 이만큼 오래되지 않았으면 닫지 마세요." + based_on_last_post: "적어도 토픽의 마지막 글이 이만큼 오래되지 않았으면 닫지 마세요." all: examples: '시간을 숫자(24이하)로 입력하거나 분을 포함한 시간(17:30) 혹은 타임스탬프(2013-11-22 14:00) 형식으로 입력하세요.' limited: units: "(# 시간)" examples: '시간에 해당하는 숫자를 입력하세요. (24)' notifications: - title: "@name 멘션, 글과 글타래에 대한 답글, 개인 메시지 등에 대한 알림" + title: "@name 멘션, 글과 토픽에 대한 답글, 개인 메시지 등에 대한 알림" none: "현재 알림을 불러올 수 없습니다." more: "이전 알림을 볼 수 있습니다." total_flagged: "관심 표시된 총 글" @@ -770,6 +787,10 @@ ko: moved_post: "{{username}} moved {{description}}
" linked: "{{username}} {{description}}
" granted_badge: "'{{description}}' 뱃지를 받았습니다.
" + alt: + mentioned: "멘션 by" + quoted: "인용 by" + posted: "포스트 by" popup: mentioned: '"{{topic}}" - {{site_title}}에서 {{username}} 님이 나를 멘션했습니다' quoted: '"{{topic}}" - {{site_title}}에서 {{username}} 님이 나를 인용했습니다' @@ -791,7 +812,7 @@ ko: select_file: "파일 선택" image_link: "이 이미지를 누르면 이동할 링크" search: - title: "글타래, 글, 사용자, 카테고리 검색" + title: "토픽, 글, 사용자, 카테고리 검색" no_results: "검색 결과가 없습니다" no_more_results: "더 이상 결과가 없습니다." search_help: 검색 도움말 @@ -800,108 +821,108 @@ ko: context: user: "@{{username}}의 글 검색" category: "\"{{category}}\" 카테고리 검색" - topic: "이 글타래를 검색" + topic: "이 토픽을 검색" private_messages: "메시지 검색" - hamburger_menu: "다른 글타래 목록이나 카테고리로 가기" + hamburger_menu: "다른 토픽 목록이나 카테고리로 가기" go_back: '돌아가기' not_logged_in_user: 'user page with summary of current activity and preferences' current_user: '사용자 페이지로 이동' topics: bulk: reset_read: "읽기 초기화" - delete: "글타래 삭제" + delete: "토픽 삭제" dismiss_posts: "글 닫기" - dismiss_posts_tooltip: "이 글타래들의 '읽지 않은' 표시를 없애고 새 글타래가 발생하면 내 '읽지 않은' 목록에 표시하기" - dismiss_topics: "글타래 닫기" + dismiss_posts_tooltip: "이 토픽들의 '읽지 않은' 표시를 없애고 새 토픽이 발생하면 내 '읽지 않은' 목록에 표시하기" + dismiss_topics: "토픽 닫기" dismiss_topics_tooltip: "새글이 발생할 때 내 '읽지 않은' 목록에 표시하지 않기" dismiss_new: "새글 제거" - toggle: "복수글타래 선택 기능" + toggle: "토픽 복수 선택" actions: "일괄 적용" change_category: "카테고리 변경" - close_topics: "글타래 닫기" - archive_topics: "글타래 보관하기" + close_topics: "토픽 닫기" + archive_topics: "토픽 보관하기" notification_level: "알림 설정 변경" - choose_new_category: "글타래의 새로운 카테고리를 선택" + choose_new_category: "토픽의 새로운 카테고리를 선택" selected: - other: "{{count}}개의 글타래가 선택되었습니다." + other: "{{count}}개의 토픽이 선택되었습니다." none: - unread: "읽지 않은 글타래가 없습니다." - new: "읽을 새로운 글타래가 없습니다." - read: "아직 어떠한 글타래도 읽지 않았습니다." - posted: "아직 어떠한 글타래도 작성되지 않았습니다." - latest: "최신 글타래가 없습니다." - hot: "인기있는 글타래가 없습니다." - bookmarks: "아직 북마크한 글타래가 없습니다." - category: "{{category}}에 글타래가 없습니다." - top: "Top 글타래가 없습니다." + unread: "읽지 않은 토픽이 없습니다." + new: "읽을 새로운 토픽이 없습니다." + read: "아직 어떠한 토픽도 읽지 않았습니다." + posted: "아직 어떠한 토픽도 작성되지 않았습니다." + latest: "최신 토픽이 없습니다." + hot: "인기있는 토픽이 없습니다." + bookmarks: "아직 북마크한 토픽이 없습니다." + category: "{{category}}에 토픽이 없습니다." + top: "Top 토픽이 없습니다." search: "검색 결과가 없습니다." educate: - new: '새로운 글타래는 여기에서 볼 수 있습니다.
기본 설정으로 2일 이내에 생성된 글타래는 새로운 것으로 간주되며 new 표시가 나타납니다.
환경설정에서 설정을 변경 할 수 있습니다.
' - unread: '읽지 않은 글타래는 여기에서 볼 수 있습니다.
기본 설정으로 다음과 같은 경우 글타래는 읽지 않은 것으로 간주되며 읽지 않은 개수 1 가 표시됩니다.
또는 각 글타래 아래에 있는 알림 설정에서 해당 글타래를 추적하거나 지켜보도록 설정한 경우
환경설정에서 설정을 변경 할 수 있습니다.
' + new: '새로운 토픽은 여기에서 볼 수 있습니다.
기본 설정으로 2일 이내에 생성된 토픽은 새로운 것으로 간주되며 new 표시가 나타납니다.
환경설정에서 설정을 변경 할 수 있습니다.
' + unread: '읽지 않은 토픽은 여기에서 볼 수 있습니다.
기본 설정으로 다음과 같은 경우 토픽은 읽지 않은 것으로 간주되며 읽지 않은 개수 1 가 표시됩니다.
또는 각 토픽 아래에 있는 알림 설정에서 해당 토픽을 추적하거나 지켜보도록 설정한 경우
환경설정에서 설정을 변경 할 수 있습니다.
' bottom: - latest: "더 이상 읽을 최신 글타래가 없습니다" - hot: "더 이상 읽을 인기있는 글타래가 없습니다" - posted: "더 이상 작성된 글타래가 없습니다" - read: "더 이상 읽을 글타래가 없습니다" - new: "더 이상 읽을 새로운 글타래가 없습니다." - unread: "더 이상 읽지 않은 글타래가 없습니다" - category: "더 이상 {{category}}에 글타래가 없습니다" - top: "더 이상 인기 글타래가 없습니다." - bookmarks: "더이상 북마크한 글타래가 없습니다." + latest: "더 이상 읽을 최신 토픽이 없습니다" + hot: "더 이상 읽을 인기있는 토픽이 없습니다" + posted: "더 이상 작성된 토픽이 없습니다" + read: "더 이상 읽을 토픽이 없습니다" + new: "더 이상 읽을 새로운 토픽이 없습니다." + unread: "더 이상 읽지 않은 토픽이 없습니다" + category: "더 이상 {{category}}에 토픽이 없습니다" + top: "더 이상 인기 토픽이 없습니다." + bookmarks: "더이상 북마크한 토픽이 없습니다." search: "더이상 검색 결과가 없습니다." topic: unsubscribe: change_notification_state: "현재 당신의 알림 설정 : " - filter_to: "이 글타래에서 {{username}}님의 {{post_count}}건의 글만 보기" - create: '새 글타래 만들기' - create_long: '새로운 글타래를 개설' + filter_to: " {{post_count}} 게시글 in 토픽" + create: '새 토픽 만들기' + create_long: '새로운 토픽 만들기' private_message: '메시지 시작' - list: '글타래 목록' - new: '새로운 글타래' + list: '토픽 목록' + new: '새로운 토픽' unread: '읽지 않은' new_topics: - other: '{{count}}개의 새로운 글타래' + other: '{{count}}개의 새로운 토픽' unread_topics: - other: '{{count}}개의 읽지 않은 글타래' - title: '글타래' + other: '{{count}}개의 읽지 않은 토픽' + title: '토픽' invalid_access: - title: "이 글타래는 비공개입니다" - description: "죄송합니다. 그 글타래에 접근 할 수 없습니다!" - login_required: "해당 글타래를 보려면 로그인이 필요합니다." + title: "이 토픽은 비공개입니다" + description: "죄송합니다. 그 토픽에 접근 할 수 없습니다!" + login_required: "해당 토픽을 보려면 로그인이 필요합니다." server_error: - title: "글타래를 불러오지 못했습니다" - description: "죄송합니다. 연결 문제로 인해 해당 글타래를 불러올 수 없습니다. 다시 시도하십시오. 문제가 지속되면 문의해 주시기 바랍니다" + title: "토픽을 불러오지 못했습니다" + description: "죄송합니다. 연결 문제로 인해 해당 토픽을 불러올 수 없습니다. 다시 시도하십시오. 문제가 지속되면 문의해 주시기 바랍니다" not_found: - title: "글타래를 찾을 수 없습니다" - description: "죄송합니다. 글타래를 찾을 수 없습니다. 아마도 운영자에 의해 삭제된 것 같습니다." + title: "토픽을 찾을 수 없습니다" + description: "죄송합니다. 토픽을 찾을 수 없습니다. 아마도 운영자에 의해 삭제된 것 같습니다." total_unread_posts: - other: "이 글타래에 {{count}}개의 읽지 않을 게시 글이 있습니다." + other: "이 토픽에 {{count}}개의 읽지 않을 게시 글이 있습니다." unread_posts: - other: "이 글타래에 {{count}}개의 읽지 않을 게시 글이 있습니다." + other: "이 토픽에 {{count}}개의 읽지 않을 게시 글이 있습니다." new_posts: - other: "최근 읽은 이후 {{count}}개 글이 이 글타래 작성되었습니다." + other: "최근 읽은 이후 {{count}}개 글이 이 토픽에 작성되었습니다." likes: - other: "이 글타래에 {{count}}개의 '좋아요'가 있습니다." - back_to_list: "글타래 리스트로 돌아갑니다." - options: "글타래 옵션" - show_links: "이 글타래에서 링크를 표시합니다." - toggle_information: "글타래의 세부 정보를 토글합니다." - read_more_in_category: "더 많은 글타래들은 {{catLink}} 또는 {{latestLink}}에서 찾으실 수 있습니다" - read_more: "{{catLink}} 또는 {{latestLink}}에서 더 많은 글타래들을 찾으실 수 있습니다" - read_more_MF: "이 카테고리에 { UNREAD, plural, =0 {} one { is 1개의 안 읽은 } other { are #개의 안 읽은 } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false {is } other{}} 1개의 새로운 글타래가} other { {BOTH, select, true{and } false {are } other{}} # 새로운 글타래가} } 남아 있고, {CATEGORY, select, true {{catLink} 글타래도 확인해보세요.} false {{latestLink}} other {}}" + other: "이 토픽에 {{count}}개의 '좋아요'가 있습니다." + back_to_list: "토픽 리스트로 돌아갑니다." + options: "토픽 옵션" + show_links: "이 토픽에서 링크를 표시합니다." + toggle_information: "토픽의 세부 정보를 토글합니다." + read_more_in_category: "더 많은 토픽들은 {{catLink}} 또는 {{latestLink}}에서 찾으실 수 있습니다" + read_more: "{{catLink}} 또는 {{latestLink}}에서 더 많은 토픽들을 찾으실 수 있습니다" + read_more_MF: "이 카테고리에 { UNREAD, plural, =0 {} one { is 1개의 안 읽은 } other { are #개의 안 읽은 } } { NEW, plural, =0 {} one { {BOTH, select, true{and } false {is } other{}} 1개의 새로운 토픽이} other { {BOTH, select, true{and } false {are } other{}} # 새로운 토픽이} } 남아 있고, {CATEGORY, select, true {{catLink} 토픽도 확인해보세요.} false {{latestLink}} other {}}" browse_all_categories: 모든 카테고리 보기 - view_latest_topics: 최신 글타래 보기 + view_latest_topics: 최신 토픽 보기 suggest_create_topic: 토픽(글)을 작성 해 보실래요? jump_reply_up: 이전 답글로 이동 jump_reply_down: 이후 답글로 이동 - deleted: "글타래가 삭제되었습니다" - auto_close_notice: "이 글타래는 곧 자동으로 닫힙니다. %{timeLeft}." - auto_close_notice_based_on_last_post: "이 글타래는 마지막 답글이 달린 %{duration} 후 닫힙니다." + deleted: "토픽이 삭제되었습니다" + auto_close_notice: "이 토픽은 곧 자동으로 닫힙니다. %{timeLeft}." + auto_close_notice_based_on_last_post: "이 토픽은 마지막 답글이 달린 %{duration} 후 닫힙니다." auto_close_title: '자동으로 닫기 설정' auto_close_save: "저장" - auto_close_remove: "이 글타래를 자동으로 닫지 않기" + auto_close_remove: "이 토픽을 자동으로 닫지 않기" progress: - title: 진행 중인 글타래 + title: 진행 중인 토픽 go_top: "맨위" go_bottom: "맨아래" go: "이동" @@ -914,30 +935,30 @@ ko: reasons: '3_6': '이 카테고리를 보고 있어서 알림을 받게 됩니다.' '3_5': '자동으로 이 글을 보고있어서 알림을 받게 됩니다.' - '3_2': '이 글타래를 보고있어서 알림을 받게 됩니다.' - '3_1': '이 글타래를 생성하여서 알림을 받게 됩니다.' - '3': '이 글타래를 보고있어서 알림을 받게 됩니다.' - '2_8': '이 글타래를 추적하고 있어서 알림을 받게 됩니다.' - '2_4': '이 글타래에 답글을 게시하여서 알림을 받게 됩니다.' - '2_2': '이 글타래를 추적하고 있어서 알림을 받게 됩니다.' - '2': '이 글타래를 읽어서 알림을 받게 됩니다. (설정)' + '3_2': '이 토픽을 보고있어서 알림을 받게 됩니다.' + '3_1': '이 토픽을 생성하여서 알림을 받게 됩니다.' + '3': '이 토픽을 보고있어서 알림을 받게 됩니다.' + '2_8': '이 토픽을 추적하고 있어서 알림을 받게 됩니다.' + '2_4': '이 토픽에 답글을 게시하여서 알림을 받게 됩니다.' + '2_2': '이 토픽을 추적하고 있어서 알림을 받게 됩니다.' + '2': '이 토픽을 읽어서 알림을 받게 됩니다. (설정)' '1_2': '누군가 내 @아아디 으로 멘션했거나 내 글에 답글이 달릴 때 알림을 받게 됩니다.' '1': '누군가 내 @아아디 으로 멘션했거나 내 글에 답글이 달릴 때 알림을 받게 됩니다.' - '0_7': '이 글타래에 관한 모든 알림을 무시하고 있습니다.' - '0_2': '이 글타래에 관한 모든 알림을 무시하고 있습니다.' - '0': '이 글타래에 관한 모든 알림을 무시하고 있습니다.' + '0_7': '이 토픽에 관한 모든 알림을 무시하고 있습니다.' + '0_2': '이 토픽에 관한 모든 알림을 무시하고 있습니다.' + '0': '이 토픽에 관한 모든 알림을 무시하고 있습니다.' watching_pm: title: "알림 : 주시 중" description: "이 메시지에 새로운 답글이 있을 때 알림을 받게 되며 새로운 답글의 개수는 표시됩니다." watching: title: "주시 중" - description: "이 글타래에 새로운 답글이 있을 때 알림을 받게 되며 새로운 답글의 개수는 표시됩니다." + description: "이 토픽에 새로운 답글이 있을 때 알림을 받게 되며 새로운 답글의 개수는 표시됩니다." tracking_pm: title: "알림 : 새 글 표시 중" description: "이 메시지의 읽지않은 응답의 수가 표시됩니다. 누군가 내 @아이디를 멘션했거나 내게 답글을 작성하면 알림을 받습니다." tracking: title: "새 글 표시 중" - description: "이 글타래의 새로운 답글의 수가 표시됩니다. 누군가 내 @아이디를 멘션했거나 내게 답글을 작성하면 알림을 받습니다." + description: "이 토픽의 새로운 답글의 수가 표시됩니다. 누군가 내 @아이디를 멘션했거나 내게 답글을 작성하면 알림을 받습니다." regular: title: "알림 : 일반" description: "누군가 내 @아아디 으로 멘션했거나 내 글에 답글이 달릴 때 알림을 받게 됩니다." @@ -951,64 +972,64 @@ ko: title: "알림 없음" description: "아무 알림도 없습니다. '읽지 않은 글' 탭에 나타나지 않습니다." actions: - recover: "글타래 다시 복구" - delete: "글타래 삭제" - open: "글타래 열기" - close: "글타래 닫기" + recover: "토픽 다시 복구" + delete: "토픽 삭제" + open: "토픽 열기" + close: "토픽 닫기" multi_select: "글 선택" auto_close: "자동으로 닫기..." - pin: "글타래 고정..." - unpin: "글타래 고정 취소..." - unarchive: "보관 안된 글타래" - archive: "보관된 글타래" + pin: "토픽 고정..." + unpin: "토픽 고정 취소..." + unarchive: "보관 안된 토픽" + archive: "토픽 보관" invisible: "목록에서 제외하기" visible: "목록에 넣기" reset_read: "값 재설정" feature: - pin: "글타래 고정" - unpin: "글타래 고정 취소" - pin_globally: "전역적으로 글타래 고정" - make_banner: "배너 글타래" - remove_banner: "배너 글타래 제거" + pin: "토픽 고정" + unpin: "토픽 고정 취소" + pin_globally: "전역적으로 토픽 고정" + make_banner: "배너 토픽" + remove_banner: "배너 토픽 제거" reply: title: '답글' - help: '이 글타래에 대한 답글 구성 시작' + help: '이 토픽에 대한 답글 작성 시작' clear_pin: title: "고정 취소" - help: "더 이상 목록의 맨 위에 표시하지 않도록 이 글타래의 고정 상태를 해제합니다." + help: "더 이상 목록의 맨 위에 표시하지 않도록 이 토픽의 고정 상태를 해제합니다." share: title: '공유' - help: '이 글타래의 링크를 공유' + help: '이 토픽의 링크를 공유' flag_topic: title: '신고' help: '운영자에게 이 글을 신고합니다.' - success_message: '성공적으로 글타래를 신고 하였습니다.' + success_message: '성공적으로 토픽을 신고 하였습니다.' feature_topic: - title: "Feature 글타래" - pin: " {{categoryLink}} 카테고리 글타래 목록 상단에 고정 until" - confirm_pin: "이미 {{count}}개의 고정된 글타래가 있습니다. 너무 많은 글타래가 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 카테고리에 추가적으로 글타래를 고정하시겠습니까?" - unpin: "이 글타래를 {{categoryLink}} 카테고리 상단에서 제거 합니다." - unpin_until: "{{categoryLink}} 카테고리 글타래 목록 상단에서 이 글타래를 제거하거나 %{until}까지 기다림." - pin_note: "개별적으로 사용자가 글타래 고정을 취소할 수 있습니다." + title: "Feature 토픽" + pin: " {{categoryLink}} 카테고리 토픽 목록 상단에 고정 until" + confirm_pin: "이미 {{count}}개의 고정된 토픽이 있습니다. 너무 많은 토픽이 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 카테고리에 추가적으로 토픽을 고정하시겠습니까?" + unpin: "이 토픽을 {{categoryLink}} 카테고리 상단에서 제거 합니다." + unpin_until: "{{categoryLink}} 카테고리 토픽 목록 상단에서 이 토픽을 제거하거나 %{until}까지 기다림." + pin_note: "개별적으로 사용자가 토픽 고정을 취소할 수 있습니다." already_pinned: - zero: " {{categoryLink}} 카테고리에 고정된 글타래가 없습니다." - one: "{{categoryLink}} 카테고리에 고정된 글타래: 1." - other: "{{categoryLink}} 카테고리에 고정된 글타래: {{count}}." - pin_globally: "모든 글타래 목록 상단 고정 until" - confirm_pin_globally: "이미 {{count}}개의 글타래가 전역적으로 고정되어 있습니다. 너무 많은 글타래가 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 글타래를 전역적으로 고정하시겠습니까?" - unpin_globally: "모든 글타래 목록 상단에서 이 글타래를 제거" - unpin_globally_until: "모든 글타래 목록 상단에서 이 글타래를 제거하거나 %{until}까지 기다림." - global_pin_note: "개별적으로 사용자가 글타래 고정을 취소할 수 있습니다." + zero: " {{categoryLink}} 카테고리에 고정된 토픽이 없습니다." + one: "{{categoryLink}} 카테고리에 고정된 토픽: 1." + other: "{{categoryLink}} 카테고리에 고정된 토픽: {{count}}." + pin_globally: "모든 토픽 목록 상단 고정 until" + confirm_pin_globally: "이미 {{count}}개의 토픽이 전역적으로 고정되어 있습니다. 너무 많은 토픽이 고정되어 있으면 새로운 사용자나 익명사용자에게 부담이 될 수 있습니다. 정말로 이 토픽을 전역적으로 고정하시겠습니까?" + unpin_globally: "모든 토픽 목록 상단에서 이 토픽을 제거" + unpin_globally_until: "모든 토픽 목록 상단에서 이 토픽을 제거하거나 %{until}까지 기다림." + global_pin_note: "개별적으로 사용자가 토픽 고정을 취소할 수 있습니다." already_pinned_globally: - zero: "전역적으로 고정된 글타래가 없습니다." - one: "전역적으로 고정된 글타래: 1." - other: "전역적으로 고정된 글타래: {{count}}." - make_banner: "이 글타래를 모든 페이지의 상단에 나타나는 배너로 만들기" + zero: "전역적으로 고정된 토픽이 없습니다." + one: "전역적으로 고정된 토픽: 1." + other: "전역적으로 고정된 토픽: {{count}}." + make_banner: "이 토픽을 모든 페이지의 상단에 나타나는 배너로 만들기" remove_banner: "모든 페이지에서 나타나는 배너에서 제거" - banner_note: "사용자는 배너를 닫음으로써 배너를 나타나지 않게 할 수 있습니다. 단지 어떤 기간동안 딱 하나의 글타래만이 배너로 지정 가능합니다." + banner_note: "사용자는 배너를 닫음으로써 배너를 나타나지 않게 할 수 있습니다. 단지 어떤 기간동안 딱 하나의 토픽만이 배너로 지정 가능합니다." already_banner: - zero: "배너 글타래가 없습니다." - one: "현재 배너글타래가 존재합니다." + zero: "배너 토픽이 없습니다." + one: "현재 배토 토픽이 존재합니다." inviting: "초대 중..." automatically_add_to_groups_optional: "이 초대는 다음 그룹에 대한 접근 권한을 포함합니다: (선택, 관리자만 가능)" automatically_add_to_groups_required: "이 초대는 다음 그룹에 대한 접근 권한을 포함합니다: (필수, 관리자만 가능)" @@ -1024,16 +1045,16 @@ ko: title: '초대하기' username_placeholder: "아이디" action: '초대장 보내기' - help: '이메일을 통해 다른 사람을 이 글타래에 초대합니다.' + help: '이메일을 통해 다른 사람을 이 토픽에 초대합니다.' to_forum: "친구에게 요약 이메일을 보내고 이 포럼에 가입할 수 있도록 링크를 전송합니다." - sso_enabled: "이 글타래에 초대하고 싶은 사람의 아이디를 입력하세요." - to_topic_blank: "이 글타래에 초대하고 싶은 사람의 아이디나 이메일주소를 입력하세요." - to_topic_email: "이메일 주소를 입력하셨습니다. 친구들에게 이 글타래에 답변 달기가 가능하도록 조치하는 초대장을 보내겠습니다." - to_topic_username: "아이디를 입력하셨습니다. 이 글타래에 초대하는 링크와 함께 알림을 보내겠습니다." - to_username: "초대하려는 사용자의 아이디를 입력하세요. 이 글타래에 초대하는 링크와 함께 알림을 보내겠습니다." + sso_enabled: "이 토픽에 초대하고 싶은 사람의 아이디를 입력하세요." + to_topic_blank: "이 토픽에 초대하고 싶은 사람의 아이디나 이메일주소를 입력하세요." + to_topic_email: "이메일 주소를 입력하셨습니다. 친구들에게 이 토픽에 답변 달기가 가능하도록 조치하는 초대장을 보내겠습니다." + to_topic_username: "아이디를 입력하셨습니다. 이 토픽에 초대하는 링크와 함께 알림을 보내겠습니다." + to_username: "초대하려는 사용자의 아이디를 입력하세요. 이 토픽에 초대하는 링크와 함께 알림을 보내겠습니다." email_placeholder: '이메일 주소' success_email: "{{emailOrUsername}}로 초대장을 발송했습니다. 초대를 수락하면 알려 드리겠습니다. 초대상태를 확인하려면 사용자 페이지에서 '초대장' 탭을 선택하세요." - success_username: "사용자가 이 글타래에 참여할 수 있도록 초대했습니다." + success_username: "사용자가 이 토픽에 참여할 수 있도록 초대했습니다." error: "그 사람을 초대할 수 없습니다. 혹시 이미 초대하진 않았나요? (Invites are rate limited)" login_reply: '로그인하고 답글 쓰기' filters: @@ -1041,18 +1062,18 @@ ko: other: "{{count}} 글" cancel: "필터 제거" split_topic: - title: "새로운 글타래로 이동" - action: "새로운 글타래로 이동" - topic_name: "새로운 글타래 이름" - error: "새로운 글타래로 이동시키는데 문제가 발생하였습니다." + title: "새로운 토픽으로 이동" + action: "새로운 토픽으로 이동" + topic_name: "새로운 토픽 이름" + error: "새로운 토픽으로 이동시키는데 문제가 발생하였습니다." instructions: - other: "새로운 글타래를 생성하여, 선택한 {{count}}개의 글로 채우려고 합니다." + other: "새로운 토픽을 생성하여, 선택한 {{count}}개의 글로 채우려고 합니다." merge_topic: - title: "이미 있는 글타래로 옮기기" - action: "이미 있는 글타래로 옮기기" - error: "이 글타래를 이동시키는데 문제가 발생하였습니다." + title: "이미 있는 토픽으로 옮기기" + action: "이미 있는 토픽으로 옮기기" + error: "이 토픽을 이동시키는데 문제가 발생하였습니다." instructions: - other: " {{count}}개의 글을 옮길 글타래를 선택해주세요." + other: " {{count}}개의 글을 옮길 토픽을 선택해주세요." change_owner: title: "글 소유자 변경" action: "작성자 바꾸기" @@ -1062,6 +1083,9 @@ ko: instructions: other: "{{old_user}}(이)가 작성한 글의 새로운 작성자를 선택해주세요." instructions_warn: "이 글에 대한 알림이 새 사용자에게 자동으로 이전되지 않습니다.\nLink do convite gerado com sucesso!
Link do convite válido apenas para este endereço de email: %{invitedEmail}
' bulk_invite: none: "Você ainda não convidou ninguém. Você pode enviar convites individuais, ou enviar vários de uma vez através da ferramenta de enviar em massa." text: "Convidar em massa a partir de arquivo" @@ -565,6 +625,7 @@ pt_BR: network_fixed: "Parece que voltou." server: "Código de erro: {{status}}" forbidden: "Você não tem permissão para ver isso." + not_found: "Oops, a aplicação tentou carregar uma URL que não existe." unknown: "Algo deu errado." buttons: back: "Voltar" @@ -577,6 +638,9 @@ pt_BR: read_only_mode: enabled: "O modo somente-leitura está habilitado. Você pode navegador mas as interações podem não funcionar." login_disabled: "Login é desativado enquanto o site está em modo de somente leitura." + too_few_topics_and_posts_notice: "Vamos começar essa discussão! Existem atualmente %{currentTopics} / %{requiredTopics} tópicos e %{currentPosts} / %{requiredPosts} mensagens. Novos visitantes precisam de algumas conversas para ler e responder." + too_few_topics_notice: "Vamos começar essa discussão! Existem atualmente %{currentTopics} / %{requiredTopics} tópicos. Novos visitantes precisam de algumas conversas para ler e responder." + too_few_posts_notice: "Vamos começar essa discussão! Existem atualmente %{currentPosts} / %{requiredPosts} mensagens. Novos visitantes precisam de algumas conversas para ler e responder." learn_more: "aprenda mais..." year: 'ano' year_desc: 'tópicos criados nos últimos 365 dias' @@ -594,8 +658,20 @@ pt_BR: one: resposta other: respostas signup_cta: + sign_up: "Registrar-se" hide_session: "Lembre-me amanhã" hide_forever: "não obrigado" + hidden_for_session: "OK, Eu vou perguntar amanhã. Você pode também sempre usar o 'Registre-se' para criar uma conta." + intro: "Ei você! :heart_eyes: Para que você está gostando da discussão, mas ainda não criou uma conta." + value_prop: "Quando você cria uma conta, nós lembramos exatamente o que você leu, assim você sempre volta exatamente aonde estava. Você também recebe notificações, aqui e por e-mail, quando novas mensagens são feitas. E você pode curtir tópicos para compartilhar o amor. :heartbeat:" + methods: + sso: "Registrar-se é fácil. Tudo que você precisa é de uma conta no site principal." + only_email: "Registrar-se é fácil. Tudo que você precisa é de um e-mail e senha." + only_other: "Use sua conta do %{provider} para registrar-se." + one_and_email: "Use sua conta do %{provider} , ou um e-mail e senha, para registrar-se." + multiple_no_email: "Registrar-se é fácil: use qualquer uma das %{count} redes sociais." + multiple: "Registrar-se é fácil: use qualquer uma das %{count} redes sociais, ou um e-mail e senha." + unknown: "erro recuperando métodos de acesso disponíveis" summary: enabled_description: "Você está vendo um sumário deste tópico: os posts mais interessantes conforme determinados pela comunidade." description: "Há {{count}} respostas." @@ -677,8 +753,11 @@ pt_BR: emoji_one: "Emoji One" composer: emoji: "Emoji :smile:" + more_emoji: "mais..." options: "Opções" + whisper: "sussuro" add_warning: "Este é um aviso oficial." + toggle_whisper: "Habilitar Sussuro" posting_not_on_topic: "Qual tópico você gostaria de responder?" saving_draft_tip: "gravando..." saved_draft_tip: "salvo" @@ -705,6 +784,7 @@ pt_BR: title_placeholder: "Sobre o que é esta discussão em uma pequena frase?" edit_reason_placeholder: "por que você está editando?" show_edit_reason: "(adicione motivo da edição)" + reply_placeholder: "Escreva aqui. Use Markdown, BBCode ou HTML para formatar. Arraste ou cole uma imagens." view_new_post: "Ver sua nova resposta." saving: "Salvando..." saved: "Salvo!" @@ -767,6 +847,18 @@ pt_BR: granted_badge: "Adquirido '{{description}}'
" alt: mentioned: "Mencionado por" + quoted: "Citado por" + replied: "Respondido" + posted: "Mensagem por" + edited: "Edição na sua mensagem por" + liked: "Curtiu sua mensagem" + private_message: "Mensagem privada de" + invited_to_private_message: "Convidou para uma mensagem privada" + invited_to_topic: "Convite para um tópico de" + invitee_accepted: "Convite aceito por" + moved_post: "Seu tópico foi movido por" + linked: "Link para sua mensagem" + granted_badge: "Emblema recebido" popup: mentioned: '{{username}} mencionou você em "{{topic}}" - {{site_title}}' quoted: '{{username}} citou você em "{{topic}}" - {{site_title}}' @@ -782,13 +874,27 @@ pt_BR: remote_tip: "link da imagem" remote_tip_with_attachments: "link da imagem ou arquivo ({{authorized_extensions}})" local_tip: "selecione imagens a partir do seu dispositivo" + local_tip_with_attachments: "Selecione imagens ou arquivos do seu dispositivo ({{authorized_extensions}})" hint: "(Você também pode arrastar e soltar para o editor para carregá-las)" + hint_for_supported_browsers: "Você pode também arrastar e soltar ou copiar imagens no editor" uploading: "Enviando" select_file: "Selecionar Arquivo" image_link: "link da sua imagem" search: + sort_by: "Ordenar por" + relevance: "Relevância" + latest_post: "Última Mensagem" + most_viewed: "Mais Visto" + most_liked: "Mais Curtido" + select_all: "Selecionar Todos" + clear_all: "Limpar Todos" + result_count: + one: "1 resultado para \"{{term}}\"" + other: "{{count}} resultados para \"{{term}}\"" title: "procurar em tópicos, respostas, usuários ou categorias" no_results: "Nenhum resultado encontrado." + no_more_results: "Sem mais resultados encontrados." + search_help: Ajuda na busca searching: "Procurando..." post_format: "#{{post_number}} por {{username}}" context: @@ -796,6 +902,8 @@ pt_BR: category: "Procurar a categoria \"{{category}}\"" topic: "Procurar nesse tópico" private_messages: "Procurar mensagens" + hamburger_menu: "ir para outra listagem de tópicos ou categoria" + new_item: "novo" go_back: 'voltar' not_logged_in_user: 'página do usuário com resumo de atividades correntes e preferencias' current_user: 'ir para a sua página de usuário' @@ -844,6 +952,9 @@ pt_BR: bookmarks: "Não há mais tópicos nos favoritos." search: "Não existem mais resultados." topic: + unsubscribe: + stop_notifications: "Você agora vai receber menos notificações de {{title}}" + change_notification_state: "Seu estado de notificação atual é" filter_to: "{{post_count}} mensagens no tópico" create: 'Novo tópico' create_long: 'Criar um novo tópico' @@ -937,8 +1048,10 @@ pt_BR: title: "Monitorar" description: "Um contador de novas respostas será mostrado para este tópico. Você será notificado se alguém mencionar seu @nome ou responder à sua mensagem." regular: + title: "Normal" description: "Você será notificado se alguém mencionar o seu @nome ou responder à sua mensagem." regular_pm: + title: "Normal" description: "Você será notificado se alguém mencionar o seu @nome ou responder à sua mensagem." muted_pm: title: "Silenciado" @@ -981,15 +1094,20 @@ pt_BR: success_message: 'Você sinalizou com sucesso este tópico.' feature_topic: title: "Destacar este tópico" + pin: "Fazer que este tópico apareça no topo da categoria {{categoryLink}} até" confirm_pin: "Você já tem {{count}} tópicos fixos. Muitos tópicos fixados podem atrapalhar usuários novos e anônimos. Tem certeza que quer fixar outro tópico nesta categoria?" unpin: "Remover este tópico do inicio da {{categoryLink}} categoria." + unpin_until: "Remover este tópico do topo da categoria {{categoryLink}} ou esperar até %{until}." pin_note: "Usuários podem desafixar o tópico individualmente para si." + pin_validation: "Uma data é necessária para fixar este tópico." already_pinned: zero: "Não existem tópicos fixados em {{categoryLink}}." one: "Tópicos atualmente fixados em {{categoryLink}}: 1." other: "Tópicos atualmente fixados {{categoryLink}}: {{count}}." + pin_globally: "Fazer com que este tópico apareça no topo de todas listas de tópicos até" confirm_pin_globally: "Você já tem {{count}} tópicos fixados globalmente. Muitos tópicos fixados podem prejudicar usuários novos e anônimos. Tem certeza que quer fixar outro tópico globalmente?" unpin_globally: "Remover este tópico do inicio de todas as listas de tópicos." + unpin_globally_until: "Remover este tópico do topo de todas listagens de tópicos ou esperar até %{until}." global_pin_note: "Usuários podem desafixar o tópico individualmente para si." already_pinned_globally: zero: "Não existem tópicos fixados globalmente." @@ -1058,6 +1176,12 @@ pt_BR: one: "Por favor, escolha o novo dono do post por {{old_user}}." other: "Por favor, escolha o novo autor dessas {{count}} mensagens que eram de {{old_user}}." instructions_warn: "Note que qualquer notificação sobre esta mensagem não irá ser transferida para o novo usuário retroativamente.+
+ diff --git a/config/locales/client.ro.yml b/config/locales/client.ro.yml index 7b8c92dee4..265ca0fd51 100644 --- a/config/locales/client.ro.yml +++ b/config/locales/client.ro.yml @@ -494,7 +494,6 @@ ro: search: "Scrie pentru a căuta invitații..." title: "Invitații" user: "Utilizatori invitați" - truncated: "Afișeaza primele {{count}} invitații." redeemed: "Invitații rascumpărate" redeemed_at: "Răscumpărate" pending: "Invitații in așteptare" diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 519387d17a..24f0829381 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -597,7 +597,6 @@ ru: user: "Кто приглашен" sent: "Когда" none: "Приглашения, ожидающие одобрения, отсутствуют." - truncated: "Показаны первые {{count}} приглашений." redeemed: "Принятые приглашения" redeemed_tab: "Принятые" redeemed_tab_with_count: "Принятые ({{count}})" diff --git a/config/locales/client.sq.yml b/config/locales/client.sq.yml index 4078b644dd..937919b681 100644 --- a/config/locales/client.sq.yml +++ b/config/locales/client.sq.yml @@ -509,7 +509,6 @@ sq: search: "shkruaj për të kërkuar ftesat..." title: "Ftesa" user: "Anëtarët e Ftuar" - truncated: "Shfaq {{count}} ftesat e para." redeemed: "Ridërgo ftesat" redeemed_tab: "Redeemed" redeemed_at: "Redeemed" diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index 4660add837..762ab29f8e 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -508,7 +508,6 @@ sv: search: "sök efter inbjudningar..." title: "Inbjudningar" user: "Inbjuden Användare" - truncated: "Visar de första {{count}} inbjudningarna." redeemed: "Inlösta Inbjudnignar" redeemed_at: "Inlöst" pending: "Avvaktande Inbjudningar" diff --git a/config/locales/client.te.yml b/config/locales/client.te.yml index 179e09813f..331aa68870 100644 --- a/config/locales/client.te.yml +++ b/config/locales/client.te.yml @@ -418,7 +418,6 @@ te: search: "ఆహ్వానాలను వెతకడానికి రాయండి ... " title: "ఆహ్వానాలు" user: "ఆహ్వానించిన సభ్యుడు" - truncated: "తొలి {{count}} ఆహ్వానాలను చూపుతున్నాము." redeemed: "మన్నించిన ఆహ్వానాలు" redeemed_at: "మన్నించిన" pending: "పెండింగులోని ఆహ్వానాలు" diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml index 3ce73d578c..6ab81095b3 100644 --- a/config/locales/client.tr_TR.yml +++ b/config/locales/client.tr_TR.yml @@ -525,7 +525,6 @@ tr_TR: user: "Davet Edilen Kullanıcı" sent: "Gönderildi" none: "Bekleyen davet yok." - truncated: "İlk {{count}} davetler gösteriliyor." redeemed: "Kabul Edilen Davetler" redeemed_tab: "Kabul Edildi" redeemed_tab_with_count: "İtfa edilmiş ({{count}})" @@ -921,7 +920,7 @@ tr_TR: options: "Konu Seçenekleri" show_links: "Bu konunun içindeki bağlantıları göster. " toggle_information: "konu ayrıntılarını aç/kapa" - read_more_in_category: "Daha fazlası için {{catLink}} kategorisine göz atabilir ya da {{latestLink}}bilirsiniz." + read_more_in_category: "Daha fazlası için {{catLink}} kategorisine göz atabilir ya da {{latestLink}}yebilirsiniz." read_more: "Daha fazla okumak mı istiyorsunuz? {{catLink}} ya da {{latestLink}}." read_more_MF: "Kalan { UNREAD, plural, =0 {} one { 1 okunmamış } other { # okunmamış } } { NEW, plural, =0 {} one { {BOTH, select, true{ve} false {} other{}} 1 yeni konu} other { {BOTH, select, true{and } false {} other{}} # yeni konu} } var, veya {CATEGORY, select, true { {catLink}} false {{latestLink}} kategorilerindeki diğer {} konulara göz atabilirsiniz }" browse_all_categories: Bütün kategorilere göz at diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml index 4bdeeae9f0..3e3b842183 100644 --- a/config/locales/client.uk.yml +++ b/config/locales/client.uk.yml @@ -396,7 +396,6 @@ uk: search: "шукати запрошення..." title: "Запрошення" user: "Запрошений користувач" - truncated: "Показано перші {{count}} запрошень." redeemed: "Прийняті запрошення" redeemed_at: "Прийнято" pending: "Запрошення, що очікують" diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml index 328c6d9358..9f64ce6cd0 100644 --- a/config/locales/client.zh_CN.yml +++ b/config/locales/client.zh_CN.yml @@ -527,7 +527,6 @@ zh_CN: user: "邀请用户" sent: "已发送" none: "没有未接受状态的邀请。" - truncated: "只显示前 {{count}} 个邀请。" redeemed: "确认邀请" redeemed_tab: "已确认" redeemed_tab_with_count: "已确认({{count}})" diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml index 2256308bc7..299ef0bd11 100644 --- a/config/locales/client.zh_TW.yml +++ b/config/locales/client.zh_TW.yml @@ -474,7 +474,6 @@ zh_TW: title: "邀請" user: "受邀請的用戶" sent: "送出" - truncated: "顯示前 {{count}} 個邀請。" redeemed: "已接受的邀請" redeemed_at: "接受日期" pending: "尚未接受的邀請" diff --git a/config/locales/server.ar.yml b/config/locales/server.ar.yml index 149c268cbe..47d1c6266c 100644 --- a/config/locales/server.ar.yml +++ b/config/locales/server.ar.yml @@ -11,30 +11,30 @@ ar: short_date: "يوم شهر سنة" long_date: "شهر يوم، سنه ساعة :دقائق" title: "ديسكورس" - topics: "عناوين" - posts: "منشورات" - loading: "تحميل" - powered_by_html: 'مدعوم من ديسكورس ,لتفعيل أفضل رؤية مع جافاسكربت' - log_in: "تسجيل الدخول" - via: "%{username} من موقع %{site_name}" - is_reserved: "محجوز" - purge_reason: "حذف آلي للحسابات المهجوره وغير النشطه " - disable_remote_images_download_reason: "لقد تم تعطيل تحميل الصور عن بعد بسبب عدم وجود مساحة كافية" - anonymous: "مجهول" + topics: "المواضيع" + posts: "منشورات." + loading: "جاري التحميل..." + powered_by_html: 'مدعوم من ديسكورس ,افضل عرض مع جافا سكريبت تم تفعيله' + log_in: "تسجيل الدخول." + via: "%{username}بواسطة %{site_name}" + is_reserved: "محجوز." + purge_reason: "حذف آلي للحسابات المهجوره وغير النشطة." + disable_remote_images_download_reason: "لقد تم تعطيل تحميل الصور عن بعد بسبب عدم وجود مساحة كافية." + anonymous: "مجهول." errors: format: '%{attribute} %{message}' messages: too_long_validation: "إنها محددة بعدد حروف %{max} حرف; لقد أدخلت %{length}." - invalid_boolean: "قيمة منطقية غير صحيحة" - taken: "تم حجزه من قبل " - accepted: يجب أن تُقبل - blank: لا يمكن جعله فارغا - present: يجب أن يكون فارغ - confirmation: "ليست مطابقة ل %{attribute}" - empty: لا يمكن جعله فارغا + invalid_boolean: "قيمة منطقية غير صحيحة." + taken: "تم حجزه من قبل." + accepted: يجب أن تُقبل. + blank: لا يمكن جعله فارغا. + present: يجب أن يكون فارغ. + confirmation: "ليست مطابقة ل %{attribute}." + empty: لا يمكن جعله فارغا. equal_to: يجب أن تكون مساوي لـ %{count} - even: يجب أن يكون زوجي - exclusion: محجوز + even: يجب أن يكون العدد زوجي. + exclusion: محجوز. greater_than: يجب أن تكون أكبر من %{count} greater_than_or_equal_to: يجب أن تكون أكبر من أو تساوي %{count} inclusion: غير متضمن في القائمة @@ -904,7 +904,6 @@ ar: notify_mods_when_user_blocked: "إذا تم حظر المستخدم تلقائيا، وإرسال رسالة الى جميع المشرفين." flag_sockpuppets: "إذا رد أحد المستخدمين جديد إلى موضوع من عنوان IP نفسه باسم المستخدم الجديد الذي بدأ هذا الموضوع، علم كل من مناصبهم كدعاية المحتملين." traditional_markdown_linebreaks: "استعمل السطور التالفه التقليديه في Markdown, التي تتطلب مساحتين بيضاوين للسطور التالفه" - allow_html_tables: "السماح للجداول لتكون مُدخلة بـMarkdown بإستخدام علامات HTML, و TABLE, THEAD, TD, TR, TH تكون قائمة بيضاء (تتطلب إعادة انشاء كامل لكل المشاركات القديمة التي تحتوي على جداول)" post_undo_action_window_mins: "عدد الدقائق التي يسمح فيها للأعضاء بالتراجع عن آخر إجراءاتهم على المنشور (إعجاب، اشارة، إلخ...)" must_approve_users: "يجب أن الموظفين يوافق على جميع حسابات المستخدم الجديدة قبل أن يتم السماح لهم للوصول إلى الموقع. تحذير: تمكين هذا لموقع الحية إلغاء وصول المستخدمين الحاليين غير الموظفين!" ga_tracking_code: "تحليلات Google (ga.js) تتعقب رمز الشيفرة، مثال: UA-12345678-9; انظر http://google.com/analytics" @@ -1169,7 +1168,6 @@ ar: enable_cdn_js_debugging: "السماح/logs لعرض أخطاء المناسبة عن طريق إضافة تتضمن تحليل عرض كل شبيبة." show_create_topics_notice: "إذا كان الموقع يحتوي على أقل من 5 مواضيع عامة , إظهار إشعار مطالبة المسؤولين إنشاء بعض المواضيع." delete_drafts_older_than_n_days: حذف المسودات مضى عليها أكثر من (ن) يوما. - show_logout_in_header: "عرض تسجيل الخروج في القائمة المنسدلة للمستخدم في رأس الصفحة." vacuum_db_days: "شغل التحليل الكامل للمساحة لاستعادة مساحة DB بعد الهجرات (ضع 0 للإغلاق)" prevent_anons_from_downloading_files: "امنع المستخدمين المجهولين من تحميل المرفقات. تحذير:سوف تمنع اي شخص ليس لديه صوره موقع اصول نشره كمرفقات من العمل." slug_generation_method: "اختر طريقه توليد سبيكه . 'مشفره' سوف تقوم بتوليد سلسله مئويه مشفره.'لاشي' سوف يعطل السبيكه" diff --git a/config/locales/server.bs_BA.yml b/config/locales/server.bs_BA.yml index a0ac846100..af53526909 100644 --- a/config/locales/server.bs_BA.yml +++ b/config/locales/server.bs_BA.yml @@ -226,7 +226,6 @@ bs_BA: title: "vođa" change_failed_explanation: "You attempted to demote %{user_name} to '%{new_trust_level}'. However their trust level is already '%{current_trust_level}'. %{user_name} will remain at '%{current_trust_level}' - if you wish to demote user lock trust level first" rate_limiter: - slow_down: "You have performed this action too many times, try again later" too_many_requests: "We have a daily limit on how many times that action can be taken. Please wait %{time_left} before trying again." datetime: distance_in_words: diff --git a/config/locales/server.cs.yml b/config/locales/server.cs.yml index 1a9c46a560..450f54f9cb 100644 --- a/config/locales/server.cs.yml +++ b/config/locales/server.cs.yml @@ -251,7 +251,6 @@ cs: elder: title: "vůdce" rate_limiter: - slow_down: "Provedli jste tuhle akci moooockrát, zkuste to později" too_many_requests: "Děláte tuto akci příliš často. Prosím počkejte %{time_left} a zkuste to znovu." hours: one: "1 hodina" diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml index 85c97a5060..60cb7ee897 100644 --- a/config/locales/server.da.yml +++ b/config/locales/server.da.yml @@ -537,20 +537,27 @@ da: page_view_anon_reqs: title: "Anonym" xaxis: "Dag" - yaxis: "Anonym API Forespørgsler" + yaxis: "Anonyme API-Forespørgsler" page_view_logged_in_reqs: title: "Logget ind" xaxis: "Dag" + yaxis: "Indloggede API-forespørgsler" page_view_crawler_reqs: title: "Web Crawlers" xaxis: "Dag" + yaxis: "Web Crawler API-forespørgsler" page_view_total_reqs: title: "Total" xaxis: "Dag" + yaxis: "Totale API-forespørgsler" page_view_logged_in_mobile_reqs: + title: "Indloggede API-forespørgsler" xaxis: "Dag" + yaxis: "Mobile indloggede API-forespørgsler" page_view_anon_mobile_reqs: + title: "Anonyme API-forespørgsler" xaxis: "Dag" + yaxis: "Mobile anonyme API-forepørgsler" http_background_reqs: title: "Baggrund" xaxis: "Dag" @@ -678,6 +685,21 @@ da: enable_mobile_theme: "Mobile enheder bruger et mobilvenligt tema, med mulighed for at skifte til det fulde site. Deaktivér dette hvis du ønsker at anvende et brugerdefineret stylesheet som er fuldstændigt responsivt." short_progress_text_threshold: "Når antallet af indlæg overstiger dette tal viser statuslinjen kun det aktuelle indlægsnummer. Hvis du ændrer bredden af statuslinjen kan det være nødvendigt at opdatere denne værdi." default_code_lang: "Standard syntax highlighting som bruges i GitHub kodeblokke (lang-auto, ruby, python etc.)." + default_email_digest_frequency: "Hvor ofte brugerne som standard modtager e-mail-sammendrag. " + default_email_private_messages: "Send som standard en email når nogen sender brugeren en besked." + default_email_direct: "Send som standard en email når nogen citerer/svarer/nævner/inviterer brugeren." + default_email_mailing_list_mode: "Send som standard en email for hvert nyt indlæg." + default_email_always: "Send som standard en email-notifikation selv hvis brugeren er aktiv." + default_other_new_topic_duration_minutes: "Global standardkriterium for hvornår et emne regnes for nyt." + default_other_auto_track_topics_after_msecs: "Globalt standardtidsrum før et emne automatisk spores. " + default_other_external_links_in_new_tab: "Åbn som standard links på et nyt faneblad." + default_other_enable_quoting: "Slå som standard \"svar på den markerede tekst\" til." + default_other_dynamic_favicon: "Vis som standard nyt / opdateret emnetal på browserikon" + default_other_disable_jump_reply: "Spring ikke som standard til det nye indlæg efter brugeren har svaret" + default_other_edit_history_public: "Offentliggør som standard rettelser til indlæg." + default_categories_watching: "Liste over kategorier der som standard overvåges." + default_categories_tracking: "Liste over kategorier der som standard følges." + default_categories_muted: "Liste over kategorier der som standard ignoreres." notification_types: mentioned: "%{display_username} nævnte dig i %{link}" liked: "%{display_username} synes om dit indlæg i %{link}" diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index 982966a2bc..5d08d72792 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -69,7 +69,8 @@ de: min_username_length_exists: "Die minimale Länge für den Benutzernamen kann nicht höher sein als der kürzeste Benutzername." min_username_length_range: "Du kannst das Minimum nicht höher setzen als das Maximum." max_username_length_exists: "Die maximale Länge für den Benutzernamen kann nicht kürzer sein als der längste Benutzername." - max_username_length_range: "Das Maximum darf nicht kleiner sein als das Minimum." + max_username_length_range: "Das Maximum darf nicht kleiner als das Minimum sein." + default_categories_already_selected: "Du kannst keine Kategorie auswählen, welche bereits in einer anderen Liste benutzt wird. " s3_upload_bucket_is_required: "Uploads auf Amazon S3 können nicht aktiviert werden, bevor der 's3_upload_bucket' eingetragen wurde." bulk_invite: file_should_be_csv: "Die hochgeladene Datei sollte im CSV oder TXT Format vorliegen." @@ -121,9 +122,9 @@ de: user_is_suspended: "Gesperrte Benutzer dürfen keine Beiträge schreiben." topic_not_found: "Etwas ist schief gelaufen. Wurde das Thema eventuell geschlossen oder gelöscht, während du es angeschaut hast?" just_posted_that: "ist einer einer vor Kurzem von dir geschriebenen Nachricht zu ähnlich" - has_already_been_used: "wird bereits verwendet" + has_already_been_used: "wurde bereits verwendet" invalid_characters: "enthält ungültige Zeichen" - is_invalid: "ist ungültig; bitte ein wenig anschaulicher" + is_invalid: "ist ungültig; bitte sei ein wenig deutlicher" next_page: "nächste Seite →" prev_page: "← vorherige Seite" page_num: "Seite %{num}" @@ -290,8 +291,18 @@ de: title: "Anführer" change_failed_explanation: "Du wolltest %{user_name} auf '%{new_trust_level}' zurückstufen. Die Vertrauensstufe ist jedoch bereits '%{current_trust_level}'. %{user_name} verbleibt auf '%{current_trust_level}'. Wenn du den Benutzer zurückstufen möchtest, musst du zuerst seine Vertrauensstufe sperren." rate_limiter: - slow_down: "Du hast diese Aktion zu oft durchgeführt. Versuch es später wieder. " + slow_down: "Du hast diese Aktion zu oft durchgeführt. Versuche es später wieder." too_many_requests: "Diese Aktion kann nur ein begrenztes Mal pro Tag durchgeführt werden. Bitte warte %{time_left} bis zum nächsten Versuch." + by_type: + first_day_replies_per_day: "Du hast die maximale Anzahl an Antworten erreicht, die ein neuer Benutzer am ersten Tag erstellen kann. Bitte warte %{time_left}, bis Du es wieder versuchst." + first_day_topics_per_day: "Du hast die maximale Anzahl an Themen erreicht, die ein neuer Benutzer am ersten Tag erstellen kann. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_topic: "Du erstellst zu schnell zu viele Themen hintereinander. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_post: "Du antwortest zu schnell. Bitte warte %{time_left}, bis Du es wieder versuchst." + topics_per_day: "Du hast die maximale Anzahl an neuen Themen für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + pms_per_day: "Du hast die maximale Anzahl an Nachrichten für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_like: "Du hast die maximale Anzahl „Gefällt mir“ für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + create_bookmark: "Du hast die maximale Anzahl an Lesezeichen für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." + edit_post: "Du hast die maximale Anzahl an Änderungen für heute erreicht. Bitte warte %{time_left}, bis Du es wieder versuchst." hours: one: "1 Stunde" other: "%{count} Stunden" @@ -373,19 +384,21 @@ de: one: "vor fast einem Jahr" other: "vor fast %{count} Jahren" password_reset: + no_token: "Entschuldige, aber der Link zum Zurücksetzen des Passworts ist zu alt. Wähle 'Ich habe mein Passwort vergessen' um einen neuen Link zu erhalten." choose_new: "Bitte wähle ein neues Passwort" choose: "Bitte wähle ein Passwort" update: 'Passwort aktualisieren' save: 'Passwort festlegen' title: 'Passwort zurücksetzen' - success: "Dein Passwort wurde erfolgreich geändert, du bist nun angemeldet." - success_unapproved: "Dein Passwort wurde erfolgreich verändert." + success: "Dein Passwort wurde erfolgreich geändert, und du bist nun angemeldet." + success_unapproved: "Dein Passwort wurde erfolgreich geändert." continue: "Weiter zu %{site_name}" change_email: confirmed: "Deine E-Mail-Adresse wurde aktualisiert." please_continue: "Weiter zu %{site_name}" error: "Es gab einen Fehler beim Ändern deiner Mailadresse. Wird diese Adresse bereits genutzt?" activation: + action: "Klicke hier, um deinen Account zu aktivieren" already_done: "Entschuldige, dieser Link zur Aktivierung des Benutzerkontos ist nicht mehr gültig. Ist dein Konto schon aktiviert?" please_continue: "Dein neues Konto ist jetzt bestätigt; du wirst auf die Startseite weitergeleitet." continue_button: "Weiter zu %{site_name}" @@ -426,7 +439,7 @@ de: like: title: 'Gefällt mir' description: 'Dieser Beitrag gefällt mir' - long_form: 'dies gefällt mit' + long_form: 'hat dies gefallen' vote: title: 'Abstimmung' description: 'Stimme für diesen Beitrag' @@ -478,9 +491,13 @@ de: title: "Neue Benutzer" xaxis: "Tag" yaxis: "Anzahl neuer Nutzer" + profile_views: + title: "Profilaufrufe" + xaxis: "Tag" + yaxis: "Anzahl der angezeigten Benutzerprofile" topics: title: "Themen" - xaxis: "Day" + xaxis: "Tag" yaxis: "Anzahl neuer Themen" posts: title: "Beiträge" @@ -568,6 +585,7 @@ de: page_view_anon_mobile_reqs: title: "Anonyme API-Anfrangen" xaxis: "Tag" + yaxis: "Mobile anonyme API Anfragen" http_background_reqs: title: "Hintergrund" xaxis: "Tag" @@ -610,6 +628,7 @@ de: host_names_warning: "Deine config/database.yml-Datei verwendet localhost als Hostname. Trage hier den Hostnamen deiner Webseite ein." gc_warning: 'Dein Server verwendet die Standardparameter für Rubys Garbage-Collector, die nicht optimal sind. Lese dieses Thema über Performanzeinstellungen (en): Tuning Ruby and Rails for Discourse.' sidekiq_warning: 'Sidekiq läuft nicht. Viele Aufgaben, wie zum Beispiel das Versenden von Mails, werden asynchron durch Sidekiq ausgeführt. Stelle sicher, dass mindestens eine Sidekiq-Prozess läuft. Mehr über Sidekiq erfährst du hier (en).' + queue_size_warning: 'Eine hohe Anzahl an Aufgaben (%{queue_size}) befindet sich in der Warteschlange. Dies könnte auf ein Problem mit Sidekiq hinweisen oder du musst zusätzliche Sidekiq Worker starten.' memory_warning: 'Dein Server läuft mit weniger als 1 GB Hauptspeicher. Mindestens 1 GB Hauptspeicher werden empfohlen.' google_oauth2_config_warning: 'Der Server ist für Anmeldung und Login mit Google OAuth2 (enable_google_oauth2_logins) konfiguriert, aber die Client-ID und das Client-Gemeheimnis sind nicht gesetzt. Trage diese in den Einstellung ein. Eine Anleitung zu diesem Thema findest du hier.' facebook_config_warning: 'Der Server erlaubt die Anmeldung mit Facebook (enable_facebook_logins), aber die App ID und der Geheimcode sind nicht gesetzt. Besuche die Einstellungen um die fehlenden Einträge hinzuzufügen. Besuche den Leitfaden um mehr zu erfahren.' @@ -618,6 +637,7 @@ de: s3_config_warning: 'Der Server wurde konfiguriert um Dateien nach s3 hochzuladen, aber mindestens der folgenden Einstellungen fehlt: s3_access_key_id, s3_secret_access_key oder s3_upload_bucket. Besuche die Einstellungen um die fehlenden Einträge hinzuzufügen. Besuche "How to set up image uploads to S3?" um mehr zu erfahren.' s3_backup_config_warning: 'Der Server ist so konfiguriert, dass Datensicherungen auf S3 geladen werden, aber mindestens einer der folgenden Einstellungen: s3_access_key_id, s3_secret_access_key or s3_backup_bucket ist nicht festgelegt. Gehe Sie zu den Seiteneinstellungen und aktualisieren Sie die Einstellungen. Siehe "Wie konfiguriere ich das Hochladen von Bildern zu S3?" um mehr darüber zu erfahren.' image_magick_warning: 'Der Server wurde konfiguriert um Vorschaubilder von grossen Bildern zu erstellen, aber ImageMagick ist nicht installiertd. Installiere ImageMagick mit deinem bevorzugten Packetmanager oder besuche um das aktuelle Paket herunterzuladen.' + failing_emails_warning: "%{num_failed_jobs} E-Mails konnten nicht versendet werden. Überprüfe deine app.yml und stelle sicher, dass die E-Mail Servereinstellungen korrekt gesetzt sind. \nSieh dir hier die nicht versendeten E-Mails an." default_logo_warning: "Richte das Logo für deine Seite ein. Konfiguriere dafür logo_url, logo_small_url, und favicon_url unter Website-Einstellungen." contact_email_missing: "Gib eine Kontakt-E-Mail-Adresse an, damit du dringende Meldungen bezüglich deiner Seite erhalten kannst. Trage sie in den Einstellungen ein." contact_email_invalid: "Die Kontakt E-Mail-Adresse ist ungültig. Ändere sie in den Einstellungen." @@ -693,10 +713,17 @@ de: category_featured_topics: "Anzahl der angezeigten Themen je Kategorie auf der Kategorieseite /categories. Nachdem dieser Wert geändert wurde, dauert es bis zu 15 Minuten bis die Kategorieseite aktualisiert ist." show_subcategory_list: "Zeige Liste von Unterkategorien statt einer Liste von Themen wenn eine Kategorie ausgewählt wird." fixed_category_positions: "Falls aktiviert können Kategorien in einer fest vorgegebenen Reihenfolge angeordnet werden. Andernfalls werden Kategorien nach Aktivität sortiert aufgelistet." + fixed_category_positions_on_create: "Wenn aktiviert wird die Kategoriezuordnung beim Erstellen eines Themas erhalten (benötigt fixed_category_positions)." add_rel_nofollow_to_user_content: "Füge mit Ausnahme interner Links allen nutzergenerierten Inhalten 'rel nofollow' hinzu (inkludiert übergeordnete Domains). Die Änderung dieser Einstellung erfordert, dass du sämtliche Markdown-Beiträge aktualisierst." + exclude_rel_nofollow_domains: "Eine Liste von Domains auf welchen das Attribut nofollow nicht auf Links gesetzt werden sollte (tld.com erlaubt auch sub.tld.com). Du solltest mindestens die Top-Level Domain dieser Seite hinzufügen, damit die Crawler der Suchmaschinen all deinen Content indexieren können. Wenn weitere Teile deiner Webseite unter anderen Domains zu finden sind, kannst du diese hier ebenfalls hinzufügen." post_excerpt_maxlength: "Maximale Länge eines Beitrags-Auszuges bzw. -Zusammfassung." post_onebox_maxlength: "Maximale Länge eines Onebox-Discourse-Beitrags in Zeichen." onebox_domains_whitelist: "Liste von Domains, deren Inhalte für Oneboxen erlaubt sind; diese Domains sollten OpenGraph oder oEmbed unterstützen. Teste ihre Kompatibilität unter http://iframely.com/debug" + logo_url: "Das Logo oben links auf deiner Seite sollte eine breite, rechteckige Form haben. Wenn du kein Logo auswählst, wird stattdessen der Seitentitel angezeigt." + digest_logo_url: "Alternatives Logo, welches oben in der E-Mail Kurzfassung angezeigt wird (sollte eine breite, rechteckige Form haben). Wenn du kein Logo auswählst, wird stattdessen das `logo_url` verwendet. " + logo_small_url: "Dein Logo in klein für die obere Linke Seite deiner Webseite, in Form eines rechteckigen Quadrates. Es wird angezeigt, wenn der Nutzer scrollt. Wenn du dieses Feld frei lässt, wird stattdessen ein Home-Symbol angezeigt." + favicon_url: "Das Favicon deiner Seite. Besuche http://en.wikipedia.org/wiki/Favicon um weitere Informationen zu erhalten. Damit das Favicon korrekt über einen CDN-Service funktioniert, muss es eine .png Datei sein." + mobile_logo_url: "Das fixierte Logo in der oberen Linken Hälfte der mobilen Seitenversion. Es sollte eine quadratische Form haben. Wenn du dieses Feld frei lässt, wird `logo_url` benutzt. " apple_touch_icon_url: "Icon für berührungsempfindliche Apple-Geräte. Empfohlene Grösse ist 144px auf 144px." notification_email: "Die E-Mail-Adresse die als \"From:\" Absender aller wichtiger System-Emails benutzt wird. Die benutzte Domain sollte über korrekte SPF, DKIM und PTR Einträge verfügen, damit Emails sicher zugestellt werden können." email_custom_headers: "Eine Pipe-getrennte (|) Liste von eigenen Mail Headern" @@ -727,6 +754,7 @@ de: flag_sockpuppets: "Wenn ein neuer Nutzer auf ein Thema antwortet, das von einem anderen neuen Nutzer aber mit der gleichen IP-Adresse begonnen wurde, markiere beide Beiträge als Werbung." traditional_markdown_linebreaks: "Traditionelle Zeilenumbrüche in Markdown, die zwei nachfolgende Leerzeichen für einen Zeilenumbruch benötigen." post_undo_action_window_mins: "Minuten, die ein Nutzer hat, um Aktionen auf Beiträgen rückgängig zu machen (Like, Meldung, usw.)." + must_approve_users: "Moderatoren oder Administratoren müssen alle neuen Benutzeraccounts freischalten, bevor diese Zugriff auf die Webseite erhalten. ACHTUNG: Das Aktivieren dieser Option für eine Live-Seite entfernt den Zugriff auch für alle existierenden Benutzer!" ga_tracking_code: "Google Analytics Trackingcode, zum Beispiel: UA-12345678-9; siehe http://google.com/analytics" ga_domain_name: "Google Analytics Domänenname, zum Beispiel: mysite.com; siehe http://google.com/analytics" ga_universal_tracking_code: "Google Universal Analytics (analytics.js) tracking code code, beispielsweise: UA-12345678-9; Siehe http://google.com/analytics" @@ -735,6 +763,7 @@ de: enable_noscript_support: "Aktiviere Standard-Suchmaschinen-Webcrawler-Unterstützung durch den noscript-Tag" allow_moderators_to_create_categories: "Erlaube Moderatoren neue Kategorien zu erstellen" cors_origins: "Erlaubte Adressen für Cross-Origin-Requests (CORS). Jede Adresse muss http:// oder https:// enthalten. Die Umgebungsvariable DISCOURSE_ENABLE_CORS muss gesetzt sein, um CORS zu aktivieren." + use_admin_ip_whitelist: "Administratoren können sich nur anmelden, wenn sie von einer IP-Adresse aus zugreifen, welcher unter den vertrauenswürden IP-Adressen gelistet ist (Admin > Logs > Screened Ips)." top_menu: "Bestimme, welche Elemente in der Navigationsleiste der Homepage auftauchen sollen, und in welcher Reihenfolge. Beispiel: latest|new|unread|categories|top|read|posted|bookmarks" post_menu: "Bestimme, welche Funktionen in welcher Reihenfolge im Beitragsmenü auftauchen. Beispiel: like|edit|flag|delete|share|bookmark|reply" post_menu_hidden_items: "Die Einträge im Menü eines Beitrags, die standardmäßig hinter einer erweiterbaren Ellipse versteckt werden sollen." @@ -750,10 +779,12 @@ de: topics_per_period_in_top_summary: "Anzahl der Themen, die in der Top-Themübersicht angezeigt werden." topics_per_period_in_top_page: "Anzahl der Themen, die in der mit \"Mehr zeigen\" erweiterten Top-Themenübersicht angezeigt werden." redirect_users_to_top_page: "Verweise neue und länger abwesende Nutzer automatisch zur Top Übersichtsseite" + top_page_default_timeframe: "Standardzeitfenster für die oberste, angezeigte Seite." show_email_on_profile: "Im Profil die E-Mail-Adresse des Benutzers anzeigen (ist nur für den Benutzer selbst und Mitarbeiter sichtbar)." email_token_valid_hours: "Tokens zur Passwort-Wiederherstellung / Aktivierung eines Kontos sind für (n) Stunden gültig." email_token_grace_period_hours: "Tokens zur Passwort-Wiederherstellung / Aktivierung eines Kontos sind auch nach ihrer Verwendung noch für eine Frist von (n) Stunden gültig." enable_badges: "Abzeichen aktivieren" + enable_whispers: "Erlaube Moderatoren und Administratoren in Beiträgen privat zu kommunizieren (experimentell)" allow_index_in_robots_txt: "Suchmaschinen mittels der robots.txt Datei erlauben, die Seite zu indizieren." email_domains_blacklist: "Eine durch senkrechte Striche getrennte Liste von E-Mail-Domains, die für die Registrierung neuer Konten nicht verwenden werden dürfen. Beispiel: mailinator.com|trashmail.net" email_domains_whitelist: "Eine durch senkrechte Striche getrennte Liste von E-Mail-Domains, die für die Registrierung neuer Konten verwendet werden können. ACHTUNG: Benutzer mit E-Mail-Adressen anderer Domains werden nicht zugelassen!" @@ -769,15 +800,21 @@ de: login_required: "Nur angemeldete Nutzer dürfen Inhalte der Seite lesen, anonyme Zugriffe sind verboten." min_username_length: "Minimale Benutzernamenlänge in Zeichen." max_username_length: "Maximale Benutzernamenlänge in Zeichen." + reserved_usernames: "Benutzernamen, welche für die Registrierung gesperrt werden sollen." min_password_length: "Minimale Länge des Passworts." block_common_passwords: "Erlaube kein Passwort unter den 10000 meist verwendeten Passwörter." + enable_sso: "Aktiviere Single Sign-on über eine externe Seite (WARNUNG: DIE E-MAIL ADRESSE DES BENUTZERS *MUSS* VON DER EXTERNEN SEITE VERIFIZIERT WERDEN)." enable_sso_provider: "Aktiviere das Discourse SSO Anbieter Protokoll unter /session/sso_provider; benötigt sso_secret." sso_url: "URL des Single Sign On Endpunkts" sso_secret: "Geheime Zeichenkette die als Schlüssel für die Authentifizierung von SSO-Informationen verwendet wird. Sollte unbedingt 10 Zeichen oder länger sein." + sso_overrides_email: "Überschreibt lokale E-Mail mit E-Mail der externen Seite aus SSO Daten (WARNUNG: Diskrepanzen können aufgrund von Normalisierung von lokalen E-Mail Adressen auftreten)" + sso_overrides_username: "Überschreibt lokalen Benutzernamen mit dem Benutzernamen der externen Seite aus SSO Daten (WARNUNG: Diskrepanzen können aufgrund von Normalisierung von lokalen Benutzernamen auftreten)" + sso_overrides_name: "Überschreibt den vollen Namen des Benutzers mit den Daten von der externen Seite aus dem SSO-Payload bei jedem Login. Außerdem werden lokale Änderungen verhindert." sso_overrides_avatar: "Überschreibt den Avatar des Benutzers mit dem Avatar aus der SSO Payload. Wenn aktiv, dann sollte allow_uploaded_avatars deaktiviert werden." sso_not_approved_url: "Nicht genehmigte SSO-Accounts zu dieser URL weiterleiten" enable_local_logins: "Aktiviere Login mit lokal gespeicherten Benutzernamen und Passwörtern. (Anmerkung: muss aktiviert sein, damit Einladungen funktionieren)" allow_new_registrations: "Erlaube das Registrieren neuer Benutzerkonten. Wird dies deaktiviert, so kann niemand mehr ein neues Konto erstellen." + enable_signup_cta: "Zeige wiederkehrenden Gästen einen Hinweis, dass diese sich Anmelden oder Registrieren sollen." enable_yahoo_logins: "Aktiviere Yahoo Authentifizierung." enable_google_oauth2_logins: "Google Oauth2-Authentifizierung aktivieren. Dies ist der momentan von Google unterstützte Authentifizierungs-Mechanismus. Benötigt Client-ID und Secret." google_oauth2_client_id: "Client-ID deiner Google-Anwendung." @@ -793,6 +830,8 @@ de: github_client_secret: "Client Secret für Github Authentifizierung, registriert auf https://github.com/settings/applications" allow_restore: "Wiederherstellung zulassen, welche ALLE vorhandenen Daten überschreiben kann! Auf 'false' lassen, sofern Sie nicht planen, eine Sicherung wiederherzustellen." maximum_backups: "Die maximale Anzahl an Sicherungen, die auf dem Server gespeichert werden. Ältere Sicherungen werden automatisch gelöscht." + automatic_backups_enabled: "Automatische Backups aktivieren. Die Backups werden im eingestellten Zeitintervall erstellt." + backup_frequency: "WIe häufig sollen Backups erstellt werden (Angabe in Tagen)?" enable_s3_backups: "Lade fertige Backups zu S3 hoch. WICHTIG: In den Dateien-Einstellungen müssen gültige S3-Kontodaten eingegeben sein." s3_backup_bucket: "Der entfernte Speicherort für Ihre Sicherungen. WARNUNG: Stellen Sie sicher, dass es sich um einen privaten Speicherort handelt." active_user_rate_limit_secs: "Sekunden, nach denen das 'last_seen_at'-Feld aktualisiert wird." @@ -822,6 +861,10 @@ de: s3_access_key_id: "The Amazon S3 access key id that will be used to upload images" s3_secret_access_key: "Der geheime Schlüssel von Amazon S3 welcher für das Hochladen verwendet wird" s3_region: "Der Name der Amazon S3 Region welche für das Hochladen verwendet wird" + s3_cdn_url: "Die CDN URL für alle S3 Anlagen (bspw. https://cdn.somewhere.com). ACHTUNG: Nachdem diese Einstellung abgeändert wurde, musst du alle alten Beiträge neu generieren." + avatar_sizes: "Liste der Größe von automatisch generierten Avataren." + external_system_avatars_enabled: "Benutze einen externen Avatar Service" + external_system_avatars_url: "URL des externen Avatar Systems. Erlaubte Ersetzungen sind {username} {first_letter} {color} {size}" enable_flash_video_onebox: "Aktiviere das Einbinden von swf und flv (Adobe Flash) Links in einer Onebox. ACHTUNG: Kann ein Sicherheitsrisiko sein." default_invitee_trust_level: "Standardwert für die Stufe eines eingeladenen Nutzers (0-4)." default_trust_level: "Standardwert für die Vertrauensstufe (0-4) für alle neuen Benutzer. ACHTUNG! Diesen Wert anzuheben kann zu erhöhtem Spam Aufkommen führen!" @@ -874,6 +917,9 @@ de: topic_views_heat_low: "Aufrufe-Feld leicht hervorheben, sobald das Thema so oft gelesen wurde." topic_views_heat_medium: "Aufrufe-Feld mäßig hervorheben, sobald das Thema so oft gelesen wurde." topic_views_heat_high: "Aufrufe-Feld stark hervorheben, sobald das Thema so oft gelesen wurde." + cold_age_days_low: "Aktivitäts-Feld leicht abdunkeln, wenn das Thema N Tage alt ist." + cold_age_days_medium: "Aktivitäts-Feld etwas abdunkeln, wenn das Thema N Tage alt ist." + cold_age_days_high: "Aktivitäts-Feld stark abdunkeln, wenn das Thema N Tage alt ist." history_hours_low: "Bearbeitungs-Symbol leicht hervorheben, wenn der Beitrag innerhalb so vieler Stunden nach Erstellen bearbeitet wird." history_hours_medium: "Bearbeitungs-Symbol mäßig hervorheben, wenn der Beitrag innerhalb so vieler Stunden nach Erstellen bearbeitet wird." history_hours_high: "Bearbeitungs-Symbol stark hervorheben, wenn der Beitrag innerhalb so vieler Stunden nach Erstellen bearbeitet wird." @@ -886,6 +932,8 @@ de: newuser_spam_host_threshold: "Die Anzahl welche ein Frischling Beiträge mit Links auf die gleiche Seite innerhalb ihrer `newuser_spam_host_posts` veröffentlichen, bevor der Beitrag als Spam klassifiziert wird." white_listed_spam_host_domains: "Liste von Domänen, die keinem Spam-Host Test unterzogen werden. Neue Benutzer werden niemals daran gehindert, Beiträge mit Links zu diesen Domains zu erstellen." staff_like_weight: "Zusätzlicher Gewichtungsfaktor für \"Gefällt mir\" Wertungen von Mitarbeitern." + topic_view_duration_hours: "Alle N Stunden einen neuen Themenaufruf pro IP/Benutzer zählen." + user_profile_view_duration_hours: "Alle N Stunden einen neuen Profilaufruf pro IP/Benutzer zählen." levenshtein_distance_spammer_emails: "E-Mail-Adressen, die sich um so viele Zeichen unterscheiden, werden beim Vergleich von Adressen von Spam-Nutzern dennoch als identisch betrachtet." max_new_accounts_per_registration_ip: "Keine neuen Registrierungen von einer IP-Adresse annehmen, zu der bereits (n) Benutzerkonten mit Vertrauensstufe 0 (und keine Konten von Mitarbeitern oder mit Vertrauensstufe 2 oder höher) gehören." min_ban_entries_for_roll_up: "Ein Klick auf den \"Zusammenfassen\" Knopf führt (N) oder mehr Sperren zu einer einzelnen Subnetz-Sperre zusammen." @@ -894,6 +942,9 @@ de: num_flaggers_to_close_topic: "Mindestanzahl unabhängiger Mitglieder die ein Thema \"flaggen\" damit es automatisch pausiert wird bis es geprüft wurde." num_flags_to_close_topic: "Mindestanzahl aktiver \"Flags\" die notwendig sind um ein Thema automatisch zu pausieren bis es geprüft wird." auto_respond_to_flag_actions: "Automatische Antwort auf abgearbeitete Meldungen aktivieren." + min_first_post_typing_time: "Minimale Zeit die ein Benutzer mindestens aufwenden muss, um einen Beitrag zu schreiben. Wenn diese Zeit unterschritten wird, wird der Beitrag automatisch in die Warteschlange für freizuschaltende Beiträge verschoben. Setze diesen Wert auf 0 um dieses Verhalten zu deaktivieren (nicht empfohlen)." + auto_block_fast_typers_on_first_post: "Blockiere Benutzer automatisch, welche unterhalb der min_first_post_typing_time liegen." + auto_block_fast_typers_max_trust_level: "Maximales Vertrauenslevel um \"Schnelltipper\" automatisch zu blockieren." reply_by_email_enabled: "Aktviere das Antworten auf Themen via E-Mail." reply_by_email_address: "Vorlage für die Antwort einer per E-Mail eingehender E-Mail-Adresse, zum Beispiel: %{reply_key}@reply.example.com oder replies+%{reply_key}@example.com" disable_emails: "Discourse daran hindern, jegliche Art von Emails zu verschicken" @@ -906,6 +957,7 @@ de: pop3_polling_host: "Der Host für die POP3-Anfrage nach E-Mails." pop3_polling_username: "Der Benutzername für das POP3-Konto zum Abfragen von E-Mails." pop3_polling_password: "Das Passwort für das POP3-Konto zum Abfragen von E-Mails." + log_mail_processing_failures: "Logge Fehler im E-Mail Prozess in http://yoursitename.com/logs" email_in: "Erlaube Benutzern neue Themen per E-Mail (benötigt POP3 polling) zu erstellen. Konfiguriere die Adressen im Reiter „Einstellungen“ für jede Kategorie." email_in_min_trust: "Minimale Vertrauensstufe um neue Themen per E-Mail posten zu können." email_prefix: "Das [label] das für den Betreff von E-Mails genutzt wird. Standardwert ist 'title' wenn dies nicht gesetzt ist." @@ -917,6 +969,8 @@ de: username_change_period: "Die Anzahl der Tage, die neu registrierte Benutzer Zeit haben, um ihren Benutzernamen zu ändern (0 verbietet Änderungen)." email_editable: "Erlaube Benutzern ihre E-Mail-Adresse nach der Registrierung zu ändern." logout_redirect: "Ziel für Weiterleitung nach einem Logout (z. B.: http://somesite.com/logout)" + allow_uploaded_avatars: "Benutzer können eigene Profilbilder hochladen." + allow_animated_avatars: "Benutzer können animierte Profilbilder (.gif) hochladen und benutzen. ACHTUNG: Rufe den Befehl `avatars:refresh rake` auf nachdem du diese Option verändert hast." allow_animated_thumbnails: "Generiert animierte Vorschaubilder von animierten gifs." default_avatars: "URLs zu Bildern, die als Standard-Avatare verwendet werden sollen, bis neue Nutzer ihren Avatar geändert haben." automatically_download_gravatars: "Avatare von Gravatar herunterladen, wenn ein Nutzer sich registriert oder seine E-Mail-Adresse ändert." @@ -924,6 +978,7 @@ de: digest_min_excerpt_length: "Minimale Länge des Auszugs aus einem Beitrag in der E-Mail-Zusammenfassung, in Zeichen." suppress_digest_email_after_days: "Sende keine E-Mail-Zusammenfassungen an Benutzer, die die Seite seit mehr als (n) Tagen nicht mehr besucht haben." disable_digest_emails: "E-Mail-Zusammenfassungen für alle Benutzer deaktivieren." + detect_custom_avatars: "Aktiviere diese Option, um zu überprüfen, ob Benutzer eigene Profilbilder hochgeladen haben." max_daily_gravatar_crawls: "Wie oft pro Tag Discourse höchstens auf Gravatar nach benuterdefinierten Avataren suchen soll." public_user_custom_fields: "Liste selbst definierter Profil-Felder, die öffentlich angezeigt werden dürfen." staff_user_custom_fields: "Liste selbst definierter Profil-Felder, die Mitarbeitern angezeigt werden dürfen." @@ -935,12 +990,14 @@ de: sequential_replies_threshold: "Anzahl von Beiträgen, die ein Benutzer in einem Thema am Stück schreiben darf, bevor er eine Erinnerung bezüglich zu vieler aufeinanderfolgender Antworten erhält." enable_mobile_theme: "Mobilgeräte verwenden eine mobile Darstellung mit der Möglichkeit zur vollständigen Seite zu wechseln. Deaktiviere diese Option, wenn du ein eigenes Full-Responsive-Stylesheet verwenden möchtest." dominating_topic_minimum_percent: "Anteil der Nachrichten eines Themas in Prozent, die ein einzelner Nutzer verfassen darf, bevor dieser Nutzer darauf hingewiesen wird, dass er dieses Thema dominiert." + daily_performance_report: "Analysiere die NGINX-Logs täglich. Poste anschließend eine Zusammenfassung als Beitrag, welcher nur für Moderatoren oder Administratoren zugänglich ist." suppress_uncategorized_badge: "Zeige kein Abzeichen für unkategorisierte Themen in der Themenliste." global_notice: "Zeigt allen Besuchern eine DRINGENDE NOTFALL-NACHRICHT als global sichtbares Banner an. Deaktiviert bei leerer Nachricht. (HTML ist erlaubt.)" disable_edit_notifications: "Unterdrückt Bearbeitungshinweise durch den System-Nutzer, wenn die 'download_remote_images_to_local' Einstellung aktiviert ist." full_name_required: "Der voller Name wird für das Benutzerprofil benötigt." enable_names: "Zeigt den vollen Namen eines Benutzers auf dem Profil, der Benutzerkarte und in E-Mails an. Wenn deaktiviert wird der volle Name überall ausgeblendet." display_name_on_posts: "Zeige zusätzlich zum @Benutzernamen auch den vollen Namen des Benutzers bei seinen Beiträgen." + show_time_gap_days: "Wenn zwei Beiträge eine bestimmte Anzahl an Tagen auseinander liegen, zeige die Zeitdifferenz im Beitrag an." invites_per_page: "Anzahl an Einladungen, die auf der Benutzerseite angezeigt werden." short_progress_text_threshold: "Sobald die Anzahl an Beiträgen in einem Thema diese Nummer übersteigt, zeigt der Fortschrittsbalken nur noch die aktuelle Beitragsnummer. Dieser Wert sollte angepasst werden, falls die die Breite des Fortschrittsbalkens verändert wird." default_code_lang: "Standard Syntax Highlighting, dass auf GitHub Code Blöcke angewendet wird. (lang-auto, ruby, python etc.)" @@ -966,6 +1023,22 @@ de: enforce_square_emoji: "Emojis immer mit quadratischem Seitenverhältnis darstellen." approve_post_count: "Anzahl Beiträge eines neuen Nutzers, die genehmigt werden müssen" approve_unless_trust_level: "Beiträge von Nutzern unterhalb dieser Vertrauensstufe müssen genehmigt werden" + notify_about_queued_posts_after: "Wenn es Beiträge gibt, welche seit mehreren Stunden auf Ihre Freischaltung warten, sende eine E-Mail an die Kontaktemailadresse. Setze diesen Wert auf 0 um das zu deaktivieren." + default_email_digest_frequency: "Lege fest, wie oft die Benutzer eine Zusammenfassung per E-Mail erhalten." + default_email_private_messages: "Sende einem Benutzer standardmäßig eine E-Mail, wenn dieser eine Nachricht von einem anderen Benutzer erhält." + default_email_direct: "Aktiviere standardmäßig, dass eine E-Mail versendet wird, sobald ein Benutzer einen anderen Benutzer zitiert / einem anderen Benutzer antwortet / oder einen anderen Benutzer erwähnt bzw. einlädt." + default_email_mailing_list_mode: "Sende standardmäßig eine E-Mail für jeden neuen Beitrag." + default_email_always: "Aktiviert den E-Mail Versand an Nutzer, auch wenn diese gerade auf der Webseite aktiv sind. " + default_other_new_topic_duration_minutes: "Zeit wie lange ein Thema als \"Neu\" markiert werden soll. " + default_other_auto_track_topics_after_msecs: "Zeit bevor ein Thema automatisch verfolg wird. " + default_other_external_links_in_new_tab: "Öffne externe Links standardmäßig in einem neuen Tab." + default_other_enable_quoting: "Aktiviere standardmäßig die Zitat-Antwort Funktion für hervorgehobenen Text." + default_other_dynamic_favicon: "Zeige standardmäßig die Anzahl von neuen und geänderten Beiträgen im Browser-Symbol an." + default_other_disable_jump_reply: "Springe standardmäßig nicht zum neusten Beitrag des Users, wenn dieser geantwortet hat." + default_other_edit_history_public: "Zeige standardmäßig die Beitragshistorie öffentlich an." + default_categories_watching: "Liste der standardmäßig beobachteten Kategorien." + default_categories_tracking: "Liste der standardmäßig gefolgten Kategorien." + default_categories_muted: "Liste der standardmäßig stummgeschalteten Kategorien." errors: invalid_email: "Ungültige E-Mail-Adresse" invalid_username: "Es gibt keinen Benutzer mit diesem Nutzernamen." @@ -1016,6 +1089,9 @@ de: new_topic_moderator_post: one: "Ein Beitrag wurde in ein neues Thema verschoben: %{topic_link}" other: "%{count} Beiträge wurden in ein neues Thema verschoben: %{topic_link}" + existing_topic_moderator_post: + one: "Ein Beitrag wurde in ein neues Thema verschoben: %{topic_link}" + other: "%{count} Beiträge wurden in ein neues Thema verschoben: %{topic_link}" change_owner: post_revision_text: "Eigentümer geändert von %{old_user} zu %{new_user}" deleted_user: "ein gelöschter Benutzer" @@ -1072,6 +1148,7 @@ de: omniauth_error_unknown: "Während des Anmeldens ist etwas schief gelaufen, bitte versuche es noch einmal." new_registrations_disabled: "Leider können derzeit keine neuen Konten registriert werden." password_too_long: "Passwörter sind beschränkt auf 200 Zeichen." + email_too_long: "Die von dir eingegebene E-Mail Adresse ist zu lang. E-Mail Adressen dürfen maximal 254 Zeichen lang sein und Domain Namen maximal 253 Zeichen." reserved_username: "Der Benutzername ist nicht erlaubt." missing_user_field: "Sie haben nicht alle Benutzerfelder ausgefüllt" close_window: "Authentifizierung abgeschlossen. Schließe das Fenster um fortzufahren." @@ -1083,11 +1160,16 @@ de: characters: "darf nur aus Zahlen und Buchstaben bestehen" unique: "muss eindeutig sein" blank: "muss angegeben werden" + must_begin_with_alphanumeric: "muss mit einem Buchstaben, einer Zahl oder einem Unterstrich beginnen" + must_end_with_alphanumeric: "muss mit einem Buchstaben, einer Zahl oder einem Unterstrich enden" + must_not_contain_two_special_chars_in_seq: "muss keine Reihenfolge von 2 oder mehr Sonderzeichen (.-_) haben" + must_not_contain_confusing_suffix: "muss keinen verwirrenden Suffix wie .json oder png. etc. enthalten." email: not_allowed: "ist für diesen Mailprovider nicht erlaubt. Bitte verwende eine andere Mailadresse." blocked: "ist nicht erlaubt." ip_address: blocked: "Von Deiner IP Adresse aus ist es nicht erlaub sich zu registrieren." + max_new_accounts_per_registration_ip: "Weitere Registrierungen sind von deiner IP-Adresse aus nicht gestattet (limit erreicht). Kontaktiere einen Administrator mit dem Problem damit er dir helfen kann." invite_mailer: subject_template: "%{invitee_name} hat dich zum Thema '%{topic_title}' auf %{site_domain_name} eingeladen" text_body_template: | @@ -1120,12 +1202,49 @@ de: Dies ist eine Einladung von einem vertrauenswürdigen Benutzer. Du brauchst dich daher nicht anzumelden. invite_password_instructions: subject_template: "Lege ein Passwort für dein %{site_name}-Konto fest" + text_body_template: | + Schön, dass du die Einladung zu %{site_name} angenommen hast-- Willkommen! + + Klicke hier um jetzt dein Passwort festzulegen: + %{base_url}/users/password-reset/%{email_token} + + (Wenn der Link abgelaufen ist, wähle "Passwort vergessen" aus, wenn du dich mit deiner E-Mail Adresse einloggen möchtest.) test_mailer: subject_template: "[%{site_name}] Test der Mailzustellbarkeit" new_version_mailer: subject_template: "[%{site_name}] Neue Discourse Version, Update verfügbar" + text_body_template: | + Eine neue Version von [Discourse](http://www.discourse.org) ist verfügbar. + + Deine Version: %{installed_version} + Neue Version: **%{new_version}** + + Das kannst du jetzt tun: + + - Schaue dir an was neu ist [GitHub changelog](https://github.com/discourse/discourse/commits/master). + + - Update direkt von deinem Browser aus über [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade). + + - Besuche [meta.discourse.org](http://meta.discourse.org) für Neuigkeiten, Diskussionen, und Support für Discourse. new_version_mailer_with_notes: subject_template: "[%{site_name}] Update verfügbar" + text_body_template: | + Eine neue Version von [Discourse](http://www.discourse.org) ist verfügbar. + + Deine Version: %{installed_version} + Neue Version: **%{new_version}** + + Das kannst du jetzt tun: + + - Schaue dir an was neu ist [GitHub changelog](https://github.com/discourse/discourse/commits/master). + + - Update direkt von deinem Browser aus über [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade). + + - Besuche [meta.discourse.org](http://meta.discourse.org) für Neuigkeiten, Diskussionen, und Support für Discourse. + + ### Release notes + + %{notes} flags_reminder: flags_were_submitted: one: "Folgende Markierungen wurden währen der letzten Stunden vorgenommen." @@ -1136,6 +1255,15 @@ de: subject_template: one: "Eine Markierung wartet auf Bearbeitung" other: "%{count} Markierungen warten auf Bearbeitung" + queued_posts_reminder: + subject_template: + one: "[%{site_name}] %{count} auf Freischaltung wartender Beitrag." + other: "[%{site_name}] %{count} auf Freischaltung wartende Beiträge." + text_body_template: | + Hallo, + + es gibt ein paar Beiträge von Nutzern, welche auf deine Freischaltung warten. + [Du kannst sie hier Freischalten oder Ablehnen](%{base_url}/queued-posts). flag_reasons: off_topic: "Dein Beitrag wurde als **Thema verfehlt** gemeldet: Die Community glaubt, dass er nicht zum Thema passt, wie es durch den Titel und den ersten Beitrag definiert wurde." inappropriate: "Dein Beitrag wurde als **unangemessen** gemeldet: die Community glaubt, dass er anstößig oder beleidigend ist oder einen Verstoß gegen [die Community Richtlinien](/guidelines) darstellt." @@ -1147,6 +1275,7 @@ de: disagreed: "Danke für deine Meldung. Wir sehen uns das an." deferred: "Danke für deine Meldung. Wir sehen uns das an." deferred_and_deleted: "Danke für deine Meldung. Wir haben den Beitrag entfernt." + temporarily_closed_due_to_flags: "Dieses Thema ist vorrübergehend geschlossen. Mehrere User haben dieses Thema gemeldet. " system_messages: post_hidden: subject_template: "Beitrag wegen Meldungen aus der Community versteckt" @@ -1200,6 +1329,7 @@ de: [prefs]: %{user_preferences_url} backup_succeeded: subject_template: "Sicherung erfolgreich abgeschlossen" + text_body_template: "Backup erfolgreich erstellt.\nBesuche [admin > backup section](%{base_url}/admin/backups) um das neue Backup herunterzuladen." backup_failed: subject_template: "Sicherung fehlgeschlagen" text_body_template: | @@ -1261,8 +1391,18 @@ de: Es ist kein Konto mit dieser E-Mail-Adresse bekannt. Versuche die Nachricht von einer anderen, im Forum registrierten E-Mail-Adresse zu verschicken oder kontaktiere einen Mitarbeiter. email_reject_empty: subject_template: "[%{site_name}] E-Mail-Problem -- Kein Inhalt" + text_body_template: | + Tut uns leid, aber deine E-Mail an %{destination} mit dem Betreff (titled %{former_title}) hat nicht funktioniert. + + Wir haben in deiner E-Mail keinen Inhalt feststellen können. + + Wenn du diese E-Mail bekommst, obwohl deine E-Mail Inhalt enthalten hat, versuche es erneut mit weniger Formatierung. email_reject_parsing: subject_template: "[%{site_name}] E-Mail-Problem -- Inhalt nicht erkannt" + text_body_template: | + Entschuldigung, aber deine E-Mail Nachricht an %{destination} mit dem Titel (titled %{former_title}) konnte nicht zugestellt werden. + + Wir konnten keinen Inhalt in deiner E-Mail feststellen. **Versichere dich, dass du den Inhalt oberhalb der erhaltenen E-Mail eingegeben hast** -- Auf Inline-Antworten können wir nicht reagieren. email_reject_invalid_access: subject_template: "[%{site_name}] E-Mail-Problem -- Nicht erlaubt" text_body_template: | @@ -1298,10 +1438,22 @@ de: Keine der Empfänger-Adressen ist uns bekannt. Bitte stelle sicher, dass die Ziel-Adresse in einer "An:" Zeile steht (nicht "Cc:" oder "Bcc:") und dass du die E-Mail an die richtige Adresse schickst, die dir von unseren Mitarbeitern genannt wurde. email_reject_topic_not_found: subject_template: "[%{site_name}] E-Mail Problem -- Thema nicht gefunden" + text_body_template: | + Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (Titel: %{former_title}) gab es ein Problem. + + Das Thema ist uns nicht bekannt oder es wurde gelöscht bzw. geschlossen. Wenn du glaubst, dass dies ein Irrtum ist, nimm bitte Kontakt mit einem unserer Mitarbeiter auf. email_reject_topic_closed: subject_template: "[%{site_name}] E-Mail Problem -- Thema geschlossen" + text_body_template: | + Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (Titel: %{former_title}) gab es ein Problem. + + Das Thema ist uns nicht bekannt oder es wurde gelöscht bzw. geschlossen. Wenn du glaubst, dass dies ein Irrtum ist, nimm bitte Kontakt mit einem unserer Mitarbeiter auf. email_reject_auto_generated: subject_template: "[%{site_name}] E-Mail Problem -- Automatisch erzeugte Antwort" + text_body_template: | + Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (Titel: %{former_title}) gab es ein Problem. + + Das Thema wurde geschlossen. Wenn du glaubst das dies ein Irrtum ist, nimm bitte Kontakt mit einem unserer Mitarbeiter auf. email_error_notification: subject_template: "[%{site_name}] E-Mail-Problem -- POP-Authentifizierungsfehler" text_body_template: | @@ -1365,6 +1517,10 @@ de: download_remote_images_disabled: subject_template: "Download von externen Bildern deaktiviert" text_body_template: "Die `download_remote_images_to_local` Einstellung wurde deaktiviert, da das Speicherplatz Limit von `download_remote_images_threshold` erreicht wurde." + unsubscribe_link: | + Um die E-Mail Benachrichtigungen zu deaktivieren, besuche deine [user preferences](%{user_preferences_url}). + + Um keine Benachrichtigungen zu diesem Thema zu erhalten, [click here](%{unsubscribe_url}). subject_re: "Re: " subject_pm: "[PN]" user_notifications: @@ -1482,6 +1638,11 @@ de: %{base_url}/users/password-reset/%{email_token} admin_login: subject_template: "[%{site_name}] Anmeldung" + text_body_template: | + Jemand hat versucht sich in deinen Account auf [%{site_name}](%{base_url}) einzuloggen. + Wenn dieser Loginversuch nicht von dir stammt, kannst du diese E-Mail ignorieren. + Klicke hier, um dich einzuloggen: + %{base_url}/users/admin-login/%{email_token} account_created: subject_template: "[%{site_name}] Dein neues Konto" text_body_template: | @@ -1515,6 +1676,7 @@ de: (Wenn du als neuer Benutzer unter vier Augen mit einem unserer [Mitarbeiter](%{base_url}/about) reden möchtest, antworte einfach auf diese Nachricht.) signup: + subject_template: "[%{site_name}] Bestätige deinen neuen Account" text_body_template: | Willkommen bei %{site_name}! @@ -1542,11 +1704,14 @@ de: unauthorized: "Entschuldigung, die Datei die du hochladen möchtest ist nicht erlaubt (erlaubte Dateiendungen sind: %{authorized_extensions})." pasted_image_filename: "Hinzugefügtes Bild" store_failure: "Hochladen von #%{upload_id} für Benutzer #%{user_id} ist fehlgeschlagen." + file_missing: "Bitte wähle eine Datei zum Hochladen aus. " attachments: too_large: "Entschuldigung, die Datei die du hochladen möchtest, ist zu groß (maximale Dateigröße ist %{max_size_kb}KB)." images: too_large: "Entschuldigung, das Bild das du hochladen möchtest, ist zu groß (maximale Dateigröße ist %{max_size_kb}KB). Bitte verkleinere es und versuche es erneut." size_not_found: "Entschuldige, aber wir konnten die Größe des Bildes nicht bestimmen. Vielleicht ist das Bild defekt?" + avatar: + missing: "Entschuldigung, aber der von dir ausgewählte Avatar befindet sich nicht auf dem Server. Versuche ihn erneut hochzuladen." flag_reason: sockpuppet: "Ein neuer Benutzer hat ein Thema erstellt und ein anderer neuer Benutzer mit der selben IP-Adresse hat darauf geantwortet. Beachte die flag_sockpuppets Einstellung." spam_hosts: "Dieser Benutzer hat versucht, mehrere Antworten mit Links zur selben Domain zu posten. Beachte die newuser_spam_host_threshold Einstellung." @@ -1582,8 +1747,42 @@ de: title: "Nutzungsbedingungen" privacy_topic: title: "Datenschutzrichtlinie" + badges: + long_descriptions: + autobiographer: | + Dieses Abzeichen erhältst du für das Ausfüllen von deinem Benutzerprofil und für das Hochladen eines Profilbildes erhalten. Die Community mehr über dich wissen zu lassen, und mehr darüber wissen zu lassen, was du gerne tust, macht die gesamte Community besser. + first_like: | + Dieses Abzeichen erhältst du, wenn du das erste mal auf den :heart: Knopf unter einem Beitrag klickst. Beiträge zu liken ist eine tolle Art dem Beitragsersteller zu zeigen, dass sein Beitrag interessant, nützlich, cool oder witzig war. Share the love! + first_link: | + Dieses Abzeichen erhältst du, sobald du das erste mal einen Link zu einem anderen Beitrag in eine Antwort schreibst. Bestehende Beiträge zu verlinken hilft den anderen Nutzern dabei, bereits geklärte oder relevante Fragen zu finden. + first_quote: | + Dieses Abzeichen erhältst du, sobald du das erste mal ein Zitat in einer Antwort verwendest. Relevante Bereiche zu zitieren und diese in deiner Antwort zu erwähnen hilft allen bei der Übersichtlichkeit. + first_share: | + Dieses Abzeichen erhältst du, sobald du das erste mal einen Link mit anderen über den "Teilen"-Button teilst. Links zu teilen ist eine tolle Möglichkeit andere auf interessante Diskussionen hinzuweisen und die Community zu vergrößern. + read_guidelines: | + Dieses Abzeichen erhältst du, sobald du die Regeln gelesen hast. Teilen der Regeln hilft allen für einen sicheren, witzigen und nachhaltigen Umgang miteinander. + reader: | + Dieses Abzeichen erhältst du, sobald du einen sehr langen Beitrag gelesen hast. Beiträge ausführlich zu lesen hilft der gesamten Konversation und führt zu besseren, vollständigeren Antworten. + editor: "Dieses Abzeichen erhältst du für das Bearbeiten einer deiner Beiträge. Zögere nicht, deine Beiträge so lange zu editieren, bis sie in deinen Augen perfekt sind. \n" + nice_post: | + Dieses Abzeichen hast du erhalten, weil du eine Antwort erstellt hast, welche 10 Likes erhalten hat. Gut gemacht! + nice_topic: | + Dieses Abzeichen hast du erhalten, weil du ein Thema erstellt hast, welche 10 Likes erhalten hat. Gut gemacht! + good_post: | + Dieses Abzeichen hast du erhalten, weil du eine Antwort erstellt hast, welche 25 Likes erhalten hat. Gute Arbeit! + good_topic: | + Dieses Abzeichen hast du erhalten, weil du ein Thema erstellt hast, welche 25 Likes erhalten hat. Gute Arbeit! + great_post: | + Dieses Abzeichen hast du erhalten, weil du einen Beitrag erstellt hast, welcher 50 Likes erhalten hat. Wow! + great_topic: | + Dieses Abzeichen hast du erhalten, weil du eine Antwort erstellt hast, welche 50 Likes erhalten hat. Wow! admin_login: success: "E-Mail gesendet" error: "Fehler!" email_input: "Administrator-E-Mail" submit_button: "E-Mail senden" + discourse_hub: + access_token_problem: "Gib das hier an einen Administrator weiter: Bitte aktualisieren Sie die Seiteneinstellungen für den korrekten discourse_org_access_key." + performance_report: + initial_post_raw: Dieser Beitrag enthält tägliche performance Berichte deiner Seite. + initial_topic_title: Berichte zur Webseitengeschwindigkeit diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 5e4114522a..dd4240c338 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -346,8 +346,8 @@ en: category: topic_prefix: "About the %{category} category" - replace_paragraph: "[Replace this first paragraph with a short description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters. Until you edit this text or create topics, this category won't appear on the categories page.]" - post_template: "%{replace_paragraph}\n\nUse the following paragraphs for a longer description, as well as to establish any category guidelines or rules.\n\nSome things to consider in any discussion replies below:\n\n- What is this category for? Why should people select this category for their topic?\n\n- How is this different than the other categories we already have?\n\n- Do we need this category?\n\n- Should we merge this with another category, or split it into more categories?\n" + replace_paragraph: "(Replace this first paragraph with a brief description of your new category. This guidance will appear in the category selection area, so try to keep it below 200 characters. **Until you edit this description or create topics, this category won't appear on the categories page.**)" + post_template: "%{replace_paragraph}\n\nUse the following paragraphs for a longer description, or to establish category guidelines or rules:\n\n- Why should people use this category? What is it for?\n\n- How exactly is this different than the other categories we already have?\n\n- What should topics in this category generally contain?\n\n- Do we need this category? Can we merge with another category, or subcategory?\n" errors: uncategorized_parent: "Uncategorized can't have a parent category" self_parent: "A subcategory's parent cannot be itself" @@ -837,7 +837,7 @@ en: summary_percent_filter: "When a user clicks 'Summarize This Topic', show the top % of posts" summary_max_results: "Maximum posts returned by 'Summary This Topic'" - enable_private_messages: "Allow trust level 1 users to create messages and reply to messages" + enable_private_messages: "Allow trust level 1 (configurable via min trust level to send messages) users to create messages and reply to messages" enable_long_polling: "Message bus used for notification can use long polling" long_polling_base_url: "Base URL used for long polling (when a CDN is serving dynamic content, be sure to set this to origin pull) eg: http://origin.site.com" @@ -862,7 +862,7 @@ en: flag_sockpuppets: "If a new user replies to a topic from the same IP address as the new user who started the topic, flag both of their posts as potential spam." traditional_markdown_linebreaks: "Use traditional linebreaks in Markdown, which require two trailing spaces for a linebreak." - allow_html_tables: "Allow tables to be entered in Markdown using HTML tags, TABLE, THEAD, TD, TR, TH are whitelisted (requires full rebake on all old posts containing tables)" + allow_html_tables: "Allow tables to be entered in Markdown using HTML tags. TABLE, THEAD, TD, TR, TH will be whitelisted (requires full rebake on all old posts containing tables)" post_undo_action_window_mins: "Number of minutes users are allowed to undo recent actions on a post (like, flag, etc)." must_approve_users: "Staff must approve all new user accounts before they are allowed to access the site. WARNING: enabling this for a live site will revoke access for existing non-staff users!" ga_tracking_code: "Google analytics (ga.js) tracking code code, eg: UA-12345678-9; see http://google.com/analytics" @@ -891,6 +891,7 @@ en: topics_per_period_in_top_summary: "Number of top topics shown in the default top topics summary." topics_per_period_in_top_page: "Number of top topics shown on the expanded 'Show More' top topics." redirect_users_to_top_page: "Automatically redirect new and long absent users to the top page." + top_page_default_timeframe: "Default timeframe for the top view page." show_email_on_profile: "Show a user's email on their profile (only visible to themselves and staff)" email_token_valid_hours: "Forgot password / activate account tokens are valid for (n) hours." @@ -1001,6 +1002,8 @@ en: external_system_avatars_enabled: "Use external system avatars service." external_system_avatars_url: "URL of the external system avatars service. Allowed substitions are {username} {first_letter} {color} {size}" + default_opengraph_image_url: "URL of the default opengraph image." + enable_flash_video_onebox: "Enable embedding of swf and flv (Adobe Flash) links in oneboxes. WARNING: may introduce security risks." default_invitee_trust_level: "Default trust level (0-4) for invited users." @@ -1034,6 +1037,8 @@ en: min_trust_to_edit_wiki_post: "The minimum trust level required to edit post marked as wiki." + min_trust_to_send_messages: "The minimum trust level required to create new private messages." + newuser_max_links: "How many links a new user can add to a post." newuser_max_images: "How many images a new user can add to a post." newuser_max_attachments: "How many attachments a new user can add to a post." @@ -1192,6 +1197,7 @@ en: embed_username_key_from_feed: "Key to pull discourse username from feed." embed_truncate: "Truncate the embedded posts." embed_post_limit: "Maximum number of posts to embed." + embed_username_required: "The username for topic creation is required." embed_whitelist_selector: "CSS selector for elements that are allowed in embeds." embed_blacklist_selector: "CSS selector for elements that are removed from embeds." notify_about_flags_after: "If there are flags that haven't been handled after this many hours, send an email to the contact_email. Set to 0 to disable." diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index 49c2a6f555..879f5c1bd3 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -302,8 +302,18 @@ es: title: "líder" change_failed_explanation: "Trataste de degradar a %{user_name} a '%{new_trust_level}'. Sin embargo su nivel de confianza ya es '%{current_trust_level}'. %{user_name} va a permanecer en '%{current_trust_level}' - si deseas degradar al usuario primero bloquea su nivel de confianza." rate_limiter: - slow_down: "Has realizado esta acción demasiadas veces, inténtalo de nuevo más tarde" + slow_down: "Has realizado esta acción muchas veces, inténtalo de nuevo más tarde." too_many_requests: "Estas haciendo eso demasiado a menudo. Por favor espera %{time_left} antes de intentarlo de nuevo." + by_type: + first_day_replies_per_day: "Has llegado al límite de respuestas que un nuevo usuario puede crear en su primer día. Por favor, espera %{time_left} antes de intentarlo de nuevo." + first_day_topics_per_day: "Has llegado al límite de temas que un nuevo usuario puede crear en su primer día. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_topic: "Estás creando temas demasiado rápido. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_post: "Estás respondiendo demasiado rápido. Por favor, espera %{time_left} antes de intentarlo de nuevo." + topics_per_day: "Has llegado al límite de nuevos temas de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + pms_per_day: "Has llegado al límite de mensajes de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_like: "Has llegado al límite de Me gusta de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + create_bookmark: "Has llegado al límite de marcadores de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." + edit_post: "Has llegado al límite de ediciones de hoy. Por favor, espera %{time_left} antes de intentarlo de nuevo." hours: one: "1 hora" other: "%{count} horas" @@ -754,7 +764,6 @@ es: notify_mods_when_user_blocked: "Si un usuario es bloqueado automáticamente, enviar un mensaje a todos los moderadores." flag_sockpuppets: "Si un nuevo usuario responde a un tema desde la misma dirección de IP que el nuevo usuario que inició el tema, reportar los posts de los dos como spam en potencia." traditional_markdown_linebreaks: "Utiliza saltos de línea tradicionales en Markdown, que requieren dos espacios al final para un salto de línea." - allow_html_tables: "Permitir la inserción de tablas en Markdown usando etiquetas HTML como TABLE, THEAD, TD, TR o TH (requiere un rebake completo para todos los posts antiguos que contengan tablas)" post_undo_action_window_mins: "Número de minutos durante los cuales los usuarios pueden deshacer sus acciones recientes en un post (me gusta, reportes, etc)." must_approve_users: "Los miembros administración deben aprobar todas las nuevas cuentas antes de que se les permita el acceso al sitio. AVISO: ¡habilitar esta opción en un sitio activo revocará el acceso a los usuarios que no sean moderadores o admin!" ga_tracking_code: "Código de Google Analytics, ej: UA-12345678-9; visita http://google.com/analytics" @@ -785,7 +794,7 @@ es: email_token_valid_hours: "Los tokens para restablecer contraseña olvidada / activar cuenta son válidos durante (n) horas." email_token_grace_period_hours: "Los tokens para restablecer contraseña olvidada / activar cuenta son válidos durante (n) horas de periodo de gracia, después de ser redimidos." enable_badges: "Activar el sistema de distintivos" - enable_whispers: "Permitir a los usuarios enviar susurros a los moderadores" + enable_whispers: "Permitir al staff comunicarse privadamente en los temas. (experimental)" allow_index_in_robots_txt: "Especificar en robots.txt que este sitio puede ser indexado por los motores de búsqueda web." email_domains_blacklist: "Una lista de dominios de correo electrónico con los que los usuarios no se podrán registrar. Ejemplo: mailinator.com|trashmail.net" email_domains_whitelist: "Una lista de dominios de email con los que los usuarios DEBERÁN registrar sus cuentas. AVISO: ¡los usuarios con un email con diferente dominio a los listados no estarán permitidos!" diff --git a/config/locales/server.fa_IR.yml b/config/locales/server.fa_IR.yml index 92229021a8..d96de19f21 100644 --- a/config/locales/server.fa_IR.yml +++ b/config/locales/server.fa_IR.yml @@ -278,7 +278,6 @@ fa_IR: title: "رهبر" change_failed_explanation: "شما تلاش برای تنزل رتبه دادید %{user_name} به '%{new_trust_level}'. در هر صورت سطح اعتمادشان در حال حاضر '%{current_trust_level}' است. %{user_name} می ماند در '%{current_trust_level}' - اگر شما امید با تنزل رتبه شان را دارید اول سطح اعتمادشان را نگاه کنید" rate_limiter: - slow_down: "شما این عمل را بیش از حد انجام داده اید، بعدا دوباره تلاش کنید" too_many_requests: "ما روزانه محدودیت زمانی داریم برای اینکه این اقدام چند بار انجام شود. لطفا صبر کنید %{time_left} قبل ازاینکه دوباره تلاش کنید. " hours: other: "%{count} ساعت" diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml index 7d38303e4e..76bdb7bfaa 100644 --- a/config/locales/server.fi.yml +++ b/config/locales/server.fi.yml @@ -313,6 +313,16 @@ fi: rate_limiter: slow_down: "Olet tehnyt tämän toiminnon liian monta kertaa, yritä uudelleen myöhemmin." too_many_requests: "Sille, kuinka useasti tämä toiminto voidaan suorittaa on määritelty päivittäinen raja. Odota %{time_left} ennen uudelleen kokeilemista." + by_type: + first_day_replies_per_day: "Olet lähettänyt enimmäismäärän viestejä, jonka uusi käyttäjä saa lähettää ensimmäisenä päivänään. Odota %{time_left}, ennen kuin yrität uudelleen." + first_day_topics_per_day: "Olet luonut enimmäismäärän ketjuja, jonka uusi käyttäjä saa lähettää ensimmäisenä päivänään. Odota %{time_left}, ennen kuin yrität uudelleen." + create_topic: "Yrität luoda ketjuja liian nopeasti. Odota %{time_left}, ennen kuin yrität uudelleen." + create_post: "Yrität vastata liian nopeasti. Odota %{time_left}, ennen kuin yrität uudelleen." + topics_per_day: "Olet luonut enimmäismäärän uusia ketjuja tälle päivälle. Odota %{time_left}, ennen kuin yrität uudelleen." + pms_per_day: "Olet lähettänyt enimmäismäärän viestejä tälle päivälle. Odota %{time_left}, ennen kuin yrität uudelleen." + create_like: "Olet tykännyt enimmäismäärän tälle päivälle. Odota %{time_left}, ennen kuin yrität uudelleen." + create_bookmark: "Olet lisännyt enimmäismäärän kirjanmerkkejä tälle päivälle. Odota %{time_left}, ennen kuin yrität uudelleen." + edit_post: "Olet saavuttanut muokkausten enimmäismäärän tälle päivälle. Odota %{time_left}, ennen kuin yrität uudelleen." hours: one: "1 tunti" other: "%{count} tuntia" @@ -763,7 +773,6 @@ fi: notify_mods_when_user_blocked: "Jos käyttäjä estetään automaattisesti, lähetä viesti kaikille valvojille." flag_sockpuppets: "Jos uusi käyttäjä vastaa toisen uuden käyttäjän luomaan ketjun samasta IP osoitteesta, liputa molemmat viestit mahdolliseksi roskapostiksi." traditional_markdown_linebreaks: "Käytä perinteisiä rivinvaihtoja Markdownissa, joka vaatii kaksi perättäistä välilyöntiä rivin vaihtoon." - allow_html_tables: "Salli taulukoiden syöttäminen Markdowniin käyttäen HTML tageja, TABLE, THEAD, TD, TR, TH on valkolistattu (edellyttää kaikkien taulukoita sisältävien vanhojen viestien uudelleen rakentamisen)" post_undo_action_window_mins: "Kuinka monta minuuttia käyttäjällä on aikaa perua viestiin kohdistuva toimi (tykkäys, liputus, etc)." must_approve_users: "Henkilökunnan täytyy hyväksyä kaikki uudet tilit, ennen uusien käyttäjien päästämistä sivustolle. VAROITUS: tämän asetuksen valitseminen poistaa pääsyn kaikilta jo olemassa olevilta henkilökuntaan kuulumattomilta käyttäjiltä." ga_tracking_code: "Google analytics (ga.js) seurantakoodi, esim.: UA-12345678-9; katso http://google.com/analytics" @@ -794,6 +803,7 @@ fi: email_token_valid_hours: "Unohtuneen salasanan / tilin vahvistamisen tokenit ovat voimassa (n) tuntia." email_token_grace_period_hours: "Unohtuneen salasanan / tilin vahvistamisen tokenit ovat vielä voimassa (n) tuntia käyttämisen jälkeen." enable_badges: "Ota käyttöön arvomerkkijärjestelmä" + enable_whispers: "Salli henkilökunnan keskustella yksityisestä ketjun sisällä. (kokeellinen)" allow_index_in_robots_txt: "Määrittele robots.txt-tiedostossa, että hakukoneet saavat luetteloida sivuston." email_domains_blacklist: "Pystyviivalla eroteltu lista sähköposti-verkkotunnuksista, joista käyttäjät eivät voi luoda tiliä. Esimerkiksi mailinator.com|trashmail.net" email_domains_whitelist: "Pystyviivalla eroteltu lista sähköposti-verkkotunnuksista, joista käyttäjien pitää luoda tilinsä. VAROITUS: Käyttäjiä, joiden sähköpostiosoite on muusta verkkotunnuksesta ei sallita!" @@ -1890,10 +1900,10 @@ fi:
order:views | order:latest | order:likes | |||
- sateenkaaria category:puistot status:open order:latest hakee ketjuja, joissa käytetään sanaa "sateenkaaria" alueella "puistot" ja joita ei ole suljettu tai arkistoitu järjestettynä ketjun viimeisimmän viestin päivämäärän mukaan.
sateenkaaria category:puistot status:open order:latest palauttaa ketjut, joissa käytetään sanaa "sateenkaaria" alueella "puistot" ja joita ei ole suljettu tai arkistoitu, järjestettynä ketjun viimeisimmän viestin päivämäärän mukaan.
admin_login:
success: "Sähköposti lähetetty"
error: "Virhe!"
diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml
index 94a192fcb2..1eddf94c85 100644
--- a/config/locales/server.fr.yml
+++ b/config/locales/server.fr.yml
@@ -305,7 +305,6 @@ fr:
title: "meneur"
change_failed_explanation: "Vous avez essayé de rétrograder %{user_name} au niveau '%{new_trust_level}'. Cependant son niveau de confiance est déjà '%{current_trust_level}'. %{user_name} restera au niveau '%{current_trust_level}' - Si vous souhaitez rétrograder un utilisateur vous devez verrouiller le niveau de confiance au préalable"
rate_limiter:
- slow_down: "Vous avez effectué cette action trop de fois, réessayez plus tard"
too_many_requests: "Nous avons une limite journalière du nombre d'actions qui peuvent être effectuées. Veuillez patienter %{time_left} avant de recommencer."
hours:
one: "1 heure"
@@ -752,7 +751,6 @@ fr:
notify_mods_when_user_blocked: "Si un utilisateur est bloqué automatiquement, envoyer un message à tous les modérateurs."
flag_sockpuppets: "Si un nouvel utilisateur répond à un sujet avec la même adresse I¨P que le nouvel utilisateur qui a commencé le sujet, alors leurs messages seront automatiquement marqués comme spam."
traditional_markdown_linebreaks: "Utiliser le retour à la ligne traditionnel dans Markdown, qui nécessite deux espaces pour un saut de ligne."
- allow_html_tables: "Permet le rendu des tableaux HTML au sein de Markdown, les balises TABLE, THEAD, TD, TR, TH sont autorisées (nécessite un full rebake sur tous les anciens sujets contenant des tableaux)"
post_undo_action_window_mins: "Nombre de minutes pendant lesquelles un utilisateur peut annuler une action sur un message (j'aime, signaler, etc.)"
must_approve_users: "Les responsables doivent approuver les nouveaux utilisateurs afin qu'ils puissent accéder au site. ATTENTION : activer cette option sur un site en production suspendra l'accès des utilisateurs existants qui ne sont pas des responsables !"
ga_tracking_code: "Google Analytics (ga.js) code de suivi, par exemple: UA-12345678-9; voir http://google.com/analytics"
diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml
index 4b5a4cb31c..42bb1f077c 100644
--- a/config/locales/server.he.yml
+++ b/config/locales/server.he.yml
@@ -290,8 +290,18 @@ he:
title: "מוביל/ה"
change_failed_explanation: "ניסיתם להוריד בדרגה %{user_name} ל- '%{new_trust_level}'. אולם רמת האמון שלהם היא כבר '%{current_trust_level}'. %{user_name} ישאר/תישאר ב-'%{current_trust_level}' - אם ברצונכם להוריד את המשתמש/ת נעלו קודם את רמת האמון"
rate_limiter:
- slow_down: "ביצעתם פעולה זו מספר רב מידי של פעמים, נסו שוב מאוחר יותר"
+ slow_down: "ביצעת פעולה זו מספר רב מדי של פעמים. נסה שוב מאוחר יותר."
too_many_requests: "יש לנו מגבלה יומית על מספר הפעמים שניתן לבצע פעולה זו. אנא המתן %{time_left} לפני ניסיון חוזר."
+ by_type:
+ first_day_replies_per_day: "הגעת למספר המירבי של תגובות שמתמש חדש יכול ליצור ביומו הראשון. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ first_day_topics_per_day: "הגעת למספר המירבי של נושאים שמשתמש חדש יכול ליצור ביומו הראשון. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ create_topic: "אתה יוצר נושא חדש מהר מדי. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ create_post: "אתה מגיב מהר מדי. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ topics_per_day: "הגעת למספר המירבי של נושאים חדשים היום. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ pms_per_day: "הגעת למספר המירבי של הודעות היום. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ create_like: "הגעת למספר המירבי של לייקים היום. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ create_bookmark: "הגעת למספר המירבי של מעודפים היום. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
+ edit_post: "הגעת למספר המירבי של עריכות היום. אנא המתן %{time_left} לפני ניסיון חוזר לבצע פעולה זו."
hours:
one: "שעה אחת"
other: "%{count} שעות"
@@ -480,6 +490,10 @@ he:
title: "משתמשים חדשים"
xaxis: "יום"
yaxis: "מספר משתמשים חדשים"
+ profile_views:
+ title: "צפיות בפרופיל משתמש"
+ xaxis: "יום"
+ yaxis: "מספר פרופילי משתמש שנצפו"
topics:
title: "נושאים"
xaxis: "יום"
@@ -737,7 +751,6 @@ he:
notify_mods_when_user_blocked: "If a user is automatically blocked, send a message to all moderators."
flag_sockpuppets: "אם משתמש/ת חדשים מגיבים לנושא מכתובת IP זהה לזו של מי שהחל את הנושא, סמנו את הפרסומים של שניהם כספאם פוטנציאלי."
traditional_markdown_linebreaks: "שימוש בשבירת שורות מסורתית בסימון, מה שדורש שני רווחים עוקבים למעבר שורה."
- allow_html_tables: "Allow tables to be entered in Markdown using HTML tags, TABLE, THEAD, TD, TR, TH are whitelisted (requires full rebake on all old posts containing tables)"
post_undo_action_window_mins: "מספר הדקות בהן מתאפשר למשתמשים לבטל פעולות אחרות בפרסום (לייק, סימון, וכו')."
must_approve_users: "על הצוות לאשר את כל המשתמשים החדשים לפני שהם מקבלים גישה לאתר. אזהרה: בחירה זו עבור אתר קיים תשלול גישה ממשתמשים קיימים שאינם מנהלים."
ga_tracking_code: "Google analytics (ga.js) tracking code code, eg: UA-12345678-9; see http://google.com/analytics"
@@ -1639,6 +1652,8 @@ he:
images:
too_large: "סליחה, אך התמונה שאתה מנסה להעלות גדולה מידי. (הגודל המקסימלי הוא %{max_size_kb}KB), אנא שנה את הגודל ונסה שנית."
size_not_found: "Sorry, but we couldn't determine the size of the image. Maybe your image is corrupted?"
+ avatar:
+ missing: "אנו מתנצלים, אך הסמל שבחרת לא נמצא על השרת. תוכל לנסות להעלותו שוב?"
flag_reason:
sockpuppet: "A new user created a topic, and another new user at the same IP address replied. See the flag_sockpuppets site setting."
spam_hosts: "המשתמש/ת החדשים ניסו ליצור כמה פרסומים עם קישורים לאותו מתחם (domain)ץ ראו את הגדרות האתר (newuser_spam_host_threshold)."
diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml
index 0dd6cff0a9..ab6349b801 100644
--- a/config/locales/server.it.yml
+++ b/config/locales/server.it.yml
@@ -66,8 +66,12 @@ it:
embed:
load_from_remote: "Si è verificato un errore nel caricamento del messaggio."
site_settings:
+ min_username_length_exists: "C'è almeno un utente con il nome più corto della lunghezza minima che stai cercando di impostare."
min_username_length_range: "Non puoi impostare il minimo più grande del massimo."
+ max_username_length_exists: "C'è almeno un utente con il nome più lungo della lunghezza massima che stai cercando di impostare."
+ max_username_length_range: "Non puoi impostare il massimo inferiore al minimo."
default_categories_already_selected: "Non puoi selezionare una categoria usata in un'altra lista."
+ s3_upload_bucket_is_required: "Non è possibile attivare i caricamenti da S3 a meno che non imposti l'opzione 's3_upload_bucket'."
bulk_invite:
file_should_be_csv: "Il file caricato deve essere in formato csv o txt."
backup:
@@ -170,6 +174,7 @@ it:
- Le critiche costruttive sono benvenute, ma critica le *idee* non le persone.
Per maggiori informazioni, [guarda le nostre linee guida delle community](/guidelines). Questo pannello sarà visualizzato soltanto per i primi %{education_posts_text}.
+ avatar: "### Che ne dici di un'immagine per il tuo account? \n\nHai pubblicato alcuni argomenti e risposte, ma l'immagine del tuo profilo non è speciale quanto te -- è solo una lettera. \n\nPerché non **[accedi al tuo profilo utente](%{profile_path})** e carichi un'immagine che ti rappresenta? \n\nÈ più facile seguire le discussioni e trovare persone interessanti nelle conversazioni se tutti hanno un'immagine profilo univoca!\n"
sequential_replies: "### Considera la possibilità di rispondere a più messaggi contemporaneamente\n\nPiuttosto che inviare più risposte di seguito ad un messaggio, considera la possibilità di inserire un'unica risposta con citazioni o riferimenti @nome ai messaggi precedenti. \n\nPuoi modificare la tua precedente risposta per aggiungere una citazione evidenziando il testo e selezionando il bottone Rispondi citando che compare. \n\nE' più facile per chiunque leggere argomenti che hanno poche risposte più dettagliate, rispetto a molte brevi risposte individuali.\n"
dominating_topic: |
### Permetti agli altri di partecipare alla conversazione
@@ -263,8 +268,11 @@ it:
title: "capo"
change_failed_explanation: "Hai cercato di degradare %{user_name} a '%{new_trust_level}'. Comunque il suo livello di esperienza è già '%{current_trust_level}'. %{user_name} resterà a '%{current_trust_level}' - se vuoi degradarlo, prima blocca il suo livello di esperienza"
rate_limiter:
- slow_down: "Hai eseguito questa operazione troppe volte, riprova più tardi"
+ slow_down: "Hai eseguito questa operazione troppe volte, riprova più tardi."
too_many_requests: "C'è un limite giornaliero su quante volte si può fare questa azione. Per favore attendi %{time_left} prima di riprovare."
+ by_type:
+ create_topic: "Stai creando argomenti troppo rapidamente. Attendi %{time_left} prima di riprovare."
+ create_post: "Stai rispondendo troppo rapidamente. Attendi %{time_left} prima di riprovare."
hours:
one: "1 ora"
other: "%{count} ore"
@@ -453,6 +461,10 @@ it:
title: "Nuovi Utenti"
xaxis: "Giorno"
yaxis: "Numero di nuovi utenti"
+ profile_views:
+ title: "Visite Profilo Utente"
+ xaxis: "Giorno"
+ yaxis: "Numero profili utente visualizzati"
topics:
title: "Argomenti"
xaxis: "Giorno"
@@ -583,10 +595,10 @@ it:
gc_warning: 'Il tuo server usa i parametri di garbage collection di default di ruby, che potrebbero non garantirti le migliori prestazioni. Leggi questo argomento sulla taratura delle prestazioni: Tuning Ruby and Rails for Discourse.'
sidekiq_warning: 'Sidekiq non è in esecuzione. Molte attività, come l''invio di email, sono eseguite in maniera asincrona da sidekiq. Assicurati che almeno un processo sidekiq sia in esecuzione. Leggi altro su sidekiq qui.'
memory_warning: 'Il tuo server gira con meno di 1 GB di memoria. Si raccomanda almeno 1 GB di memoria.'
- google_oauth2_config_warning: 'Il server è configurato per permettere registrazioni e login con Google Oauth2 (enable_google_oauth2_logins), ma il client id e il client secret non sono impostati. Vai nelle Impostazioni del sito e aggiorna le impostazioni. Leggi questa guida per saperne di più.'
- facebook_config_warning: 'Il server è configurato per accettare registrazioni e login con Facebook (enable_facebook_logins), tuttavia i parametri app id e secret non sono stati impostati. Vai alle Impostazioni e aggiorna i campi interessati. Leggi questa guida per saperne di più.'
- twitter_config_warning: 'Il server è configurato per accettare registrazioni e login con Twitter (enable_twitter_logins), tuttavia i parametri key e secret non sono stati impostati. Vai alle Impostazioni e aggiorna i campi interessati. Leggi questa guida per saperne di più.'
- github_config_warning: 'Il server è configurato per accettare registrazioni e login con GitHub (enable_github_logins), tuttavia i parametri client id e secret non sono stati impostati. Vai alle Impostazioni e aggiorna i campi interessati. Leggi questa guida per saperne di più.'
+ google_oauth2_config_warning: 'Il server è configurato per permettere iscrizioni e login con Google Oauth2 (enable_google_oauth2_logins), ma il client id e il client secret non sono impostati. Vai nelle Impostazioni del sito e aggiorna le impostazioni. Leggi questa guida per saperne di più.'
+ facebook_config_warning: 'Il server è configurato per accettare iscrizioni e login con Facebook (enable_facebook_logins), tuttavia i parametri app id e secret non sono stati impostati. Vai alle Impostazioni e aggiorna i campi interessati. Leggi questa guida per saperne di più.'
+ twitter_config_warning: 'Il server è configurato per accettare iscrizioni e login con Twitter (enable_twitter_logins), tuttavia i parametri key e secret non sono stati impostati. Vai alle Impostazioni e aggiorna i campi interessati. Leggi questa guida per saperne di più.'
+ github_config_warning: 'Il server è configurato per accettare iscrizioni e login con GitHub (enable_github_logins), tuttavia i parametri client id e secret non sono stati impostati. Vai alle Impostazioni e aggiorna i campi interessati. Leggi questa guida per saperne di più.'
s3_config_warning: 'Il server è configurato per caricare file su s3, ma almeno uno dei seguenti parametri non è impostato: s3_access_key_id, s3_secret_access_key, s3_upload_bucket. Vai nelle Impostazioni Sito e aggiorna i parametri. Leggi anche "How to set up image uploads to S3?" per saperne di più.'
s3_backup_config_warning: 'Il server è configurato per caricare i backup su S3, ma almeno una delle seguenti impostazioni non è impostata: s3_access_key_id, s3_secret_access_key, s3_backup_bucket. Vai nelle Impostazioni Sito e aggiorna le impostazioni. Leggi anche "How to set up image uploads to S3?" per saperne di più.'
image_magick_warning: 'Il server è configurato per creare miniature di immagini grandi, ma ImageMagick non è installato. Installa ImageMagick usando il tuo package manager preferito o scarica la versione più recente.'
@@ -742,7 +754,7 @@ it:
login_required: "E' richiesta l'autenticazione per leggere contenuti su questo sito, disabilita l'accesso anonimo."
min_username_length: "Lunghezza minima del nome utente in caratteri."
max_username_length: "Lunghezza massima del nome utente in caratteri. "
- reserved_usernames: "Nomi utente ai quali non è permesso l'accesso."
+ reserved_usernames: "Nomi utente ai quali non è permessa l'iscrizione.."
min_password_length: "Minima lunghezza della password."
block_common_passwords: "Non permettere password che sono nelle 10.000 password più comuni."
enable_sso_provider: "Implementa il protocollo SSO Discourse nell'endpoint /session/sso_provider, richiede che sia impostata l'opzione sso_secret"
@@ -798,6 +810,7 @@ it:
s3_secret_access_key: "La access key secret Amazon S3 che verrà usata per caricare le immagini."
s3_region: "La region name Amazon S3 che verrà usata per caricare le immagini."
avatar_sizes: "Elenco delle dimensioni degli avatar, generate automaticamente."
+ external_system_avatars_enabled: "Utilizza un servizio esterno per gli avatar."
enable_flash_video_onebox: "Attiva l'inserimento di collegamenti swf e flv (Adobe Flash) in onebox. ATTENZIONE: comporta rischi per la sicurezza."
default_invitee_trust_level: "Livello di esperienza (0-4) assegnato di default agli utenti invitati."
default_trust_level: "Livello di esperienza (da 0 a 4) assegnato ai nuovi utenti. ATTENZIONE! Modificare questa opzione ti espone ad un serio rischio di ricevere posta indesiderata."
@@ -847,9 +860,9 @@ it:
authorized_extensions: "Una lista di estensioni dei file che è permesso caricare (usa '*' per permettere tutti i tipi di file) "
max_similar_results: "Quanti argomenti simili mostrare sopra l'editor quando si scrive un nuovo argomento. Il paragone viene fatto sul titolo e sul corpo."
title_prettify: "Evita refusi ed errori comuni nei titoli, incluso il testo tutto maiuscolo, il primo carattere minuscolo, troppi caratteri ! e ?, puntini aggiuntivi alla fine della parola ecc."
- topic_views_heat_low: "Dopo tale numero di visualizzazioni, il campo visualizzazioni è evidenziato leggermente."
- topic_views_heat_medium: "Dopo tale numero di visualizzazioni, il campo visualizzazioni è evidenziato mediamente."
- topic_views_heat_high: "Dopo tale numero di visualizzazioni, il campo visualizzazioni è evidenziato fortemente."
+ topic_views_heat_low: "Dopo tale numero di visualizzazioni, il campo visite viene leggermente evidenziato."
+ topic_views_heat_medium: "Dopo tale numero di visualizzazioni, il campo visite viene mediamente evidenziato."
+ topic_views_heat_high: "Dopo tale numero di visualizzazioni, il campo visite viene fortemente evidenziato."
cold_age_days_low: "Dopo tale numero di giorni di conversazione, la data di ultima attività viene leggermente oscurata."
cold_age_days_medium: "Dopo tale numero di giorni di conversazione, la data di ultima attività viene mediamente oscurata."
cold_age_days_high: "Dopo tale numero di giorni di conversazione, la data di ultima attività viene fortemente oscurata."
@@ -866,7 +879,7 @@ it:
white_listed_spam_host_domains: "Una lista di domini esclusi dal controllo antispam. Ai nuovi utenti non verrà mai impedito di creare messaggi con collegamenti a tali domini."
staff_like_weight: "Peso extra attribuito ai \"mi piace\" dati dallo staff."
levenshtein_distance_spammer_emails: "Quanti caratteri di differenza faranno comunque scattare una corrispondenza approssimativa nell'analisi delle email di spam. "
- max_new_accounts_per_registration_ip: "Se vi sono già (n) account con livello di esperienza 0 da questo IP (e nessuno è membro dello staff o TL2 o superiore), non accettare nuove registrazioni utente da questo IP."
+ max_new_accounts_per_registration_ip: "Se vi sono già (n) account con livello di esperienza 0 da questo IP (e nessuno è membro dello staff o TL2 o superiore), non accettare nuove iscrizioni utente da questo IP."
num_flaggers_to_close_topic: "Il numero minimo di segnalatori univoci richiesto affinché un argomento venga messo in pausa fino all'intervento di un moderatore"
num_flags_to_close_topic: "Il numero minimo di segnalazioni attive richiesto affinché un argomento venga messo in pausa fino all'intervento di un moderatore"
reply_by_email_enabled: "Abilita la possibilità di rispondere ai messaggi tramite email."
@@ -987,7 +1000,7 @@ it:
login:
not_approved: "Il tuo account non è ancora stato approvato. Verrai avvertito via mail quando potrai collegarti."
incorrect_username_email_or_password: "Nome utente, email o password errati"
- wait_approval: "Grazie per esserti registrato. Ti avvertiremo quando il tuo account sarà approvato."
+ wait_approval: "Grazie per esserti iscritto. Ti avvertiremo quando il tuo account sarà approvato."
active: "Il tuo account è attivo e pronto all'uso."
activate_email: "Ci siamo quasi! Abbiamo mandato una email di attivazione a %{email}. Per favore segui le istruzioni contenute nell'email per attivare il tuo account.
Se l'email non ti arriva, controlla la tua cartella spam o prova a collegarti ancora per inviare un'altra email di attivazione.
" not_activated: "Non puoi ancora collegarti. Ti abbiamo mandato un'email di attivazione. Per favore segui le istruzioni contenute nell'email per attivare il tuo account." @@ -1138,7 +1151,7 @@ it: subject_template: one: "1 utente in attesa di approvazione" other: "%{count} utenti in attesa di approvazione" - text_body_template: "Ci sono nuove iscrizioni che vanno approvate (o rifiutate) prima che possano accedere a questo forum. \n\n[Per favore valutale nella sezione di amministrazione](%{base_url}/admin/users/list/pending).\n" + text_body_template: "Ci sono nuove iscrizioni in attesa di essere approvate (o rifiutate) prima che possano accedere a questo forum. \n\n[Per favore valutale nella sezione di amministrazione](%{base_url}/admin/users/list/pending).\n" download_remote_images_disabled: subject_template: "Lo scaricamento delle immagini remote è disabilitato" text_body_template: "L'impostazione `download_remote_images_to_local` è stata disabilitata perché è stato raggiunto il limite di spazio su disco definito in `download_remote_images_threshold`." diff --git a/config/locales/server.ja.yml b/config/locales/server.ja.yml index d786fa759c..2c2a0e80c9 100644 --- a/config/locales/server.ja.yml +++ b/config/locales/server.ja.yml @@ -255,7 +255,6 @@ ja: title: "リーダー" change_failed_explanation: "%{user_name} を '%{new_trust_level}' に格下げしようとしましたが、既にトラストレベルが '%{current_trust_level}' です。%{user_name} は '%{current_trust_level}' のままになります - もしユーザーを降格させたい場合は、トラストレベルをロックしてください" rate_limiter: - slow_down: "多すぎるアクションが実行されました。時間を置いてから試してください" too_many_requests: "このアクションを一日の間に実施可能な回数が決まっています。%{time_left}待ってから再度試してください。" hours: other: "%{count} 時間" diff --git a/config/locales/server.ko.yml b/config/locales/server.ko.yml index b755b55a11..050cabe74c 100644 --- a/config/locales/server.ko.yml +++ b/config/locales/server.ko.yml @@ -268,7 +268,6 @@ ko: title: "지도자" change_failed_explanation: "당신은 %{user_name} 사용자를 '%{new_trust_level}'으로 강등시키려 하였습니다. 하지만 해당 사용자의 회원등급는 이미 '%{current_trust_level}'입니다. %{user_name} 사용자의 회원등급는 '%{current_trust_level}'으로 유지됩니다. - if you wish to demote user lock trust level first" rate_limiter: - slow_down: "해당 작업을 너무 많이 수행했습니다. 잠시 뒤에 다시 시도해보세요." too_many_requests: "지금 하시려는 행동에는 하루 제한이 있습니다. %{time_left} 동안 기다리시고 다시 시도해 주세요." hours: other: "%{count}시간" diff --git a/config/locales/server.nb_NO.yml b/config/locales/server.nb_NO.yml index 86e266e1ef..a135e49860 100644 --- a/config/locales/server.nb_NO.yml +++ b/config/locales/server.nb_NO.yml @@ -283,7 +283,6 @@ nb_NO: elder: title: "leder" rate_limiter: - slow_down: "Du har utført denne handlingen for mange ganger. Prøv igjen senere." too_many_requests: "Vi har en daglig begrensning for hvor mange ganger den handlingen kan utføres. Venligst vent %{time_left} før du prøver igjen." hours: one: "1 time" diff --git a/config/locales/server.nl.yml b/config/locales/server.nl.yml index 7ea99340a1..9e177d56b3 100644 --- a/config/locales/server.nl.yml +++ b/config/locales/server.nl.yml @@ -304,7 +304,6 @@ nl: title: "leider" change_failed_explanation: "Je probeerde %{user_name} te degraderen naar '%{new_trust_level}'. Echter, het trustlevel is al '%{current_trust_level}'. %{user_name} blijft op trust level '%{current_trust_level}'. Als je de gebruiker wil degraderen, zet het trustlevel dan eerst vast." rate_limiter: - slow_down: "Je hebt deze actie te vaak uitgevoerd. Probeer het later nog een keer." too_many_requests: "Er is een dagelijks limiet voor hoe vaak je dat kan doen. Wacht %{time_left} voordat je dit opnieuw probeert." hours: one: "1 uur" @@ -899,6 +898,7 @@ nl: category_colors: "Een lijst me hexadecimale kleurwaardes die gebruikt kunnen worden voor categorieën." authorized_extensions: "Een lijst met bestandsextensies die mogen worden geupload (gebruik '*' voor alle bestandsextensies)" title_prettify: "Voorkom veel voorkomende fouten in titels (alles in hoofdletters, eerste woord zonder hoofdletter, meerdere ! en ?, een extra . aan het eind, etc." + topic_views_heat_low: "Na dit aantal keer bekeken zal het licht gemarkeerd zijn." faq_url: "Heb je je FAQ ergens extern staan, geef hier dan de volledige url op." tos_url: "Heb je je Algemene Voorwaarden ergens extern staan, geef hier dan de volledige url op." privacy_policy_url: "Heb je je Privacy Voorwaarden ergens extern staan, geef hier dan de volledige url op." diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index dd86929b14..7bcde12cf4 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -69,6 +69,12 @@ pl_PL: other: '%{count} błędów uniemożliwiło zapisanie %{model}' embed: load_from_remote: "Wystąpił błąd podczas wczytywania tego wpisu." + site_settings: + min_username_length_exists: "Nie możesz ustawić najkrótszej długości nazwy użytkownika powyżej najkrótszej nazwy użytkownika." + min_username_length_range: "Nie możesz ustawić minimum powyżej maksimum." + max_username_length_exists: "Nie możesz ustawić maksymalnej długości nazwy użytkownika poniżej najdłuższej nazwy użytkownika." + max_username_length_range: "Nie możesz ustawić maksimum poniżej minimum." + default_categories_already_selected: "Nie możesz wybrać kategorii użytej w innej liście." bulk_invite: file_should_be_csv: "Wysłany plik powinien być w formacie CSV lub TXT." backup: @@ -77,7 +83,7 @@ pl_PL: not_enough_space_on_disk: "Nie ma wystarczającej ilości wolnego miejsca, aby wczytać tę kopię zapasową." not_logged_in: "Aby to zrobić musisz się zalogować." not_found: "Żądany URL lub źródło nie mógł zostać znaleziony." - invalid_access: "Nie jesteś uprawniony by zobaczyć żądane źródło." + invalid_access: "Nie jesteś uprawniony, by zobaczyć żądane źródło." read_only_mode_enabled: "Strona jest w trybie tylko do odczytu. Możliwość interakcji jest wyłączona." too_many_replies: one: "Przepraszamy, ale nowi użytkownicy są tymczasowo ograniczeni do 1 odpowiedzi w ramach jednego tematu." @@ -128,6 +134,7 @@ pl_PL: next_page: "następna strona →" prev_page: "← poprzednia strona" page_num: "Strona %{num}" + home_title: "Strona główna" topics_in_category: "Tematy w kategorii '%{category}'" rss_posts_in_topic: "Kanał RSS tematu '%{topic}'" rss_topics_in_category: "Kanał RSS tematów z kategorii '%{category}'" @@ -165,6 +172,22 @@ pl_PL: other: "%{count} wpisów" new-topic: "Witaj na %{site_name} — **dziękujemy za rozpoczęcie nowej dyskusji!**\n\n- Czy tytuł brzmi interesująco, gdy przeczytasz go na głos? Czy jest dobrym podsumowaniem treści?\n\n- Kto będzie tym zainteresowany? Dlaczego temat jest istotny? Jakiego rodzaju odpowiedzi oczekujesz? \n\n- Postaraj się umieścić słowa kluczowe w tytule, dzięki czemu inni będą mogli łatwo *wyszukać* temat. Przypisz go do kategorii o pokrewnej tematyce. \n\nAby dowiedzieć się więcej, [zobacz przewodnik społeczności](/guidelines). Ten panel pojawi się tylko przy pierwszym %{education_posts_text}.\n\n\n" new-reply: "Witaj na %{site_name} — **dziękujemy za zaangażowanie!**\n\n- Czy twoja odpowiedź wnosi coś pozytywnego do dyskusji?\n\n- Zachowuj się przyjaźnie w stosunku do innych.\n\n- Konstruktywna krytyka jest mile widziana, ale krytykujemy *pomysły*, a nie ludzi.\n\nWięcej informacji znajdziesz [w przewodniku społeczności](/guidelines). \nTen panel pojawi się tylko przy pisaniu pierwszych %{education_posts_text}.\n" + avatar: | + ### A może dodasz zdjęcie profilowe do swojego konta? + + Otworzyłeś kilka tematów i napisałeś kilka odpowiedzi, ale twoje zdjęcie profilowe nie jest tak niezwykłe jak ty - to tylko litera. + + Myślałeś o **[odwiedzeniu swojego profilu użytkownika](%{profile_path})** i załączeniu przedstawiającego cię zdjęcia? + + Kiedy każdy ma unikatowe zdjęcie profilowe, łatwiej jest obserwować dyskusje i znaleźć interesujących ludzi do rozmów! + sequential_replies: | + ### Pomyśl o odpowiadaniu na kilka postów jednocześnie + + Zamiast kilku kolejnych odpowiedzi do tematu, pomyśl o pojedynczej odpowiedzi, która zawierałaby cytaty z wcześniejszych postów lub wzmianki @imię. + + Możesz edytować swoje wcześniejsze odpowiedzi, aby dodać cytat, poprzez podświetlenie tekstu i wybranie przycisku quote reply. + + Każdemu łatwiej będzie przeczytać temat, który ma kilka pogłębionych odpowiedzi, zamiast wielu niewielkich, indywidualnych replik. dominating_topic: | ### Pozwól innym dołączyć do rozmowy @@ -278,8 +301,18 @@ pl_PL: title: "starszyzna" change_failed_explanation: "Twoja próba obniżenia poziomu %{user_name} do '%{new_trust_level}' była nieudana. Ten użytkownik posiada już poziom '%{current_trust_level}'. %{user_name} pozostanie na poziomie '%{current_trust_level}' - jeśli chcesz to zmienić, najpierw zablokuj poziom zaufania temu użytkownikowi." rate_limiter: - slow_down: "Ta akcja została wykonana zbyt wiele razy, próbuj ponownie za jakiś czas" + slow_down: "Powtórzyłeś to działanie zbyt wiele razy, spróbuj ponownie później." too_many_requests: "Liczba wykonań tej czynności w ciągu dnia jest ograniczona. Odczekaj %{time_left} przed ponowną próbą." + by_type: + first_day_replies_per_day: "Osiągnąłeś maksymalną liczbę odpowiedzi, jakie może napisać nowy użytkownik pierwszego dnia. Musisz odczekać %{time_left} zanim znów spróbujesz." + first_day_topics_per_day: "Osiągnąłeś maksymalną liczbę tematów, jakie może napisać nowy użytkownik pierwszego dnia. Musisz odczekać %{time_left}, zanim znów spróbujesz." + create_topic: "Zbyt szybko tworzysz tematy. Musisz poczekać %{time_left}, zanim znów spróbujesz." + create_post: "Odpowiadasz zbyt szybko. Musisz poczekać %{time_left}, zanim znów spróbujesz." + topics_per_day: "Osiągnąłeś maksymalną liczbę nowych tematów na dziś. Musisz poczekać %{time_left}, zanim znów spróbujesz." + pms_per_day: "Osiągnąłeś maksymalną liczbę wiadomości na dziś. Musisz poczekać %{time_left}, zanim znów spróbujesz." + create_like: "Osiągnąłeś maksymalną liczbę lajków na dziś. Musisz poczekać %{time_left}, zanim znów spróbujesz." + create_bookmark: "Wyczerpałeś na dziś możliwość dodawania zakładek. Musisz poczekać %{time_left}, zanim znów spróbujesz." + edit_post: "Wyczerpałeś na dziś możliwość edytowania. Musisz poczekać %{time_left}, zanim znów spróbujesz." hours: one: "1 godzina" few: "%{count} godziny" @@ -386,6 +419,7 @@ pl_PL: few: "prawie %{count} lata temu" other: "prawie %{count} lat temu" password_reset: + no_token: "Przepraszamy, ten link do zmiany hasła jest zbyt stary. Wybierz przycisk \"Zaloguj\", a następnie \"Zapomniałem hasła\", by uzyskać nowy link." choose_new: "Wybierz nowe hasło" choose: "Wprowadź hasło" update: 'Zmień hasło' @@ -399,6 +433,7 @@ pl_PL: please_continue: "Przejdź do %{site_name}" error: "Podczas próby zmiany Twojego adresu email wystąpił błąd. Być może ten adres jest już używany?" activation: + action: "Kliknij, by aktywować swoje konto." already_done: "Przepraszamy, ten link aktywujący konto jest już nieważny. Być może Twoje konto jest już aktywne ?" please_continue: "Twoje nowe konto zostało aktywowane, zostaniesz przekierowany na stronę główną." continue_button: "Przejdź do %{site_name}" @@ -466,6 +501,7 @@ pl_PL: regular: title: "Zwykły temat" banner: + title: "Ustaw jako baner" message: make: "Ten temat został ustawiony jako baner. Będzie pojawiać się na górze każdej strony do czasu zamknięcia przez użytkownika." remove: "Ten temat nie jest już banerem. Nie będzie pojawiać się na górze każdej strony." @@ -490,6 +526,10 @@ pl_PL: title: "Nowi Użytkownicy" xaxis: "Dzień" yaxis: "Liczba nowych użytkowników" + profile_views: + title: "Wyświetlenia profilu użytkownika" + xaxis: "Dzień" + yaxis: "Liczba wyświetleń profilów użytkowników" topics: title: "Tematy" xaxis: "Dzień" @@ -574,7 +614,9 @@ pl_PL: xaxis: "Dzień" yaxis: "Razem żądań API" page_view_logged_in_mobile_reqs: + title: "Zalogowany w zapytaniach API " xaxis: "Dzień" + yaxis: "Urządzenie zalogowane w zapytaniach API" page_view_anon_mobile_reqs: xaxis: "Dzień" http_background_reqs: @@ -619,6 +661,7 @@ pl_PL: host_names_warning: "Twój plik config/database.yml używa domyślnej nazwy serwera localhost. Zmień go by używał nazwy serwera Twojej strony." gc_warning: 'Twój serwer wykorzystuje domyślne ustawienia odśmiecacza ruby, który nie da Ci optymalnej wydajności. Przeczytaj ten temat o optymalizacji wydajności: Tuning Ruby and Rails for Discourse.' sidekiq_warning: 'Sidekiq nie działa. Wiele zadań, takich jak wysyłanie emaili, jest wykonywane asynchronicznie przez sidekiqa. Zagwarantuj, że przynajmniej jeden proces sidekiqa działa. Dowiedz się więcej o Sidekiqu.' + queue_size_warning: 'Liczba oczekujących zadań wynosi %{queue_size}, to dużo. Może to wskazywać na problem z procesem (procesami) Sidekiq, lub możesz potrzebować więcej pracowników Sidekiq.' memory_warning: 'Twój serwer działa z mniej niż 1 GB pamięci całkowitej. Przynajmniej 1 GB pamięci jest zalecany.' google_oauth2_config_warning: 'Serwis umożliwia rejestrację i logowanie poprzez Google OAuth2 (enable_google_oauth2_logins), ale ''client id'' oraz ''client secret'' nie są jeszcze ustawione. Przejdź do Ustawień i wprowadź te wartości. Zobacz ten przewodnik, aby dowiedzieć się więcej.' facebook_config_warning: 'Serwer jest skonfigurowany by pozwalać na rejestrację i logowanie za pomocą Facebooka (enable_facebook_logins), ale identyfikator i sekret aplikacji nie są ustawione. Przejdź do ustawień serwisu i zmień ustawienia. Zobacz ten poradnik by dowiedzieć się więcej.' @@ -679,6 +722,7 @@ pl_PL: max_topic_title_length: "Maksymalna długość tytułu tematu, w znakach" min_private_message_title_length: "Minimalna liczba znaków w temacie wiadomości " min_search_term_length: "Minimalna długość wyszukiwanego tekstu, w znakach" + allow_uncategorized_topics: "Zezwól na tworzenie tematów bez kategorii. UWAGA: jeśli jest jakiś nieskategoryzowany temat, musisz go przypisać do kategorii, zanim wyłączysz tę opcję." uncategorized_description: "Znajdują się tu wątki którym jeszcze nie przypisano odpowiedniej kategorii." allow_duplicate_topic_titles: "Pozwól na tworzenie tematów o identycznych tytułach." unique_posts_mins: "Ile minut musi upłynąć zanim użytkownik będzie mógł ponownie zrobić wpis z tą samą treścią" @@ -705,6 +749,7 @@ pl_PL: post_excerpt_maxlength: "Maksymalna długość podsumowania / streszczenia wpisu." post_onebox_maxlength: "Maksymalna długość (ilość znaków) treści wpisu osadzonego via Onebox" onebox_domains_whitelist: "Lista domen dla których włączony jest oneboxing; te domeny powinny wspierać OpenGraph lub oEmbed. Można to sprawdzić na http://iframely.com/debug" + logo_url: "Zdjęcie logo w lewym górnym rogu twojej strony powinno mieć kształt szerokiego prostokąta. Jeśli zostawisz miejsce puste, wyświetlany będzie tytuł strony." apple_touch_icon_url: "Ikona używana przez urządzenia Apple. Rekomendowany wymiar to 144px na 144px." notification_email: "Adres z którego wysyłane będą wszystkie istotne emaile systemowe.\nKonieczna jest poprawna konfiguracja rekordów SPF, DKIM oraz zwrotnego PTR użytej domeny." email_custom_headers: "A pipe-delimited list of custom email headers" @@ -717,7 +762,15 @@ pl_PL: enable_long_polling: "Message bus used for notification can use long polling" anon_polling_interval: "How often should anonymous clients poll in milliseconds" flags_required_to_hide_post: "Number of flags that cause a post to be automatically hidden and PM sent to the user (0 for never)" + cooldown_minutes_after_hiding_posts: "Liczba minut, ile musi odczekać użytkownik, zanim będzie mógł edytować post ukryty w wyniku oflagowania przez społeczność" + max_topics_in_first_day: "Maksymalna liczba tematów, jakie może stworzyć użytkownik pierwszego dnia na tej stronie." + max_replies_in_first_day: "Maksymalna liczba odpowiedzi, jakie może napisać użytkownik pierwszego dnia na tej stronie." + tl2_additional_likes_per_day_multiplier: "Zwiększ limit lajków na dzień dla tl2 (członek), mnożąc przez tę liczbę" + tl3_additional_likes_per_day_multiplier: "Zwiększ limit lajków na dzień dla tl3 (użytkownik stały), mnożąc przez tę liczbę" + tl4_additional_likes_per_day_multiplier: "Zwiększ limit lajków na dzień dla tl4 (lider), mnożąc przez tę liczbę" notify_mods_when_user_blocked: "If a user is automatically blocked, send a message to all moderators." + flag_sockpuppets: "Jeśli nowy użytkownik odpowiada na dany temat z tego samego adresu IP co nowy użytkownik, który założył temat, oznacz ich posty jako potencjalny spam." + post_undo_action_window_mins: "Przez tyle minut użytkownicy mogą cofnąć swoje ostatnie działania przy danym poście (lajki, flagowanie, itd.)." ga_tracking_code: "Identyfikator Google analytics (ga.js), np: UA-12345678-9; zobacz http://google.com/analytics" ga_domain_name: "Google analytics (ga.js) domain name, eg: mysite.com; see http://google.com/analytics" ga_universal_tracking_code: "Identyfikator Google Universal Analytics (analytics.js), np: UA-12345678-9; zobacz http://google.com/analytics" @@ -727,18 +780,26 @@ pl_PL: post_menu: "Określ które elementy menu wpisu powinny być widoczne i w jakiej kolejności. Przykład like|edit|flag|delete|share|bookmark|reply" share_links: "Określ które elementy menu udostępniania powinny być widoczne i w jakiej kolejności. " track_external_right_clicks: "Śledź zewnętrzne linki kliknięte prawym klawiszem (np. otwierane w nowej zakładce). Domyślnie wyłączone, gdyż wymaga nadpisywania URLi." + send_welcome_message: "Wyślij wszystkim nowym użytkownikom powitalną wiadomość z krótkim przewodnikiem." topics_per_period_in_top_summary: "Liczba tematów wyświetlanych w domyślnym podsumowaniu najbardziej popularnych wątków" topics_per_period_in_top_page: "Liczba tematów wyświetlanych w widoku 'Pokaż więcej' na ekranie popularnych wątków." + redirect_users_to_top_page: "Automatycznie kieruj nowych i długo nieobecnych użytkowników na stronę główną." + show_email_on_profile: "Pokazuj email użytkownika w jego profilu (widoczny jedynie dla użytkownika i personelu)." email_token_valid_hours: "Tokeny resetujące hasło / aktywujące konto są ważne przez (n) godzin." enable_badges: "Włącz system odznak" - enable_whispers: "Zezwól użytkownikom na szepty do członków zespołu serwisu" + log_out_strict: "Po wylogowaniu wyloguj WSZYSTKIE sesje użytkownika na wszystkich urządzeniach." port: "DEVELOPER ONLY! WARNING! Use this HTTP port rather than the default of port 80. Leave blank for default of 80." force_hostname: "DEVELOPER ONLY! WARNING! Specify a hostname in the URL. Leave blank for default." invite_expiry_days: "Jak długo klucz zaproszenie użytkownika jest ważny, w dniach." invite_only: "Publiczna rejestracja jest wyłączona: wszyscy nowi użytkownicy muszą zostać zaproszeni przez innych użytkowników lub zespół." login_required: "Wymagaj autoryzacji do wyświetlenia zawartości strony, zablokuj możliwość anonimowego dostępu." + min_username_length: "Minimalna długość nazwy użytkownika w znakach." + max_username_length: "Maksymalna długość nazwy użytkownika w znakach." + reserved_usernames: "Niedozwolone nazwy użytkowników." min_password_length: "Minimalna długość hasła." + block_common_passwords: "Nie zezwalaj na hasła znajdujące się w grupie 10 000 najpopularniejszych haseł." allow_new_registrations: "Zezwól na rejestrację nowych użytkowników. Odznacz opcję żeby uniemożliwić rejestrację nowych kont." + enable_signup_cta: "Pokazuj wiadomość dla powracających użytkowników anonimowych, zachęcającą ich do założenia konta." enable_yahoo_logins: "Enable Yahoo authentication" google_oauth2_client_id: "Client ID twojej aplikacji w Google" google_oauth2_client_secret: "Client Secret twojej aplikacji w Google" @@ -755,6 +816,10 @@ pl_PL: active_user_rate_limit_secs: "How frequently we update the 'last_seen_at' field, in seconds" verbose_localization: "Wyświetlaj dodatkowe identyfikatory tłumaczeń w treści etykiet" previous_visit_timeout_hours: "How long a visit lasts before we consider it the 'previous' visit, in hours" + rate_limit_create_topic: "Po otworzeniu tematu użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat." + rate_limit_create_post: "Po napisaniu posta użytkownicy muszą odczekać (n) sekund, zanim napiszą inny post." + rate_limit_new_user_create_topic: "Po otworzeniu tematu nowi użytkownicy muszą odczekać (n) sekund, zanim otworzą inny temat." + rate_limit_new_user_create_post: "Po napisaniu posta nowi użytkownicy muszą odczekać (n) sekund, zanim napiszą inny post." max_likes_per_day: "Maksymalna liczba polubień per użytkownik per dzień" max_flags_per_day: "Maksymalna liczba oflagowań per użytkownik per dzień." max_bookmarks_per_day: "Maksymalna liczba zakładek per użytkownik per dzień." @@ -762,6 +827,7 @@ pl_PL: max_topics_per_day: "Maksymalna liczba tematów jakie użytkownik może stworzyć jednego dnia." max_private_messages_per_day: "Maksymalna liczba wiadomości jakie użytkownik może wysłać jednego dnia." max_invites_per_day: "Maksymalna liczba zaproszeń jakie użytkownik może wysłać jednego dnia." + max_topic_invitations_per_day: "Maksymalna dzienna liczba zaproszeń do tematu, jakie może wysłać użytkownik." suggested_topics: "Liczba sugerowanych tematów widocznych na końcu aktualnego tematu." limit_suggested_to_category: "Sugeruj tematy jedynie z tej samej kategorii." avatar_sizes: "Lista automatycznie wygenerowanych rozmiarów awatarów." @@ -772,10 +838,24 @@ pl_PL: tl2_requires_topics_entered: "Jak wiele tematów musi odwiedzić użytkownik, przed promocją na 2-gi poziom zaufania." tl2_requires_read_posts: "Jak wiele postów musi przeczytać użytkownik, przed promocją na 2-gi poziom zaufania." tl2_requires_time_spent_mins: "Jak wiele minut musi spędzić użytkownik czytając posty, przed promocją na 2-gi poziom zaufania." + tl2_requires_days_visited: "Ile dni użytkownik musi odwiedzać stronę, zanim otrzyma promocję na 2 poziom zaufania. " + tl2_requires_likes_received: "Ile lajków musi otrzymać użytkownik, zanim otrzyma promocję na 2 poziom zaufania." + tl2_requires_likes_given: "Ile lajków musi dać użytkownik, zanim otrzyma promocję na 2 poziom zaufania." + tl2_requires_topic_reply_count: "Na ile tematów musi odpowiedzieć użytkownik, zanim otrzyma promocję na 2 poziom zaufania." + tl3_requires_days_visited: "Minimalna liczba dni, przez które użytkownik musiał odwiedzać stronę w ciągu ostatnich 100 dni, aby kwalifikować się do promocji na 3 poziom zaufania. (0 do 100)" + tl3_requires_topics_replied_to: "Minimalna liczba tematów, na które użytkownik musiał odpowiedzieć w ciągu ostatnich 100 dni, aby kwalifikować się do promocji na 3 poziom zaufania. (0 albo więcej)" + tl3_requires_likes_received: "Minimalna liczba lajków, jakie należało otrzymać w ciągu ostatnich 100 dni, by kwalifikować się do promocji na 3 stopień zaufania." min_trust_to_create_topic: "The minimum trust level required to create a new topic." + newuser_max_links: "Ile linków może dodać nowy użytkownik do posta." + newuser_max_images: "Ile obrazów może dodać nowy użytkownik do posta." + newuser_max_attachments: "Ile załączników może dodać nowy użytkownik do posta." newuser_max_mentions_per_post: "Maksymalna liczba powiadomień poprzez @nazwę w jednym wpisie (dla nowych użytkowników)." max_mentions_per_post: "Maksymalna liczba powiadomień poprzez @nazwę w jednym wpisie (dla wszystkich)." + email_time_window_mins: "Odczekaj (n) minut przed wysłaniem maila z powiadomieniem, aby dać użytkownikom szansę na edytowanie i ukończenie postów." + title_max_word_length: "Maksymalna dozwolona długość słowa, w znakach, jako tytuł tematu." title_fancy_entities: "Convert common ASCII characters to fancy HTML entities in topic titles, ala SmartyPants http://daringfireball.net/projects/smartypants/" + min_title_similar_length: "Minimalna długość tytułu zanim zostanie sprawdzony z podobnymi tematami." + min_body_similar_length: "Minimalna długość treści posta zanim zostanie sprawdzony z podobnymi tematami." category_colors: "Lista kolorów w formacie hex do użycia w etykietach kategorii." category_style: "Styl etykiet kategorii" title_prettify: "Prevent common title typos and errors, including all caps, lowercase first character, multiple ! and ?, extra . at end, etc." @@ -794,18 +874,32 @@ pl_PL: digest_min_excerpt_length: "Minimalny wycinek wpisu (liczba znaków) w podsumowaniu e-mail." suppress_digest_email_after_days: "Nie wysyłaj podsumowań e-mail użytkownikom, którzy nie odwiedzili serwisu dłużej niż (n) dni." disable_digest_emails: "Wyłącz wysyłanie podsumowania e-mail wszystkim uzytkownikom. " + allow_anonymous_posting: "Zezwól użytkownikom na przechodzenie w tryb anonimowości." allow_profile_backgrounds: "Zezwól użytkownikom na przesyłanie obrazu tła dla profilu." enable_mobile_theme: "Urządzenia mobilne używają dedykowanego mobilnego szablonu. Wyłącz to, jeśli chcesz użyć własnego, pojedynczego i responsywnego szablonu stylów. " suppress_uncategorized_badge: "Nie pokazuj etykiety z nazwą kategorii Inne na listach tematów." + full_name_required: "Pełne imię i nazwisko to wymagane pole w profilu użytkownika." + display_name_on_posts: "Pokazuj imię i nazwisko użytkownika przy jego postach, a także jego @nazwę użytkownika." enable_emoji: "Włącz obsługę emoji" emoji_set: "Jaki jest twój preferowany styl emoji?" + approve_post_count: "Liczba postów nowego użytkownika, które muszą być zatwierdzone" + approve_unless_trust_level: "Posty użytkowników poniżej tego poziomu zaufania muszą być zatwierdzane" + default_categories_watching: "Lista kategorii obserwowanych domyślnie." + default_categories_tracking: "Lista kategorii śledzonych domyślnie." errors: invalid_email: "Nieprawidłowy adres email." invalid_username: "Użytkownik o takiej nazwie nie istnieje." + invalid_integer_min_max: "Wartość musi być między %{min} i %{max}." + invalid_integer_min: "Wartość musi wynosić %{min} albo więcej." + invalid_integer_max: "Wartość nie może być wyższa niż %{max}." invalid_integer: "Wartość musi być liczbą całkowitą." regex_mismatch: "Wartość nie jest zgodna z wymaganym formatem." must_include_latest: "Górne menu musi zawierać zakładkę 'aktualne'." invalid_string: "Nieprawidłowa wartość." + invalid_string_min_max: "Musi być między %{min} i %{max} znaków." + invalid_string_min: "Musi być co najmniej %{min} znaków." + invalid_string_max: "Musi być nie więcej niż %{max} znaków." + invalid_reply_by_email_address: "Wartość musi zawierać '%{reply_key}' i musi być inna niż mail z powiadomieniem." notification_types: mentioned: "%{display_username} wspomina o Tobie w %{link}" liked: "%{display_username} polubił(-a) Twój wpis w %{link}" @@ -814,7 +908,11 @@ pl_PL: edited: "%{display_username} edytuje Twój wpis w %{link}" posted: "%{display_username} pisze w %{link}" moved_post: "%{display_username} przenosi twój wpis do %{link}" + private_message: "%{display_username} wysłał ci wiadomość: %{link}" + invited_to_private_message: "%{display_username} zaprosił cię do wiadomości: %{link}" + invited_to_topic: "%{display_username} zaprosił cię do tematu: %{link}" invitee_accepted: "%{display_username} przyjął(-ęła) Twoje zaproszenie" + linked: "%{display_username} powiązał cię z %{link}" granted_badge: "Zdobywasz %{link}" search: within_post: "#%{post_number} przez %{username}" @@ -823,11 +921,19 @@ pl_PL: topic: 'Wyniki' user: 'Użytkownicy' sso: + not_found: "Sprawdzenie lub stworzenie konta jest niemożliwe, skontaktuj się z administracją strony" account_not_approved: "Konto czeka na zatwierdzenie. Dostaniesz powiadomienie emailem, kiedy to się stanie." + unknown_error: "Błąd aktualizowania informacji, skontaktuj się z administracją strony" + timeout_expired: "Zbyt długi czas logowania, spróbuj zalogować się ponownie" original_poster: "Autor pierwszego wpisu" most_posts: "Większość postów" most_recent_poster: "Autor najnowszego wpisu" frequent_poster: "Aktywny uczestnik" + redirected_to_top_reasons: + new_user: "Witamy w naszej społeczności! Oto najpopularniejsze najnowsze tematy." + not_seen_in_a_month: "Witamy ponownie! Długo tu nie zaglądałeś. Oto najpopularniejsze tematy z czasów, kiedy cię tu nie było." + change_owner: + deleted_user: "usunięty użytkownik" topic_statuses: archived_enabled: "Temat został zarchiwizowany. Został zablokowany i nie może być zmieniany. " archived_disabled: "Temat został przywrócony z archiwum. Został odblokowany i może ponownie być zmieniany." @@ -858,6 +964,7 @@ pl_PL: few: "Ten temat został automatycznie zamknięty %{count} minuty po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe." other: "Ten temat został automatycznie zamknięty %{count} minut po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe." autoclosed_disabled: "Temat został otwarty. Dodawanie odpowiedzi jest ponownie możliwe." + autoclosed_disabled_lastpost: "Temat został otwarty. Pisanie odpowiedzi jest możliwe." pinned_enabled: "Temat został przypięty. Będzie pojawiać się na początku swojej kategorii dopóki nie zostanie odpięty przez obsługę lub prywatnie przez użytkownika." pinned_disabled: "Temat został odpięty. Już nie będzie pojawiać się na początku swojej kategorii." pinned_globally_enabled: "Temat został przypięty globalnie. Będzie pojawiać się na początku swojej kategorii i wszystkich list dopóki nie zostanie odpięty przez obsługę lub prywatnie przez użytkownika." @@ -871,11 +978,19 @@ pl_PL: active: "Twoje konto zostało aktywowane i jest gotowe do użycia." activate_email: "Prawie gotowe! Wysłaliśmy email aktywacyjny na adres %{email}. Postępuj zgodnie z instrukcją z tego emaila, żeby dokończyć ten proces.
Jeśli email nie dotrze do Ciebie, sprawdź folder ze spamem, lub zaloguj sie jeszcze raz, żeby wysłać go ponownie.
" not_activated: "Nie możesz się jeszcze zalogować. Wysłaliśmy do Ciebie email aktywacyjny. Wykonaj instrukcje w nim zawarte by aktywować Twoje konto." + not_allowed_from_ip_address: "Nie możesz się zalogować jako %{username} z tego adresu IP." + admin_not_allowed_from_ip_address: "Nie możesz zalogować się jako administrator z tego adresu IP." + suspended: "Nie możesz się zalogować aż do %{date}." + suspended_with_reason: "Konto zawieszone do %{date}: %{reason}" errors: "%{errors}" not_available: "Niedostępny. Może spróbuj %{suggestion}?" something_already_taken: "Coś poszło źle. Możliwe, że ta nazwa użytkownika lub email są już zarejestrowane. Spróbuj użyć procedury przypominania hasła." + omniauth_error: "Przepraszamy, pojawił się błąd autoryzacji twojego konta. Sprawdź, czy zatwierdziłeś autoryzację." omniauth_error_unknown: "Wystąpił błąd podczas logowania, spróbuj ponownie." + new_registrations_disabled: "Aktualnie nie jest możliwe zarejestrowanie nowego konta." password_too_long: "Hasła są ograniczone do 200 znaków." + email_too_long: "Podałeś zbyt długi adres email. Nazwa skrzynki pocztowej nie może być dłuższa niż 254 znaki, a nazwa domeny nie może zawierać więcej niż 253 znaki." + reserved_username: "Niedozwolona nazwa użytkownika." missing_user_field: "Nie wypełniłeś wszystkich pól użytkownika" close_window: "Uwierzytelnianie zakończone. Aby kontynuować, zamknij to okno." user: @@ -886,10 +1001,20 @@ pl_PL: characters: "może zawierać tylko litery, cyfry i podkreślenia" unique: "musi być unikalna" blank: "musi zostać podana" + must_begin_with_alphanumeric: "musi zaczynać się literą, liczbą lub podkreślnikiem" + must_end_with_alphanumeric: "musi kończyć się literą, liczbą bądź podkreślnikiem" + must_not_contain_two_special_chars_in_seq: "nie może zawierać sekwencji 2 lub więcej znaków specjalnych (.-_)" + must_not_contain_confusing_suffix: "nie może zawierać wprowadzającego w błąd przyrostka, jak .json lub .png, itd." email: not_allowed: "nie jest dopuszczany od tego dostawcy poczty. Użyj innego adresu email." blocked: "is not allowed." + ip_address: + blocked: "Z twojego adresu IP nowe rejestracje nie są możliwe." + max_new_accounts_per_registration_ip: "Z twojego adresu IP nowe rejestracje nie są możliwe (wyczerpany limit). Skonaktuj się z personelem." + invite_mailer: + subject_template: "%{invitee_name} zaprosił cię do '%{topic_title}' na %{site_domain_name}" invite_forum_mailer: + subject_template: "%{invitee_name} zaprosił cię do dołączenia do %{site_domain_name}" text_body_template: | %{invitee_name} wysłał Tobie zaproszenie @@ -904,6 +1029,19 @@ pl_PL: To zaproszenie zostało wysłane przez zaufanego użytkownika, nie musisz się logować. invite_password_instructions: subject_template: "Ustaw hasło dla swojego konta na %{site_name}" + text_body_template: |+ + Dziękujemy za zaakceptowanie zaproszenia do %{site_name} -- witamy! + + + + Kliknij ten link, by wybrać hasło: + + %{base_url}/users/password-reset/%{email_token} + + + + (Jeśli powyższy link wygasł, wybierz "Zapomniałem hasła", logując się za pomocą adresu email.) + test_mailer: subject_template: "[%{site_name}] Test dostarczania poczty" new_version_mailer: @@ -922,7 +1060,11 @@ pl_PL: other: "%{count} flagi oczekują na reakcję" flag_reasons: inappropriate: "Twój wpis został oznaczony jako **nieodpowiedni**: społeczność uznała, że zbyt agresywny lub niezgodny z [jej wytycznymi](/guidelines)." + spam: "Twój post został oznaczony jako **spam**: społeczność czuje, że jest to reklama, czyli coś nadmiernie promującego, a nie użytecznego czy odnoszącego się do tematu." + notify_moderators: "Twój post został oznaczony jako **do uwagi moderatora**: społeczność czuje, że post wymaga ręcznej interwencji członka personelu." flags_dispositions: + agreed: "Dziękujemy za zwrócenie uwagi. Zgadzamy się, że jest to problem i przyjrzymy się temu. " + agreed_and_deleted: "Dziękujemy za zwrócenie uwagi. Zgadzamy się, że jest to problem i post został usunięty. " disagreed: "Dziękujemy za zwrócenie uwagi. Zajmiemy się tym wkrótce." deferred: "Dziękujemy za zwrócenie uwagi. Zajmiemy się tym wkrótce." deferred_and_deleted: "Dziękujemy za zwrócenie uwagi. Wpis został usunięty." @@ -930,6 +1072,20 @@ pl_PL: system_messages: post_hidden: subject_template: "Wpis został ukryty z powodu oflagowania przez społeczność" + text_body_template: | + Witamy, + + To automatyczna wiadomość od %{site_name}, by poinformować Cię, że Twój post został ukryty. + + %{base_url}%{url} + + %{flag_reason} + + Wielu członków społeczności oznaczyło ten post przed jego ukryciem, zatem prosimy Cię, byś zastanowił się, jak możesz zrewidować swoje stanowisko, uwzględniając ich opinię. **Możesz edytować post po %{edit_delay} minutach, po czym będzie on znów widoczny. + + Jednakże jeśli post został ukryty przez społeczność po raz drugi, pozostanie taki, dopóki nie zajmie się nim personel - za tym mogą iść dalsze działania, jak możliwe zawieszenie Twojego konta. + + Aby uzyskać informacje na temat dalszego postępowania, przeczytaj [wytyczne dla społeczności] (%{base_url}/guidelines). welcome_user: subject_template: "Witaj na %{site_name}!" welcome_invite: @@ -1101,7 +1257,26 @@ pl_PL: %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "Zostałeś zaakceptowany na forum %{site_name}!" + text_body_template: |+ + Witamy na %{site_name}! + + Nasz personel zatwierdził twoje konto na %{site_name}. + + Kliknij na podany link, aby potwierdzić i aktywować swoje nowe konto: + %{base_url}/users/activate-account/%{email_token} + + Jeśli podany link nie działa, spróbuj skopiować go i przykleić w pasku adresów swojej wyszukiwarki. + + %{new_user_tips} + + Wierzymy, że [cywilizowana dyskusja](%{base_url}/guidelines) jest zawsze możliwa. + + Baw się dobrze! + + (Jeśli potrzebujesz skontaktować się z [członkiem zespołu](%{base_url}/about) jako nowy użytkownik, odpowiedz na tę wiadomość.) + signup: + subject_template: "[%{site_name}] Potwierdź swoje nowe konto" text_body_template: | Witaj na %{site_name}! @@ -1117,6 +1292,7 @@ pl_PL: search_title: "Szukaj w serwisie" search_google: "Google" terms_of_service: + title: "Warunki użytkowania" signup_form_message: 'Przeczytałem i zgadzam się z Regulaminem Serwisu.' deleted: 'usunięte' upload: @@ -1131,6 +1307,7 @@ pl_PL: no_user: "Nie można znaleźć użytkownika z ID %{user_id}" post_deleted: "Wpis został usunięty przez autora" user_suspended: "użytkownik został zawieszony" + already_read: "użytkownik przeczytał ten post" color_schemes: base_theme_name: "Podstawa" guidelines: "Przewodnik" @@ -1147,6 +1324,56 @@ pl_PL: title: "Warunki użytkowania" privacy_topic: title: "Polityka prywatności" + badges: + long_descriptions: + autobiographer: | + Ta odznaka jest przyznawana za wypełnienie w twoim profilu i za wybranie zdjęcia profilowego. Pozwól lepiej się poznać i pokaż swoje zainteresowania, aby społeczność była jeszcze lepsza i silniej związana. + first_like: |+ + Ta odznaka jest przyznawana, kiedy po raz pierwszy polubisz posta, posługując się przyciskiem :heart:. Dzięki lajkowaniu postów członkowie społeczności wiedzą, że ich wpisy były interesujące, użyteczne, fajne i zabawne. Dziel się miłością! + + first_link: | + Ta odznaka jest przyznawana, kiedy po raz pierwszy podajesz link do innego tematu w odpowiedzi. Lajkowanie tematów pomaga innym czytającym w odnalezieniu powiązanych interesujących dyskusji, pokazując związki między tematami w obydwu kierunkach. + first_quote: |+ + Ta odznaka jest przyznawana, kiedy po raz pierwszy cytujesz jakiś post w swojej odpowiedzi. Cytowanie powiązanych fragmentów wcześniejszych postów w odpowiedziach pozwala na prowadzenie dyskusji na temat. + + first_share: | + Ta odznaka jest przyznawana, kiedy po raz pierwszy dzielisz się linkiem odpowiedzi albo tematu, posługując się przyciskiem "Prześlij". Dzielenie się linkami to znakomity sposób na pokazanie ciekawej dyskusji innym i na powiększenie grona znajomych. + read_guidelines: | + Ta odznaka jest przyznawana za przeczytanie przewodników społeczności. Obserwowanie tych prostych przewodników i dzielenie się nimi pomaga zbudować bezpieczną, wesołą i trwałą społeczność. + reader: | + Ta odznaka jest przyznawana za przeczytanie długiego tematu. Czytanie jest podstawą. Uważne czytanie pozwoli ci śledzić dyskusję i komentować w lepszy, bardziej kompleksowy sposób. + editor: | + Ta odznaka jest przyznawana za edytowanie swojego postu. Nie wahaj się i edytuj swoje posty, by je ulepszać, poprawiać błędy oraz dodawać to, o czym wcześniej zapomniałeś. + first_flag: | + Ta odznaka jest przyznawana za oflagowanie posta. Flagowanie jest kluczowe dla dobrostanu naszej społeczności. Jeśli zauważysz post, który wymaga uwagi moderatora, prosimy, + oflaguj go bez wahania. Możesz także posłużyć się flagowaniem rozmowy, by wysłać wiadomości do innych użytkowników. + nice_share: |+ + Ta odznaka jest przyznawana za podzielenie się linkiem do posta odwiedzonego przez 25 gości z zewnątrz. Dobra robota! Dzielenie się linkami do ciekawych rozmów z przyjaciółmi to wspaniały sposób na powiększenie naszej społeczności. + + welcome: | + Ta odznaka jest przyznawana, kiedy dostajesz pierwszego lajka przy poście. Gratulacje, napisałeś coś, co inni użytkownicy uznali za interesujące, fajne lub użyteczne! + anniversary: | + Ta odznaka jest przyznawana, kiedy jesteś członkiem społeczności od roku z co najmniej jednym postem napisanym w tym roku. Dziękujemy, że się udzielasz w naszej społeczności! + good_share: | + Ta odznaka jest przyznawana za podzielenie się linkiem do posta odwiedzonego przez 300 gości z zewnątrz. Dobra robota! Pokazałeś interesującą dyskusję wielu nowym osobom i pomogłeś nam się rozwinąć. + great_share: | + Ta odznaka jest przyznawana za podzielenie się linkiem do posta odwiedzonego przez 100 gości z zewnątrz. Super! Pokazałeś interesującą dyskusję ogromnej ilości nowych osób i pomogłeś nam bardzo w rozwoju. + nice_post: | + Ta odznaka jest przyznawana za napisanie odpowiedzi, która otrzymała 10 lajków. Dobra robota! + nice_topic: "Ta odznaka jest przyznawana za utworzenie tematu, który otrzymał 10 lajków. Dobra robota! \n" + good_post: | + Ta odznaka jest przyznawana za napisanie odpowiedzi, która otrzymała 25 lajków. Wspaniała robota! + good_topic: "Ta odznaka jest przyznawana za utworzenie tematu, który otrzymał 25 lajków. Wspaniała robota! \n" + great_post: "Ta odznaka jest przyznawana za napisanie posta, który otrzymał 50 lajków. Super! \n" + great_topic: "Ta odznaka jest przyznawana za napisanie odpowiedzi, która otrzymała 50 lajków. Super! \n" + basic: | + Ta odznaka jest przyznawana, kiedy otrzymujesz 1 poziom zaufania. Dziękujemy, że tutaj jesteś i myszkujesz w tematach, by dowiedzieć się, o co nam chodzi. Zniesiono ograniczenia nałożone na ciebie jako na nowego użytkownika. Przyznano ci wszystkie podstawowe możliwości, takie jak pisanie prywatnych wiadomości, flagowanie, edytowanie Wikipedii, a także możliwość umieszczania zdjęć i linków. + member: | + Ta odznaka jest przyznawana, kiedy osiągasz 2 poziom zaufania. Dziękujemy, że od kilku tygodni udzielasz się w naszej społeczności. Możesz teraz wysyłać osobiste zaproszenia ze swojej strony użytkownika, tworzyć indywidualne tematy i wiadomości grupowe, a także masz kilka lajków na dzień więcej. + regular: | + Ta odznaka jest przyznawana, kiedy osiągasz 3 poziom zaufania. Dziękujemy, że od miesięcy udzielasz się tutaj regularnie, jesteś jednym z najaktywniejszych czytelników i rzetelnie przyczyniasz się do tego, że nasza społeczność jest wspaniała. Możesz teraz zmieniać kategorie i nazwy tematów, masz dostęp do prywatnego salonu, silniejsze flagi do oznaczania spamu oraz o wiele więcej lajków dziennie. + leader: | + Ta odznaka jest przyznawana, kiedy osiągasz 4 poziom zaufania. Jesteś liderem w tej społeczności, wybranym przez zespół, a twoje czyny i słowa dają pozytywny przykład. Możesz edytować wszystkie posty i zajmować się tematami z pozycji moderatora, tzn. przypinać, zamykać, odznaczać, archiwizować, dzielić, łączyć. Masz także setki lajków dziennie. admin_login: success: "Email wysłany" error: "Błąd!" diff --git a/config/locales/server.pt.yml b/config/locales/server.pt.yml index f29c17aaba..1732af7fe2 100644 --- a/config/locales/server.pt.yml +++ b/config/locales/server.pt.yml @@ -776,7 +776,7 @@ pt: notify_mods_when_user_blocked: "Se um utilizador for bloqueado de forma automática, enviar uma mensagem a todos os moderadores." flag_sockpuppets: "Se um novo utilizador responde a um tópico a partir do mesmo endereço IP do novo utilizador que iniciou o tópico, sinalizar ambas as mensagens como potencial spam." traditional_markdown_linebreaks: "Utilize tradicionais quebras de linha no Markdown, que requer dois espaços no final para uma quebra de linha." - allow_html_tables: "Permitir inserção de tabelas em Markdown utilizando tags HTML, TABLE,THEAD, TD, TR,TH fazem parte da lista branca (requer que todas as mensagens antigas que contém tabelas sejam refeitas)" + allow_html_tables: "Permitir inserção de tabelas em Markdown utilizando tags HTML. TABLE,THEAD, TD, TR,TH fazem parte da lista branca (requer que todas as mensagens antigas que contém tabelas sejam refeitas)" post_undo_action_window_mins: "Número de minutos durante o qual os utilizadores têm permissão para desfazer ações numa mensagem (gostos, sinalizações, etc)." must_approve_users: "O pessoal deve aprovar todas as novas contas de utilizador antes destas terem permissão para aceder ao sítio. AVISO: ativar isto para um sítio ativo irá revogar o acesso aos utilizadores existentes que não fazem parte do pessoal!" ga_tracking_code: "Código de acompanhamento do Google Analytics (ga.js), ex: UA-12345678-9; ver http://google.com/analytics" @@ -803,6 +803,7 @@ pt: topics_per_period_in_top_summary: "Número de tópicos principais mostrados no resumo padrão de tópicos principais." topics_per_period_in_top_page: "Número de tópicos principais mostrados em 'Mostrar Mais' tópicos principais expandido." redirect_users_to_top_page: "Redirecionar automaticamente os utilizadores novos e ausentes por períodos longos para o topo da página." + top_page_default_timeframe: "Intervalo de tempo por defeito para a página de visualizações do topo." show_email_on_profile: "Mostrar o email do utilizador no seu perfil (apenas visível para si próprio e para o pessoal)" email_token_valid_hours: "Os símbolos para palavra-passe esquecida /conta ativada são válidos por (n) horas." email_token_grace_period_hours: "Os símbolos para palavra-passe esquecida /conta ativada são válidos por um período de carência de (n) horas após serem recuperados" diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml index 1bd2070eea..69cc53f99a 100644 --- a/config/locales/server.pt_BR.yml +++ b/config/locales/server.pt_BR.yml @@ -65,6 +65,13 @@ pt_BR: other: '%{count} erros impediram este %{model} de ser salvo' embed: load_from_remote: "Houve um erro ao carregar essa mensagem." + site_settings: + min_username_length_exists: "Você não pode definir o comprimento mínimo de nome de usuário como maior do que o nome de usuário mais curto." + min_username_length_range: "Você não pode colocar o mínimo acima do máximo." + max_username_length_exists: "Você não pode definir o comprimento máximo de nome de usuário como abaixo do nome de usuário mais longo." + max_username_length_range: "Você não pode definir o máximo abaixo no mínimo." + default_categories_already_selected: "Você não pode selecionar uma categoria usada noutra lista." + s3_upload_bucket_is_required: "Você não pode habilitar uploads para o S3 a não ser que tenha provido o 's3_upload_bucket'." bulk_invite: file_should_be_csv: "O arquivo enviado deve ser do formado csv ou txt." backup: @@ -286,7 +293,7 @@ pt_BR: title: "líder" change_failed_explanation: "Você tentou rebaixar %{user_name} para '%{new_trust_level}'. No entanto o nível de confiança dele já é '%{current_trust_level}'. %{user_name} permanecerá em '%{current_trust_level}' - se você deseja rebaixar um usuário, tranque o nível de confiança primeiro" rate_limiter: - slow_down: "Você executou esta ação muitas vezes, tente novamente mais tarde" + slow_down: "Você fez essa ação demais, tente novamente mais tarde." too_many_requests: "Nós possuímos um limite diário do número de vezes que uma ação pode ser tomada. Por favor aguarde %{time_left} antes de tentar novamente." hours: one: "1 hora" @@ -474,6 +481,10 @@ pt_BR: title: "Novos Usuários" xaxis: "Dia" yaxis: "Número de usuários novos" + profile_views: + title: "Visualizações de Perfil de Usuário" + xaxis: "Dia" + yaxis: "Número de perfis de usuários vistos" topics: title: "Tópicos" xaxis: "Dia" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index 649a8f842c..bbf01e3039 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -308,7 +308,6 @@ ru: title: "лидер" change_failed_explanation: "Вы пытаетесь понизить пользователя %{user_name} до уровня доверия '%{new_trust_level}'. Однако, его уровень доверия уже '%{current_trust_level}'. %{user_name} останется с уровнем доверия '%{current_trust_level}'. Если вы все же хотите понизить пользователя, заблокируйте вначале уровень доверия." rate_limiter: - slow_down: "Вы выполняете это действие слишком часто; пожалуйста, попробуйте еще раз позже" too_many_requests: "Вы повторяете действие слишком часто. Пожалуйста, подождите %{time_left} до следующей попытки." hours: one: "1 час" @@ -800,7 +799,6 @@ ru: notify_mods_when_user_blocked: "Отправить сообщение всем модераторам, если пользователь заблокирован автоматически." flag_sockpuppets: "Если новый пользователь отвечает на тему с того же IP адреса как и новый пользователь, кто начал тему, отметить оба их сообщения как возможный спам." traditional_markdown_linebreaks: "Использовать стандартный способ переноса строки в Markdown: строка должна заканчиваться двумя пробелами, чтобы перенос строки после нее сработал." - allow_html_tables: "Разрешить создание таблиц в разметке Markdown с использованием HTML тегов. Разрешенные теги: TABLE, THEAD, TD, TR, TH (потребуется заново произвести HTML-обработку всех старых сообщений с таблицами)" post_undo_action_window_mins: "Количество минут, в течение которых пользователь может отменить действия, связанные с сообщениями: 'Мне нравится', 'Жалоба' и др." must_approve_users: "Персонал должен подтвердить регистрации новых пользователей перед тем, как им будет разрешен доступ к сайту.\nВНИМАНИЕ: включая данную функцию на существуещем сайте будет закрыт доступ к сайту для всех пользователей, кроме персонала." ga_tracking_code: "Google analytics (ga.js) tracking code код, например: UA-12345678-9; смотрите http://google.com/analytics" @@ -830,7 +828,6 @@ ru: email_token_valid_hours: "Ссылка на восстановление пароля / активацию аккаунта будет действовать в течении (n) часов." email_token_grace_period_hours: "Ссылка на восстановление пароля / активацию аккаунта будет действовать в течении (n) часов." enable_badges: "Включить систему наград" - enable_whispers: "Разрешить пользователям отсылать внутренние сообщения персоналу (такие сообщения будут только им и видны)" allow_index_in_robots_txt: "Разрешить поисковикам индексировать сайт в robots.txt" email_domains_blacklist: "Список почтовых доменов, с которых запрещена регистрация учетных записей. Пример: mailinator.com trashmail.net" email_domains_whitelist: "Список почтовых доменов, с которых ДОЛЖНА производиться регистрация учетных записей.\nВНИМАНИЕ: Пользователям других почтовых доменов регистрация будет недоступна. " diff --git a/config/locales/server.sq.yml b/config/locales/server.sq.yml index d3a52c980c..0ade7295f1 100644 --- a/config/locales/server.sq.yml +++ b/config/locales/server.sq.yml @@ -304,7 +304,6 @@ sq: title: "udhëheqës" change_failed_explanation: "You attempted to demote %{user_name} to '%{new_trust_level}'. However their trust level is already '%{current_trust_level}'. %{user_name} will remain at '%{current_trust_level}' - if you wish to demote user lock trust level first" rate_limiter: - slow_down: "You have performed this action too many times, try again later" too_many_requests: "We have a daily limit on how many times that action can be taken. Please wait %{time_left} before trying again." hours: one: "1 hour" diff --git a/config/locales/server.te.yml b/config/locales/server.te.yml index 2a40ce4212..51f6e5885e 100644 --- a/config/locales/server.te.yml +++ b/config/locales/server.te.yml @@ -225,7 +225,6 @@ te: elder: title: "లీడర్" rate_limiter: - slow_down: "ఈ చర్చ మీరు చాలాసార్లు జరిపారు. కొంతసేపటితర్వాత ప్రయత్నించండి" too_many_requests: "ఈ చర్యకు రోజువారీపరిమితి ఉంది. దయచేసి %{time_left} సమయం తర్వాత ప్రయత్నించండి" hours: one: "ఒక గంట" diff --git a/config/locales/server.tr_TR.yml b/config/locales/server.tr_TR.yml index e667c501b0..3ecd3d87ae 100644 --- a/config/locales/server.tr_TR.yml +++ b/config/locales/server.tr_TR.yml @@ -275,7 +275,6 @@ tr_TR: title: "lider" change_failed_explanation: " %{user_name} adlı kullanıcıyı '%{new_trust_level}' seviyesine düşürmeye çalıştınız. Ancak, halihazırda kullanıcının güven seviyesi zaten '%{current_trust_level}'. %{user_name} '%{current_trust_level}' seviyesinde kalacak - eğer seviyesini düşürmek istiyorsanız öncelikle güven seviyesini kilitlemelisiniz" rate_limiter: - slow_down: "Bu işlemi çok fazla kere tekrar ettiniz, lütfen daha sonra tekrar deneyin" too_many_requests: "Bu işlem için günlük limitinizi aştınız. Lütfen tekrar denemek için %{time_left} bekleyin. " hours: other: "%{count} saat" @@ -697,7 +696,6 @@ tr_TR: notify_mods_when_user_blocked: "Eğer bir kullanıcı otomatik olarak engellendiyse, tüm moderatörlere mesaj yolla." flag_sockpuppets: "Eğer, yeni kullanıcı konuya, konuyu başlatan yeni kullanıcı ile aynı IP adresinden cevap yazarsa, her iki gönderiyi de potansiyel spam olarak işaretle. " traditional_markdown_linebreaks: "Markdown'da, satır sonundan önce yazının sağında iki tane boşluk gerektiren, geleneksel satır sonu metodunu kullan kullan." - allow_html_tables: "Çizelgelerin HTML etiketleri kullanılarak Markdown ile oluşturulmasına izin verin, TABLE, THEAD, TD, TR, TH kabul edilir (çizelge içeren tüm eski gönderilerin yenilenmesini gerektirir)" post_undo_action_window_mins: "Kullanıcıya tanınan, bir gönderide yapılan yeni aksiyonları (beğenme, bayraklama, vs) geri alabilme dakika süresi" must_approve_users: "Siteye erişimlerine izin verilmeden önce tüm yeni kullanıcı hesaplarının görevliler tarafından onaylanması gerekir. UYARI: yayındaki bir site için bunu etkinleştirmek görevli olmayan hesapların erişimini iptal edecek." ga_tracking_code: "Google analytics (ga.js) takip kodu, ör: UA-12345678-9; bakınız http://google.com/analytics" diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index 3e2c12e31b..84e37cf5b6 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -739,7 +739,6 @@ zh_CN: notify_mods_when_user_blocked: "如果一个用户被自动封禁了,发送一个消息给所有管理员。" flag_sockpuppets: "如果一个新用户开始了一个主题,并且同时另一个新用户以同一个 IP 在该主题回复,他们所有的帖子都将被自动标记为垃圾。" traditional_markdown_linebreaks: "在 Markdown 中使用传统换行符,即用两个尾随空格来换行" - allow_html_tables: "允许在输入 Markdown 时输入表格 HTML 标签,TABLE、THEAD、TD、TR、TH 将被白名单(需要对所有包含表格的老帖子做彻底的 rebake)" post_undo_action_window_mins: "允许用户在帖子上进行撤销操作(赞、标记等)所需等待的间隔分钟数" must_approve_users: "新用户在被允许访问站点前需要由职员批准。警告:在运行的站点中启用将解除所有非职员用户的访问权限!" ga_tracking_code: "Google 分析追踪代码(ga.js),例如:UA-12345678-9。参考 http://google.com/analytics" diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml index 3711b486e2..36b8da5627 100644 --- a/config/locales/server.zh_TW.yml +++ b/config/locales/server.zh_TW.yml @@ -636,7 +636,6 @@ zh_TW: email_token_valid_hours: "\"忘記密碼\" / \"重啟帳號\" token 有效的小時數 (n)" email_token_grace_period_hours: "\"忘記密碼\" / \"重啟帳號\" 的 token 在使用後仍舊有效的小時數 (n)" enable_badges: "啟用勳章系統" - enable_whispers: "允許用戶與管理團隊密談" allow_index_in_robots_txt: "在 robots.txt 中記錄這個網站允許被搜尋引擎索引的部分" forgot_password_strict: "在找回密碼對話框中不告知用戶帳戶的存在。" log_out_strict: "登出時,登出用戶所有設備上的所有時段" diff --git a/config/routes.rb b/config/routes.rb index c65d39004c..cc55476b0a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -120,6 +120,7 @@ Discourse::Application.routes.draw do get "sent" get "skipped" get "preview-digest" => "email#preview_digest" + post "handle_mail" end end @@ -204,6 +205,7 @@ Discourse::Application.routes.draw do get "memory_stats"=> "diagnostics#memory_stats", constraints: AdminConstraint.new get "dump_heap"=> "diagnostics#dump_heap", constraints: AdminConstraint.new + get "dump_statement_cache"=> "diagnostics#dump_statement_cache", constraints: AdminConstraint.new end # admin namespace @@ -241,6 +243,7 @@ Discourse::Application.routes.draw do get "tos" => "static#show", id: "tos", as: 'tos' get "privacy" => "static#show", id: "privacy", as: 'privacy' get "signup" => "list#latest" + get "login-preferences" => "static#show", id: "login" get "users/admin-login" => "users#admin_login" put "users/admin-login" => "users#admin_login" diff --git a/config/site_settings.yml b/config/site_settings.yml index 91a7d07d6d..73c801b2c9 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -164,6 +164,16 @@ basic: topics_per_period_in_top_page: default: 50 min: 1 + top_page_default_timeframe: + default: 'yearly' + type: enum + choices: + - all + - yearly + - quarterly + - monthly + - weekly + - daily category_featured_topics: client: true default: 3 @@ -580,9 +590,10 @@ files: client: true shadowed_by_global: true external_system_avatars_url: - default: "https://avatars.discourse.org/letter/{first_letter}/{color}/{size}.png" + default: "https://avatars.discourse.org/v2/letter/{first_letter}/{color}/{size}.png" client: true regex: '^https?:\/\/.+[^\/]' + default_opengraph_image_url: '' trust: default_trust_level: @@ -597,6 +608,9 @@ trust: min_trust_to_edit_wiki_post: default: 1 enum: 'TrustLevelSetting' + min_trust_to_send_messages: + default: 1 + enum: 'TrustLevelSetting' tl1_requires_topics_entered: 5 tl1_requires_read_posts: default: 30 diff --git a/docs/VAGRANT.md b/docs/VAGRANT.md index 4fc103cd46..b22a77cc30 100644 --- a/docs/VAGRANT.md +++ b/docs/VAGRANT.md @@ -87,7 +87,7 @@ bundle exec rake db:migrate Once your VM is up to date, you can start a rails instance using the following command from the /vagrant directory: ``` -bundle exec rails s +bundle exec rails s -b 0.0.0.0 ``` In a few seconds, rails will start serving pages. To access them, open a web browser to [http://localhost:4000](http://localhost:4000) - if it all worked you should see discourse! Congratulations, you are ready to start working! diff --git a/lib/cooked_post_processor.rb b/lib/cooked_post_processor.rb index 01b20c6f63..ad0a306334 100644 --- a/lib/cooked_post_processor.rb +++ b/lib/cooked_post_processor.rb @@ -64,7 +64,7 @@ class CookedPostProcessor convert_to_link!(img) end - update_topic_image(images) + update_topic_image end def extract_images @@ -80,6 +80,17 @@ class CookedPostProcessor @doc.css(".quote img") end + def extract_images_for_topic + # all image with a src attribute + @doc.css("img[src]") - + # minus, emojis + @doc.css("img.emoji") - + # minus, image inside oneboxes + oneboxed_images - + # minus, images inside quotes + @doc.css(".quote img") + end + def oneboxed_images @doc.css(".onebox-result img, .onebox img") end @@ -235,9 +246,9 @@ class CookedPostProcessor span end - def update_topic_image(images) + def update_topic_image if @post.is_first_post? - img = images.first + img = extract_images_for_topic.first @post.topic.update_column(:image_url, img["src"][0...255]) if img["src"].present? end end diff --git a/lib/discourse.rb b/lib/discourse.rb index a087120ee7..890aa9aa93 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -340,7 +340,7 @@ module Discourse while true begin sleep GlobalSetting.connection_reaper_interval - reap_connections(GlobalSetting.connection_reaper_age) + reap_connections(GlobalSetting.connection_reaper_age, GlobalSetting.connection_reaper_max_age) rescue => e Discourse.handle_exception(e, {message: "Error reaping connections"}) end @@ -348,12 +348,12 @@ module Discourse end end - def self.reap_connections(age) + def self.reap_connections(idle, max_age) pools = [] ObjectSpace.each_object(ActiveRecord::ConnectionAdapters::ConnectionPool){|pool| pools << pool} pools.each do |pool| - pool.drain(age.seconds) + pool.drain(idle.seconds, max_age.seconds) end end diff --git a/lib/file_store/base_store.rb b/lib/file_store/base_store.rb index 7e984a6528..275e78dff7 100644 --- a/lib/file_store/base_store.rb +++ b/lib/file_store/base_store.rb @@ -71,8 +71,12 @@ module FileStore def purge_tombstone(grace_period) end + def get_depth_for(id) + [0, Math.log(id / 1_000.0, 16).ceil].max + end + def get_path_for(type, id, sha, extension) - depth = [0, Math.log(id / 1_000.0, 16).ceil].max + depth = get_depth_for(id) tree = File.join(*sha[0, depth].split(""), "") "#{type}/#{depth + 1}X/#{tree}#{sha}#{extension}" end diff --git a/lib/freedom_patches/pool_drainer.rb b/lib/freedom_patches/pool_drainer.rb index ff58a288d4..6ded19de97 100644 --- a/lib/freedom_patches/pool_drainer.rb +++ b/lib/freedom_patches/pool_drainer.rb @@ -2,11 +2,12 @@ if Rails.version >= "4.2.0" class ActiveRecord::ConnectionAdapters::AbstractAdapter module LastUseExtension - attr_reader :last_use + attr_reader :last_use, :first_use def initialize(connection, logger = nil, pool = nil) super @last_use = false + @first_use = Time.now end def lease @@ -26,11 +27,11 @@ end class ActiveRecord::ConnectionAdapters::ConnectionPool # drain all idle connections # if idle_time is specified only connections idle for N seconds will be drained - def drain(idle_time=nil) + def drain(idle_time=nil, max_age=nil) synchronize do @available.clear @connections.delete_if do |conn| - try_drain?(conn, idle_time) + try_drain?(conn, idle_time, max_age) end @connections.each do |conn| @@ -42,9 +43,9 @@ class ActiveRecord::ConnectionAdapters::ConnectionPool private - def try_drain?(conn, idle_time) + def try_drain?(conn, idle_time, max_age) if !conn.in_use? - if !idle_time || conn.last_use < idle_time.seconds.ago + if !idle_time || conn.last_use < idle_time.seconds.ago || (max_age && conn.first_use < max_age.seconds.ago) conn.disconnect! return true end diff --git a/lib/guardian.rb b/lib/guardian.rb index 6cc1e9e3fb..3896a02c12 100644 --- a/lib/guardian.rb +++ b/lib/guardian.rb @@ -250,7 +250,7 @@ class Guardian # Can't send message to yourself is_not_me?(target) && # Have to be a basic level at least - @user.has_trust_level?(TrustLevel[1]) && + @user.has_trust_level?(SiteSetting.min_trust_to_send_messages) && # PMs are enabled (SiteSetting.enable_private_messages || @user.username == SiteSetting.site_contact_username || diff --git a/lib/guardian/post_guardian.rb b/lib/guardian/post_guardian.rb index d668803ab5..2933cf194c 100644 --- a/lib/guardian/post_guardian.rb +++ b/lib/guardian/post_guardian.rb @@ -30,7 +30,7 @@ module PostGuardian not(action_key == :like && is_my_own?(post)) && # new users can't notify_user because they are not allowed to send private messages - not(action_key == :notify_user && !@user.has_trust_level?(TrustLevel[1])) && + not(action_key == :notify_user && !@user.has_trust_level?(SiteSetting.min_trust_to_send_messages)) && # can't send private messages if they're disabled globally not(action_key == :notify_user && !SiteSetting.enable_private_messages) && diff --git a/lib/plugin/auth_provider.rb b/lib/plugin/auth_provider.rb index 8db104f3ef..cbc12c6f45 100644 --- a/lib/plugin/auth_provider.rb +++ b/lib/plugin/auth_provider.rb @@ -2,7 +2,7 @@ class Plugin::AuthProvider def self.auth_attributes [:glyph, :background_color, :title, :message, :frame_width, :frame_height, :authenticator, - :title_setting, :enabled_setting] + :title_setting, :enabled_setting, :full_screen_login] end attr_accessor(*auth_attributes) @@ -19,6 +19,7 @@ class Plugin::AuthProvider result['messageOverride'] = message if message result['frameWidth'] = frame_width if frame_width result['frameHeight'] = frame_height if frame_height + result['fullScreenLogin'] = full_screen_login if full_screen_login result.to_json end diff --git a/lib/post_creator.rb b/lib/post_creator.rb index 22ace0dad3..a198049ab7 100644 --- a/lib/post_creator.rb +++ b/lib/post_creator.rb @@ -57,6 +57,7 @@ class PostCreator opts[:title] = pg_clean_up(opts[:title]) if opts[:title] && opts[:title].include?("\u0000") opts[:raw] = pg_clean_up(opts[:raw]) if opts[:raw] && opts[:raw].include?("\u0000") opts.delete(:reply_to_post_number) unless opts[:topic_id] + @guardian = opts[:guardian] if opts[:guardian] @spam = false end diff --git a/lib/post_revisor.rb b/lib/post_revisor.rb index 6a97b16655..cb15c6f217 100644 --- a/lib/post_revisor.rb +++ b/lib/post_revisor.rb @@ -393,11 +393,15 @@ class PostRevisor body = @post.cooked matches = body.scan(/\(.*)\<\/p\>/)
- if matches && matches[0] && matches[0][0]
- new_description = matches[0][0]
- new_description = nil if new_description == I18n.t("category.replace_paragraph")
+
+ matches.each do |match|
+ next if match[0] =~ /\ لا يمكنك عرض المحتوى! لا يمكنك عرض هذا المصدر ! سيتم تبديل الصفحة الحالية بصفحة ديسكورس 403 مخصصة. سيتم استبدال الصفحة الحالية بصفحة ديسكورس 403 مخصصة. 'environment' do
- puts "Start compiling CSS: #{Time.zone.now}"
- RailsMultisite::ConnectionManagement.each_connection do |db|
- # Heroku precompiles assets before db migration, so tables may not exist.
- # css will get precompiled during first request instead in that case.
- if ActiveRecord::Base.connection.table_exists?(ColorScheme.table_name)
- puts "Compiling css for #{db}"
- [:desktop, :mobile, :desktop_rtl, :mobile_rtl].each do |target|
- puts DiscourseStylesheets.compile(target)
+ if ENV["DONT_PRECOMPILE_CSS"] == "1"
+ STDERR.puts "Skipping CSS precompilation, ensure CSS lives in a shared directory across hosts"
+ else
+ STDERR.puts "Start compiling CSS: #{Time.zone.now}"
+
+ RailsMultisite::ConnectionManagement.each_connection do |db|
+ # Heroku precompiles assets before db migration, so tables may not exist.
+ # css will get precompiled during first request instead in that case.
+
+ if ActiveRecord::Base.connection.table_exists?(ColorScheme.table_name)
+ STDERR.puts "Compiling css for #{db}"
+ [:desktop, :mobile, :desktop_rtl, :mobile_rtl].each do |target|
+ STDERR.puts "target: #{target} #{DiscourseStylesheets.compile(target)}"
+ end
end
end
+
+ STDERR.puts "Done compiling CSS: #{Time.zone.now}"
end
- puts "Done compiling CSS: #{Time.zone.now}"
end
def assets_path
diff --git a/lib/topic_creator.rb b/lib/topic_creator.rb
index d8a7bb96df..ce8760a848 100644
--- a/lib/topic_creator.rb
+++ b/lib/topic_creator.rb
@@ -95,7 +95,7 @@ class TopicCreator
category = find_category
- @guardian.ensure_can_create!(Topic, category) unless @opts[:skip_validations]
+ @guardian.ensure_can_create!(Topic, category) unless (@opts[:skip_validations] || @opts[:archetype] == Archetype.private_message)
topic_params[:category_id] = category.id if category.present?
diff --git a/lib/topic_query.rb b/lib/topic_query.rb
index 434fdbb0ee..7637bbaa7b 100644
--- a/lib/topic_query.rb
+++ b/lib/topic_query.rb
@@ -186,7 +186,7 @@ class TopicQuery
topics = yield(topics) if block_given?
options = options.merge(@options)
- if (options[:order] || "activity") == "activity" && !options[:unordered]
+ if ["activity","default"].include?(options[:order] || "activity") && !options[:unordered]
topics = prioritize_pinned_topics(topics, options)
end
@@ -408,8 +408,10 @@ class TopicQuery
AND cu.category_id = topics.category_id
AND cu.notification_level = :muted
AND cu.category_id <> :category_id
+ AND (tu.notification_level IS NULL OR tu.notification_level < :tracking)
)", user_id: user.id,
muted: CategoryUser.notification_levels[:muted],
+ tracking: TopicUser.notification_levels[:tracking],
category_id: category_id || -1)
end
diff --git a/lib/topic_view.rb b/lib/topic_view.rb
index 2a9e70cd96..5ff057dcc6 100644
--- a/lib/topic_view.rb
+++ b/lib/topic_view.rb
@@ -160,8 +160,7 @@ class TopicView
end
def image_url
- return nil if desired_post.blank?
- desired_post.user.try(:small_avatar_url)
+ @topic.image_url || SiteSetting.default_opengraph_image_url
end
def filter_posts(opts = {})
diff --git a/lib/version.rb b/lib/version.rb
index 908352cc31..539f05bc8b 100644
--- a/lib/version.rb
+++ b/lib/version.rb
@@ -5,7 +5,7 @@ module Discourse
MAJOR = 1
MINOR = 5
TINY = 0
- PRE = 'beta2'
+ PRE = 'beta3'
STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
end
diff --git a/plugins/poll/config/locales/client.ar.yml b/plugins/poll/config/locales/client.ar.yml
index 40918ade4f..110c84b74b 100644
--- a/plugins/poll/config/locales/client.ar.yml
+++ b/plugins/poll/config/locales/client.ar.yml
@@ -9,19 +9,19 @@ ar:
js:
poll:
voters:
- zero: "لا يوجد مصوتون"
- one: "مصوت"
- two: "مصوتان"
- few: "مصوتون قليلون"
- many: "مصوتون كثيرون"
- other: "المصوتين"
+ zero: "لا يوجد مصوتون."
+ one: "مصوت."
+ two: "مصوتان."
+ few: "مصوتون قليلون."
+ many: "مصوتون كثيرون."
+ other: "م"
total_votes:
- zero: "مجموع عدم التصويت"
- one: "مجموع التصويت"
- two: "مجموع التصويتان"
- few: "مجموع الأصوات القليلة"
- many: "مجموع الأصوات الكثيرة"
- other: "مجموع الأصوات"
+ zero: "مجموع عدم التصويت."
+ one: "مجموع التصويت."
+ two: "مجموع التصويتان."
+ few: "مجموع الأصوات القليلة."
+ many: "مجموع الأصوات الكثيرة."
+ other: "مجموع الأصوات."
average_rating: "متوسط التصنيف: %{average} "
multiple:
help:
@@ -33,36 +33,36 @@ ar:
many: "يجب عليك أن تختار %{count} عدة خيارات على الأقل."
other: "يجب عليك الاختيار على الأقل."
up_to_max_options:
- zero: "يمكنك عدم إختيار أي من الخيارات."
- one: "يمكنك إختيار مايصل إلى خيار واحد ."
- two: "يمكنك إختيار مايصل إلى خياران."
- few: "يمكنك إختيار مايصل إلى %{count} خيار ."
- many: "يمكنك إختيار مايصل إلى %{count} خيارات ."
- other: "يمكنك إختيار مايصل إلى %{count} خيار ."
+ zero: "لا يمكنك اختيار أي خيار."
+ one: "يمكنك إختيار مايصل إلى خيار واحد فقط."
+ two: "يمكنك إختيار مايصل إلى خيارانفقط."
+ few: "يمكنك إختيار بعض %{count} الخيارات ."
+ many: "يمكنك إختيار عدة %{count} خيارات ."
+ other: "يمكنك اختيار حتى %{count} خيارات."
x_options:
zero: "لا يجب عليك إختيار أي خيار."
one: "يجب عليك إختيار خيارواحدخياران فقط."
few: "يجب عليك إختيار %{count} بعض الخيارات."
many: "يجب عليك إختيار %{count} عدة خيارات."
- other: "يجب عليك إختيار %{count} خيارات أخرى."
+ other: "يجب عليك إختيار %{count} خيارات."
between_min_and_max_options: "يجب عليك إختيار بين %{min} و %{max} خيارات ."
cast-votes:
- title: "إدراج تصويتك ."
+ title: "إدراج صوتك."
label: "صوت اﻵن!"
show-results:
- title: "عرض نتائج التصويت"
- label: "عرض النتائج"
+ title: "عرض نتائج التصويت."
+ label: "عرض النتائج."
hide-results:
- title: "العودة إلى تصويتاتك"
- label: "إخفاء النتائج"
+ title: "العودة إلى أصواتك."
+ label: "إخفاء النتائج."
open:
- title: "فتح التصويت "
- label: "فتح"
- confirm: "هل بالفعل تاريد فتح هذا التصويت ؟"
+ title: "فتح التصويت."
+ label: "فتح."
+ confirm: "هل أنت متأكد من فتح هذا التصويت؟"
close:
- title: "إغلاق التصويت"
- label: "إغلاق"
- confirm: "هل أنت متأكد من إنك تريد إغلاق هذا التصويت ؟"
- error_while_toggling_status: "هناك خطاء عند محاولة تبديل حالة التصويت ."
- error_while_casting_votes: "هناك خطاء عن محاولة إدراج صوتك ."
+ title: "إغلاق التصويت."
+ label: "إغلاق."
+ confirm: "هل أنت متأكد من إغلاق هذا التصويت؟"
+ error_while_toggling_status: "حدث خطأ عند محاولتك لتبديل حالة التصويت."
+ error_while_casting_votes: "حدث خطأ عند محاولة إدراج صوتك."
diff --git a/plugins/poll/config/locales/client.bs_BA.yml b/plugins/poll/config/locales/client.bs_BA.yml
index 7b73cd2f22..f9e1081bc1 100644
--- a/plugins/poll/config/locales/client.bs_BA.yml
+++ b/plugins/poll/config/locales/client.bs_BA.yml
@@ -5,4 +5,15 @@
# To work with us on translations, join this project:
# https://www.transifex.com/projects/p/discourse-org/
-bs_BA: {}
+bs_BA:
+ js:
+ poll:
+ voters:
+ one: "glasač"
+ few: "glasača"
+ other: "glasača"
+ total_votes:
+ one: "ukupan glas"
+ few: "ukupno glasova"
+ other: "ukupno glasova"
+ average_rating: "Prosječna ocjena: %{average}."
diff --git a/plugins/poll/config/locales/client.cs.yml b/plugins/poll/config/locales/client.cs.yml
index d6a32ba183..c9726fcdf0 100644
--- a/plugins/poll/config/locales/client.cs.yml
+++ b/plugins/poll/config/locales/client.cs.yml
@@ -17,9 +17,6 @@ cs:
few: "hlasy celkem"
other: "hlasů celkem"
average_rating: "Průměrné hodnocení: %{average}."
- multiple:
- help:
- at_least_min_options: "Musíte zvolit alespoň %{count} možností."
cast-votes:
title: "Hlasujte"
label: "Hlasovat!"
diff --git a/plugins/poll/config/locales/client.es.yml b/plugins/poll/config/locales/client.es.yml
index 828b06f07c..61b840d671 100644
--- a/plugins/poll/config/locales/client.es.yml
+++ b/plugins/poll/config/locales/client.es.yml
@@ -17,9 +17,15 @@ es:
average_rating: "Puntuación media: %{average}."
multiple:
help:
- at_least_min_options: "Debes elegir al menos %{count} opciones."
- up_to_max_options: "Puedes escoger hasta %{count} opciones."
- x_options: "Debes elegir %{count} opciones."
+ at_least_min_options:
+ one: "Debes elegir al menos 1 opción."
+ other: "Debes elegir al menos %{count} opciones."
+ up_to_max_options:
+ one: "Puedes elegir hasta 1 opción."
+ other: "Puedes elegir hasta %{count} opciones."
+ x_options:
+ one: "Debes elegir 1 opción."
+ other: "Debes elegir %{count} opciones."
between_min_and_max_options: "Puedes escoger entre %{min} y %{max} opciones."
cast-votes:
title: "Votar"
diff --git a/plugins/poll/config/locales/client.fa_IR.yml b/plugins/poll/config/locales/client.fa_IR.yml
index e3f743f115..a309e81c74 100644
--- a/plugins/poll/config/locales/client.fa_IR.yml
+++ b/plugins/poll/config/locales/client.fa_IR.yml
@@ -15,9 +15,6 @@ fa_IR:
average_rating: "میانگین امتیاز: %{average}."
multiple:
help:
- at_least_min_options: "حداقل %{count} گزینه باید انتخاب شود."
- up_to_max_options: "میتوانید تا %{count} گزینه را انتخاب کنید."
- x_options: "%{count} گزینه باید انتخاب شود"
between_min_and_max_options: "میتوانید بین %{min} تا %{max} گزینه را انتخاب کنید."
cast-votes:
title: "انداختن رأی شما"
diff --git a/plugins/poll/config/locales/client.fr.yml b/plugins/poll/config/locales/client.fr.yml
index 5e3e045cdd..7bfdb3ccfc 100644
--- a/plugins/poll/config/locales/client.fr.yml
+++ b/plugins/poll/config/locales/client.fr.yml
@@ -17,9 +17,6 @@ fr:
average_rating: "Notation moyenne : %{average}"
multiple:
help:
- at_least_min_options: "Vous devez choisir au moins %{count} options."
- up_to_max_options: "Vous pouvez choisir jusque %{count} options."
- x_options: "Vous devez choisir %{count} options."
between_min_and_max_options: "Vous devez choisir entre %{min} et %{max} options."
cast-votes:
title: "Distribuez vos votes"
diff --git a/plugins/poll/config/locales/client.he.yml b/plugins/poll/config/locales/client.he.yml
index 8c84678581..ced11e0190 100644
--- a/plugins/poll/config/locales/client.he.yml
+++ b/plugins/poll/config/locales/client.he.yml
@@ -17,9 +17,15 @@ he:
average_rating: "דירוג ממוצע: %{average}."
multiple:
help:
- at_least_min_options: "עליך לבחור לפחות %{count} אפשרויות"
- up_to_max_options: "באפשרותך לבחור עד %{count} אפשרויות."
- x_options: "עליך לבחור %{count} אפשרויות. "
+ at_least_min_options:
+ one: "עליך לבחור לפחות אפשרות 1."
+ other: "עליך לבחור לפחות %{count} אפשרויות."
+ up_to_max_options:
+ one: "באפשרותך לבחור עד אפשרות %{count}."
+ other: "באפשרותך לבחור עד %{count} אפשרויות."
+ x_options:
+ one: "עליך לבחור אפשרות 1."
+ other: "עליך לבחור %{count} אפשרויות."
between_min_and_max_options: "באפשרותך לבחור בין %{min} עד %{max} אפשרויות."
cast-votes:
title: "שליחת הצבעות"
diff --git a/plugins/poll/config/locales/client.id.yml b/plugins/poll/config/locales/client.id.yml
index 9d940ae970..a4763b573c 100644
--- a/plugins/poll/config/locales/client.id.yml
+++ b/plugins/poll/config/locales/client.id.yml
@@ -11,9 +11,6 @@ id:
average_rating: "Rata-rata rating: %{average}."
multiple:
help:
- at_least_min_options: "Kamu wajib memilih setidaknya %{count} pilihan."
- up_to_max_options: "Kamu boleh memilih maksimum %{count} pilihan."
- x_options: "Kamu harus memilih %{count} pilihan."
between_min_and_max_options: "Kamu hanya bisa memilih minimum %{min} pilihan dan maximum %{max} pilihan."
cast-votes:
title: "Gunakan suaramu"
diff --git a/plugins/poll/config/locales/client.it.yml b/plugins/poll/config/locales/client.it.yml
index e5ab646bd3..8b148970b0 100644
--- a/plugins/poll/config/locales/client.it.yml
+++ b/plugins/poll/config/locales/client.it.yml
@@ -17,9 +17,15 @@ it:
average_rating: "Voto medio: %{average}."
multiple:
help:
- at_least_min_options: "Devi scegliere almeno %{count} opzioni."
- up_to_max_options: "Puoi scegliere fino a %{count} opzioni."
- x_options: "Devi scegliere %{count} opzioni."
+ at_least_min_options:
+ one: "Devi scegliere almeno una opzione."
+ other: "Devi scegliere almeno %{count} opzioni."
+ up_to_max_options:
+ one: "Puoi scegliere fino a una opzione."
+ other: "Puoi scegliere fino a %{count} opzioni."
+ x_options:
+ one: "Devi scegliere una opzione."
+ other: "Devi scegliere %{count} opzioni."
between_min_and_max_options: "Puoi scegliere tra %{min} e %{max} opzioni."
cast-votes:
title: "Vota"
diff --git a/plugins/poll/config/locales/client.ja.yml b/plugins/poll/config/locales/client.ja.yml
index 2d01b7c38e..91f9906891 100644
--- a/plugins/poll/config/locales/client.ja.yml
+++ b/plugins/poll/config/locales/client.ja.yml
@@ -15,9 +15,6 @@ ja:
average_rating: "平均評価: %{average}."
multiple:
help:
- at_least_min_options: "少なくとも %{count} 個のオプションを選んでください。"
- up_to_max_options: "%{count} 個のオプションまで選択することができます。"
- x_options: "%{count} 個のオプションを選択してください。"
between_min_and_max_options: "%{min} と %{max} のオプションから選択することができます。"
cast-votes:
title: "投票する"
diff --git a/plugins/poll/config/locales/client.ko.yml b/plugins/poll/config/locales/client.ko.yml
index ad715c3ee4..e2b5da05e1 100644
--- a/plugins/poll/config/locales/client.ko.yml
+++ b/plugins/poll/config/locales/client.ko.yml
@@ -15,9 +15,6 @@ ko:
average_rating: "평균: %{average}."
multiple:
help:
- at_least_min_options: "적어도 %{count}개는 선택해야 합니다."
- up_to_max_options: "%{count}개까지만 선택할 수 있습니다."
- x_options: "정확히 %{count}개를 선택해야 합니다."
between_min_and_max_options: "%{min}개에서 %{max}개까지 선택할 수 있습니다."
cast-votes:
title: "표 던지기"
diff --git a/plugins/poll/config/locales/client.nb_NO.yml b/plugins/poll/config/locales/client.nb_NO.yml
index 0039a0d65b..98214dcfef 100644
--- a/plugins/poll/config/locales/client.nb_NO.yml
+++ b/plugins/poll/config/locales/client.nb_NO.yml
@@ -17,9 +17,6 @@ nb_NO:
average_rating: "Gjennomsnitt: %{average}."
multiple:
help:
- at_least_min_options: "Du må velge minst %{count} alternativer."
- up_to_max_options: "Du kan velge opptil %{count} alternativer."
- x_options: "Du må velge %{count} alternativer."
between_min_and_max_options: "Du kan velge mellom %{min} og %{max} alternativer."
cast-votes:
title: "Stem nå"
diff --git a/plugins/poll/config/locales/client.nl.yml b/plugins/poll/config/locales/client.nl.yml
index de778280c0..d4f833833f 100644
--- a/plugins/poll/config/locales/client.nl.yml
+++ b/plugins/poll/config/locales/client.nl.yml
@@ -17,9 +17,6 @@ nl:
average_rating: "Gemiddeld cijfer: %{average}."
multiple:
help:
- at_least_min_options: "Kies tenminste %{count} opties."
- up_to_max_options: "Je kunt maximaal %{count} opties kiezen."
- x_options: "Kies %{count} opties."
between_min_and_max_options: "Je kan tussen %{min} en %{max} opties kiezen."
cast-votes:
title: "Geef je stem"
diff --git a/plugins/poll/config/locales/client.pl_PL.yml b/plugins/poll/config/locales/client.pl_PL.yml
index b344003fdd..262a6bfa90 100644
--- a/plugins/poll/config/locales/client.pl_PL.yml
+++ b/plugins/poll/config/locales/client.pl_PL.yml
@@ -19,9 +19,6 @@ pl_PL:
average_rating: "Średnia ocena: %{average}."
multiple:
help:
- at_least_min_options: "Musisz wybrać co najmniej %{count} pozycje."
- up_to_max_options: "Możesz wybrać co najwyżej %{count} pozycje."
- x_options: "Musisz wybrać %{count} pozycje."
between_min_and_max_options: "Możesz wybrać pomiędzy %{min} a %{max} pozycjami."
cast-votes:
title: "Oddaj głos"
diff --git a/plugins/poll/config/locales/client.pt_BR.yml b/plugins/poll/config/locales/client.pt_BR.yml
index 7fec94ebd8..50579d08c7 100644
--- a/plugins/poll/config/locales/client.pt_BR.yml
+++ b/plugins/poll/config/locales/client.pt_BR.yml
@@ -8,12 +8,24 @@
pt_BR:
js:
poll:
+ voters:
+ one: "votante"
+ other: "votantes"
+ total_votes:
+ one: "voto total"
+ other: "votos totais"
average_rating: "Resultado médio: %{average}."
multiple:
help:
- at_least_min_options: "Você precisa escolher ao menos %{count} opções."
- up_to_max_options: "Você pode escolher %{count} opções."
- x_options: "Você precisa escolher %{count} opções."
+ at_least_min_options:
+ one: "Você deve escolher pelo menos 1 opção."
+ other: "Você deve escolher pelo menos %{count} opções."
+ up_to_max_options:
+ one: "Você deve escolher até 1 opção."
+ other: "Você deve escolher até %{count} opções."
+ x_options:
+ one: "Você deve escolher 1 opção."
+ other: "Você deve escolher %{count} opções."
between_min_and_max_options: "Você pode escolher entre %{min} e %{max} opções."
cast-votes:
title: "Seus votos"
diff --git a/plugins/poll/config/locales/client.ro.yml b/plugins/poll/config/locales/client.ro.yml
index e1e2ff3241..0176f9589d 100644
--- a/plugins/poll/config/locales/client.ro.yml
+++ b/plugins/poll/config/locales/client.ro.yml
@@ -11,9 +11,6 @@ ro:
average_rating: "Media: %{average}."
multiple:
help:
- at_least_min_options: "Trebuie să alegeți cel puțin %{count} opțiuni."
- up_to_max_options: "Puteţi alege cel mult %{count} opţiuni."
- x_options: "Trebuie să alegeți %{count} opțiuni."
between_min_and_max_options: "Puteţi alege între %{min} şi %{max} opţiuni."
cast-votes:
title: "Exprimaţi-vă votul"
diff --git a/plugins/poll/config/locales/client.sq.yml b/plugins/poll/config/locales/client.sq.yml
index 5efd604a25..36f8b9af85 100644
--- a/plugins/poll/config/locales/client.sq.yml
+++ b/plugins/poll/config/locales/client.sq.yml
@@ -17,9 +17,6 @@ sq:
average_rating: "Vlerësimi mesatar: %{average}."
multiple:
help:
- at_least_min_options: "Ju duhet të zgjidhni të paktën %{count} opsionet."
- up_to_max_options: "You may choose up to %{count} options."
- x_options: "You must choose %{count} options."
between_min_and_max_options: "You may choose between %{min} and %{max} options."
cast-votes:
title: "Cast your votes"
diff --git a/plugins/poll/config/locales/client.sv.yml b/plugins/poll/config/locales/client.sv.yml
index 421ff6218f..6942b6c45d 100644
--- a/plugins/poll/config/locales/client.sv.yml
+++ b/plugins/poll/config/locales/client.sv.yml
@@ -11,9 +11,6 @@ sv:
average_rating: "Medelbetyg: %{average}."
multiple:
help:
- at_least_min_options: "Du måste välja minst %{count} alternativ."
- up_to_max_options: "Du kan välja upp till %{count} alternativ."
- x_options: "Du måste välja %{count} alternativ."
between_min_and_max_options: "Du kan välja mellan %{min} och %{max} alternativ."
cast-votes:
title: "Lägg dina röster"
diff --git a/plugins/poll/config/locales/client.tr_TR.yml b/plugins/poll/config/locales/client.tr_TR.yml
index 2e6792746d..5074053397 100644
--- a/plugins/poll/config/locales/client.tr_TR.yml
+++ b/plugins/poll/config/locales/client.tr_TR.yml
@@ -15,9 +15,6 @@ tr_TR:
average_rating: "Ortalama oran: %{average}."
multiple:
help:
- at_least_min_options: "En az %{count} seçim yapmalısınız."
- up_to_max_options: "En fazla %{count} seçim yapabilirsiniz."
- x_options: "%{count} seçim yapmalısınız."
between_min_and_max_options: "%{min} ve %{max} seçenekleri arasında seçim yapabilirsiniz."
cast-votes:
title: "Oyunuzu kullanın"
diff --git a/plugins/poll/config/locales/server.ar.yml b/plugins/poll/config/locales/server.ar.yml
index b9299d1b51..ca3b1f150f 100644
--- a/plugins/poll/config/locales/server.ar.yml
+++ b/plugins/poll/config/locales/server.ar.yml
@@ -7,39 +7,39 @@
ar:
site_settings:
- poll_enabled: "المستخدمين المسموح لهم إنشاء استطلاع رأي"
- poll_maximum_options: "أقصى عدد من الخيارات المسموحة في استطلاع الرأي."
+ poll_enabled: "السماح للمستخدمين بإنشاء تصويت ؟"
+ poll_maximum_options: "العدد الأقصى من الخيارت مسموحة في التصويت."
poll:
- multiple_polls_without_name: "هناك عدة استطلاعات رأي بدون اسم. استخدم خاصية '
name' لتحديد استطلاعاتك الفريدة."
- multiple_polls_with_same_name: "هناك عدة استطلاعات رأي متشابهة بالاسم : %{name}. استخدم خاصية 'name' لتحدي استطلاعك الفريد."
- default_poll_must_have_at_least_2_options: "استطلاع الرأي يجب أن يكون على الأقل 2 من الخيارات."
- named_poll_must_have_at_least_2_options: "استطلاع الرأي المسمى %{name} يجب أن يكون على الأقل 2 من الخيارات."
+ multiple_polls_without_name: "هناك عدة تصويتات بدون اسم. استخدم خاصية 'name' لتمييز تصويتاتك."
+ multiple_polls_with_same_name: "هناك عدة تصويتات متشابهة بالاسم : %{name}. استخدم خاصية 'name' لتمييز أصواتك."
+ default_poll_must_have_at_least_2_options: "التصويت يجب أن يحتوي على 2 من الخيارت على الأقل."
+ named_poll_must_have_at_least_2_options: "التصويت المسمى بـ %{name} يجب أن يحتوي على 2 من الخيارت على الأقل."
default_poll_must_have_less_options:
zero: "التصويت لا يجب أن يكون %{count} بدون خيارات."
one: "التصويت يجب أن يحتوي على %{count} خيار واحد على الأقل."
two: "التصويت يجب أن يحتوي على %{count} خياران على الأقل."
few: "التصويت يجب أن يحتوي على %{count} بعض الخيارات على الأقل."
many: "التصويت يجب أن يحتوي على %{count} عدة خيارات على الأقل."
- other: "التصويت يجب أن يحتوي على %{count} خيارت أخرى."
+ other: "التصويت يجب ان يكون اقل من %{count} خيارت."
named_poll_must_have_less_options:
zero: "التصويت المسمى %{name} لا يجب أن يكون بدون خيارات."
one: "التصويت المسمى %{name} يجب أن يحتوي على خيار واحد على الأقل."
two: "التصويت المسمى %{name} يجب أن يحتوي على خياران على الأقل."
few: "التصويت المسمى %{name} يجب أن يحتوي على %{count} بعض الخيارات على الأقل."
many: "التصويت المسمى %{name} يجب أن يحتوي على %{count} عدة خيارات على الأقل."
- other: "التصويت المسمى %{name} يجب أن يحتوي على %{count} خيارات أخرى."
- default_poll_must_have_different_options: "استطلاع الرأي يجب أن يكون مختلف الخيارات."
- named_poll_must_have_different_options: "استطلاع الرأي المسمى %{name} يجب أن يكون مختلف الخيارات."
- default_poll_with_multiple_choices_has_invalid_parameters: "معلمات استطلاع الرأي ذات الخيار المتعدد غير صالحة."
- named_poll_with_multiple_choices_has_invalid_parameters: "معلمات استطلاع الرأي المسمى %{name} ذات الخيار المتعدد غير صالحة."
- requires_at_least_1_valid_option: "يجب أن تختار أختيار 1 صحيح على الأقل."
- cannot_change_polls_after_5_minutes: "لا يمكنك إضافة أو حذف أو إعادة تسمية استطلاعات الرأي بعد الـ5 دقائق اﻷولى."
- op_cannot_edit_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات استطلاع الرأي بعد أول 5 دقائق. أرجو أن تتصل بالمسؤول إذا احتجت لتحرير خيارات الرأي."
- staff_cannot_add_or_remove_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات استطلاع الرأي بعد أول 5 دقائق. يجب عليك إغلاق هذا الموضوع وإنشاء جديد بدلا عنه."
- no_polls_associated_with_this_post: "لا استطلاعات رأي مرتبطة مع هذا الاستطلاع."
- no_poll_with_this_name: "استطلاع الرأي المسمى %{name} غير مرتبط مع هذا الاستطلاع."
- post_is_deleted: "لا يمكنك عمل حذف مشاركة."
+ other: "التصويت المسمى %{name} يجب أن يكون اقل من %{count} خيارات."
+ default_poll_must_have_different_options: "يجب أن يحتوي التصويت على خيارات مختلفة."
+ named_poll_must_have_different_options: "التصويت المسمى %{name} يجب أن يحتوي على خيارات مختلفة."
+ default_poll_with_multiple_choices_has_invalid_parameters: "معلمات التصويت ذات الخيار المتعدد غير صالحة."
+ named_poll_with_multiple_choices_has_invalid_parameters: "معلمات التصويت المسمى %{name} ذات الخيار المتعدد غير صالحة."
+ requires_at_least_1_valid_option: "يجب أن تختار اختيار 1 صحيح على الأقل."
+ cannot_change_polls_after_5_minutes: "لا يمكنك إضافة أو حذف أو إعادة تسمية التصويتات بعد الـ5 دقائق اﻷولى."
+ op_cannot_edit_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات للتصويت بعد 5 الدقائق الأولى. أرجو أن تتصل بالمسؤول إذا احتجت لتحرير خيارات التصويت."
+ staff_cannot_add_or_remove_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات للتصويت بعد 5 الدقائق الأولى. يجب عليك إغلاق هذا الموضوع وإنشاء جديد بدلا عنه."
+ no_polls_associated_with_this_post: "لا تصويتات مرتبطة مع هذه المشاركة."
+ no_poll_with_this_name: "التصويت المسمى %{name} غير مرتبط مع هذه المشاركة."
+ post_is_deleted: "لا يمكنك أن تعمل حذف للمشاركة."
topic_must_be_open_to_vote: "الموضوع يجب أن يكون مفتوح للتصويت."
- poll_must_be_open_to_vote: "يجب أن تكون الاستطلاعات مفتوحة للتصويت."
+ poll_must_be_open_to_vote: "يجب أن تكون التصويتات مفتوحة للتصويت."
topic_must_be_open_to_toggle_status: "الموضوع يجب أن يكون مفتوح لتبديل الحالة."
- only_staff_or_op_can_toggle_status: "فقط الأعضاء العاملين أو المعلنين الأصليين يمكنهم تبديل حالة الاستطلاع."
+ only_staff_or_op_can_toggle_status: "فقط الأعضاء العاملين أو المعلنين الأصليين يمكنهم تبديل حالة التصويت."
diff --git a/plugins/poll/config/locales/server.bs_BA.yml b/plugins/poll/config/locales/server.bs_BA.yml
index 7b73cd2f22..17b984e399 100644
--- a/plugins/poll/config/locales/server.bs_BA.yml
+++ b/plugins/poll/config/locales/server.bs_BA.yml
@@ -5,4 +5,7 @@
# To work with us on translations, join this project:
# https://www.transifex.com/projects/p/discourse-org/
-bs_BA: {}
+bs_BA:
+ site_settings:
+ poll_enabled: "Dozvolite korisnicima da kreiraju ankete?"
+ poll_maximum_options: "Najveći broj dopuštenih izbora u anketi."
diff --git a/plugins/poll/config/locales/server.cs.yml b/plugins/poll/config/locales/server.cs.yml
index a89da21478..26c4391123 100644
--- a/plugins/poll/config/locales/server.cs.yml
+++ b/plugins/poll/config/locales/server.cs.yml
@@ -14,8 +14,6 @@ cs:
multiple_polls_with_same_name: "Víc hlasování má stejné jméno: %{name}. Použijte atribut 'name' pro jednoznačnou identifikaci vašich hlasování."
default_poll_must_have_at_least_2_options: "Hlasování musí mít alespoň 2 odpovědi."
named_poll_must_have_at_least_2_options: "Hlasování %{name} musí mít alespoň 2 odpovědi."
- default_poll_must_have_less_options: "Hlasování nesmí mít víc než %{max} odpovědí."
- named_poll_must_have_less_options: "Hlasování %{name} nesmí mít víc než %{max} odpovědí."
default_poll_must_have_different_options: "Hlasování musí mít různé odpovědi."
named_poll_must_have_different_options: "Hlasování %{name} musí mít různé odpovědi."
requires_at_least_1_valid_option: "Musíte vybrat alespoň jednu platnou odpověď."
diff --git a/plugins/poll/config/locales/server.es.yml b/plugins/poll/config/locales/server.es.yml
index 09b1b0ba78..990dde322d 100644
--- a/plugins/poll/config/locales/server.es.yml
+++ b/plugins/poll/config/locales/server.es.yml
@@ -14,8 +14,12 @@ es:
multiple_polls_with_same_name: "Hay varias encuestas con el mismo nombre: %{name}. Usa la etiqueta 'name' para diferenciar tus encuestas."
default_poll_must_have_at_least_2_options: "La encuesta debe tener al menos 2 opciones."
named_poll_must_have_at_least_2_options: "La encuesta llamada %{name} debe tener al menos 2 opciones."
- default_poll_must_have_less_options: "La encuesta debe tener menos de %{max} opciones."
- named_poll_must_have_less_options: "La encuesta llamada %{name} debe tener menos de %{max} opciones."
+ default_poll_must_have_less_options:
+ one: "Las encuestas deben tener menos de 1 opción."
+ other: "Las encuestas deben tener menos de %{count} opciones."
+ named_poll_must_have_less_options:
+ one: "La encuesta llamada %{name} debe tener menos de 1 opción."
+ other: "La encuesta llamada %{name} debe tener menos de %{count} opciones."
default_poll_must_have_different_options: "La encuesta debe tener diferentes opciones."
named_poll_must_have_different_options: "La encuesta llamada %{name} debe tener diferentes opciones."
default_poll_with_multiple_choices_has_invalid_parameters: "La encuesta con múltiples opciones tiene parámetros no válidos."
diff --git a/plugins/poll/config/locales/server.fa_IR.yml b/plugins/poll/config/locales/server.fa_IR.yml
index 1bb4e1cf57..15d9d1c539 100644
--- a/plugins/poll/config/locales/server.fa_IR.yml
+++ b/plugins/poll/config/locales/server.fa_IR.yml
@@ -14,8 +14,6 @@ fa_IR:
multiple_polls_with_same_name: "چند نظرسنجی با اسم برابر وجود دارند: %{name}.استفاده کن از 'اسم/code>' ویژگی ٬ تا نظرسنجی منحصر به فرد را تشخیص دهد."
default_poll_must_have_at_least_2_options: "نظرسنجی باید حداقل 2 گزینه داشته باشد."
named_poll_must_have_at_least_2_options: "اسم نظرسنجی %{name} باید حداقل 2 گزینه داشته باشد. "
- default_poll_must_have_less_options: "Poll must have less than %{max} options."
- named_poll_must_have_less_options: "Poll named %{name} must have less than %{max} options."
default_poll_must_have_different_options: "نظرسنجی باید گزینه های متفاوت داشته باشد. "
named_poll_must_have_different_options: "Poll named %{name} must have different options."
default_poll_with_multiple_choices_has_invalid_parameters: "در نظرسنجی چند گزینهای پارامترهای نامعتبری وجود دارد."
diff --git a/plugins/poll/config/locales/server.fr.yml b/plugins/poll/config/locales/server.fr.yml
index 287c6d583a..46f5de3b1e 100644
--- a/plugins/poll/config/locales/server.fr.yml
+++ b/plugins/poll/config/locales/server.fr.yml
@@ -14,8 +14,6 @@ fr:
multiple_polls_with_same_name: "Plusieurs sondages ont le même noms : %{name}. Utilisez l'attribut 'name' pour donner un identifiant unique aux sondages."
default_poll_must_have_at_least_2_options: "Un sondage doit contenir au moins deux options."
named_poll_must_have_at_least_2_options: "Le sondage %{name} doit contenir au moins deux options."
- default_poll_must_have_less_options: "Un sondage peut contenir jusque %{max} options."
- named_poll_must_have_less_options: "Le sondage %{name} peut contenir jusque %{max} options."
default_poll_must_have_different_options: "Les sondages doivent contenir des options différentes les unes des autres."
named_poll_must_have_different_options: "Le sondage %{name} doit contenir des options différentes."
default_poll_with_multiple_choices_has_invalid_parameters: "Le sondage à choix multiples possède des paramètres invalides."
diff --git a/plugins/poll/config/locales/server.he.yml b/plugins/poll/config/locales/server.he.yml
index 9711891cc5..8f48e2cf73 100644
--- a/plugins/poll/config/locales/server.he.yml
+++ b/plugins/poll/config/locales/server.he.yml
@@ -14,8 +14,12 @@ he:
multiple_polls_with_same_name: "יש מספר סקרים עם אותו שם %{name}. השתמש במאפיין 'name' לזהות באופן יחודי את הסקרים שלך. "
default_poll_must_have_at_least_2_options: "לסקר צריך להיות לפחות שתי אפשרויות."
named_poll_must_have_at_least_2_options: "לסקר בשם %{name} צריך שיהיה לפחות שתי אפשרויות."
- default_poll_must_have_less_options: "לסקר צריך שיהיו פחות מ %{max} אפשרויות. "
- named_poll_must_have_less_options: "לסקר בשם %{name} צריך שיהיו פחות מ %{max} אפשרויות. "
+ default_poll_must_have_less_options:
+ one: "לסקר חייב להיות פחות מאפשרות אחת."
+ other: "לסקר חייב להיות פחות מ-%{count} אפשרויות."
+ named_poll_must_have_less_options:
+ one: "לסקר בשם %{name} צריך להיות פחות מאפשרות אחת."
+ other: "לסקר בשם %{name} צריך להיות פחות מ-%{count} אפשרויות."
default_poll_must_have_different_options: "לסקר צריך שיהיה אפשרויות שונות. "
named_poll_must_have_different_options: "לסקר בשם %{name} צריך שיהיו אפשרויות שונות. "
default_poll_with_multiple_choices_has_invalid_parameters: "לסקר עם בחירה מרובה יש פרמטרים לא תקינים. "
diff --git a/plugins/poll/config/locales/server.it.yml b/plugins/poll/config/locales/server.it.yml
index 2ece567bf8..80c1fcf230 100644
--- a/plugins/poll/config/locales/server.it.yml
+++ b/plugins/poll/config/locales/server.it.yml
@@ -14,8 +14,12 @@ it:
multiple_polls_with_same_name: "Ci sono più sondaggi con lo stesso nome: %{name}. Usa l'attributo 'name' per identificare univocamente i tuoi sondaggi."
default_poll_must_have_at_least_2_options: "Il sondaggio deve avere almeno due opzioni."
named_poll_must_have_at_least_2_options: "Il sondaggio con nome %{name} deve avere almeno due opzioni."
- default_poll_must_have_less_options: "Il sondaggio deve avere meno di %{max} opzioni."
- named_poll_must_have_less_options: "Il sondaggio dal nome %{name} deve avere meno di %{max} opzioni."
+ default_poll_must_have_less_options:
+ one: "Il sondaggio deve avere meno di una opzione."
+ other: "Il sondaggio deve avere meno di %{count} opzioni."
+ named_poll_must_have_less_options:
+ one: "Il sondaggio %{name} deve avere meno di una opzione."
+ other: "Il sondaggio %{name} deve avere meno di %{count} opzioni."
default_poll_must_have_different_options: "Il sondaggio deve avere opzioni diverse."
named_poll_must_have_different_options: "Il sondaggio dal nome %{name} deve avere opzioni diverse."
default_poll_with_multiple_choices_has_invalid_parameters: "Il sondaggio a scelta multipla ha parametri non validi."
diff --git a/plugins/poll/config/locales/server.ja.yml b/plugins/poll/config/locales/server.ja.yml
index 2caae93362..cb3b38ce9e 100644
--- a/plugins/poll/config/locales/server.ja.yml
+++ b/plugins/poll/config/locales/server.ja.yml
@@ -14,8 +14,8 @@ ja:
multiple_polls_with_same_name: "同じ名前: %{name} の複数の投票があります。一意に投票結果を識別するために、属性'name'を使用します。"
default_poll_must_have_at_least_2_options: "投票は少なくとも2つのオプションが必要です。"
named_poll_must_have_at_least_2_options: "投票 %{name} は少なくとも2つのオプションが必要です。"
- default_poll_must_have_less_options: "投票オプションは %{max} 未満です。"
- named_poll_must_have_less_options: "投票 %{name} のオプションは %{max} 未満です。"
+ default_poll_must_have_less_options:
+ other: "投票は%{count}オプション以下でなければいけません。"
default_poll_must_have_different_options: "投票は異なるオプションが必要です。"
named_poll_must_have_different_options: "投票 %{name} は異なるオプションが必要です。"
default_poll_with_multiple_choices_has_invalid_parameters: "複数の選択肢をもつ投票に無効なパラメータがあります。"
diff --git a/plugins/poll/config/locales/server.ko.yml b/plugins/poll/config/locales/server.ko.yml
index c8066f3a2c..ed8f31661e 100644
--- a/plugins/poll/config/locales/server.ko.yml
+++ b/plugins/poll/config/locales/server.ko.yml
@@ -14,8 +14,6 @@ ko:
multiple_polls_with_same_name: "같은 이름 %{name} 의 설문조사가 여러개 있습니다. 'name' 속성을 사용하여 설문조사를 개별적으로 구분해 보세요."
default_poll_must_have_at_least_2_options: "설문조사에 적어도 2개의 항목은 있어야합니다."
named_poll_must_have_at_least_2_options: "%{name} 설문조사에 적어도 2개의 항목이 있어야 합니다."
- default_poll_must_have_less_options: "설문조사 항목은 %{max}개보다 적어야합니다."
- named_poll_must_have_less_options: "%{name} 설문조사의 항목이 %{max}개보다 적어야 합니다."
default_poll_must_have_different_options: "한 설문조사 안에 항목 내용들이 각각 달라야 합니다."
named_poll_must_have_different_options: "%{name} 설문조사의 항목 내용들이 달라야 합니다."
default_poll_with_multiple_choices_has_invalid_parameters: "복수응답 가능한 설문조사가 잘못된 매개변수를 가지고 있습니다."
diff --git a/plugins/poll/config/locales/server.nb_NO.yml b/plugins/poll/config/locales/server.nb_NO.yml
index 8d5c7e686d..03d3f0b329 100644
--- a/plugins/poll/config/locales/server.nb_NO.yml
+++ b/plugins/poll/config/locales/server.nb_NO.yml
@@ -14,8 +14,6 @@ nb_NO:
multiple_polls_with_same_name: "Det er flere spørreundersøkelser med samme navn: %{name}. Bruk 'name' attributten til å identifisere spørreundersøkelsene dine."
default_poll_must_have_at_least_2_options: "Spørrsundersøkelser må inneholde minst 2 alternativer."
named_poll_must_have_at_least_2_options: "Spørresundersøkelsen %{name} må ha minst 2 svaralternativer."
- default_poll_must_have_less_options: "Spørreundersøkelsen må ha mindre enn %{max} svaralternativer."
- named_poll_must_have_less_options: "Spørresundersøkelsen %{name} må ha mindre enn %{max} svaralternativer."
default_poll_must_have_different_options: "Spørreundersøkelsen må ha ulike alternativer."
named_poll_must_have_different_options: "Spørresundersøkelsen %{name} må ha ulike svaralternativer."
default_poll_with_multiple_choices_has_invalid_parameters: "Spørreundersøkelsen med flere svaralternativer har ugyldige parametere."
diff --git a/plugins/poll/config/locales/server.nl.yml b/plugins/poll/config/locales/server.nl.yml
index 232d915004..13865efdac 100644
--- a/plugins/poll/config/locales/server.nl.yml
+++ b/plugins/poll/config/locales/server.nl.yml
@@ -14,8 +14,6 @@ nl:
multiple_polls_with_same_name: "Er zijn meerdere polls met dezelfde naam : %{name}. Gebruik het 'naam' attribuut om je polls te identificeren."
default_poll_must_have_at_least_2_options: "De poll moet minimaal 2 opties hebben."
named_poll_must_have_at_least_2_options: "De poll genaamd %{name} moet minimaal 2 opties hebben."
- default_poll_must_have_less_options: "De poll moet minder dan %{max} opties hebben."
- named_poll_must_have_less_options: "De poll genaamd %{name} moet minder dan %{max} opties hebben."
default_poll_must_have_different_options: "Polls moeten verschillende opties hebben."
named_poll_must_have_different_options: "De poll genaamd %{name} moet verschillende opties hebben."
default_poll_with_multiple_choices_has_invalid_parameters: "De poll met meerdere keuzes heeft ongeldige parameters."
diff --git a/plugins/poll/config/locales/server.pl_PL.yml b/plugins/poll/config/locales/server.pl_PL.yml
index f8646b1933..0247edf163 100644
--- a/plugins/poll/config/locales/server.pl_PL.yml
+++ b/plugins/poll/config/locales/server.pl_PL.yml
@@ -14,8 +14,6 @@ pl_PL:
multiple_polls_with_same_name: "Istnieje kilka ankiet o tej samej nazwie: %{name}. Użyj atrybutu 'name', aby umożliwić ich jednoznaczną identyfikację."
default_poll_must_have_at_least_2_options: "Ankieta musi posiadać co najmniej 2 opcje."
named_poll_must_have_at_least_2_options: "Ankieta %{name} musi posiadać co najmniej 2 opcje do wyboru."
- default_poll_must_have_less_options: "Ankieta musi posiadać mniej niż %{max} opcji do wyboru."
- named_poll_must_have_less_options: "Ankieta %{name} musi posiadać mniej niż %{max} opcji do wyboru."
default_poll_must_have_different_options: "Ankieta musi posiadać kilka różnych opcji do wyboru."
named_poll_must_have_different_options: "Ankieta %{name} musi posiadać kilka różnych opcji do wyboru."
default_poll_with_multiple_choices_has_invalid_parameters: "Sonda wielokrotnego wyboru posiada nieprawidłowe parametry."
diff --git a/plugins/poll/config/locales/server.pt_BR.yml b/plugins/poll/config/locales/server.pt_BR.yml
index 1c9e3a4574..07acf5beda 100644
--- a/plugins/poll/config/locales/server.pt_BR.yml
+++ b/plugins/poll/config/locales/server.pt_BR.yml
@@ -14,16 +14,23 @@ pt_BR:
multiple_polls_with_same_name: "Existem várias enquetes com o mesmo nome: %{name}. Use o atributo 'name' para identificar suas enquetes."
default_poll_must_have_at_least_2_options: "Enquetes devem ter ao mínimo 2 opções."
named_poll_must_have_at_least_2_options: "A enquete de nome %{name} deve ter ao menos 2 opções."
- default_poll_must_have_less_options: "A enquete deve ter menos de %{máximo} opções."
- named_poll_must_have_less_options: "A enquete de nome %{nome} deve ter menos de %{máximo} opções."
+ default_poll_must_have_less_options:
+ one: "Enquetes devem ter pelo menos 1 opção."
+ other: "Enquetes devem ter pelo menos %{count} opções."
+ named_poll_must_have_less_options:
+ one: "Enquete chamada %{name} deve ter menos do que 1 opção."
+ other: "Enquete chamada %{name} deve ter menos do que %{count} opções."
default_poll_must_have_different_options: "A votação deve ter opções diferentes."
named_poll_must_have_different_options: "A enquete de nome %{nome} deve ter opções diferentes."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Enquete com múltiplas opções tem parâmetros inválidos."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Enquete chamada %{name} com múltiplas escolhas tem parâmetros inválidos."
requires_at_least_1_valid_option: "Você deve selecionar pelo menos 1 opção válida."
cannot_change_polls_after_5_minutes: "Você não pode adicionar, remover ou renomear enquetes depois dos primeiros 5 minutos."
op_cannot_edit_options_after_5_minutes: "Você não pode adicionar ou remover opções das enquetes depois dos primeiros 5 minutos. Por favor contate um moderador se você precisar editar uma opção da enquete."
staff_cannot_add_or_remove_options_after_5_minutes: "Você não pode adicionar ou remover opções das enquetes depois dos primeiros 5 minutos. Você deve fechar este tópico e criar um novo."
no_polls_associated_with_this_post: "Não há votações associadas com este post."
no_poll_with_this_name: "Nenhuma enquete com o nome %{nome} associada com este post."
+ post_is_deleted: "Não pode agir numa mensagem apagada."
topic_must_be_open_to_vote: "O tópico deve ser aperto para votação."
poll_must_be_open_to_vote: "A enquete deve estar aberta para votação."
topic_must_be_open_to_toggle_status: "O tópico deve estar aberto para mudar o status."
diff --git a/plugins/poll/config/locales/server.sq.yml b/plugins/poll/config/locales/server.sq.yml
index c2c613bcc9..9067ae9e63 100644
--- a/plugins/poll/config/locales/server.sq.yml
+++ b/plugins/poll/config/locales/server.sq.yml
@@ -14,8 +14,6 @@ sq:
multiple_polls_with_same_name: "There are multiple polls with the same name: %{name}. Use the 'name' attribute to uniquely identify your polls."
default_poll_must_have_at_least_2_options: "Sondazhi duhet të ketë të paktën 2 opsione. "
named_poll_must_have_at_least_2_options: "Poll named %{name} must have at least 2 options."
- default_poll_must_have_less_options: "Sondazhi duhet të ketë më pak se %{max} opsione."
- named_poll_must_have_less_options: "Poll named %{name} must have less than %{max} options."
default_poll_must_have_different_options: "Sondazh duhet të ketë opsione të ndryshme."
named_poll_must_have_different_options: "Poll named %{name} must have different options."
default_poll_with_multiple_choices_has_invalid_parameters: "Poll with multiple choices has invalid parameters."
diff --git a/plugins/poll/config/locales/server.sv.yml b/plugins/poll/config/locales/server.sv.yml
index d13c1eee1d..1af9e7b17e 100644
--- a/plugins/poll/config/locales/server.sv.yml
+++ b/plugins/poll/config/locales/server.sv.yml
@@ -14,8 +14,6 @@ sv:
multiple_polls_with_same_name: "Det finns flera omröstningar med samma namn: %{name}. Använd attributet 'namn' för att unikt identifiera din omröstningar."
default_poll_must_have_at_least_2_options: "Omröstningen måste ha minst 2 alternativ."
named_poll_must_have_at_least_2_options: "Omröstningen med namnet %{name} måste ha minst 2 alternativ."
- default_poll_must_have_less_options: "Omröstningen måste ha mindre än %{max} alternativ."
- named_poll_must_have_less_options: "Omröstningen med namnet %{name} måste ha mindre än %{max} alternativ."
default_poll_must_have_different_options: "Omröstningen måste ha olika alternativ."
named_poll_must_have_different_options: "Omröstning med namnet %{name} måste ha olika alternativ."
default_poll_with_multiple_choices_has_invalid_parameters: "Omröstning med flera val har ogiltiga parametrar."
diff --git a/plugins/poll/config/locales/server.tr_TR.yml b/plugins/poll/config/locales/server.tr_TR.yml
index 9018c91244..e11db21d2b 100644
--- a/plugins/poll/config/locales/server.tr_TR.yml
+++ b/plugins/poll/config/locales/server.tr_TR.yml
@@ -14,8 +14,6 @@ tr_TR:
multiple_polls_with_same_name: "Aynı isme sahip birden fazla anket var: %{name}. 'name' atıfını kullanarak anketlerinizi özebir tanımlayabilirsiniz."
default_poll_must_have_at_least_2_options: "Ankette en az 2 seçenek olmalı."
named_poll_must_have_at_least_2_options: "%{name} isimli ankette en az 2 seçenek olmalı."
- default_poll_must_have_less_options: "Anketler en fazla %{max} seçeneğe sahip olabilir."
- named_poll_must_have_less_options: "%{name} isimli anket en fazla %{max} seçeneğe sahip olabilir."
default_poll_must_have_different_options: "Anketin farklı seçenekleri olmalı."
named_poll_must_have_different_options: "%{name} isimli anketin farklı seçenekleri olmalı."
default_poll_with_multiple_choices_has_invalid_parameters: "Çoklu seçim seçeneği içeren anketinizde hatalar belirlendi."
diff --git a/plugins/poll/db/migrate/20151016163051_merge_polls_votes.rb b/plugins/poll/db/migrate/20151016163051_merge_polls_votes.rb
new file mode 100644
index 0000000000..17e6459e12
--- /dev/null
+++ b/plugins/poll/db/migrate/20151016163051_merge_polls_votes.rb
@@ -0,0 +1,20 @@
+class MergePollsVotes < ActiveRecord::Migration
+
+ def up
+ PostCustomField.where(name: "polls").order(:post_id).pluck(:post_id).each do |post_id|
+ polls_votes = {}
+ PostCustomField.where(post_id: post_id).where("name LIKE 'polls-votes-%'").find_each do |pcf|
+ user_id = pcf.name["polls-votes-".size..-1]
+ polls_votes["#{user_id}"] = ::JSON.parse(pcf.value||"{}")
+ end
+
+ pcf = PostCustomField.find_or_create_by(name: "polls-votes", post_id: post_id)
+ pcf.value = ::JSON.parse(pcf.value||"{}").merge(polls_votes).to_json
+ pcf.save
+ end
+ end
+
+ def down
+ end
+
+end
diff --git a/plugins/poll/plugin.rb b/plugins/poll/plugin.rb
index 306a6c9b13..cb0aa1874f 100644
--- a/plugins/poll/plugin.rb
+++ b/plugins/poll/plugin.rb
@@ -66,21 +66,18 @@ after_initialize do
raise StandardError.new I18n.t("poll.requires_at_least_1_valid_option") if options.empty?
- votes = post.custom_fields["#{VOTES_CUSTOM_FIELD}-#{user_id}"] || {}
- vote = votes[poll_name] || []
+ post.custom_fields[VOTES_CUSTOM_FIELD] ||= {}
+ post.custom_fields[VOTES_CUSTOM_FIELD]["#{user_id}"] ||= {}
+ post.custom_fields[VOTES_CUSTOM_FIELD]["#{user_id}"][poll_name] = options
- # increment counters only when the user hasn't casted a vote yet
- poll["voters"] += 1 if vote.size == 0
+ votes = post.custom_fields[VOTES_CUSTOM_FIELD]
+ poll["voters"] = votes.values.count { |v| v.has_key?(poll_name) }
- poll["options"].each do |option|
- option["votes"] -= 1 if vote.include?(option["id"])
- option["votes"] += 1 if options.include?(option["id"])
- end
-
- votes[poll_name] = options
+ all_options = Hash.new(0)
+ votes.map { |_, v| v[poll_name] }.flatten.each { |o| all_options[o] += 1 }
+ poll["options"].each { |option| option["votes"] = all_options[option["id"]] }
post.custom_fields[POLLS_CUSTOM_FIELD] = polls
- post.custom_fields["#{VOTES_CUSTOM_FIELD}-#{user_id}"] = votes
post.save_custom_fields(true)
MessageBus.publish("/polls/#{post_id}", { polls: polls })
@@ -325,9 +322,7 @@ after_initialize do
# when the # of options has changed, reset all the votes
if polls[poll_name]["options"].size != previous_polls[poll_name]["options"].size
- PostCustomField.where(post_id: post.id)
- .where("name LIKE '#{VOTES_CUSTOM_FIELD}-%'")
- .destroy_all
+ PostCustomField.where(post_id: post.id, name: VOTES_CUSTOM_FIELD).destroy_all
post.clear_custom_fields
next
end
@@ -354,12 +349,10 @@ after_initialize do
end
Post.register_custom_field_type(POLLS_CUSTOM_FIELD, :json)
- Post.register_custom_field_type("#{VOTES_CUSTOM_FIELD}-*", :json)
+ Post.register_custom_field_type(VOTES_CUSTOM_FIELD, :json)
TopicView.add_post_custom_fields_whitelister do |user|
- whitelisted = [POLLS_CUSTOM_FIELD]
- whitelisted << "#{VOTES_CUSTOM_FIELD}-#{user.id}" if user
- whitelisted
+ user ? [POLLS_CUSTOM_FIELD, VOTES_CUSTOM_FIELD] : [POLLS_CUSTOM_FIELD]
end
# tells the front-end we have a poll for that post
@@ -371,6 +364,11 @@ after_initialize do
add_to_serializer(:post, :polls, false) { post_custom_fields[POLLS_CUSTOM_FIELD] }
add_to_serializer(:post, :include_polls?) { post_custom_fields.present? && post_custom_fields[POLLS_CUSTOM_FIELD].present? }
- add_to_serializer(:post, :polls_votes, false) { post_custom_fields["#{VOTES_CUSTOM_FIELD}-#{scope.user.id}"] }
- add_to_serializer(:post, :include_polls_votes?) { scope.user && post_custom_fields.present? && post_custom_fields["#{VOTES_CUSTOM_FIELD}-#{scope.user.id}"].present? }
+ add_to_serializer(:post, :polls_votes, false) { post_custom_fields[VOTES_CUSTOM_FIELD]["#{scope.user.id}"] }
+ add_to_serializer(:post, :include_polls_votes?) do
+ return unless scope.user
+ return unless post_custom_fields.present?
+ return unless post_custom_fields[VOTES_CUSTOM_FIELD].present?
+ post_custom_fields[VOTES_CUSTOM_FIELD].has_key?("#{scope.user.id}")
+ end
end
diff --git a/public/403.ar.html b/public/403.ar.html
index 12d30120a4..96bd196b8f 100644
--- a/public/403.ar.html
+++ b/public/403.ar.html
@@ -18,9 +18,9 @@
403
-