diff --git a/.jshintrc b/.jshintrc index f479939c92..962847d723 100644 --- a/.jshintrc +++ b/.jshintrc @@ -14,7 +14,6 @@ "moduleForComponent", "Pretender", "sandbox", - "integration", "controllerFor", "test", "ok", diff --git a/Gemfile.lock b/Gemfile.lock index fba2dcc399..79946b29bf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -272,7 +272,7 @@ GEM omniauth-twitter (1.0.1) multi_json (~> 1.3) omniauth-oauth (~> 1.0) - onebox (1.5.13) + onebox (1.5.16) moneta (~> 0.7) multi_json (~> 1.7) mustache (~> 0.99) diff --git a/README.md b/README.md index 1afd54b02d..d2859ca822 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,12 @@ To learn more about the philosophy and goals of the project, [visit **discourse. ## Screenshots -[![](https://raw.githubusercontent.com/discourse/discourse-docimages/master/readme/boing-boing-latest-small2.png)](http://bbs.boingboing.net) -[![](https://raw.githubusercontent.com/discourse/discourse-docimages/master/readme/how-to-geek-profile-small2.png)](http://discuss.howtogeek.com) -[![](https://raw.githubusercontent.com/discourse/discourse-docimages/master/readme/new-relic-categories-small2.png)](http://discuss.newrelic.com) -[![](https://raw.githubusercontent.com/discourse/discourse-docimages/master/readme/turtle-rock-topic-small2.jpg)](https://talk.turtlerockstudios.com/) -[![](https://raw.githubusercontent.com/discourse/discourse-docimages/master/readme/nexus-7-mobile-discourse-small3.png)](http://discuss.atom.io) -[![](https://raw.githubusercontent.com/discourse/discourse-docimages/master/readme/iphone-5s-mobile-discourse-small4.png)](http://discourse.soylent.me) +[![](http://www.discourse.org/images/readme/boingboing-1-3-beta.png)](http://bbs.boingboing.net) +[![](http://www.discourse.org/images/readme/howtogeek-1-3-beta.png)](http://discuss.howtogeek.com) +[![](http://www.discourse.org/images/readme/newrelic-1-3-beta.png)](http://discuss.newrelic.com) +[![](http://www.discourse.org/images/readme/turtlerock-1-3-beta.png)](https://talk.turtlerockstudios.com/) +[![](http://www.discourse.org/images/readme/android-tablet-discourse-1-3-beta.png?v=3)](http://discuss.atom.io) +[![](http://www.discourse.org/images/readme/iphone-6-discourse-1-3-beta.png?v=3)](http://discourse.soylent.me) Browse [lots more notable Discourse instances](http://www.discourse.org/faq/customers/). diff --git a/app/assets/fonts/FontAwesome.otf b/app/assets/fonts/FontAwesome.otf index 3461e3fce6..f7936cc1e7 100644 Binary files a/app/assets/fonts/FontAwesome.otf and b/app/assets/fonts/FontAwesome.otf differ diff --git a/app/assets/fonts/fontawesome-webfont.eot b/app/assets/fonts/fontawesome-webfont.eot old mode 100755 new mode 100644 index 6cfd566095..33b2bb8005 Binary files a/app/assets/fonts/fontawesome-webfont.eot and b/app/assets/fonts/fontawesome-webfont.eot differ diff --git a/app/assets/fonts/fontawesome-webfont.svg b/app/assets/fonts/fontawesome-webfont.svg old mode 100755 new mode 100644 index a9f8469503..1ee89d4368 --- a/app/assets/fonts/fontawesome-webfont.svg +++ b/app/assets/fonts/fontawesome-webfont.svg @@ -1,6 +1,6 @@ - + @@ -32,473 +32,534 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/assets/fonts/fontawesome-webfont.ttf b/app/assets/fonts/fontawesome-webfont.ttf old mode 100755 new mode 100644 index 5cd6cff6d6..ed9372f8ea Binary files a/app/assets/fonts/fontawesome-webfont.ttf and b/app/assets/fonts/fontawesome-webfont.ttf differ diff --git a/app/assets/fonts/fontawesome-webfont.woff b/app/assets/fonts/fontawesome-webfont.woff old mode 100755 new mode 100644 index 9eaecb3799..8b280b98fa Binary files a/app/assets/fonts/fontawesome-webfont.woff and b/app/assets/fonts/fontawesome-webfont.woff differ diff --git a/app/assets/fonts/fontawesome-webfont.woff2 b/app/assets/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000..3311d58514 Binary files /dev/null and b/app/assets/fonts/fontawesome-webfont.woff2 differ diff --git a/app/assets/javascripts/admin/components/list-setting.js.es6 b/app/assets/javascripts/admin/components/list-setting.js.es6 index 55ff799fb7..da6c5173d6 100644 --- a/app/assets/javascripts/admin/components/list-setting.js.es6 +++ b/app/assets/javascripts/admin/components/list-setting.js.es6 @@ -21,7 +21,8 @@ export default Ember.Component.extend({ tokenSeparators: ["|"], tags : this.get("choices") || [], width: 'off', - dropdownCss: this.get("choices") ? {} : {display: 'none'} + dropdownCss: this.get("choices") ? {} : {display: 'none'}, + selectOnBlur: this.get("choices") ? false : true }; var settingName = this.get('settingName'); diff --git a/app/assets/javascripts/admin/components/resumable_upload_component.js b/app/assets/javascripts/admin/components/resumable_upload_component.js index a5ef4af921..dc040464dd 100644 --- a/app/assets/javascripts/admin/components/resumable_upload_component.js +++ b/app/assets/javascripts/admin/components/resumable_upload_component.js @@ -14,6 +14,7 @@ Discourse.ResumableUploadComponent = Ember.Component.extend(Discourse.StringBuff tagName: "button", classNames: ["btn", "ru"], classNameBindings: ["isUploading"], + attributeBindings: ["translatedTitle:title"], resumable: null, @@ -22,6 +23,11 @@ Discourse.ResumableUploadComponent = Ember.Component.extend(Discourse.StringBuff rerenderTriggers: ['isUploading', 'progress'], + translatedTitle: function() { + const title = this.get('title'); + return title ? I18n.t(title) : this.get('text'); + }.property('title', 'text'), + text: function() { if (this.get("isUploading")) { return this.get("progress") + " %"; diff --git a/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 b/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 index c3ade201b4..8eceb0bb7d 100644 --- a/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-backups-index.js.es6 @@ -1,49 +1,24 @@ export default Ember.ArrayController.extend({ needs: ["adminBackups"], status: Em.computed.alias("controllers.adminBackups"), - - uploadText: function() { return I18n.t("admin.backups.upload.text"); }.property(), - - readOnlyModeDisabled: Em.computed.alias("status.isOperationRunning"), - + isOperationRunning: Em.computed.alias("status.isOperationRunning"), restoreDisabled: Em.computed.alias("status.restoreDisabled"), + uploadLabel: function() { return I18n.t("admin.backups.upload.label"); }.property(), + restoreTitle: function() { if (!this.get('status.allowRestore')) { - return I18n.t("admin.backups.operations.restore.is_disabled"); + return "admin.backups.operations.restore.is_disabled"; } else if (this.get("status.isOperationRunning")) { - return I18n.t("admin.backups.operation_already_running"); + return "admin.backups.operations.is_running"; } else { - return I18n.t("admin.backups.operations.restore.title"); + return "admin.backups.operations.restore.title"; } - }.property("status.isOperationRunning"), - - destroyDisabled: Em.computed.alias("status.isOperationRunning"), - - destroyTitle: function() { - if (this.get("status.isOperationRunning")) { - return I18n.t("admin.backups.operation_already_running"); - } else { - return I18n.t("admin.backups.operations.destroy.title"); - } - }.property("status.isOperationRunning"), - - readOnlyModeTitle: function() { return this._readOnlyModeI18n("title"); }.property("site.isReadOnly"), - readOnlyModeText: function() { return this._readOnlyModeI18n("text"); }.property("site.isReadOnly"), - - _readOnlyModeI18n: function(value) { - var action = this.site.get("isReadOnly") ? "disable" : "enable"; - return I18n.t("admin.backups.read_only." + action + "." + value); - }, + }.property("status.{allowRestore,isOperationRunning}"), actions: { - /** - Toggle read-only mode - - @method toggleReadOnlyMode - **/ - toggleReadOnlyMode: function() { + toggleReadOnlyMode() { var self = this; if (!this.site.get("isReadOnly")) { bootbox.confirm( @@ -64,7 +39,7 @@ export default Ember.ArrayController.extend({ }, - _toggleReadOnlyMode: function(enable) { + _toggleReadOnlyMode(enable) { var site = this.site; Discourse.ajax("/admin/backups/readonly", { type: "PUT", diff --git a/app/assets/javascripts/admin/controllers/admin-group.js.es6 b/app/assets/javascripts/admin/controllers/admin-group.js.es6 index 012f2da9e8..d0332e8207 100644 --- a/app/assets/javascripts/admin/controllers/admin-group.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-group.js.es6 @@ -25,31 +25,31 @@ export default Em.ObjectController.extend({ }.property(), actions: { - next: function() { + next() { if (this.get("showingLast")) { return; } - var group = this.get("model"), - offset = Math.min(group.get("offset") + group.get("limit"), group.get("user_count")); + const group = this.get("model"), + offset = Math.min(group.get("offset") + group.get("limit"), group.get("user_count")); group.set("offset", offset); return group.findMembers(); }, - previous: function() { + previous() { if (this.get("showingFirst")) { return; } - var group = this.get("model"), - offset = Math.max(group.get("offset") - group.get("limit"), 0); + const group = this.get("model"), + offset = Math.max(group.get("offset") - group.get("limit"), 0); group.set("offset", offset); return group.findMembers(); }, - removeMember: function(member) { - var self = this, - message = I18n.t("admin.groups.delete_member_confirm", { username: member.get("username"), group: this.get("name") }); + removeMember(member) { + const self = this, + message = I18n.t("admin.groups.delete_member_confirm", { username: member.get("username"), group: this.get("name") }); return bootbox.confirm(message, I18n.t("no_value"), I18n.t("yes_value"), function(confirm) { if (confirm) { self.get("model").removeMember(member); @@ -57,57 +57,49 @@ export default Em.ObjectController.extend({ }); }, - addMembers: function() { + addMembers() { if (Em.isEmpty(this.get("usernames"))) { return; } this.get("model").addMembers(this.get("usernames")); // clear the user selector this.set("usernames", null); }, - save: function() { - var self = this, - group = this.get('model'), - groupsController = this.get("controllers.adminGroupsType"); + save() { + const group = this.get('model'), + groupsController = this.get("controllers.adminGroupsType"); this.set('disableSave', true); - var promise; - if (group.get("id")) { - promise = group.save(); - } else { - promise = group.create().then(function() { - groupsController.addObject(group); - }); - } - promise.then(function() { - self.transitionToRoute("adminGroup", group); - }, function(e) { - var message = $.parseJSON(e.responseText).errors; - bootbox.alert(message); - }).finally(function() { - self.set('disableSave', false); - }); + let promise = group.get("id") ? group.save() : group.create().then(() => groupsController.addObject(group)); + + promise.then(() => this.transitionToRoute("adminGroup", group)) + .catch(e => bootbox.alert($.parseJSON(e.responseText).errors)) + .finally(() => this.set('disableSave', false)); }, - destroy: function() { - var group = this.get('model'), - groupsController = this.get('controllers.adminGroupsType'), - self = this; + destroy() { + const group = this.get('model'), + groupsController = this.get('controllers.adminGroupsType'), + self = this; this.set('disableSave', true); - bootbox.confirm(I18n.t("admin.groups.delete_confirm"), I18n.t("no_value"), I18n.t("yes_value"), function(confirmed) { - if (confirmed) { - group.destroy().then(function() { - groupsController.get('model').removeObject(group); - self.transitionToRoute('adminGroups.index'); - }, function() { - bootbox.alert(I18n.t("admin.groups.delete_failed")); - }).finally(function() { + bootbox.confirm( + I18n.t("admin.groups.delete_confirm"), + I18n.t("no_value"), + I18n.t("yes_value"), + function(confirmed) { + if (confirmed) { + group.destroy().then(() => { + groupsController.get('model').removeObject(group); + self.transitionToRoute('adminGroups.index'); + }).catch(() => bootbox.alert(I18n.t("admin.groups.delete_failed"))) + .finally(() => self.set('disableSave', false)); + } else { self.set('disableSave', false); - }); + } } - }); + ); } } }); diff --git a/app/assets/javascripts/admin/controllers/admin-groups-type.js.es6 b/app/assets/javascripts/admin/controllers/admin-groups-type.js.es6 index 2d75d1911b..eba51de4ee 100644 --- a/app/assets/javascripts/admin/controllers/admin-groups-type.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-groups-type.js.es6 @@ -1,6 +1,9 @@ export default Ember.ArrayController.extend({ sortProperties: ['name'], refreshingAutoGroups: false, + isAuto: function(){ + return this.get('type') === 'automatic'; + }.property('type'), actions: { refreshAutoGroups: function(){ diff --git a/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 b/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 index 4f944f9dbc..c8226f04dc 100644 --- a/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-groups-type.js.es6 @@ -1,10 +1,16 @@ export default Discourse.Route.extend({ model(params) { + this.set("type", params.type); return Discourse.Group.findAll().then(function(groups) { return groups.filterBy("type", params.type); }); }, + setupController(controller, model){ + controller.set("type", this.get("type")); + controller.set("model", model); + }, + actions: { newGroup() { const self = this; diff --git a/app/assets/javascripts/admin/templates/backups.hbs b/app/assets/javascripts/admin/templates/backups.hbs index bcd14fadd6..510b965308 100644 --- a/app/assets/javascripts/admin/templates/backups.hbs +++ b/app/assets/javascripts/admin/templates/backups.hbs @@ -9,7 +9,7 @@ {{#if canRollback}} {{d-button action="rollback" class="btn-rollback" - label="admin.backups.operations.rollback.text" + label="admin.backups.operations.rollback.label" title="admin.backups.operations.rollback.title" icon="ambulance" disabled=rollbackDisabled}} @@ -18,13 +18,13 @@ {{d-button action="cancelOperation" class="btn-danger" title="admin.backups.operations.cancel.title" - label="admin.backups.operations.cancel.text" + label="admin.backups.operations.cancel.label" icon="times"}} {{else}} {{d-button action="startBackup" class="btn-primary" title="admin.backups.operations.backup.title" - label="admin.backups.operations.backup.text" + label="admin.backups.operations.backup.label" icon="rocket"}} {{/if}} diff --git a/app/assets/javascripts/admin/templates/backups_index.hbs b/app/assets/javascripts/admin/templates/backups_index.hbs index bfbedd1be2..ca8830a0e8 100644 --- a/app/assets/javascripts/admin/templates/backups_index.hbs +++ b/app/assets/javascripts/admin/templates/backups_index.hbs @@ -4,8 +4,12 @@ {{i18n 'admin.backups.columns.size'}}
- {{resumable-upload target="/admin/backups/upload" success="uploadSuccess" error="uploadError" uploadText=uploadText}} - + {{resumable-upload target="/admin/backups/upload" success="uploadSuccess" error="uploadError" uploadText=uploadLabel title="admin.backups.upload.title"}} + {{#if site.isReadOnly}} + {{d-button icon="eye" action="toggleReadOnlyMode" disabled=isOperationRunning title="admin.backups.read_only.disable.title" label="admin.backups.read_only.disable.label"}} + {{else}} + {{d-button icon="eye" action="toggleReadOnlyMode" disabled=isOperationRunning title="admin.backups.read_only.enable.title" label="admin.backups.read_only.enable.label"}} + {{/if}}
@@ -15,9 +19,14 @@ {{human-size backup.size}}
- {{i18n 'admin.backups.operations.download.text'}} - - + {{fa-icon "download"}}{{i18n 'admin.backups.operations.download.label'}} + {{#if isOperationRunning}} + {{d-button icon="trash-o" action="destroyBackup" actionParam=backup class="btn-danger no-text" disabled="true" title="admin.backups.operations.is_running"}} + {{d-button icon="play" action="startRestore" actionParam=backup disabled=restoreDisabled title=restoreTitle label="admin.backups.operations.restore.label"}} + {{else}} + {{d-button icon="trash-o" action="destroyBackup" actionParam=backup class="btn-danger no-text" title="admin.backups.operations.destroy.title"}} + {{d-button icon="play" action="startRestore" actionParam=backup disabled=restoreDisabled title=restoreTitle label="admin.backups.operations.restore.label"}} + {{/if}}
diff --git a/app/assets/javascripts/admin/templates/customize_css_html.hbs b/app/assets/javascripts/admin/templates/customize_css_html.hbs index e5e08632ae..004318e1eb 100644 --- a/app/assets/javascripts/admin/templates/customize_css_html.hbs +++ b/app/assets/javascripts/admin/templates/customize_css_html.hbs @@ -33,13 +33,15 @@
  • {{fa-icon "mobile"}}
  • -
  • - {{#if view.maximized}} - {{fa-icon "compress"}} - {{else}} - {{fa-icon "expand"}} - {{/if}} - +
  • + + {{#if view.maximized}} + {{fa-icon "compress"}} + {{else}} + {{fa-icon "expand"}} + {{/if}} + +
  • diff --git a/app/assets/javascripts/admin/templates/group.hbs b/app/assets/javascripts/admin/templates/group.hbs index 2800ac2b9c..d17167a66f 100644 --- a/app/assets/javascripts/admin/templates/group.hbs +++ b/app/assets/javascripts/admin/templates/group.hbs @@ -38,6 +38,15 @@ + {{#unless automatic}} +
    + +
    + {{/unless}} +
    {{combo-box name="alias" valueAttribute="value" value=alias_level content=aliasLevelOptions}} @@ -52,6 +61,13 @@ {{i18n 'admin.groups.automatic_membership_retroactive'}}
    + +
    + + {{input value=title}} +
    {{/unless}}
    diff --git a/app/assets/javascripts/admin/templates/group_member.hbs b/app/assets/javascripts/admin/templates/group_member.hbs index d94f2ebe85..1c344ba739 100644 --- a/app/assets/javascripts/admin/templates/group_member.hbs +++ b/app/assets/javascripts/admin/templates/group_member.hbs @@ -1 +1 @@ -{{avatar member imageSize="small"}} {{member.username}} {{#unless automatic}}{{fa-icon "times"}}{{/unless}} +{{avatar member imageSize="small"}} {{member.username}} {{#unless automatic}}{{fa-icon "times"}}{{/unless}} diff --git a/app/assets/javascripts/admin/templates/groups.hbs b/app/assets/javascripts/admin/templates/groups.hbs index 754ad67441..0de3fc5c79 100644 --- a/app/assets/javascripts/admin/templates/groups.hbs +++ b/app/assets/javascripts/admin/templates/groups.hbs @@ -1,6 +1,6 @@ {{#admin-nav}} - {{admin-nav-item route='adminGroupsType' routeParam='custom' label='admin.groups.custom.label'}} - {{admin-nav-item route='adminGroupsType' routeParam='automatic' label='admin.groups.automatic.label'}} + {{admin-nav-item route='adminGroupsType' routeParam='custom' label='admin.groups.custom'}} + {{admin-nav-item route='adminGroupsType' routeParam='automatic' label='admin.groups.automatic'}} {{/admin-nav}}
    diff --git a/app/assets/javascripts/admin/templates/groups_type.hbs b/app/assets/javascripts/admin/templates/groups_type.hbs index 0aec861a66..8188752a9a 100644 --- a/app/assets/javascripts/admin/templates/groups_type.hbs +++ b/app/assets/javascripts/admin/templates/groups_type.hbs @@ -10,7 +10,9 @@
    {{d-button action="newGroup" icon="plus" label="admin.groups.new"}} + {{#if controller.isAuto}} {{d-button action="refreshAutoGroups" icon="refresh" label="admin.groups.refresh" disabled=refreshingAutoGroups}} + {{/if}}
    diff --git a/app/assets/javascripts/admin/templates/logs/screened_emails.hbs b/app/assets/javascripts/admin/templates/logs/screened_emails.hbs index f231c39194..506ede054d 100644 --- a/app/assets/javascripts/admin/templates/logs/screened_emails.hbs +++ b/app/assets/javascripts/admin/templates/logs/screened_emails.hbs @@ -2,7 +2,7 @@ {{i18n 'admin.logs.screened_emails.description'}}

    -
    +
    {{#loading-spinner condition=loading}} {{#if model.length}} diff --git a/app/assets/javascripts/admin/templates/logs/screened_urls.hbs b/app/assets/javascripts/admin/templates/logs/screened_urls.hbs index 701909ff56..aba722a9c7 100644 --- a/app/assets/javascripts/admin/templates/logs/screened_urls.hbs +++ b/app/assets/javascripts/admin/templates/logs/screened_urls.hbs @@ -2,7 +2,7 @@ {{i18n 'admin.logs.screened_urls.description'}}

    -
    +
    {{#loading-spinner condition=loading}} {{#if model.length}} diff --git a/app/assets/javascripts/admin/templates/logs/staff_action_logs.hbs b/app/assets/javascripts/admin/templates/logs/staff_action_logs.hbs index 58a5ba72a1..c5ce3aa46e 100644 --- a/app/assets/javascripts/admin/templates/logs/staff_action_logs.hbs +++ b/app/assets/javascripts/admin/templates/logs/staff_action_logs.hbs @@ -31,7 +31,7 @@
    {{d-button action="exportStaffActionLogs" label="admin.export_csv.button_text" icon="download"}}
    -
    +
    {{i18n 'admin.logs.staff_actions.instructions'}} diff --git a/app/assets/javascripts/admin/templates/user_index.hbs b/app/assets/javascripts/admin/templates/user_index.hbs index 4dff9338a4..f2a6039293 100644 --- a/app/assets/javascripts/admin/templates/user_index.hbs +++ b/app/assets/javascripts/admin/templates/user_index.hbs @@ -83,29 +83,6 @@
    - {{#if currentUser.admin}} -
    -
    {{i18n 'admin.groups.automatic.title'}}
    -
    {{automaticGroups}}
    -
    -
    -
    {{i18n 'admin.groups.custom.title'}}
    -
    - {{admin-group-selector selected=customGroups available=availableGroups}} -
    -
    - {{#if customGroups}} - {{i18n 'admin.groups.primary'}} - {{combo-box content=customGroups value=primary_group_id nameProperty="name" none="admin.groups.no_primary"}} - {{/if}} - {{#if primaryGroupDirty}} - {{d-button icon="check" class="ok no-text" action="savePrimaryGroup"}} - {{d-button icon="times" class="cancel no-text" action="resetPrimaryGroup"}} - {{/if}} -
    -
    - {{/if}} -
    {{i18n 'user.ip_address.title'}}
    {{ip_address}}
    @@ -159,7 +136,6 @@ {{/if}} -

    {{i18n 'admin.user.permissions'}}

    @@ -355,6 +331,33 @@
    +
    +

    {{i18n 'admin.groups.title'}}

    + + {{#if currentUser.admin}} +
    +
    {{i18n 'admin.groups.automatic'}}
    +
    {{automaticGroups}}
    +
    +
    +
    {{i18n 'admin.groups.custom'}}
    +
    + {{admin-group-selector selected=customGroups available=availableGroups}} +
    +
    + {{#if customGroups}} + {{i18n 'admin.groups.primary'}} + {{combo-box content=customGroups value=primary_group_id nameProperty="name" none="admin.groups.no_primary"}} + {{/if}} + {{#if primaryGroupDirty}} + {{d-button icon="check" class="ok no-text" action="savePrimaryGroup"}} + {{d-button icon="times" class="cancel no-text" action="resetPrimaryGroup"}} + {{/if}} +
    +
    + {{/if}} +
    +

    {{i18n 'admin.user.activity'}}

    diff --git a/app/assets/javascripts/admin/templates/users_list.hbs b/app/assets/javascripts/admin/templates/users_list.hbs index 45879d1b6f..7a5de029f4 100644 --- a/app/assets/javascripts/admin/templates/users_list.hbs +++ b/app/assets/javascripts/admin/templates/users_list.hbs @@ -13,7 +13,7 @@
    - {{d-button action="sendInvites" title="admin.invite.button_title" icon="envelope" label="admin.invite.button_text"}} + {{d-button action="sendInvites" title="admin.invite.button_title" icon="user-plus" label="admin.invite.button_text"}} {{d-button action="exportUsers" title="admin.export_csv.button_title.user" icon="download" label="admin.export_csv.button_text"}}
    diff --git a/app/assets/javascripts/discourse/adapters/rest.js.es6 b/app/assets/javascripts/discourse/adapters/rest.js.es6 index da499c963d..fc9d7c4065 100644 --- a/app/assets/javascripts/discourse/adapters/rest.js.es6 +++ b/app/assets/javascripts/discourse/adapters/rest.js.es6 @@ -4,7 +4,7 @@ export default Ember.Object.extend({ pathFor(store, type, findArgs) { let path = "/" + Ember.String.underscore(store.pluralize(type)); - if (ADMIN_MODELS.indexOf(type) !== -1) { path = "/admin/" + path; } + if (ADMIN_MODELS.indexOf(type) !== -1) { path = "/admin" + path; } if (findArgs) { if (typeof findArgs === "object") { diff --git a/app/assets/javascripts/discourse/components/category-unread.js.es6 b/app/assets/javascripts/discourse/components/category-unread.js.es6 new file mode 100644 index 0000000000..a862b5dee9 --- /dev/null +++ b/app/assets/javascripts/discourse/components/category-unread.js.es6 @@ -0,0 +1,3 @@ +export default Ember.Component.extend({ + tagName: 'span' +}); diff --git a/app/assets/javascripts/discourse/components/composer-text-area.js.es6 b/app/assets/javascripts/discourse/components/composer-text-area.js.es6 index fe213c2c67..8cbaa1fc74 100644 --- a/app/assets/javascripts/discourse/components/composer-text-area.js.es6 +++ b/app/assets/javascripts/discourse/components/composer-text-area.js.es6 @@ -6,11 +6,10 @@ export default Ember.TextArea.extend({ }.property('placeholderKey'), _signalParentInsert: function() { - return this.get('parentView').childDidInsertElement(this); + this.get('parentView').childDidInsertElement(this); }.on('didInsertElement'), _signalParentDestroy: function() { - return this.get('parentView').childWillDestroyElement(this); + this.get('parentView').childWillDestroyElement(this); }.on('willDestroyElement') }); - diff --git a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 index 3b6b35c96c..f0e0192e17 100644 --- a/app/assets/javascripts/discourse/components/directory-toggle.js.es6 +++ b/app/assets/javascripts/discourse/components/directory-toggle.js.es6 @@ -4,8 +4,14 @@ import { iconHTML } from 'discourse/helpers/fa-icon'; export default Ember.Component.extend(StringBuffer, { tagName: 'th', classNames: ['sortable'], + attributeBindings: ['title'], rerenderTriggers: ['order', 'asc'], + title: function() { + const labelKey = 'directory.' + this.get('field'); + return I18n.t(labelKey + '_long', { defaultValue: I18n.t(labelKey) }); + }.property('field'), + renderString(buffer) { const icon = this.get('icon'); diff --git a/app/assets/javascripts/discourse/components/global-notice.js.es6 b/app/assets/javascripts/discourse/components/global-notice.js.es6 index bde5b4aaa5..8a213ae8a4 100644 --- a/app/assets/javascripts/discourse/components/global-notice.js.es6 +++ b/app/assets/javascripts/discourse/components/global-notice.js.es6 @@ -4,18 +4,22 @@ export default Ember.Component.extend(StringBuffer, { rerenderTriggers: ['site.isReadOnly'], renderString: function(buffer) { - var notices = []; + let notices = []; if (this.site.get("isReadOnly")) { - notices.push(I18n.t("read_only_mode.enabled")); + notices.push([I18n.t("read_only_mode.enabled"), 'alert-read-only']); } if (this.siteSettings.disable_emails) { - notices.push(I18n.t("emails_are_disabled")); + notices.push([I18n.t("emails_are_disabled"), 'alert-emails-disabled']); + } + + if (this.siteSettings.enable_s3_uploads) { + notices.push([I18n.t("s3_deprecation_warning"), 'alert-s3-deprecation']); } if (Discourse.User.currentProp('admin') && this.siteSettings.show_create_topics_notice) { - var topic_count = 0, + let topic_count = 0, post_count = 0; _.each(this.site.get('categories'), function(c) { if (!c.get('read_restricted')) { @@ -24,18 +28,16 @@ export default Ember.Component.extend(StringBuffer, { } }); if (topic_count < 5 || post_count < this.siteSettings.tl1_requires_read_posts) { - notices.push(I18n.t("too_few_topics_notice", {posts: this.siteSettings.tl1_requires_read_posts})); + notices.push([I18n.t("too_few_topics_notice", { posts: this.siteSettings.tl1_requires_read_posts }), 'alert-too-few-topics']); } } if (!_.isEmpty(this.siteSettings.global_notice)) { - notices.push(this.siteSettings.global_notice); + notices.push([this.siteSettings.global_notice, 'alert-global-notice']); } if (notices.length > 0) { - buffer.push(_.map(notices, function(text) { - return "
    " + text + "
    "; - }).join("")); + buffer.push(_.map(notices, n => "
    " + n[0] + "
    ").join("")); } } }); diff --git a/app/assets/javascripts/discourse/components/navigation-item.js.es6 b/app/assets/javascripts/discourse/components/navigation-item.js.es6 index e66fdd276c..56927d55bb 100644 --- a/app/assets/javascripts/discourse/components/navigation-item.js.es6 +++ b/app/assets/javascripts/discourse/components/navigation-item.js.es6 @@ -10,14 +10,14 @@ export default Ember.Component.extend(StringBuffer, { title: function() { var categoryName = this.get('content.categoryName'), name = this.get('content.name'), - extra; + extra = {}; if (categoryName) { - extra = { categoryName: categoryName }; name = "category"; + extra.categoryName = categoryName; } - return I18n.t("filters." + name + ".help", extra); - }.property("content.name"), + return I18n.t("filters." + name.replace("/", ".") + ".help", extra); + }.property("content.{categoryName,name}"), active: function() { return this.get('content.filterMode') === this.get('filterMode') || @@ -33,11 +33,11 @@ export default Ember.Component.extend(StringBuffer, { name = 'category'; extra.categoryName = Discourse.Formatter.toTitleCase(categoryName); } - return I18n.t("filters." + name + ".title", extra); - }.property('content.count'), + return I18n.t("filters." + name.replace("/", ".") + ".title", extra); + }.property('content.{categoryName,name,count}'), - renderString: function(buffer) { - var content = this.get('content'); + renderString(buffer) { + const content = this.get('content'); buffer.push(""); if (content.get('hasIcon')) { buffer.push(""); diff --git a/app/assets/javascripts/discourse/components/topic-status.js.es6 b/app/assets/javascripts/discourse/components/topic-status.js.es6 index eff062f2b2..4f4eb934f9 100644 --- a/app/assets/javascripts/discourse/components/topic-status.js.es6 +++ b/app/assets/javascripts/discourse/components/topic-status.js.es6 @@ -1,3 +1,4 @@ +import { iconHTML } from 'discourse/helpers/fa-icon'; import StringBuffer from 'discourse/mixins/string-buffer'; export default Ember.Component.extend(StringBuffer, { @@ -5,14 +6,16 @@ export default Ember.Component.extend(StringBuffer, { rerenderTriggers: ['topic.archived', 'topic.closed', 'topic.pinned', 'topic.visible', 'topic.unpinned', 'topic.is_warning'], - click: function() { - var topic = this.get('topic'); + click(e) { + if ($(e.target).hasClass('fa-thumb-tack')) { + const topic = this.get('topic'); - // only pin unpin for now - if (topic.get('pinned')) { - topic.clearPin(); - } else { - topic.rePin(); + // only pin unpin for now + if (topic.get('pinned')) { + topic.clearPin(); + } else { + topic.rePin(); + } } return false; @@ -22,24 +25,26 @@ export default Ember.Component.extend(StringBuffer, { return Discourse.User.current() && !this.get('disableActions'); }.property('disableActions'), - renderString: function(buffer) { + renderString(buffer) { + const self = this; - var self = this; - - var renderIconIf = function(conditionProp, name, key, actionable) { + const renderIconIf = function(conditionProp, name, key, actionable) { if (!self.get(conditionProp)) { return; } - var title = Handlebars.Utils.escapeExpression(I18n.t("topic_statuses." + key + ".help")); - var startTag = actionable ? "a href" : "span"; - var endTag = actionable ? "a" : "span"; - buffer.push("<" + startTag + " title='" + title + "' class='topic-status'>"); + const title = Handlebars.Utils.escapeExpression(I18n.t("topic_statuses." + key + ".help")), + startTag = actionable ? "a href" : "span", + endTag = actionable ? "a" : "span", + iconArgs = key === 'unpinned' ? { 'class': 'unpinned' } : null, + icon = iconHTML(name, iconArgs); + + buffer.push("<" + startTag + " title='" + title + "' class='topic-status'>" + icon + ""); }; renderIconIf('topic.is_warning', 'envelope', 'warning'); renderIconIf('topic.closed', 'lock', 'locked'); renderIconIf('topic.archived', 'lock', 'archived'); - renderIconIf('topic.pinned', 'thumb-tack', 'pinned', self.get("canAct") ); - renderIconIf('topic.unpinned', 'thumb-tack unpinned', 'unpinned', self.get("canAct")); + renderIconIf('topic.pinned', 'thumb-tack', 'pinned', this.get("canAct") ); + renderIconIf('topic.unpinned', 'thumb-tack', 'unpinned', this.get("canAct")); renderIconIf('topic.invisible', 'eye-slash', 'invisible'); } }); diff --git a/app/assets/javascripts/discourse/components/user-selector.js.es6 b/app/assets/javascripts/discourse/components/user-selector.js.es6 index f008c599b3..d0d210a689 100644 --- a/app/assets/javascripts/discourse/components/user-selector.js.es6 +++ b/app/assets/javascripts/discourse/components/user-selector.js.es6 @@ -57,6 +57,10 @@ export default TextField.extend({ }); }.on('didInsertElement'), + _removeAutocomplete: function() { + this.$().autocomplete('destroy'); + }.on('willDestroyElement'), + // THIS IS A HUGE HACK TO SUPPORT CLEARING THE INPUT _clearInput: function() { if (arguments.length > 1) { diff --git a/app/assets/javascripts/discourse/components/user-small.js.es6 b/app/assets/javascripts/discourse/components/user-small.js.es6 index b12a0ebb40..b89c5d01a4 100644 --- a/app/assets/javascripts/discourse/components/user-small.js.es6 +++ b/app/assets/javascripts/discourse/components/user-small.js.es6 @@ -1,7 +1,7 @@ export default Ember.Component.extend({ classNames: ['user-small'], - userPath: Discourse.computed.url('username', '/users/%@'), + userPath: Discourse.computed.url('user.username', '/users/%@'), name: function() { const name = this.get('user.name'); diff --git a/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 b/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 index 3909f31aff..6cdab98db9 100644 --- a/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 +++ b/app/assets/javascripts/discourse/controllers/avatar-selector.js.es6 @@ -3,16 +3,21 @@ import DiscourseController from 'discourse/controllers/controller'; export default DiscourseController.extend(ModalFunctionality, { uploadedAvatarTemplate: null, + saveDisabled: Em.computed.alias("uploading"), hasUploadedAvatar: Em.computed.or('uploadedAvatarTemplate', 'custom_avatar_upload_id'), selectedUploadId: function() { - switch (this.get("selected")) { - case "system": return this.get("system_avatar_upload_id"); - case "gravatar": return this.get("gravatar_avatar_upload_id"); - default: return this.get("custom_avatar_upload_id"); - } + switch (this.get("selected")) { + case "system": return this.get("system_avatar_upload_id"); + case "gravatar": return this.get("gravatar_avatar_upload_id"); + default: return this.get("custom_avatar_upload_id"); + } }.property('selected', 'system_avatar_upload_id', 'gravatar_avatar_upload_id', 'custom_avatar_upload_id'), + allowImageUpload: function() { + return Discourse.Utilities.allowsImages(); + }.property(), + actions: { useUploadedAvatar() { this.set("selected", "uploaded"); }, useGravatar() { this.set("selected", "gravatar"); }, diff --git a/app/assets/javascripts/discourse/controllers/composer.js.es6 b/app/assets/javascripts/discourse/controllers/composer.js.es6 index 341dba1fab..cc61d4a3b2 100644 --- a/app/assets/javascripts/discourse/controllers/composer.js.es6 +++ b/app/assets/javascripts/discourse/controllers/composer.js.es6 @@ -348,7 +348,7 @@ export default DiscourseController.extend({ // If we show the subcategory list, scope the categories drop down to // the category we opened the composer with. - if (Discourse.SiteSettings.show_subcategory_list) { + if (this.siteSettings.show_subcategory_list && opts.draftKey !== 'reply_as_new_topic') { this.set('scopedCategoryId', opts.categoryId); } diff --git a/app/assets/javascripts/discourse/controllers/create-account.js.es6 b/app/assets/javascripts/discourse/controllers/create-account.js.es6 index 03dc3d4f61..4f55d15d41 100644 --- a/app/assets/javascripts/discourse/controllers/create-account.js.es6 +++ b/app/assets/javascripts/discourse/controllers/create-account.js.es6 @@ -69,12 +69,20 @@ export default DiscourseController.extend(ModalFunctionality, { return I18n.t('user.password.instructions', {count: Discourse.SiteSettings.min_password_length}); }.property(), - // Validate the name. It's not required. + nameInstructions: function() { + return I18n.t(Discourse.SiteSettings.full_name_required ? 'user.name.instructions_required' : 'user.name.instructions'); + }.property(), + + // Validate the name. nameValidation: function() { if (this.get('accountPasswordConfirm') === 0) { this.fetchConfirmationValue(); } + if (Discourse.SiteSettings.full_name_required && this.blank('accountName')) { + return Discourse.InputValidation.create({ failed: true }); + } + return Discourse.InputValidation.create({ok: true}); }.property('accountName'), diff --git a/app/assets/javascripts/discourse/controllers/invite-private.js.es6 b/app/assets/javascripts/discourse/controllers/invite-private.js.es6 deleted file mode 100644 index 94e1d6632d..0000000000 --- a/app/assets/javascripts/discourse/controllers/invite-private.js.es6 +++ /dev/null @@ -1,47 +0,0 @@ -import ModalFunctionality from 'discourse/mixins/modal-functionality'; -import ObjectController from 'discourse/controllers/object'; - -export default ObjectController.extend(ModalFunctionality, { - modalClass: 'invite', - - isAdmin: function(){ - return Discourse.User.currentProp("admin"); - }.property(), - - onShow: function(){ - this.set('controllers.modal.modalClass', 'invite-modal'); - this.set('emailOrUsername', ''); - }, - - disabled: function() { - if (this.get('saving')) return true; - return this.blank('emailOrUsername'); - }.property('emailOrUsername', 'saving'), - - buttonTitle: function() { - if (this.get('saving')) return I18n.t('topic.inviting'); - return I18n.t('topic.invite_private.action'); - }.property('saving'), - - actions: { - invite: function() { - if (this.get('disabled')) return; - - var self = this; - this.setProperties({saving: true, error: false}); - - // Invite the user to the private message - this.get('model').createInvite(this.get('emailOrUsername')).then(function(result) { - self.setProperties({saving: true, finished: true}); - - if(result && result.user) { - self.get('model.details.allowed_users').pushObject(result.user); - } - }).catch(function() { - self.setProperties({error: true, saving: false}); - }); - return false; - } - } - -}); diff --git a/app/assets/javascripts/discourse/controllers/invite.js.es6 b/app/assets/javascripts/discourse/controllers/invite.js.es6 index 6adc0f0208..0dcf67c695 100644 --- a/app/assets/javascripts/discourse/controllers/invite.js.es6 +++ b/app/assets/javascripts/discourse/controllers/invite.js.es6 @@ -6,103 +6,104 @@ export default ObjectController.extend(ModalFunctionality, { // If this isn't defined, it will proxy to the user model on the preferences // page which is wrong. - email: null, + emailOrUsername: null, isAdmin: function(){ return Discourse.User.currentProp("admin"); }.property(), - /** - Can we submit the form? - - @property disabled - **/ disabled: function() { if (this.get('saving')) return true; - if (this.blank('email')) return true; - if (!Discourse.Utilities.emailValid(this.get('email'))) return true; + if (this.blank('emailOrUsername')) return true; + if (!this.get('invitingToTopic') && !Discourse.Utilities.emailValid(this.get('emailOrUsername'))) return true; if (this.get('model.details.can_invite_to')) return false; if (this.get('isPrivateTopic') && this.blank('groupNames')) return true; return false; - }.property('email', 'isPrivateTopic', 'groupNames', 'saving'), + }.property('emailOrUsername', 'invitingToTopic', 'isPrivateTopic', 'groupNames', 'saving'), - /** - The current text for the invite button - - @property buttonTitle - **/ buttonTitle: function() { - if (this.get('saving')) return I18n.t('topic.inviting'); - return I18n.t('topic.invite_reply.action'); + return this.get('saving') ? I18n.t('topic.inviting') : I18n.t('topic.invite_reply.action'); }.property('saving'), - /** - We are inviting to a topic if the model isn't the current user. The current user would - mean we are inviting to the forum in general. - - @property invitingToTopic - **/ + // We are inviting to a topic if the model isn't the current user. + // The current user would mean we are inviting to the forum in general. invitingToTopic: function() { return this.get('model') !== Discourse.User.current(); }.property('model'), - /** - Is Private Topic? (i.e. visible only to specific group members) - - @property isPrivateTopic - **/ + // Is Private Topic? (i.e. visible only to specific group members) isPrivateTopic: Em.computed.and('invitingToTopic', 'model.category.read_restricted'), - /** - Instructional text for the modal. + isMessage: Em.computed.equal('model.archetype', 'private_message'), - @property inviteInstructions - **/ + // Allow Existing Members? (username autocomplete) + allowExistingMembers: function() { + return this.get('invitingToTopic') && !this.get('isPrivateTopic'); + }.property('invitingToTopic', 'isPrivateTopic'), + + // Show Groups? (add invited user to private group) + showGroups: function() { + return this.get('isAdmin') && (Discourse.Utilities.emailValid(this.get('emailOrUsername')) || this.get('isPrivateTopic') || !this.get('invitingToTopic')) && !Discourse.SiteSettings.enable_sso; + }.property('isAdmin', 'emailOrUsername', 'isPrivateTopic', 'invitingToTopic'), + + // Instructional text for the modal. inviteInstructions: function() { - if (this.get('invitingToTopic')) { - return I18n.t('topic.invite_reply.to_topic'); + if (Discourse.SiteSettings.enable_sso) { + // inviting existing user when SSO enabled + return I18n.t('topic.invite_reply.sso_enabled'); + } else if (this.get('isMessage')) { + // inviting to a message + return I18n.t('topic.invite_private.email_or_username'); + } else if (this.get('invitingToTopic')) { + // when inviting to topic, display instructions based on provided entity + if (this.blank('emailOrUsername')) { + return I18n.t('topic.invite_reply.to_topic_blank'); + } else if (Discourse.Utilities.emailValid(this.get('emailOrUsername'))) { + return I18n.t('topic.invite_reply.to_topic_email'); + } else { + return I18n.t('topic.invite_reply.to_topic_username'); + } } else { + // inviting to forum return I18n.t('topic.invite_reply.to_forum'); } - }.property('invitingToTopic'), + }.property('isMessage', 'invitingToTopic', 'emailOrUsername'), - /** - Instructional text for the group selection. - - @property groupInstructions - **/ + // Instructional text for the group selection. groupInstructions: function() { - if (this.get('isPrivateTopic')) { - return I18n.t('topic.automatically_add_to_groups_required'); - } else { - return I18n.t('topic.automatically_add_to_groups_optional'); - } + return this.get('isPrivateTopic') ? + I18n.t('topic.automatically_add_to_groups_required') : + I18n.t('topic.automatically_add_to_groups_optional'); }.property('isPrivateTopic'), - /** - Function to find groups. - **/ - groupFinder: function(term) { + groupFinder(term) { return Discourse.Group.findAll({search: term, ignore_automatic: true}); }, - /** - The "success" text for when the invite was created. - - @property successMessage - **/ successMessage: function() { - return I18n.t('topic.invite_reply.success', { email: this.get('email') }); - }.property('email'), + if (this.get('isMessage')) { + return I18n.t('topic.invite_private.success'); + } else if ( Discourse.Utilities.emailValid(this.get('emailOrUsername')) ) { + return I18n.t('topic.invite_reply.success_email', { emailOrUsername: this.get('emailOrUsername') }); + } else { + return I18n.t('topic.invite_reply.success_username'); + } + }.property('isMessage', 'emailOrUsername'), - /** - Reset the modal to allow a new user to be invited. + errorMessage: function() { + return this.get('isMessage') ? I18n.t('topic.invite_private.error') : I18n.t('topic.invite_reply.error'); + }.property('isMessage'), - @method reset - **/ - reset: function() { + placeholderKey: function() { + return Discourse.SiteSettings.enable_sso ? + 'topic.invite_reply.username_placeholder' : + 'topic.invite_private.email_or_username_placeholder'; + }.property(), + + // Reset the modal to allow a new user to be invited. + reset() { this.setProperties({ - email: null, + emailOrUsername: null, groupNames: null, error: false, saving: false, @@ -112,34 +113,26 @@ export default ObjectController.extend(ModalFunctionality, { actions: { - /** - Create the invite and update the modal accordingly. - - @method createInvite - **/ - createInvite: function() { - + createInvite() { if (this.get('disabled')) { return; } - var self = this; - var groupNames = this.get('groupNames'); - var userInvitedController = this.get('controllers.user-invited'); + const groupNames = this.get('groupNames'), + userInvitedController = this.get('controllers.user-invited'); this.setProperties({ saving: true, error: false }); - this.get('model').createInvite(this.get('email'), groupNames).then(function() { - self.setProperties({ saving: false, finished: true }); - if (!self.get('invitingToTopic')) { - Discourse.Invite.findInvitedBy(Discourse.User.current()).then(function (invite_model) { - userInvitedController.set('model', invite_model); - userInvitedController.set('totalInvites', invite_model.invites.length); - }); - } - }).catch(function() { - self.setProperties({ saving: false, error: true }); - }); - return false; + + return this.get('model').createInvite(this.get('emailOrUsername'), groupNames).then(result => { + this.setProperties({ saving: false, finished: true }); + if (!this.get('invitingToTopic')) { + Discourse.Invite.findInvitedBy(Discourse.User.current()).then(invite_model => { + userInvitedController.set('model', invite_model); + userInvitedController.set('totalInvites', invite_model.invites.length); + }); + } else if (this.get('isMessage') && result && result.user) { + this.get('model.details.allowed_users').pushObject(result.user); + } + }).catch(() => this.setProperties({ saving: false, error: true })); } } - }); diff --git a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 index 0824990e5a..65bf573193 100644 --- a/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 +++ b/app/assets/javascripts/discourse/controllers/navigation/default.js.es6 @@ -1,11 +1,26 @@ import DiscourseController from 'discourse/controllers/controller'; export default DiscourseController.extend({ + needs: ['discovery', 'discovery/topics'], + categories: function() { return Discourse.Category.list(); }.property(), navItems: function() { - return Discourse.NavItem.buildList(); - }.property() + return Discourse.NavItem.buildList(null, {filterMode: this.get('filterMode')}); + }.property('filterMode'), + + isSearch: Em.computed.equal('filterMode', 'search'), + + searchTerm: Em.computed.alias('controllers.discovery/topics.model.params.search'), + + actions: { + search: function(){ + var discovery = this.get('controllers.discovery/topics'); + var model = discovery.get('model'); + discovery.set('search', this.get("searchTerm")); + model.refreshSort(); + } + } }); diff --git a/app/assets/javascripts/discourse/controllers/preferences.js.es6 b/app/assets/javascripts/discourse/controllers/preferences.js.es6 index b7a3bb54df..07120a7c84 100644 --- a/app/assets/javascripts/discourse/controllers/preferences.js.es6 +++ b/app/assets/javascripts/discourse/controllers/preferences.js.es6 @@ -39,6 +39,10 @@ export default ObjectController.extend(CanCheckEmails, { canEditName: Discourse.computed.setting('enable_names'), + nameInstructions: function() { + return I18n.t(Discourse.SiteSettings.full_name_required ? 'user.name.instructions_required' : 'user.name.instructions'); + }.property(), + canSelectTitle: function() { return this.siteSettings.enable_badges && this.get('model.has_title_badges'); }.property('model.badge_count'), diff --git a/app/assets/javascripts/discourse/controllers/quote-button.js.es6 b/app/assets/javascripts/discourse/controllers/quote-button.js.es6 index fc4c759c0f..d3b984e913 100644 --- a/app/assets/javascripts/discourse/controllers/quote-button.js.es6 +++ b/app/assets/javascripts/discourse/controllers/quote-button.js.es6 @@ -19,8 +19,11 @@ export default DiscourseController.extend({ // anonymous users cannot "quote-reply" if (!this.currentUser) return; - // don't display the "quote-reply" button if we can't at least reply as a new topic - if (!this.get('controllers.topic.model.details.can_reply_as_new_topic')) return; + // don't display the "quote-reply" button if we can't reply + const topicDetails = this.get('controllers.topic.model.details'); + if (!(topicDetails.get('can_reply_as_new_topic') || topicDetails.get('can_create_post'))) { + return; + } const selection = window.getSelection(); // no selections diff --git a/app/assets/javascripts/discourse/controllers/topic.js.es6 b/app/assets/javascripts/discourse/controllers/topic.js.es6 index c99a986550..c532e55ea1 100644 --- a/app/assets/javascripts/discourse/controllers/topic.js.es6 +++ b/app/assets/javascripts/discourse/controllers/topic.js.es6 @@ -427,8 +427,8 @@ export default ObjectController.extend(Discourse.SelectedPostsCount, BufferedCon }).then(function() { return Em.isEmpty(quotedText) ? Discourse.Post.loadQuote(post.get('id')) : quotedText; }).then(function(q) { - const postUrl = "" + location.protocol + "//" + location.host + (post.get('url')), - postLink = "[" + self.get('title') + "](" + postUrl + ")"; + const postUrl = "" + location.protocol + "//" + location.host + post.get('url'), + postLink = "[" + Handlebars.escapeExpression(self.get('title')) + "](" + postUrl + ")"; composerController.appendText(I18n.t("post.continue_discussion", { postLink: postLink }) + "\n\n" + q); }); }, diff --git a/app/assets/javascripts/discourse/controllers/user-dropdown.js.es6 b/app/assets/javascripts/discourse/controllers/user-dropdown.js.es6 index af91f6c6f1..b249ea1504 100644 --- a/app/assets/javascripts/discourse/controllers/user-dropdown.js.es6 +++ b/app/assets/javascripts/discourse/controllers/user-dropdown.js.es6 @@ -1,10 +1,25 @@ export default Ember.ArrayController.extend({ showAdminLinks: Em.computed.alias("currentUser.staff"), + allowAnon: function(){ + return this.siteSettings.allow_anonymous_posting && + (this.get("currentUser.trust_level") >= this.siteSettings.anonymous_posting_min_trust_level || + this.get("isAnon")); + }.property(), + + isAnon: function(){ + return this.get("currentUser.is_anonymous"); + }.property(), + actions: { logout() { Discourse.logout(); return false; + }, + toggleAnon() { + Discourse.ajax("/users/toggle-anon", {method: 'POST'}).then(function(){ + window.location.reload(); + }); } } }); diff --git a/app/assets/javascripts/discourse/helpers/period-title.js.es6 b/app/assets/javascripts/discourse/helpers/period-title.js.es6 index c856439349..36ca2a6920 100644 --- a/app/assets/javascripts/discourse/helpers/period-title.js.es6 +++ b/app/assets/javascripts/discourse/helpers/period-title.js.es6 @@ -1,9 +1,11 @@ import { iconHTML } from 'discourse/helpers/fa-icon'; -const TITLE_SUBS = { yearly: 'this_year', - monthly: 'this_month', - daily: 'today', - all: 'all' }; +const TITLE_SUBS = { + all: 'all_time', + yearly: 'this_year', + monthly: 'this_month', + daily: 'today', +}; export default Ember.Handlebars.makeBoundHelper(function (period) { const title = I18n.t('filters.top.' + (TITLE_SUBS[period] || 'this_week')); diff --git a/app/assets/javascripts/discourse/helpers/user-status.js.es6 b/app/assets/javascripts/discourse/helpers/user-status.js.es6 index 7976d5b5d1..7a5ddbd78f 100644 --- a/app/assets/javascripts/discourse/helpers/user-status.js.es6 +++ b/app/assets/javascripts/discourse/helpers/user-status.js.es6 @@ -1,20 +1,17 @@ -import registerUnbound from 'discourse/helpers/register-unbound'; +import { iconHTML } from 'discourse/helpers/fa-icon'; const Safe = Handlebars.SafeString; -registerUnbound('user-status', function(user) { +export default Ember.Handlebars.makeBoundHelper(function(user, args) { if (!user) { return; } - var name = Handlebars.Utils.escapeExpression(user.get('name')); + const name = Handlebars.Utils.escapeExpression(user.get('name')); + const currentUser = args.hash.currentUser; - if(Discourse.User.currentProp("admin") || Discourse.User.currentProp("moderator")) { - if(user.get('admin')) { - var adminDesc = I18n.t('user.admin', {user: name}); - return new Safe(''); - } + if (currentUser && user.get('admin') && currentUser.get('staff')) { + return new Safe(iconHTML('shield', { label: I18n.t('user.admin', { user: name }) })); } - if(user.get('moderator')){ - var modDesc = I18n.t('user.moderator', {user: name}); - return new Safe(''); + if (user.get('moderator')) { + return new Safe(iconHTML('shield', { label: I18n.t('user.moderator', { user: name }) })); } }); diff --git a/app/assets/javascripts/discourse/lib/Markdown.Editor.js b/app/assets/javascripts/discourse/lib/Markdown.Editor.js index 6e5c1185d4..7c6ef13587 100644 --- a/app/assets/javascripts/discourse/lib/Markdown.Editor.js +++ b/app/assets/javascripts/discourse/lib/Markdown.Editor.js @@ -1282,19 +1282,6 @@ } }); - // Auto-indent on shift-enter - util.addEvent(inputBox, "keyup", function (key) { - if (key.shiftKey && !key.ctrlKey && !key.metaKey) { - var keyCode = key.charCode || key.keyCode; - // Character 13 is Enter - if (keyCode === 13) { - var fakeButton = {}; - fakeButton.textOp = bindCommand("doAutoindent"); - doClick(fakeButton); - } - } - }); - // Perform the button's action. @@ -1542,57 +1529,83 @@ }; commandProto.doBold = function (chunk, postProcessing) { - return this.doBorI(chunk, postProcessing, 2, this.getString("boldexample")); + return this.doSurroundLines(chunk, postProcessing, 2, this.getString("boldexample")); }; commandProto.doItalic = function (chunk, postProcessing) { - return this.doBorI(chunk, postProcessing, 1, this.getString("italicexample")); + return this.doSurroundLines(chunk, postProcessing, 1, this.getString("italicexample")); }; - // chunk: The selected region that will be enclosed with */** + commandProto.doSurroundLines = function(realChunk, postProcessing, nStars, fallbackText) { + realChunk.trimWhitespace(); + + // Look for stars before and after, absorb them into the selection. + var starsBefore = /(\**$)/.exec(realChunk.before)[0]; + var starsAfter = /(^\**)/.exec(realChunk.after)[0]; + + realChunk.before = realChunk.before.replace(/(\**$)/, ""); + realChunk.after = realChunk.after.replace(/(^\**)/, ""); + + var lines = (starsBefore + realChunk.selection + starsAfter).split("\n"); + + // Don't show the fallback text if more than one line is selected, + // it's probably a break between paragraphs. + if (lines.length > 1) { + fallbackText = ""; + } + + for(var i=0; i 1) { + lines[i] = newChunk.before + newChunk.selection + newChunk.after; + } else { + realChunk.startTag = newChunk.before; + realChunk.endTag = newChunk.after; + lines[i] = newChunk.selection; + } + } + + realChunk.selection = lines.join("\n"); + }; + + // chunk: The selected region that will be enclosed with * or ** // nStars: 1 for italics, 2 for bold - // insertText: If you just click the button without highlighting text, this gets inserted - commandProto.doBorI = function (chunk, postProcessing, nStars, insertText) { - - // Get rid of whitespace and fixup newlines. + // fallbackText: If you just click the button without highlighting text, this gets inserted + commandProto.doSurroundLine = function (chunk, postProcessing, nStars, fallbackText) { + // Get rid of whitespace chunk.trimWhitespace(); - chunk.selection = chunk.selection.replace(/\n{2,}/g, "\n"); - // Look for stars before and after. Is the chunk already marked up? - // note that these regex matches cannot fail - var starsBefore = /(\**$)/.exec(chunk.before)[0]; - var starsAfter = /(^\**)/.exec(chunk.after)[0]; - - var prevStars = Math.min(starsBefore.length, starsAfter.length); + var minStars = Math.min(chunk.before.length, chunk.after.length); // Remove stars if we have to since the button acts as a toggle. - if ((prevStars >= nStars) && (prevStars != 2 || nStars != 1)) { + if ((minStars >= nStars) && (minStars != 2 || nStars != 1)) { chunk.before = chunk.before.replace(re("[*]{" + nStars + "}$", ""), ""); chunk.after = chunk.after.replace(re("^[*]{" + nStars + "}", ""), ""); } - else if (!chunk.selection && starsAfter) { - // It's not really clear why this code is necessary. It just moves - // some arbitrary stuff around. - chunk.after = chunk.after.replace(/^([*_]*)/, ""); - chunk.before = chunk.before.replace(/(\s?)$/, ""); - var whitespace = re.$1; - chunk.before = chunk.before + starsAfter + whitespace; - } else { - // In most cases, if you don't have any selected text and click the button // you'll get a selected, marked up region with the default text inserted. - if (!chunk.selection && !starsAfter) { - chunk.selection = insertText; + if (!chunk.selection && !chunk.after) { + chunk.selection = fallbackText; } - // Add the true markup. - var markup = nStars <= 1 ? "*" : "**"; // shouldn't the test be = ? - chunk.before = chunk.before + markup; - chunk.after = markup + chunk.after; + // Only operate if it's not a blank line + if (chunk.selection) { + // Add the true markup. + var markup = nStars === 1 ? "*" : "**"; + chunk.before = chunk.before + markup; + chunk.after = markup + chunk.after; + } } - - return; }; commandProto.stripLinkDefs = function (text, defsToAdd) { @@ -1765,51 +1778,6 @@ } }; - // When making a list, hitting shift-enter will put your cursor on the next line - // at the current indent level. - commandProto.doAutoindent = function (chunk, postProcessing) { - - var commandMgr = this, - fakeSelection = false; - - chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/, "\n\n"); - chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/, "\n\n"); - chunk.before = chunk.before.replace(/(\n|^)[ \t]+\n$/, "\n\n"); - - // There's no selection, end the cursor wasn't at the end of the line: - // The user wants to split the current list item / code line / blockquote line - // (for the latter it doesn't really matter) in two. Temporarily select the - // (rest of the) line to achieve this. - if (!chunk.selection && !/^[ \t]*(?:\n|$)/.test(chunk.after)) { - chunk.after = chunk.after.replace(/^[^\n]*/, function (wholeMatch) { - chunk.selection = wholeMatch; - return ""; - }); - fakeSelection = true; - } - - if (/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(chunk.before)) { - if (commandMgr.doList) { - commandMgr.doList(chunk); - } - } - if (/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(chunk.before)) { - if (commandMgr.doBlockquote) { - commandMgr.doBlockquote(chunk); - } - } - if (/(\n|^)(\t|[ ]{4,}).*\n$/.test(chunk.before)) { - if (commandMgr.doCode) { - commandMgr.doCode(chunk); - } - } - - if (fakeSelection) { - chunk.after = chunk.selection + chunk.after; - chunk.selection = ""; - } - }; - commandProto.doBlockquote = function (chunk, postProcessing) { chunk.selection = chunk.selection.replace(/^(\n*)([^\r]+?)(\n*)$/, diff --git a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 b/app/assets/javascripts/discourse/lib/autocomplete.js.es6 index 5dc9b87fd1..d3f2ea0d17 100644 --- a/app/assets/javascripts/discourse/lib/autocomplete.js.es6 +++ b/app/assets/javascripts/discourse/lib/autocomplete.js.es6 @@ -33,11 +33,23 @@ var keys = { }; +let inputTimeout; + export default function(options) { var autocompletePlugin = this; if (this.length === 0) return; + if (options === 'destroy') { + Ember.run.cancel(inputTimeout); + + $(this).off('keypress.autocomplete') + .off('keydown.autocomplete') + .off('paste.autocomplete'); + + return; + } + if (options && options.cancel && this.data("closeAutocomplete")) { this.data("closeAutocomplete")(); return this; @@ -252,13 +264,13 @@ export default function(options) { closeAutocomplete(); }); - $(this).on('paste', function() { + $(this).on('paste.autocomplete', function() { _.delay(function(){ me.trigger("keydown"); }, 50); }); - $(this).keypress(function(e) { + $(this).on('keypress.autocomplete', function(e) { var caretPosition, term; // keep hunting backwards till you hit a the @ key @@ -277,7 +289,7 @@ export default function(options) { } }); - $(this).keydown(function(e) { + $(this).on('keydown.autocomplete', function(e) { var c, caretPosition, i, initial, next, prev, prevIsGood, stopFound, term, total, userToComplete; if(e.ctrlKey || e.altKey || e.metaKey){ @@ -286,7 +298,9 @@ export default function(options) { if(options.allowAny){ // saves us wiring up a change event as well, keypress is while its pressed - _.delay(function(){ + + Ember.run.cancel(inputTimeout); + inputTimeout = Ember.run.later(function(){ if(inputSelectedItems.length === 0) { inputSelectedItems.push(""); } @@ -299,7 +313,7 @@ export default function(options) { } } - },50); + }, 50); } if (!options.key) { @@ -332,7 +346,7 @@ export default function(options) { // ESC if (e.which === keys.esc) { - if (completeStart !== null) { + if (div !== null) { closeAutocomplete(); return false; } diff --git a/app/assets/javascripts/discourse/lib/click_track.js b/app/assets/javascripts/discourse/lib/click-track.js.es6 similarity index 86% rename from app/assets/javascripts/discourse/lib/click_track.js rename to app/assets/javascripts/discourse/lib/click-track.js.es6 index 9672c860e8..5360bc4c37 100644 --- a/app/assets/javascripts/discourse/lib/click_track.js +++ b/app/assets/javascripts/discourse/lib/click-track.js.es6 @@ -1,23 +1,10 @@ -/** - Used for tracking when the user clicks on a link +export default { + trackClick(e) { + // cancel click if triggered as part of selection. + if (Discourse.Utilities.selectedText() !== "") { return false; } - @class ClickTrack - @namespace Discourse - @module Discourse -**/ - -Discourse.ClickTrack = { - - /** - Track a click on a link - - @method trackClick - @param {jQuery.Event} e The click event that occurred - **/ - trackClick: function(e) { - if (Discourse.Utilities.selectedText()!=="") return false; //cancle click if triggered as part of selection. var $link = $(e.currentTarget); - if ($link.hasClass('lightbox')) return true; + if ($link.hasClass('lightbox')) { return true; } var href = $link.attr('href') || $link.data('href'), $article = $link.closest('article'), @@ -25,9 +12,7 @@ Discourse.ClickTrack = { topicId = $('#topic').data('topic-id'), userId = $link.data('user-id'); - if (!href || href.trim().length === 0){ - return; - } + if (!href || href.trim().length === 0) { return; } if (!userId) userId = $article.data('user-id'); diff --git a/app/assets/javascripts/discourse/lib/formatter.js b/app/assets/javascripts/discourse/lib/formatter.js index a1d6216fac..f2063e3786 100644 --- a/app/assets/javascripts/discourse/lib/formatter.js +++ b/app/assets/javascripts/discourse/lib/formatter.js @@ -261,6 +261,9 @@ var number = function(val) { val = parseInt(val, 10); if (isNaN(val)) val = 0; + if (val > 999999) { + return (val / 1000000).toFixed(1) + "M"; + } if (val > 999) { return (val / 1000).toFixed(1) + "K"; } diff --git a/app/assets/javascripts/discourse/lib/lightbox.js.es6 b/app/assets/javascripts/discourse/lib/lightbox.js.es6 index e45c1f56aa..96630d0505 100644 --- a/app/assets/javascripts/discourse/lib/lightbox.js.es6 +++ b/app/assets/javascripts/discourse/lib/lightbox.js.es6 @@ -3,7 +3,7 @@ import loadScript from 'discourse/lib/load-script'; export default function($elem) { $("a.lightbox", $elem).each(function(i, e) { loadScript("/javascripts/jquery.magnific-popup-min.js").then(function() { - var $e = $(e); + const $e = $(e); // do not lightbox spoiled images if ($e.parents(".spoiler").length > 0 || $e.parents(".spoiled").length > 0) { return; } @@ -14,30 +14,30 @@ export default function($elem) { mainClass: "mfp-zoom-in", callbacks: { - open: function() { - var wrap = this.wrap, - img = this.currItem.img, - maxHeight = img.css("max-height"); + open() { + const wrap = this.wrap, + img = this.currItem.img, + maxHeight = img.css("max-height"); wrap.on("click.pinhandler", "img", function() { wrap.toggleClass("mfp-force-scrollbars"); img.css("max-height", wrap.hasClass("mfp-force-scrollbars") ? "none" : maxHeight); }); }, - beforeClose: function() { + beforeClose() { this.wrap.off("click.pinhandler"); this.wrap.removeClass("mfp-force-scrollbars"); } }, image: { - titleSrc: function(item) { - var href = item.el.data("download-href") || item.src; - return [ - item.el.attr("title"), - $("span.informations", item.el).text().replace('x', '×'), - '' + I18n.t("lightbox.download") + '' - ].join(' · '); + titleSrc(item) { + const href = item.el.data("download-href") || item.src; + let src = [item.el.attr("title"), $("span.informations", item.el).text().replace('x', '×')]; + if (!Discourse.SiteSettings.prevent_anons_from_downloading_files || Discourse.User.current()) { + src.push('' + I18n.t("lightbox.download") + ''); + } + return src.join(' · '); } } diff --git a/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 b/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 index d03d756106..a73d880207 100644 --- a/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 +++ b/app/assets/javascripts/discourse/lib/safari-hacks.js.es6 @@ -16,42 +16,88 @@ function positioningWorkaround($fixedElement) { const fixedElement = $fixedElement[0]; + var done = false; + + var blurredNow = function(evt) { + if (!done && _.include($(document.activeElement).parents(), fixedElement)) { + // something in focus so skip + return; + } + + done = true; + fixedElement.style.position = ''; + fixedElement.style.top = ''; + if (evt) { + evt.target.removeEventListener('blur', blurred); + } + }; + + var blurred = _.debounce(blurredNow, 250); var positioningHack = function(evt){ const self = this; + done = false; - if (fixedElement.style.position !== 'absolute') { - evt.preventDefault(); - fixedElement.style.position = 'absolute'; - fixedElement.style.top = (window.scrollY + $('.d-header').height() + 10) + 'px'; + // we need this, otherwise changing focus means we never clear + self.addEventListener('blur', blurred); + + if (fixedElement.style.position === 'absolute') { + if (this !== document.activeElement) { + evt.preventDefault(); + self.focus(); + } + return; } - var blurred = function() { - if (_.include($(document.activeElement).parents(), fixedElement)) { - // something in focus so skip + fixedElement.style.position = 'absolute'; + // get out of the way while opening keyboard + fixedElement.style.top = '0px'; + + var iPadOffset = 0; + if (window.innerHeight > window.innerWidth && navigator.userAgent.match(/iPad/)) { + // there is no way to get virtual keyboard height + iPadOffset = 640 - $(fixedElement).height(); + } + + var oldScrollY = 0; + + var positionElement = function(){ + if (done) { return; } - fixedElement.style.position = ''; - fixedElement.style.top = ''; - self.removeEventListener('blur', blurred); + if (Math.abs(oldScrollY - window.scrollY) < 20) { + return; + } + oldScrollY = window.scrollY; + fixedElement.style.top = window.scrollY + iPadOffset + 'px'; }; - blurred = _.debounce(blurred, 300); + // position once, correctly, after keyboard is shown + setTimeout(positionElement, 500); - if (this !== document.activeElement) { - self.focus(); - } - - self.addEventListener('blur', blurred); + evt.preventDefault(); + self.focus(); }; + function attachTouchStart(elem, fn) { + if (!$(elem).data('listening')) { + elem.addEventListener('touchstart', fn); + $(elem).data('listening', true); + } + } + const checkForInputs = _.debounce(function(){ + $fixedElement.find('button,a').each(function(){ + attachTouchStart(this, function(evt){ + done = true; + $(document.activeElement).blur(); + evt.preventDefault(); + $(this).click(); + }); + }); $fixedElement.find('input,textarea').each(function(){ - if (!$(this).data('listening')) { - this.addEventListener('touchstart', positioningHack); - $(this).data('listening', true); - } + attachTouchStart(this, positioningHack); }); }, 100); diff --git a/app/assets/javascripts/discourse/lib/search-for-term.js.es6 b/app/assets/javascripts/discourse/lib/search-for-term.js.es6 index 0c4f77dc71..12e05eb739 100644 --- a/app/assets/javascripts/discourse/lib/search-for-term.js.es6 +++ b/app/assets/javascripts/discourse/lib/search-for-term.js.es6 @@ -15,7 +15,7 @@ function searchForTerm(term, opts) { }; } - return Discourse.ajax('/search/', { data: data }).then(function(results){ + return Discourse.ajax('/search/query', { data: data }).then(function(results){ // Topics might not be included if (!results.topics) { results.topics = []; } if (!results.users) { results.users = []; } diff --git a/app/assets/javascripts/discourse/lib/show-modal.js.es6 b/app/assets/javascripts/discourse/lib/show-modal.js.es6 index 7fac8a1158..6007700930 100644 --- a/app/assets/javascripts/discourse/lib/show-modal.js.es6 +++ b/app/assets/javascripts/discourse/lib/show-modal.js.es6 @@ -12,4 +12,6 @@ export default (name, model) => { if (controller.onShow) { controller.onShow(); } controller.set('flashMessage', null); } + + return controller; }; diff --git a/app/assets/javascripts/discourse/lib/utilities.js b/app/assets/javascripts/discourse/lib/utilities.js index 9f7832cf46..11f5af2923 100644 --- a/app/assets/javascripts/discourse/lib/utilities.js +++ b/app/assets/javascripts/discourse/lib/utilities.js @@ -256,7 +256,12 @@ Discourse.Utilities = { @param {String} path The path **/ isAnImage: function(path) { - return (/\.(png|jpg|jpeg|gif|bmp|tif|tiff|svg|webp)$/i).test(path); + return (/\.(png|jpe?g|gif|bmp|tiff?|svg|webp)$/i).test(path); + }, + + allowsImages: function() { + return Discourse.Utilities.authorizesAllExtensions() || + (/(png|jpe?g|gif|bmp|tiff?|svg|webp)/i).test(Discourse.Utilities.authorizedExtensions()); }, /** @@ -266,7 +271,7 @@ Discourse.Utilities = { **/ allowsAttachments: function() { return Discourse.Utilities.authorizesAllExtensions() || - !(/((png|jpg|jpeg|gif|bmp|tif|tiff|svg|webp)(,\s)?)+$/i).test(Discourse.Utilities.authorizedExtensions()); + !(/((png|jpe?g|gif|bmp|tiff?|svg|webp)(,\s)?)+$/i).test(Discourse.Utilities.authorizedExtensions()); }, displayErrorForUpload: function(data) { diff --git a/app/assets/javascripts/discourse/mixins/add-archetype-class.js.es6 b/app/assets/javascripts/discourse/mixins/add-archetype-class.js.es6 new file mode 100644 index 0000000000..e1b7107466 --- /dev/null +++ b/app/assets/javascripts/discourse/mixins/add-archetype-class.js.es6 @@ -0,0 +1,21 @@ +// Mix this in to a view that has a `archetype` property to automatically +// add it to the body as the view is entered / left / model is changed. +// This is used for keeping the `body` style in sync for the background image. +export default { + _init: function() { this.get('archetype'); }.on('init'), + + _cleanUp() { + $('body').removeClass((_, css) => (css.match(/\barchetype-\S+/g) || []).join(' ')); + }, + + _archetypeChanged: function() { + const archetype = this.get('archetype'); + this._cleanUp(); + + if (archetype) { + $('body').addClass('archetype-' + archetype); + } + }.observes('archetype'), + + _willDestroyElement: function() { this._cleanUp(); }.on('willDestroyElement') +}; diff --git a/app/assets/javascripts/discourse/mixins/add-category-class.js.es6 b/app/assets/javascripts/discourse/mixins/add-category-class.js.es6 index 25f50ba282..d0226ff7a0 100644 --- a/app/assets/javascripts/discourse/mixins/add-category-class.js.es6 +++ b/app/assets/javascripts/discourse/mixins/add-category-class.js.es6 @@ -4,14 +4,12 @@ export default { _enterView: function() { this.get('categoryFullSlug'); }.on('init'), - _removeClasses: function() { - $('body').removeClass(function(idx, css) { - return (css.match(/\bcategory-\S+/g) || []).join(' '); - }); + _removeClasses() { + $('body').removeClass((_, css) => (css.match(/\bcategory-\S+/g) || []).join(' ')); }, _categoryChanged: function() { - var categoryFullSlug = this.get('categoryFullSlug'); + const categoryFullSlug = this.get('categoryFullSlug'); this._removeClasses(); if (categoryFullSlug) { diff --git a/app/assets/javascripts/discourse/models/composer.js.es6 b/app/assets/javascripts/discourse/models/composer.js.es6 index 15844923c1..fa101a177c 100644 --- a/app/assets/javascripts/discourse/models/composer.js.es6 +++ b/app/assets/javascripts/discourse/models/composer.js.es6 @@ -86,7 +86,7 @@ const Composer = Discourse.Model.extend({ const replyUsername = post.get('reply_to_user.username'); const replyAvatarTemplate = post.get('reply_to_user.avatar_template'); if (replyUsername && replyAvatarTemplate && this.get('action') === EDIT) { - postDescription += " " + I18n.t("post.in_reply_to") + " " + Discourse.Utilities.tinyAvatar(replyAvatarTemplate) + " " + replyUsername; + postDescription += " " + Discourse.Utilities.tinyAvatar(replyAvatarTemplate) + " " + replyUsername; } } } @@ -542,7 +542,6 @@ const Composer = Discourse.Model.extend({ // It's no longer a new post createdPost.set('newPost', false); topic.set('draft_sequence', result.draft_sequence); - topic.set('details.auto_close_at', result.topic_auto_close_at); postStream.commitPost(createdPost); addedToStream = true; } else { diff --git a/app/assets/javascripts/discourse/models/group.js.es6 b/app/assets/javascripts/discourse/models/group.js.es6 index eaa58e8e0c..6f426073aa 100644 --- a/app/assets/javascripts/discourse/models/group.js.es6 +++ b/app/assets/javascripts/discourse/models/group.js.es6 @@ -61,7 +61,9 @@ const Group = Discourse.Model.extend({ alias_level: this.get('alias_level'), visible: !!this.get('visible'), automatic_membership_email_domains: this.get('emailDomains'), - automatic_membership_retroactive: !!this.get('automatic_membership_retroactive') + automatic_membership_retroactive: !!this.get('automatic_membership_retroactive'), + title: this.get('title'), + primary_group: !!this.get('primary_group') }; }, diff --git a/app/assets/javascripts/discourse/models/nav_item.js b/app/assets/javascripts/discourse/models/nav_item.js index c081fbcd2f..41280548f7 100644 --- a/app/assets/javascripts/discourse/models/nav_item.js +++ b/app/assets/javascripts/discourse/models/nav_item.js @@ -84,7 +84,15 @@ Discourse.NavItem.reopenClass({ args = args || {}; if (category) { args.category = category } - return Discourse.SiteSettings.top_menu.split("|").map(function(i) { + var items = Discourse.SiteSettings.top_menu.split("|"); + + if (args.filterMode && !_.some(items, function(i){ + return i.indexOf(args.filterMode) !== -1; + })) { + items.push(args.filterMode); + } + + return items.map(function(i) { return Discourse.NavItem.fromText(i, args); }).filter(function(i) { return i !== null && !(category && i.get("name").indexOf("categor") === 0); diff --git a/app/assets/javascripts/discourse/models/post-stream.js.es6 b/app/assets/javascripts/discourse/models/post-stream.js.es6 index 512c8d9ce3..7c3ae0cf26 100644 --- a/app/assets/javascripts/discourse/models/post-stream.js.es6 +++ b/app/assets/javascripts/discourse/models/post-stream.js.es6 @@ -624,9 +624,6 @@ const PostStream = Ember.Object.extend({ return existing; } - // Update the auto_close_at value of the topic - this.set("topic.details.auto_close_at", post.get("topic_auto_close_at")); - post.set('topic', this.get('topic')); postIdentityMap.set(post.get('id'), post); diff --git a/app/assets/javascripts/discourse/models/topic_list.js b/app/assets/javascripts/discourse/models/topic_list.js index 01e3f12697..dce4524d0f 100644 --- a/app/assets/javascripts/discourse/models/topic_list.js +++ b/app/assets/javascripts/discourse/models/topic_list.js @@ -41,8 +41,13 @@ Discourse.TopicList = Discourse.Model.extend({ var self = this, params = this.get('params'); - params.order = order; - params.ascending = ascending; + params.order = order || params.order; + + if (ascending === undefined) { + params.ascending = ascending; + } else { + params.ascending = ascending; + } this.set('loaded', false); var finder = finderFor(this.get('filter'), params); diff --git a/app/assets/javascripts/discourse/routes/application.js.es6 b/app/assets/javascripts/discourse/routes/application.js.es6 index 3ba76b6490..45dbfbf77c 100644 --- a/app/assets/javascripts/discourse/routes/application.js.es6 +++ b/app/assets/javascripts/discourse/routes/application.js.es6 @@ -157,20 +157,21 @@ const ApplicationRoute = Discourse.Route.extend({ const returnPath = encodeURIComponent(window.location.pathname); window.location = Discourse.getURL('/session/sso?return_path=' + returnPath); } else { - this._autoLogin('login', () => this.controllerFor('login').resetForm()); + this._autoLogin('login', 'login-modal', () => this.controllerFor('login').resetForm()); } }, handleShowCreateAccount() { - this._autoLogin('createAccount'); + this._autoLogin('createAccount', 'create-account'); }, - _autoLogin(modal, notAuto) { + _autoLogin(modal, modalClass, notAuto) { const methods = Em.get('Discourse.LoginMethod.all'); if (!this.siteSettings.enable_local_logins && methods.length === 1) { this.controllerFor('login').send('externalLogin', methods[0]); } else { showModal(modal); + this.controllerFor('modal').set('modalClass', modalClass); if (notAuto) { notAuto(); } } }, diff --git a/app/assets/javascripts/discourse/routes/discovery.js.es6 b/app/assets/javascripts/discourse/routes/discovery.js.es6 index c11e5ede4c..c12cb9a72c 100644 --- a/app/assets/javascripts/discourse/routes/discovery.js.es6 +++ b/app/assets/javascripts/discourse/routes/discovery.js.es6 @@ -9,7 +9,8 @@ const DiscoveryRoute = Discourse.Route.extend(Discourse.ScrollTop, Discourse.Ope redirect: function() { return this.redirectIfLoginRequired(); }, beforeModel: function(transition) { - if (transition.targetName.indexOf("discovery.top") === -1 && + if (transition.intent.url === "/" && + transition.targetName.indexOf("discovery.top") === -1 && Discourse.User.currentProp("should_be_redirected_to_top")) { Discourse.User.currentProp("should_be_redirected_to_top", false); this.replaceWith("discovery.top"); diff --git a/app/assets/javascripts/discourse/routes/preferences.js.es6 b/app/assets/javascripts/discourse/routes/preferences.js.es6 index 7fb2ba4a41..4fde634e0f 100644 --- a/app/assets/javascripts/discourse/routes/preferences.js.es6 +++ b/app/assets/javascripts/discourse/routes/preferences.js.es6 @@ -56,6 +56,7 @@ export default RestrictedUserRoute.extend(ShowFooter, { 'gravatar_avatar_upload_id', 'custom_avatar_upload_id' )); + bootbox.alert(I18n.t("user.change_avatar.cache_notice")); }); } diff --git a/app/assets/javascripts/discourse/routes/topic.js.es6 b/app/assets/javascripts/discourse/routes/topic.js.es6 index d7948ce3a3..725c895ead 100644 --- a/app/assets/javascripts/discourse/routes/topic.js.es6 +++ b/app/assets/javascripts/discourse/routes/topic.js.es6 @@ -69,16 +69,6 @@ const TopicRoute = Discourse.Route.extend(ShowFooter, { this.controllerFor('invite').reset(); }, - showPrivateInvite() { - showModal('invitePrivate', this.modelFor('topic')); - this.controllerFor('invitePrivate').setProperties({ - email: null, - error: false, - saving: false, - finished: false - }); - }, - showHistory(post) { showModal('history', post); this.controllerFor('history').refresh(post.get("id"), "latest"); diff --git a/app/assets/javascripts/discourse/templates/choose_topic.hbs b/app/assets/javascripts/discourse/templates/choose_topic.hbs index b13c977890..3300b22b6e 100644 --- a/app/assets/javascripts/discourse/templates/choose_topic.hbs +++ b/app/assets/javascripts/discourse/templates/choose_topic.hbs @@ -19,6 +19,5 @@ {{/each}} - {{/if}} {{/if}} diff --git a/app/assets/javascripts/discourse/templates/components/category-unread.hbs b/app/assets/javascripts/discourse/templates/components/category-unread.hbs new file mode 100644 index 0000000000..7cdd8913c4 --- /dev/null +++ b/app/assets/javascripts/discourse/templates/components/category-unread.hbs @@ -0,0 +1,6 @@ +{{#if category.unreadTopics}} + {{i18n 'filters.unread.lower_title_with_count' count=category.unreadTopics}} +{{/if}} +{{#if category.newTopics}} + {{i18n 'filters.new.lower_title_with_count' count=category.newTopics}} +{{/if}} diff --git a/app/assets/javascripts/discourse/templates/components/ip-lookup.hbs b/app/assets/javascripts/discourse/templates/components/ip-lookup.hbs index 56df09f1aa..578263c612 100644 --- a/app/assets/javascripts/discourse/templates/components/ip-lookup.hbs +++ b/app/assets/javascripts/discourse/templates/components/ip-lookup.hbs @@ -62,7 +62,7 @@ {{#each a in other_accounts}} - {{#link-to "adminUser" a}}{{avatar a usernamePath="user.username" imageSize="small"}} {{username}}{{/link-to}} + {{#link-to "adminUser" a}}{{avatar a usernamePath="user.username" imageSize="small"}} {{a.username}}{{/link-to}} {{a.trustLevel.id}} {{a.time_read}} {{a.topics_entered}} diff --git a/app/assets/javascripts/discourse/templates/components/pagedown-editor.hbs b/app/assets/javascripts/discourse/templates/components/pagedown-editor.hbs index f5c59ac08e..0c3cfc69a2 100644 --- a/app/assets/javascripts/discourse/templates/components/pagedown-editor.hbs +++ b/app/assets/javascripts/discourse/templates/components/pagedown-editor.hbs @@ -1,3 +1,4 @@
    {{textarea value=value elementId="wmd-input"}}
    +
    diff --git a/app/assets/javascripts/discourse/templates/composer.hbs b/app/assets/javascripts/discourse/templates/composer.hbs index 68e5c3a2a1..454ff27932 100644 --- a/app/assets/javascripts/discourse/templates/composer.hbs +++ b/app/assets/javascripts/discourse/templates/composer.hbs @@ -22,7 +22,7 @@ so I'm going to stop rendering it until we figure out what's up {{plugin-outlet "composer-open"}}
    - {{{model.actionTitle}}}: + {{{model.actionTitle}}} {{#if canEdit}} {{#if showEditReason}}
    diff --git a/app/assets/javascripts/discourse/templates/discovery/categories.hbs b/app/assets/javascripts/discourse/templates/discovery/categories.hbs index 2612f25f5b..3fdfdafd99 100644 --- a/app/assets/javascripts/discourse/templates/discovery/categories.hbs +++ b/app/assets/javascripts/discourse/templates/discovery/categories.hbs @@ -15,12 +15,9 @@
    {{category-title-link category=c}} - {{#if c.unreadTopics}} - {{i18n 'filters.unread.lower_title_with_count' count=c.unreadTopics}} - {{/if}} - {{#if c.newTopics}} - {{i18n 'filters.new.lower_title_with_count' count=c.newTopics}} - {{/if}} + {{#unless c.logo_url}} + {{category-unread category=c}} + {{/unless}}
    @@ -28,17 +25,16 @@
    {{{c.description_excerpt}}}
    + + {{#if c.logo_url}} + {{category-unread category=c}} + {{/if}} {{/if}} {{#if c.subcategories}}
    {{#each s in c.subcategories}} {{category-link s hideParent="true"}} - {{#if s.unreadTopics}} - {{unbound s.unreadTopics}} - {{/if}} - {{#if s.newTopics}} - {{unbound s.newTopics}} - {{/if}} + {{category-unread category=s}} {{/each}}
    {{/if}} diff --git a/app/assets/javascripts/discourse/templates/header.hbs b/app/assets/javascripts/discourse/templates/header.hbs index 02748e28da..f701c96748 100644 --- a/app/assets/javascripts/discourse/templates/header.hbs +++ b/app/assets/javascripts/discourse/templates/header.hbs @@ -13,14 +13,14 @@
    {{number t.posts_count}} - {{{format-age t.created_at}}} + {{{format-age t.last_posted_at}}} {{/each}} diff --git a/app/assets/javascripts/discourse/templates/modal/avatar_selector.hbs b/app/assets/javascripts/discourse/templates/modal/avatar_selector.hbs index 0e375179c2..33dd03b662 100644 --- a/app/assets/javascripts/discourse/templates/modal/avatar_selector.hbs +++ b/app/assets/javascripts/discourse/templates/modal/avatar_selector.hbs @@ -9,24 +9,27 @@ {{d-button action="refreshGravatar" title="user.change_avatar.refresh_gravatar_title" disabled=gravatarRefreshDisabled class="no-text" icon="refresh"}}
    -
    - - + {{avatar-uploader username=username + uploadedAvatarTemplate=uploadedAvatarTemplate + custom_avatar_upload_id=custom_avatar_upload_id + uploading=uploading + done="useUploadedAvatar"}} +
    + {{/if}} diff --git a/app/assets/javascripts/discourse/templates/modal/create-account.hbs b/app/assets/javascripts/discourse/templates/modal/create-account.hbs index 1e5934d206..87e472078d 100644 --- a/app/assets/javascripts/discourse/templates/modal/create-account.hbs +++ b/app/assets/javascripts/discourse/templates/modal/create-account.hbs @@ -42,7 +42,7 @@ - + {{#if passwordRequired}} diff --git a/app/assets/javascripts/discourse/templates/modal/edit-category-general.hbs b/app/assets/javascripts/discourse/templates/modal/edit-category-general.hbs index 2722479ed3..0ce793b705 100644 --- a/app/assets/javascripts/discourse/templates/modal/edit-category-general.hbs +++ b/app/assets/javascripts/discourse/templates/modal/edit-category-general.hbs @@ -27,15 +27,14 @@ {{#if showDescription}}
    - {{#if description}} - {{description}} + {{{description}}} {{else}} {{i18n 'category.no_description'}} {{/if}} {{#if topic_url}}
    - + {{d-button class="btn-small" action="showCategoryTopic" icon="pencil" label="category.change_in_category_topic"}} {{/if}}
    {{/if}} diff --git a/app/assets/javascripts/discourse/templates/modal/feature-topic.hbs b/app/assets/javascripts/discourse/templates/modal/feature-topic.hbs index d06840bf56..d2b28eb26d 100644 --- a/app/assets/javascripts/discourse/templates/modal/feature-topic.hbs +++ b/app/assets/javascripts/discourse/templates/modal/feature-topic.hbs @@ -2,7 +2,7 @@ {{#if pinned_at}}
    - {{d-button action="unpin" icon="thumb-tack" label="topic.actions.unpin" class="btn-primary"}} + {{d-button action="unpin" icon="thumb-tack" label="topic.feature.unpin" class="btn-primary"}}

    {{{unPinMessage}}}

    @@ -26,7 +26,7 @@ {{else}}
    - {{d-button action="pin" icon="thumb-tack" label="topic.actions.pin" class="btn-primary"}} + {{d-button action="pin" icon="thumb-tack" label="topic.feature.pin" class="btn-primary"}}

    {{{pinMessage}}}

    @@ -41,7 +41,7 @@
    - {{d-button action="pinGlobally" icon="thumb-tack" label="topic.actions.pin_globally" class="btn-primary"}} + {{d-button action="pinGlobally" icon="thumb-tack" label="topic.feature.pin_globally" class="btn-primary"}}

    {{i18n "topic.feature_topic.pin_globally"}}

    @@ -58,9 +58,9 @@
    {{#if isBanner}} - {{d-button action="removeBanner" icon="thumb-tack" label="topic.actions.remove_banner" class="btn-primary"}} + {{d-button action="removeBanner" icon="thumb-tack" label="topic.feature.remove_banner" class="btn-primary"}} {{else}} - {{d-button action="makeBanner" icon="thumb-tack" label="topic.actions.make_banner" class="btn-primary"}} + {{d-button action="makeBanner" icon="thumb-tack" label="topic.feature.make_banner" class="btn-primary"}} {{/if}}
    diff --git a/app/assets/javascripts/discourse/templates/modal/invite.hbs b/app/assets/javascripts/discourse/templates/modal/invite.hbs index 743fc6d2f4..e5e17e32e2 100644 --- a/app/assets/javascripts/discourse/templates/modal/invite.hbs +++ b/app/assets/javascripts/discourse/templates/modal/invite.hbs @@ -2,18 +2,19 @@ {{#if error}}
    - {{i18n 'topic.invite_reply.error'}} + {{errorMessage}}
    {{/if}} - {{#if finished}} {{{successMessage}}} {{else}} - - {{text-field value=email placeholderKey="topic.invite_reply.email_placeholder"}} - - {{#if isAdmin}} + {{#if allowExistingMembers}} + {{user-selector single="true" allowAny=true excludeCurrentUser="true" usernames=emailOrUsername includeGroups="true" placeholderKey=placeholderKey}} + {{else}} + {{text-field value=emailOrUsername placeholderKey="topic.invite_reply.email_placeholder"}} + {{/if}} + {{#if showGroups}} {{group-selector groupFinder=groupFinder groupNames=groupNames placeholderKey="topic.invite_private.group_name"}} {{/if}} @@ -21,9 +22,8 @@
    diff --git a/app/assets/javascripts/discourse/templates/modal/invite_private.hbs b/app/assets/javascripts/discourse/templates/modal/invite_private.hbs deleted file mode 100644 index 0284697cef..0000000000 --- a/app/assets/javascripts/discourse/templates/modal/invite_private.hbs +++ /dev/null @@ -1,23 +0,0 @@ - - diff --git a/app/assets/javascripts/discourse/templates/modal/modal.hbs b/app/assets/javascripts/discourse/templates/modal/modal.hbs index b7340453c7..4dd4c22b8a 100644 --- a/app/assets/javascripts/discourse/templates/modal/modal.hbs +++ b/app/assets/javascripts/discourse/templates/modal/modal.hbs @@ -1,23 +1,19 @@ diff --git a/app/assets/javascripts/discourse/templates/navigation/default.hbs b/app/assets/javascripts/discourse/templates/navigation/default.hbs index bd3015d44a..d95de6b043 100644 --- a/app/assets/javascripts/discourse/templates/navigation/default.hbs +++ b/app/assets/javascripts/discourse/templates/navigation/default.hbs @@ -1,3 +1,9 @@ +{{#if isSearch}} + +{{else}} {{bread-crumbs categories=categories}}
    diff --git a/app/assets/javascripts/discourse/templates/user/invited.hbs b/app/assets/javascripts/discourse/templates/user/invited.hbs index cdc8b7836f..3d394fe312 100644 --- a/app/assets/javascripts/discourse/templates/user/invited.hbs +++ b/app/assets/javascripts/discourse/templates/user/invited.hbs @@ -62,7 +62,7 @@ {{#if invite.reinvited}} {{i18n 'user.invited.reinvited'}} {{else}} - + {{/if}} {{/if}} diff --git a/app/assets/javascripts/discourse/templates/user/preferences.hbs b/app/assets/javascripts/discourse/templates/user/preferences.hbs index 5bd6133858..d8e5ff1e2b 100644 --- a/app/assets/javascripts/discourse/templates/user/preferences.hbs +++ b/app/assets/javascripts/discourse/templates/user/preferences.hbs @@ -32,7 +32,7 @@ {{/if}}
    - {{i18n 'user.name.instructions'}} + {{nameInstructions}}
    {{/if}} @@ -62,7 +62,7 @@ {{else}}
    - {{d-button action="checkEmail" actionParam=this title="admin.users.check_email.title" icon="envelope-o" label="admin.users.check_email.text"}} + {{d-button action="checkEmail" actionParam=model title="admin.users.check_email.title" icon="envelope-o" label="admin.users.check_email.text"}}
    {{/if}} diff --git a/app/assets/javascripts/discourse/templates/user/user.hbs b/app/assets/javascripts/discourse/templates/user/user.hbs index 689d272989..8fdb0ceeab 100644 --- a/app/assets/javascripts/discourse/templates/user/user.hbs +++ b/app/assets/javascripts/discourse/templates/user/user.hbs @@ -55,13 +55,13 @@
  • {{#link-to 'preferences' class="btn right"}}{{fa-icon "cog"}}{{i18n 'user.preferences'}}{{/link-to}}
  • {{/if}} {{#if canInviteToForum}} -
  • {{#link-to 'user.invited' class="btn right"}}{{fa-icon "envelope-o"}}{{i18n 'user.invited.title'}}{{/link-to}}
  • +
  • {{#link-to 'user.invited' class="btn right"}}{{fa-icon "user-plus"}}{{i18n 'user.invited.title'}}{{/link-to}}
  • {{/if}}
    -

    {{username}} {{user-status model}}

    +

    {{username}} {{user-status model currentUser=currentUser}}

    {{name}}

    {{#if title}}

    {{title}}

    diff --git a/app/assets/javascripts/discourse/templates/users.hbs b/app/assets/javascripts/discourse/templates/users.hbs index 83d9e8993f..58a20209e0 100644 --- a/app/assets/javascripts/discourse/templates/users.hbs +++ b/app/assets/javascripts/discourse/templates/users.hbs @@ -18,6 +18,8 @@ {{directory-toggle field="topic_count" order=order asc=asc}} {{directory-toggle field="post_count" order=order asc=asc}} {{directory-toggle field="topics_entered" order=order asc=asc}} + {{directory-toggle field="posts_read" order=order asc=asc}} + {{directory-toggle field="days_visited" order=order asc=asc}} {{#if showTimeRead}} {{i18n "directory.time_read"}} {{/if}} @@ -31,6 +33,8 @@ {{number item.model.topic_count}} {{number item.model.post_count}} {{number item.model.topics_entered}} + {{number item.model.posts_read}} + {{number item.model.days_visited}} {{#if showTimeRead}} {{unbound item.model.time_read}} {{/if}} diff --git a/app/assets/javascripts/discourse/views/category-chooser.js.es6 b/app/assets/javascripts/discourse/views/category-chooser.js.es6 index f0e39a8a1d..9f6fc1674f 100644 --- a/app/assets/javascripts/discourse/views/category-chooser.js.es6 +++ b/app/assets/javascripts/discourse/views/category-chooser.js.es6 @@ -9,11 +9,11 @@ export default ComboboxView.extend({ castInteger: true, content: function() { - var scopedCategoryId = this.get('scopedCategoryId'); + let scopedCategoryId = this.get('scopedCategoryId'); // Always scope to the parent of a category, if present if (scopedCategoryId) { - var scopedCat = Discourse.Category.findById(scopedCategoryId); + const scopedCat = Discourse.Category.findById(scopedCategoryId); scopedCategoryId = scopedCat.get('parent_category_id') || scopedCat.get('id'); } @@ -41,13 +41,13 @@ export default ComboboxView.extend({ } }.property(), - template: function(item) { + template(item) { - var category; + let category; // If we have no id, but text with the uncategorized name, we can use that badge. if (Ember.isEmpty(item.id)) { - var uncat = Discourse.Category.findUncategorized(); + const uncat = Discourse.Category.findUncategorized(); if (uncat && uncat.get('name') === item.text) { category = uncat; } @@ -56,15 +56,16 @@ export default ComboboxView.extend({ } if (!category) return item.text; - var result = categoryBadgeHTML(category, {link: false, allowUncategorized: true, hideParent: true}), - parentCategoryId = category.get('parent_category_id'); + let result = categoryBadgeHTML(category, {link: false, allowUncategorized: true, hideParent: true}); + const parentCategoryId = category.get('parent_category_id'); + if (parentCategoryId) { result = categoryBadgeHTML(Discourse.Category.findById(parentCategoryId), {link: false}) + " " + result; } result += " × " + category.get('topic_count') + ""; - var description = category.get('description'); + const description = category.get('description'); // TODO wtf how can this be null?; if (description && description !== 'null') { result += '
    ' + diff --git a/app/assets/javascripts/discourse/views/composer.js.es6 b/app/assets/javascripts/discourse/views/composer.js.es6 index fcd4c8a76f..e67e5c0102 100644 --- a/app/assets/javascripts/discourse/views/composer.js.es6 +++ b/app/assets/javascripts/discourse/views/composer.js.es6 @@ -125,7 +125,6 @@ const ComposerView = Discourse.View.extend(Ember.Evented, { this.set('controller.view', this); positioningWorkaround(this.$()); - }.on('didInsertElement'), _unlinkView: function() { @@ -520,19 +519,25 @@ const ComposerView = Discourse.View.extend(Ember.Evented, { }, childDidInsertElement() { - return this.initEditor(); + this.initEditor(); + + // Disable links in the preview + $('#wmd-preview').on('click.preview', (e) => { + e.preventDefault(); + return false; + }); }, childWillDestroyElement() { - const self = this; - this._unbindUploadTarget(); - Em.run.next(function() { + $('#wmd-preview').off('click.preview'); + + Em.run.next(() => { $('#main-outlet').css('padding-bottom', 0); // need to wait a bit for the "slide down" transition of the composer - Em.run.later(function() { - self.appEvents.trigger("composer:closed"); + Em.run.later(() => { + this.appEvents.trigger("composer:closed"); }, 400); }); }, diff --git a/app/assets/javascripts/discourse/views/flag.js.es6 b/app/assets/javascripts/discourse/views/flag.js.es6 index b948c35f0a..583452fca4 100644 --- a/app/assets/javascripts/discourse/views/flag.js.es6 +++ b/app/assets/javascripts/discourse/views/flag.js.es6 @@ -8,15 +8,13 @@ export default ModalBodyView.extend({ }.property('controller.flagTopic'), selectedChanged: function() { - const self = this; + Em.run.next(() => { + this.$("input[type='radio']").prop('checked', false); - Em.run.next(function() { - self.$("input[type='radio']").prop('checked', false); - - const nameKey = self.get('controller.selected.name_key'); + const nameKey = this.get('controller.selected.name_key'); if (!nameKey) { return; } - self.$('#radio_' + nameKey).prop('checked', 'true'); + this.$('#radio_' + nameKey).prop('checked', 'true'); }); }.observes('controller.selected.name_key') }); diff --git a/app/assets/javascripts/discourse/views/header.js.es6 b/app/assets/javascripts/discourse/views/header.js.es6 index 0271f6a501..59bb77f41d 100644 --- a/app/assets/javascripts/discourse/views/header.js.es6 +++ b/app/assets/javascripts/discourse/views/header.js.es6 @@ -125,6 +125,7 @@ export default Discourse.View.extend({ $(document).unbind('touchmove.discourse-dock'); this.$('a.unread-private-messages, a.unread-notifications, a[data-notifications]').off('click.notifications'); this.$('a[data-dropdown]').off('click.dropdown'); + $('body').off('keydown.header'); }.on('willDestroyElement'), _setup: function() { diff --git a/app/assets/javascripts/discourse/views/invite-private.js.es6 b/app/assets/javascripts/discourse/views/invite-private.js.es6 deleted file mode 100644 index 461a6e102d..0000000000 --- a/app/assets/javascripts/discourse/views/invite-private.js.es6 +++ /dev/null @@ -1,6 +0,0 @@ -import ModalBodyView from "discourse/views/modal-body"; - -export default ModalBodyView.extend({ - templateName: 'modal/invite_private', - title: I18n.t('topic.invite_private.title') -}); diff --git a/app/assets/javascripts/discourse/views/invite-reply-button.js.es6 b/app/assets/javascripts/discourse/views/invite-reply-button.js.es6 index fe30c68c96..bea163892a 100644 --- a/app/assets/javascripts/discourse/views/invite-reply-button.js.es6 +++ b/app/assets/javascripts/discourse/views/invite-reply-button.js.es6 @@ -6,11 +6,11 @@ export default ButtonView.extend({ attributeBindings: ['disabled'], disabled: Em.computed.or('controller.archived', 'controller.closed', 'controller.deleted'), - renderIcon: function(buffer) { + renderIcon(buffer) { buffer.push(""); }, - click: function() { - return this.get('controller').send('showInvite'); + click() { + this.get('controller').send('showInvite'); } }); diff --git a/app/assets/javascripts/discourse/views/invite.js.es6 b/app/assets/javascripts/discourse/views/invite.js.es6 index 03f4a72c4d..0c4a5b67a6 100644 --- a/app/assets/javascripts/discourse/views/invite.js.es6 +++ b/app/assets/javascripts/discourse/views/invite.js.es6 @@ -4,9 +4,13 @@ export default ModalBodyView.extend({ templateName: 'modal/invite', title: function() { - return this.get('controller.invitingToTopic') ? - I18n.t('topic.invite_reply.title') : - I18n.t('user.invited.create'); - }.property('controller.invitingToTopic') + if (this.get('controller.isMessage')) { + return I18n.t('topic.invite_private.title'); + } else if (this.get('controller.invitingToTopic')) { + return I18n.t('topic.invite_reply.title'); + } else { + return I18n.t('user.invited.create'); + } + }.property('controller.{invitingToTopic,isMessage}') }); diff --git a/app/assets/javascripts/discourse/views/modal-body.js.es6 b/app/assets/javascripts/discourse/views/modal-body.js.es6 index 720e955164..ee621d5e31 100644 --- a/app/assets/javascripts/discourse/views/modal-body.js.es6 +++ b/app/assets/javascripts/discourse/views/modal-body.js.es6 @@ -7,7 +7,7 @@ export default Discourse.View.extend({ // Focus on first element if (!Discourse.Mobile.mobileView && this.get('focusInput')) { - Em.run.schedule('afterRender', () => this.$('input:first').focus() ); + Em.run.schedule('afterRender', () => this.$('input:first').focus()); } const title = this.get('title'); diff --git a/app/assets/javascripts/discourse/views/modal.js.es6 b/app/assets/javascripts/discourse/views/modal.js.es6 index 4621445dc6..e69cd3c517 100644 --- a/app/assets/javascripts/discourse/views/modal.js.es6 +++ b/app/assets/javascripts/discourse/views/modal.js.es6 @@ -2,8 +2,24 @@ export default Ember.View.extend({ elementId: 'discourse-modal', templateName: 'modal/modal', classNameBindings: [':modal', ':hidden', 'controller.modalClass'], + attributeBindings: ['data-keyboard'], - click: function(e) { + // We handle ESC ourselves + 'data-keyboard': 'false', + + _bindOnInsert: function() { + $('html').on('keydown.discourse-modal', e => { + if (e.which === 27) { + Em.run.next(() => $('.modal-header a.close').click()); + } + }); + }.on('didInsertElement'), + + _bindOnDestroy: function() { + $('html').off('keydown.discourse-modal'); + }.on('willDestroyElement'), + + click(e) { const $target = $(e.target); if ($target.hasClass("modal-middle-container") || $target.hasClass("modal-outer-container")) { diff --git a/app/assets/javascripts/discourse/views/topic-map-container.js.es6 b/app/assets/javascripts/discourse/views/topic-map-container.js.es6 index 5dee27706c..b12cdd45e3 100644 --- a/app/assets/javascripts/discourse/views/topic-map-container.js.es6 +++ b/app/assets/javascripts/discourse/views/topic-map-container.js.es6 @@ -51,8 +51,7 @@ export default DiscourseContainerView.extend({ // If we have a private message if (this.get('topic.isPrivateMessage')) { - container.attachViewWithArgs({ topic: topic, showPrivateInviteAction: 'showPrivateInvite' }, PrivateMessageMapComponent); + container.attachViewWithArgs({ topic: topic, showPrivateInviteAction: 'showInvite' }, PrivateMessageMapComponent); } } }); - diff --git a/app/assets/javascripts/discourse/views/topic.js.es6 b/app/assets/javascripts/discourse/views/topic.js.es6 index 1050dc5a32..c649d896ff 100644 --- a/app/assets/javascripts/discourse/views/topic.js.es6 +++ b/app/assets/javascripts/discourse/views/topic.js.es6 @@ -1,8 +1,10 @@ import AddCategoryClass from 'discourse/mixins/add-category-class'; +import AddArchetypeClass from 'discourse/mixins/add-archetype-class'; +import ClickTrack from 'discourse/lib/click-track'; import { listenForViewEvent } from 'discourse/lib/app-events'; import { categoryBadgeHTML } from 'discourse/helpers/category-link'; -var TopicView = Discourse.View.extend(AddCategoryClass, Discourse.Scrolling, { +var TopicView = Discourse.View.extend(AddCategoryClass, AddArchetypeClass, Discourse.Scrolling, { templateName: 'topic', topicBinding: 'controller.model', userFiltersBinding: 'controller.userFilters', @@ -19,6 +21,8 @@ var TopicView = Discourse.View.extend(AddCategoryClass, Discourse.Scrolling, { postStream: Em.computed.alias('controller.postStream'), + archetype: Em.computed.alias('topic.archetype'), + _composeChanged: function() { var composerController = Discourse.get('router.composerController'); composerController.clearState(); @@ -52,7 +56,7 @@ var TopicView = Discourse.View.extend(AddCategoryClass, Discourse.Scrolling, { var $target = $(e.target); if ($target.hasClass('mention') || $target.parents('.expanded-embed').length) { return false; } - return Discourse.ClickTrack.trackClick(e); + return ClickTrack.trackClick(e); }); }.on('didInsertElement'), diff --git a/app/assets/javascripts/discourse/views/upload-selector.js.es6 b/app/assets/javascripts/discourse/views/upload-selector.js.es6 index 2a46973338..848405b527 100644 --- a/app/assets/javascripts/discourse/views/upload-selector.js.es6 +++ b/app/assets/javascripts/discourse/views/upload-selector.js.es6 @@ -13,6 +13,14 @@ export default ModalBodyView.extend({ title: function() { return uploadTranslate("title"); }.property(), uploadIcon: function() { return Discourse.Utilities.allowsAttachments() ? "fa-upload" : "fa-picture-o"; }.property(), + touchStart: function(evt) { + // HACK: workaround Safari iOS being really weird and not shipping click events + // should be fairly harmless on other touch devices + if (evt.target.id === "filename-input") { + this.$('#filename-input').click(); + } + }, + tip: function() { const source = this.get("controller.local") ? "local" : "remote", opts = { authorized_extensions: Discourse.Utilities.authorizedExtensions() }; diff --git a/app/assets/javascripts/discourse/views/user-card.js.es6 b/app/assets/javascripts/discourse/views/user-card.js.es6 index 6272132813..13dbd898cd 100644 --- a/app/assets/javascripts/discourse/views/user-card.js.es6 +++ b/app/assets/javascripts/discourse/views/user-card.js.es6 @@ -47,7 +47,7 @@ export default Discourse.View.extend(CleansUp, { return true; }); - var expand = function(username, $target){ + var expand = function(username, $target) { const postId = $target.parents('article').data('post-id'); self.get('controller') .show(username, postId, $target[0]) @@ -60,12 +60,16 @@ export default Discourse.View.extend(CleansUp, { }; $('#main-outlet').on(clickDataExpand, '[data-user-card]', function(e) { + if (e.ctrlKey || e.metaKey) { return; } + const $target = $(e.currentTarget), username = $target.data('user-card'); return expand(username, $target); }); $('#main-outlet').on(clickMention, 'a.mention', function(e) { + if (e.ctrlKey || e.metaKey) { return; } + const $target = $(e.target), username = $target.text().replace(/^@/, ''); return expand(username, $target); diff --git a/app/assets/javascripts/locales/fa_IR.js.erb b/app/assets/javascripts/locales/fa_IR.js.erb new file mode 100644 index 0000000000..ddad1cad48 --- /dev/null +++ b/app/assets/javascripts/locales/fa_IR.js.erb @@ -0,0 +1,7 @@ +//= depend_on 'client.fa_IR.yml' +//= require locales/i18n +<%= JsLocaleHelper.output_locale(:fa_IR) %> + +I18n.pluralizationRules['fa_IR'] = function (n) { + return "other"; +}; diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss index 095b02ff9a..6659f61a7f 100644 --- a/app/assets/stylesheets/common/admin/admin_base.scss +++ b/app/assets/stylesheets/common/admin/admin_base.scss @@ -799,14 +799,14 @@ table.api-keys { } &.trending-up { - color: $success; i.up { + color: $success; display: inline; } } &.trending-down { - color: $danger; i.down { + color: $danger; display: inline; } } diff --git a/app/assets/stylesheets/common/base/_topic-list.scss b/app/assets/stylesheets/common/base/_topic-list.scss index 3ac9c951e0..227e13a353 100644 --- a/app/assets/stylesheets/common/base/_topic-list.scss +++ b/app/assets/stylesheets/common/base/_topic-list.scss @@ -2,6 +2,7 @@ position: absolute; top: 4px; width: 100%; + z-index: 1; } .list-controls { diff --git a/app/assets/stylesheets/common/base/directory.scss b/app/assets/stylesheets/common/base/directory.scss index e5d9c11f31..67c6c2c87c 100644 --- a/app/assets/stylesheets/common/base/directory.scss +++ b/app/assets/stylesheets/common/base/directory.scss @@ -32,7 +32,7 @@ tr.me { td { - background-color: scale-color($highlight, $lightness: 50%); + background-color: dark-light-diff($highlight, $secondary, 70%, -80%); .username a, .name, .title, .number, .time-read { color: scale-color($highlight, $lightness: -50%); diff --git a/app/assets/stylesheets/common/base/discourse.scss b/app/assets/stylesheets/common/base/discourse.scss index 941fbbf7fd..e3936104a0 100644 --- a/app/assets/stylesheets/common/base/discourse.scss +++ b/app/assets/stylesheets/common/base/discourse.scss @@ -1,3 +1,7 @@ +img.avatar { + border-radius: 50%; +} + .container { @extend .clearfix; margin-right: auto; @@ -41,6 +45,8 @@ body { background-size: cover; min-height: 100%; + @include clearfix; + button.ok { background: $success; color: $secondary; @@ -157,6 +163,7 @@ body { .avatar-wrapper { background-color: $secondary; display: inline-block; + border-radius: 50%; } .profiler-results.profiler-left { diff --git a/app/assets/stylesheets/common/base/login.scss b/app/assets/stylesheets/common/base/login.scss index 6d202a716b..80c70fe7b7 100644 --- a/app/assets/stylesheets/common/base/login.scss +++ b/app/assets/stylesheets/common/base/login.scss @@ -43,3 +43,13 @@ clear: both; } } + +// alternate login / create new account buttons should be de-emphasized + +button#login-link, button#new-account-link +{ + background: transparent; + padding: 0; + margin-left: 20px; + color: scale-color($primary, $lightness: 35%); +} diff --git a/app/assets/stylesheets/common/base/modal.scss b/app/assets/stylesheets/common/base/modal.scss index 1aaf20cfcd..d5aa63a9b3 100644 --- a/app/assets/stylesheets/common/base/modal.scss +++ b/app/assets/stylesheets/common/base/modal.scss @@ -27,21 +27,31 @@ .modal-backdrop, .modal-backdrop.fade.in { -webkit-animation: fade .3s; - animation: fade .3s; + animation: fade .3s; opacity: .9; filter: alpha(opacity=90); } -//fade in - +// fade in @keyframes fade { - from {opacity: 0} - to {opacity: .9} + from { opacity: 0 } + to { opacity: .9 } } @-webkit-keyframes fade { - from {opacity: 0} - to {opacity: .9} + from { opacity: 0 } + to { opacity: .9 } +} + +// slide in +@keyframes slidein { + from { transform: translateY(-20%); } + to { transform: translateY(0); } +} + +@-webkit-keyframes slidein { + from { transform: translateY(-20%); } + to { transform: translateY(0); } } .modal-outer-container { @@ -61,6 +71,12 @@ background-clip: padding-box; } +.create-account.in .modal-inner-container, +.login-modal.in .modal-inner-container { + -webkit-animation: slidein .3s; + animation: slidein .3s; +} + .modal { position: fixed; diff --git a/app/assets/stylesheets/common/components/badges.css.scss b/app/assets/stylesheets/common/components/badges.css.scss index 25f43a9ec3..9e8ace19fb 100644 --- a/app/assets/stylesheets/common/components/badges.css.scss +++ b/app/assets/stylesheets/common/components/badges.css.scss @@ -63,7 +63,7 @@ line-height: 1; margin-left: 4px; padding-left: 2px; - display: inline-block; + display: inline; #search-dropdown & { margin-top: 0; diff --git a/app/assets/stylesheets/common/components/banner.css.scss b/app/assets/stylesheets/common/components/banner.css.scss index 5ea03bd882..3c800e9b19 100644 --- a/app/assets/stylesheets/common/components/banner.css.scss +++ b/app/assets/stylesheets/common/components/banner.css.scss @@ -2,7 +2,7 @@ // Banner // -------------------------------------------------- -#banner, .banner { +#banner { padding: 10px; border-radius: 5px; background: scale-color($tertiary, $lightness: 90%); diff --git a/app/assets/stylesheets/desktop/compose.scss b/app/assets/stylesheets/desktop/compose.scss index 5ca857accb..d197b4e5af 100644 --- a/app/assets/stylesheets/desktop/compose.scss +++ b/app/assets/stylesheets/desktop/compose.scss @@ -324,6 +324,10 @@ .reply-to { margin-bottom: 10px; + + .reply-to-glyph { + color: scale-color($primary, $lightness: 50%); + } } #reply-control { diff --git a/app/assets/stylesheets/desktop/topic-list.scss b/app/assets/stylesheets/desktop/topic-list.scss index 08a96e10ec..930fe7cdc4 100644 --- a/app/assets/stylesheets/desktop/topic-list.scss +++ b/app/assets/stylesheets/desktop/topic-list.scss @@ -19,6 +19,11 @@ font-weight: normal; } + .search .btn { + float: none; + } + + a.badge-category { padding: 3px 12px; font-size: 1.143em; @@ -103,12 +108,16 @@ } } } - .avatar { - &.latest:not(.single) { - box-shadow: 0 0 6px 1px desaturate(scale-color($tertiary, $lightness: 30%), 35%); - } + + .posters a:first-child .avatar.latest:not(.single) { + box-shadow: 0 0 3px 1px desaturate(scale-color($tertiary, $lightness: 65%), 35%); + border: 2px solid desaturate(scale-color($tertiary, $lightness: 50%), 40%); + position: relative; + top: -2px; + left: -2px; } + .sortable { cursor: pointer; &:hover { diff --git a/app/assets/stylesheets/desktop/topic-post.scss b/app/assets/stylesheets/desktop/topic-post.scss index 230e28b149..901bdb96e3 100644 --- a/app/assets/stylesheets/desktop/topic-post.scss +++ b/app/assets/stylesheets/desktop/topic-post.scss @@ -350,12 +350,13 @@ a.star { } .post-count { position: absolute; - top: 2px; - right: 6px; - padding: 0 4px; + right: 3px; + border-radius: 100px; + padding: 4px 5px 2px 5px; + text-align: center; font-weight: normal; font-size: 11px; - line-height: 14px; + line-height: 1; } } diff --git a/app/assets/stylesheets/desktop/user-card.scss b/app/assets/stylesheets/desktop/user-card.scss index 0441334dce..6781e222d3 100644 --- a/app/assets/stylesheets/desktop/user-card.scss +++ b/app/assets/stylesheets/desktop/user-card.scss @@ -158,7 +158,7 @@ img.avatar { float: left; - padding-right: 10px; + margin-right: 10px; margin-top: -53px; } diff --git a/app/assets/stylesheets/mobile/discourse.scss b/app/assets/stylesheets/mobile/discourse.scss index edd907e495..4228a81ff8 100644 --- a/app/assets/stylesheets/mobile/discourse.scss +++ b/app/assets/stylesheets/mobile/discourse.scss @@ -18,6 +18,8 @@ body { } } #main { + position: relative; + img.avatar { &.header { width: 45px; diff --git a/app/assets/stylesheets/mobile/topic-post.scss b/app/assets/stylesheets/mobile/topic-post.scss index d4f4540d4f..0a21d580b9 100644 --- a/app/assets/stylesheets/mobile/topic-post.scss +++ b/app/assets/stylesheets/mobile/topic-post.scss @@ -188,14 +188,14 @@ a.star { } .post-count { position: absolute; - top: 2px; - right: 6px; - padding: 0 4px; + right: 3px; + border-radius: 100px; + padding: 4px 5px 2px 5px; + text-align: center; font-weight: normal; font-size: 11px; - line-height: 14px; + line-height: 1; } - } /* in expanded avatar view, limit to one line for now */ @@ -338,7 +338,7 @@ span.post-count { .topic-post { &.moderator { - background-color: scale-color($highlight, $lightness: 75%); + background-color: dark-light-diff($highlight, $secondary, 70%, -80%); } } @@ -423,7 +423,7 @@ button.select-post { .deleted { -background-color: scale-color($danger, $lightness: 75%); + background-color: dark-light-diff(rgba($danger,.7), $secondary, 50%, -60%); } #show-topic-admin { @@ -500,4 +500,3 @@ span.highlighted { .read-state { display: none; } - diff --git a/app/assets/stylesheets/vendor/font_awesome/_animated.scss b/app/assets/stylesheets/vendor/font_awesome/_animated.scss new file mode 100644 index 0000000000..8a020dbfff --- /dev/null +++ b/app/assets/stylesheets/vendor/font_awesome/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_bordered-pulled.scss b/app/assets/stylesheets/vendor/font_awesome/_bordered-pulled.scss index 5918ce58d8..9d3fdf3a0b 100644 --- a/app/assets/stylesheets/vendor/font_awesome/_bordered-pulled.scss +++ b/app/assets/stylesheets/vendor/font_awesome/_bordered-pulled.scss @@ -7,7 +7,8 @@ border-radius: .1em; } -// dupe pull-left and pull-right removed from here +.pull-right { float: right; } +.pull-left { float: left; } .#{$fa-css-prefix} { &.pull-left { margin-right: .3em; } diff --git a/app/assets/stylesheets/vendor/font_awesome/_core.scss b/app/assets/stylesheets/vendor/font_awesome/_core.scss index 861ccd9dcb..5a2db9d561 100644 --- a/app/assets/stylesheets/vendor/font_awesome/_core.scss +++ b/app/assets/stylesheets/vendor/font_awesome/_core.scss @@ -3,10 +3,11 @@ .#{$fa-css-prefix} { display: inline-block; - font-family: FontAwesome; - font-style: normal; - font-weight: normal; - line-height: 1; + font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + } diff --git a/app/assets/stylesheets/vendor/font_awesome/_icons.scss b/app/assets/stylesheets/vendor/font_awesome/_icons.scss index efb4435977..fbcfe81237 100644 --- a/app/assets/stylesheets/vendor/font_awesome/_icons.scss +++ b/app/assets/stylesheets/vendor/font_awesome/_icons.scss @@ -14,6 +14,8 @@ .#{$fa-css-prefix}-th:before { content: $fa-var-th; } .#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } .#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, .#{$fa-css-prefix}-times:before { content: $fa-var-times; } .#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } .#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } @@ -129,7 +131,8 @@ .#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } .#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } .#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before { content: $fa-var-bar-chart-o; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } .#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } .#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } .#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } @@ -155,6 +158,7 @@ .#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } .#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } .#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook-f:before, .#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } .#{$fa-css-prefix}-github:before { content: $fa-var-github; } .#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } @@ -394,7 +398,8 @@ .#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } .#{$fa-css-prefix}-female:before { content: $fa-var-female; } .#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before { content: $fa-var-gittip; } +.#{$fa-css-prefix}-gittip:before, +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } .#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } .#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } .#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } @@ -432,7 +437,6 @@ .#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } .#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } .#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper-square:before, .#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } .#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } .#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } @@ -477,6 +481,7 @@ .#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } .#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } .#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, .#{$fa-css-prefix}-life-saver:before, .#{$fa-css-prefix}-support:before, .#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } @@ -497,6 +502,7 @@ .#{$fa-css-prefix}-send-o:before, .#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } .#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-genderless:before, .#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } .#{$fa-css-prefix}-header:before { content: $fa-var-header; } .#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } @@ -504,3 +510,87 @@ .#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } .#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } .#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } +.#{$fa-css-prefix}-server:before { content: $fa-var-server; } +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } +.#{$fa-css-prefix}-hotel:before, +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } +.#{$fa-css-prefix}-train:before { content: $fa-var-train; } +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } diff --git a/app/assets/stylesheets/vendor/font_awesome/_mixins.scss b/app/assets/stylesheets/vendor/font_awesome/_mixins.scss index 2f6f8cf034..6b7f160931 100644 --- a/app/assets/stylesheets/vendor/font_awesome/_mixins.scss +++ b/app/assets/stylesheets/vendor/font_awesome/_mixins.scss @@ -1,12 +1,27 @@ // Mixins // -------------------------- +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox + +} + @mixin fa-icon-rotate($degrees, $rotation) { - transform: rotate($degrees); - -webkit-transform: rotate($degrees); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); } @mixin fa-icon-flip($horiz, $vert, $rotation) { - transform: scale($horiz, $vert); - -webkit-transform: scale($horiz, $vert); + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}); + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); } diff --git a/app/assets/stylesheets/vendor/font_awesome/_path.scss b/app/assets/stylesheets/vendor/font_awesome/_path.scss index fd21c3515e..bb457c23a8 100644 --- a/app/assets/stylesheets/vendor/font_awesome/_path.scss +++ b/app/assets/stylesheets/vendor/font_awesome/_path.scss @@ -5,10 +5,11 @@ font-family: 'FontAwesome'; src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); - //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts +// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts font-weight: normal; font-style: normal; } diff --git a/app/assets/stylesheets/vendor/font_awesome/_rotated-flipped.scss b/app/assets/stylesheets/vendor/font_awesome/_rotated-flipped.scss index 343fa5507b..a3558fd09c 100644 --- a/app/assets/stylesheets/vendor/font_awesome/_rotated-flipped.scss +++ b/app/assets/stylesheets/vendor/font_awesome/_rotated-flipped.scss @@ -7,3 +7,14 @@ .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/app/assets/stylesheets/vendor/font_awesome/_spinning.scss b/app/assets/stylesheets/vendor/font_awesome/_spinning.scss deleted file mode 100644 index e51b9d0b94..0000000000 --- a/app/assets/stylesheets/vendor/font_awesome/_spinning.scss +++ /dev/null @@ -1,17 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - animation: spin 2s infinite linear; - -webkit-animation: spin 2s infinite linear; -} - -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(359deg); } -} - -@-webkit-keyframes spin { - 0% { -webkit-transform: rotate(0deg); } - 100% { -webkit-transform: rotate(359deg); } -} diff --git a/app/assets/stylesheets/vendor/font_awesome/_variables.scss b/app/assets/stylesheets/vendor/font_awesome/_variables.scss index 96d401d0f8..9b7210e23b 100644 --- a/app/assets/stylesheets/vendor/font_awesome/_variables.scss +++ b/app/assets/stylesheets/vendor/font_awesome/_variables.scss @@ -2,9 +2,10 @@ // -------------------------- $fa-font-path: "../fonts" !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.1.0/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-font-size-base: 14px !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.3.0/fonts" !default; // for referencing Bootstrap CDN font files directly $fa-css-prefix: fa !default; -$fa-version: "4.1.0" !default; +$fa-version: "4.3.0" !default; $fa-border-color: #eee !default; $fa-inverse: #fff !default; $fa-li-width: (30em / 14) !default; @@ -18,6 +19,7 @@ $fa-var-align-right: "\f038"; $fa-var-ambulance: "\f0f9"; $fa-var-anchor: "\f13d"; $fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; $fa-var-angle-double-down: "\f103"; $fa-var-angle-double-left: "\f100"; $fa-var-angle-double-right: "\f101"; @@ -28,6 +30,7 @@ $fa-var-angle-right: "\f105"; $fa-var-angle-up: "\f106"; $fa-var-apple: "\f179"; $fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; $fa-var-arrow-circle-down: "\f0ab"; $fa-var-arrow-circle-left: "\f0a8"; $fa-var-arrow-circle-o-down: "\f01a"; @@ -45,18 +48,26 @@ $fa-var-arrows-alt: "\f0b2"; $fa-var-arrows-h: "\f07e"; $fa-var-arrows-v: "\f07d"; $fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; $fa-var-automobile: "\f1b9"; $fa-var-backward: "\f04a"; $fa-var-ban: "\f05e"; $fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; $fa-var-bar-chart-o: "\f080"; $fa-var-barcode: "\f02a"; $fa-var-bars: "\f0c9"; +$fa-var-bed: "\f236"; $fa-var-beer: "\f0fc"; $fa-var-behance: "\f1b4"; $fa-var-behance-square: "\f1b5"; $fa-var-bell: "\f0f3"; $fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; $fa-var-bitbucket: "\f171"; $fa-var-bitbucket-square: "\f172"; $fa-var-bitcoin: "\f15a"; @@ -73,7 +84,10 @@ $fa-var-building: "\f1ad"; $fa-var-building-o: "\f0f7"; $fa-var-bullhorn: "\f0a1"; $fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-buysellads: "\f20d"; $fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; $fa-var-calendar: "\f073"; $fa-var-calendar-o: "\f133"; $fa-var-camera: "\f030"; @@ -87,6 +101,15 @@ $fa-var-caret-square-o-left: "\f191"; $fa-var-caret-square-o-right: "\f152"; $fa-var-caret-square-o-up: "\f151"; $fa-var-caret-up: "\f0d8"; +$fa-var-cart-arrow-down: "\f218"; +$fa-var-cart-plus: "\f217"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; $fa-var-certificate: "\f0a3"; $fa-var-chain: "\f0c1"; $fa-var-chain-broken: "\f127"; @@ -110,6 +133,7 @@ $fa-var-circle-o-notch: "\f1ce"; $fa-var-circle-thin: "\f1db"; $fa-var-clipboard: "\f0ea"; $fa-var-clock-o: "\f017"; +$fa-var-close: "\f00d"; $fa-var-cloud: "\f0c2"; $fa-var-cloud-download: "\f0ed"; $fa-var-cloud-upload: "\f0ee"; @@ -127,7 +151,9 @@ $fa-var-comments: "\f086"; $fa-var-comments-o: "\f0e6"; $fa-var-compass: "\f14e"; $fa-var-compress: "\f066"; +$fa-var-connectdevelop: "\f20e"; $fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; $fa-var-credit-card: "\f09d"; $fa-var-crop: "\f125"; $fa-var-crosshairs: "\f05b"; @@ -137,11 +163,13 @@ $fa-var-cubes: "\f1b3"; $fa-var-cut: "\f0c4"; $fa-var-cutlery: "\f0f5"; $fa-var-dashboard: "\f0e4"; +$fa-var-dashcube: "\f210"; $fa-var-database: "\f1c0"; $fa-var-dedent: "\f03b"; $fa-var-delicious: "\f1a5"; $fa-var-desktop: "\f108"; $fa-var-deviantart: "\f1bd"; +$fa-var-diamond: "\f219"; $fa-var-digg: "\f1a6"; $fa-var-dollar: "\f155"; $fa-var-dot-circle-o: "\f192"; @@ -169,7 +197,10 @@ $fa-var-external-link: "\f08e"; $fa-var-external-link-square: "\f14c"; $fa-var-eye: "\f06e"; $fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; $fa-var-facebook: "\f09a"; +$fa-var-facebook-f: "\f09a"; +$fa-var-facebook-official: "\f230"; $fa-var-facebook-square: "\f082"; $fa-var-fast-backward: "\f049"; $fa-var-fast-forward: "\f050"; @@ -211,15 +242,18 @@ $fa-var-folder-o: "\f114"; $fa-var-folder-open: "\f07c"; $fa-var-folder-open-o: "\f115"; $fa-var-font: "\f031"; +$fa-var-forumbee: "\f211"; $fa-var-forward: "\f04e"; $fa-var-foursquare: "\f180"; $fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; $fa-var-gamepad: "\f11b"; $fa-var-gavel: "\f0e3"; $fa-var-gbp: "\f154"; $fa-var-ge: "\f1d1"; $fa-var-gear: "\f013"; $fa-var-gears: "\f085"; +$fa-var-genderless: "\f1db"; $fa-var-gift: "\f06b"; $fa-var-git: "\f1d3"; $fa-var-git-square: "\f1d2"; @@ -232,7 +266,9 @@ $fa-var-globe: "\f0ac"; $fa-var-google: "\f1a0"; $fa-var-google-plus: "\f0d5"; $fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; $fa-var-graduation-cap: "\f19d"; +$fa-var-gratipay: "\f184"; $fa-var-group: "\f0c0"; $fa-var-h-square: "\f0fd"; $fa-var-hacker-news: "\f1d4"; @@ -245,10 +281,13 @@ $fa-var-header: "\f1dc"; $fa-var-headphones: "\f025"; $fa-var-heart: "\f004"; $fa-var-heart-o: "\f08a"; +$fa-var-heartbeat: "\f21e"; $fa-var-history: "\f1da"; $fa-var-home: "\f015"; $fa-var-hospital-o: "\f0f8"; +$fa-var-hotel: "\f236"; $fa-var-html5: "\f13b"; +$fa-var-ils: "\f20b"; $fa-var-image: "\f03e"; $fa-var-inbox: "\f01c"; $fa-var-indent: "\f03c"; @@ -257,6 +296,7 @@ $fa-var-info-circle: "\f05a"; $fa-var-inr: "\f156"; $fa-var-instagram: "\f16d"; $fa-var-institution: "\f19c"; +$fa-var-ioxhost: "\f208"; $fa-var-italic: "\f033"; $fa-var-joomla: "\f1aa"; $fa-var-jpy: "\f157"; @@ -266,15 +306,20 @@ $fa-var-keyboard-o: "\f11c"; $fa-var-krw: "\f159"; $fa-var-language: "\f1ab"; $fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; $fa-var-leaf: "\f06c"; +$fa-var-leanpub: "\f212"; $fa-var-legal: "\f0e3"; $fa-var-lemon-o: "\f094"; $fa-var-level-down: "\f149"; $fa-var-level-up: "\f148"; $fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; $fa-var-life-ring: "\f1cd"; $fa-var-life-saver: "\f1cd"; $fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; $fa-var-link: "\f0c1"; $fa-var-linkedin: "\f0e1"; $fa-var-linkedin-square: "\f08c"; @@ -296,9 +341,17 @@ $fa-var-mail-reply: "\f112"; $fa-var-mail-reply-all: "\f122"; $fa-var-male: "\f183"; $fa-var-map-marker: "\f041"; +$fa-var-mars: "\f222"; +$fa-var-mars-double: "\f227"; +$fa-var-mars-stroke: "\f229"; +$fa-var-mars-stroke-h: "\f22b"; +$fa-var-mars-stroke-v: "\f22a"; $fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medium: "\f23a"; $fa-var-medkit: "\f0fa"; $fa-var-meh-o: "\f11a"; +$fa-var-mercury: "\f223"; $fa-var-microphone: "\f130"; $fa-var-microphone-slash: "\f131"; $fa-var-minus: "\f068"; @@ -310,11 +363,15 @@ $fa-var-mobile-phone: "\f10b"; $fa-var-money: "\f0d6"; $fa-var-moon-o: "\f186"; $fa-var-mortar-board: "\f19d"; +$fa-var-motorcycle: "\f21c"; $fa-var-music: "\f001"; $fa-var-navicon: "\f0c9"; +$fa-var-neuter: "\f22c"; +$fa-var-newspaper-o: "\f1ea"; $fa-var-openid: "\f19b"; $fa-var-outdent: "\f03b"; $fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; $fa-var-paper-plane: "\f1d8"; $fa-var-paper-plane-o: "\f1d9"; $fa-var-paperclip: "\f0c6"; @@ -322,6 +379,7 @@ $fa-var-paragraph: "\f1dd"; $fa-var-paste: "\f0ea"; $fa-var-pause: "\f04c"; $fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; $fa-var-pencil: "\f040"; $fa-var-pencil-square: "\f14b"; $fa-var-pencil-square-o: "\f044"; @@ -329,15 +387,17 @@ $fa-var-phone: "\f095"; $fa-var-phone-square: "\f098"; $fa-var-photo: "\f03e"; $fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; $fa-var-pied-piper: "\f1a7"; $fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pied-piper-square: "\f1a7"; $fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-p: "\f231"; $fa-var-pinterest-square: "\f0d3"; $fa-var-plane: "\f072"; $fa-var-play: "\f04b"; $fa-var-play-circle: "\f144"; $fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; $fa-var-plus: "\f067"; $fa-var-plus-circle: "\f055"; $fa-var-plus-square: "\f0fe"; @@ -358,6 +418,7 @@ $fa-var-recycle: "\f1b8"; $fa-var-reddit: "\f1a1"; $fa-var-reddit-square: "\f1a2"; $fa-var-refresh: "\f021"; +$fa-var-remove: "\f00d"; $fa-var-renren: "\f18b"; $fa-var-reorder: "\f0c9"; $fa-var-repeat: "\f01e"; @@ -380,23 +441,33 @@ $fa-var-scissors: "\f0c4"; $fa-var-search: "\f002"; $fa-var-search-minus: "\f010"; $fa-var-search-plus: "\f00e"; +$fa-var-sellsy: "\f213"; $fa-var-send: "\f1d8"; $fa-var-send-o: "\f1d9"; +$fa-var-server: "\f233"; $fa-var-share: "\f064"; $fa-var-share-alt: "\f1e0"; $fa-var-share-alt-square: "\f1e1"; $fa-var-share-square: "\f14d"; $fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; $fa-var-shield: "\f132"; +$fa-var-ship: "\f21a"; +$fa-var-shirtsinbulk: "\f214"; $fa-var-shopping-cart: "\f07a"; $fa-var-sign-in: "\f090"; $fa-var-sign-out: "\f08b"; $fa-var-signal: "\f012"; +$fa-var-simplybuilt: "\f215"; $fa-var-sitemap: "\f0e8"; +$fa-var-skyatlas: "\f216"; $fa-var-skype: "\f17e"; $fa-var-slack: "\f198"; $fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; $fa-var-smile-o: "\f118"; +$fa-var-soccer-ball-o: "\f1e3"; $fa-var-sort: "\f0dc"; $fa-var-sort-alpha-asc: "\f15d"; $fa-var-sort-alpha-desc: "\f15e"; @@ -429,10 +500,12 @@ $fa-var-step-backward: "\f048"; $fa-var-step-forward: "\f051"; $fa-var-stethoscope: "\f0f1"; $fa-var-stop: "\f04d"; +$fa-var-street-view: "\f21d"; $fa-var-strikethrough: "\f0cc"; $fa-var-stumbleupon: "\f1a4"; $fa-var-stumbleupon-circle: "\f1a3"; $fa-var-subscript: "\f12c"; +$fa-var-subway: "\f239"; $fa-var-suitcase: "\f0f2"; $fa-var-sun-o: "\f185"; $fa-var-superscript: "\f12b"; @@ -463,17 +536,25 @@ $fa-var-times-circle-o: "\f05c"; $fa-var-tint: "\f043"; $fa-var-toggle-down: "\f150"; $fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; $fa-var-toggle-right: "\f152"; $fa-var-toggle-up: "\f151"; +$fa-var-train: "\f238"; +$fa-var-transgender: "\f224"; +$fa-var-transgender-alt: "\f225"; +$fa-var-trash: "\f1f8"; $fa-var-trash-o: "\f014"; $fa-var-tree: "\f1bb"; $fa-var-trello: "\f181"; $fa-var-trophy: "\f091"; $fa-var-truck: "\f0d1"; $fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; $fa-var-tumblr: "\f173"; $fa-var-tumblr-square: "\f174"; $fa-var-turkish-lira: "\f195"; +$fa-var-twitch: "\f1e8"; $fa-var-twitter: "\f099"; $fa-var-twitter-square: "\f081"; $fa-var-umbrella: "\f0e9"; @@ -488,7 +569,14 @@ $fa-var-upload: "\f093"; $fa-var-usd: "\f155"; $fa-var-user: "\f007"; $fa-var-user-md: "\f0f0"; +$fa-var-user-plus: "\f234"; +$fa-var-user-secret: "\f21b"; +$fa-var-user-times: "\f235"; $fa-var-users: "\f0c0"; +$fa-var-venus: "\f221"; +$fa-var-venus-double: "\f226"; +$fa-var-venus-mars: "\f228"; +$fa-var-viacoin: "\f237"; $fa-var-video-camera: "\f03d"; $fa-var-vimeo-square: "\f194"; $fa-var-vine: "\f1ca"; @@ -500,7 +588,9 @@ $fa-var-warning: "\f071"; $fa-var-wechat: "\f1d7"; $fa-var-weibo: "\f18a"; $fa-var-weixin: "\f1d7"; +$fa-var-whatsapp: "\f232"; $fa-var-wheelchair: "\f193"; +$fa-var-wifi: "\f1eb"; $fa-var-windows: "\f17a"; $fa-var-won: "\f159"; $fa-var-wordpress: "\f19a"; @@ -508,7 +598,9 @@ $fa-var-wrench: "\f0ad"; $fa-var-xing: "\f168"; $fa-var-xing-square: "\f169"; $fa-var-yahoo: "\f19e"; +$fa-var-yelp: "\f1e9"; $fa-var-yen: "\f157"; $fa-var-youtube: "\f167"; $fa-var-youtube-play: "\f16a"; $fa-var-youtube-square: "\f166"; + diff --git a/app/assets/stylesheets/vendor/font_awesome/font-awesome.scss b/app/assets/stylesheets/vendor/font_awesome/font-awesome.scss index 8e61652f0a..93912b4540 100644 --- a/app/assets/stylesheets/vendor/font_awesome/font-awesome.scss +++ b/app/assets/stylesheets/vendor/font_awesome/font-awesome.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ @@ -11,7 +11,7 @@ @import "fixed-width"; @import "list"; @import "bordered-pulled"; -@import "spinning"; +@import "animated"; @import "rotated-flipped"; @import "stacked"; @import "icons"; diff --git a/app/controllers/admin/backups_controller.rb b/app/controllers/admin/backups_controller.rb index a80e1b924d..83587ac3bb 100644 --- a/app/controllers/admin/backups_controller.rb +++ b/app/controllers/admin/backups_controller.rb @@ -110,7 +110,7 @@ class Admin::BackupsController < Admin::AdminController filename = params.fetch(:resumableFilename) total_size = params.fetch(:resumableTotalSize).to_i - return render status: 415, text: I18n.t("backup.backup_file_should_be_tar_gz") unless filename.to_s.end_with?(".tar.gz") + return render status: 415, text: I18n.t("backup.backup_file_should_be_tar_gz") unless /\.(tar\.gz|t?gz)$/i =~ filename return render status: 415, text: I18n.t("backup.not_enough_space_on_disk") unless has_enough_space_on_disk?(total_size) file = params.fetch(:file) diff --git a/app/controllers/admin/diagnostics_controller.rb b/app/controllers/admin/diagnostics_controller.rb index 2b6893da2a..bd311b42d7 100644 --- a/app/controllers/admin/diagnostics_controller.rb +++ b/app/controllers/admin/diagnostics_controller.rb @@ -1,3 +1,5 @@ +require_dependency 'memory_diagnostics' + class Admin::DiagnosticsController < Admin::AdminController layout false skip_before_filter :check_xhr @@ -6,19 +8,16 @@ class Admin::DiagnosticsController < Admin::AdminController text = nil if params.key?(:diff) - if !File.exists?(snapshot_filename) + if !MemoryDiagnostics.snapshot_exists? text = "No initial snapshot exists" else - filename = snapshot_filename + ".new" - snapshot_current_process(filename) - - text = compare(snapshot_filename, filename) + text = MemoryDiagnostics.compare end elsif params.key?(:snapshot) - snapshot_current_process - text = "Writing snapshot to: #{snapshot_filename}\n\nTo get a diff use ?diff=1" + MemoryDiagnostics.snapshot_current_process + text = "Writing snapshot to: #{MemoryDiagnostics.snapshot_filename}\n\nTo get a diff use ?diff=1" else - text = memory_report(class_report: params.key?(:full)) + text = MemoryDiagnostics.memory_report(class_report: params.key?(:full)) end render text: text, content_type: Mime::TEXT @@ -40,163 +39,4 @@ class Admin::DiagnosticsController < Admin::AdminController end end - protected - - def compare(from, to) - from = Marshal::load(IO.binread(from)); - to = Marshal::load(IO.binread(to)); - - diff = from - to - - require 'objspace' - diff = diff.map do |id| - ObjectSpace._id2ref(id) rescue nil - end.compact! - - report = "#{diff.length} objects have leaked\n" - - report << "Summary:\n" - - summary = {} - diff.each do |obj| - begin - summary[obj.class] ||= 0 - summary[obj.class] += 1 - rescue - # don't care - end - end - - report << summary.sort{|a,b| b[1] <=> a[1]}[0..50].map{|k,v| - "#{k}: #{v}" - }.join("\n") - - report << "\n\nSample Items:\n" - - diff[0..5000].each do |v| - report << "#{v.class}: #{String === v ? v[0..300] : (40 + ObjectSpace.memsize_of(v)).to_s + " bytes"}\n" rescue nil - end - - report - end - - def snapshot_path - "#{Rails.root}/tmp/mem_snapshots" - end - - def snapshot_filename - "#{snapshot_path}/#{Process.pid}.snapshot" - end - - def snapshot_current_process(filename=nil) - filename ||= snapshot_filename - pid=fork do - snapshot(filename) - end - - Process.wait(pid) - end - - def snapshot(filename) - require 'objspace' - FileUtils.mkdir_p snapshot_path - object_ids = [] - - full_gc - - ObjectSpace.each_object do |o| - begin - object_ids << o.object_id - rescue - # skip - end - end - - IO.binwrite(filename, Marshal::dump(object_ids)) - end - - def memory_report(opts={}) - begin - # ruby 2.1 - GC.start(full_mark: true) - rescue - GC.start - end - - - classes = {} - large_objects = [] - - if opts[:class_report] - require 'objspace' - ObjectSpace.each_object do |o| - begin - classes[o.class] ||= 0 - classes[o.class] += 1 - if (size = ObjectSpace.memsize_of(o)) > 200 - large_objects << [size, o] - end - rescue - # all sorts of stuff can happen here BasicObject etc. - classes[:unknown] ||= 0 - classes[:unknown] += 1 - end - end - classes = classes.sort{|a,b| b[1] <=> a[1]}[0..40].map{|klass, count| "#{klass}: #{count}"} - - classes << "\nLarge Objects (#{large_objects.length} larger than 200 bytes total size #{large_objects.map{|x,_| x}.sum}):\n" - - classes += large_objects.sort{|a,b| b[0] <=> a[0]}[0..800].map do |size,object| - rval = "#{object.class}: size #{size}" - rval << " " << object.to_s[0..500].gsub("\n", "") if (String === object) || (Regexp === object) - rval << "\n" - rval - end - end - - stats = GC.stat.map{|k,v| "#{k}: #{v}"} - counts = ObjectSpace.count_objects.sort{|a,b| b[1] <=> a[1] }.map{|k,v| "#{k}: #{v}"} - - - - < 0 ? classes.join("\n") : "Class report omitted use ?full=1 to include it"} - -TEXT - - end - - - def full_gc - # gc start may not collect everything - GC.start while new_count = decreased_count(new_count) - end - - def decreased_count(old) - count = count_objects - if !old || count < old - count - else - nil - end - end - - def count_objects - i = 0 - ObjectSpace.each_object do |obj| - i += 1 - end - end end diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb index 5389b578d5..69288921f4 100644 --- a/app/controllers/admin/groups_controller.rb +++ b/app/controllers/admin/groups_controller.rb @@ -23,16 +23,7 @@ class Admin::GroupsController < Admin::AdminController group = Group.new group.name = (params[:name] || '').strip - group.alias_level = params[:alias_level].to_i if params[:alias_level].present? - group.visible = params[:visible] == "true" - group.automatic_membership_email_domains = params[:automatic_membership_email_domains] - group.automatic_membership_retroactive = params[:automatic_membership_retroactive] == "true" - - if group.save - render_serialized(group, BasicGroupSerializer) - else - render_json_error group - end + save_group(group) end def update @@ -40,10 +31,20 @@ class Admin::GroupsController < Admin::AdminController # group rename is ignored for automatic groups group.name = params[:name] if params[:name] && !group.automatic + save_group(group) + end + + def save_group(group) group.alias_level = params[:alias_level].to_i if params[:alias_level].present? group.visible = params[:visible] == "true" - group.automatic_membership_email_domains = params[:automatic_membership_email_domains] - group.automatic_membership_retroactive = params[:automatic_membership_retroactive] == "true" + + group.automatic_membership_email_domains = params[:automatic_membership_email_domains] unless group.automatic + group.automatic_membership_retroactive = params[:automatic_membership_retroactive] == "true" unless group.automatic + + group.primary_group = group.automatic ? false : params["primary_group"] == "true" + + title = params[:title] if params[:title].present? + group.title = group.automatic ? nil : title if group.save render_serialized(group, BasicGroupSerializer) diff --git a/app/controllers/directory_items_controller.rb b/app/controllers/directory_items_controller.rb index 1c44e7d54b..8499f1a4b9 100644 --- a/app/controllers/directory_items_controller.rb +++ b/app/controllers/directory_items_controller.rb @@ -2,16 +2,14 @@ class DirectoryItemsController < ApplicationController PAGE_SIZE = 50 def index + raise Discourse::InvalidAccess.new(:enable_user_directory) unless SiteSetting.enable_user_directory? + period = params.require(:period) period_type = DirectoryItem.period_types[period.to_sym] raise Discourse::InvalidAccess.new(:period_type) unless period_type result = DirectoryItem.where(period_type: period_type).includes(:user) - if current_user.present? - result = result.order("CASE WHEN users.id = #{current_user.id.to_i} THEN 0 ELSE 1 END") - end - order = params[:order] || DirectoryItem.headings.first if DirectoryItem.headings.include?(order.to_sym) dir = params[:asc] ? 'ASC' : 'DESC' @@ -44,9 +42,21 @@ class DirectoryItemsController < ApplicationController more_params = params.slice(:period, :order, :asc) more_params[:page] = page + 1 - render_json_dump directory_items: serialize_data(result, DirectoryItemSerializer), - total_rows_directory_items: result_count, - load_more_directory_items: directory_items_path(more_params) + # Put yourself at the top of the first page + if result.present? && current_user.present? && page == 0 + position = result.index {|r| r.user_id == current_user.id } + + # Don't show the record unless you're not in the top positions already + if (position || 10) >= 10 + your_item = DirectoryItem.where(period_type: period_type, user_id: current_user.id).first + result.insert(0, your_item) if your_item + end + + end + + render_json_dump(directory_items: serialize_data(result, DirectoryItemSerializer), + total_rows_directory_items: result_count, + load_more_directory_items: directory_items_path(more_params)) end end diff --git a/app/controllers/list_controller.rb b/app/controllers/list_controller.rb index 55bdac73f1..2cc4669084 100644 --- a/app/controllers/list_controller.rb +++ b/app/controllers/list_controller.rb @@ -50,7 +50,7 @@ class ListController < ApplicationController ].flatten # Create our filters - Discourse.filters.each do |filter| + Discourse.filters.each_with_index do |filter, idx| define_method(filter) do |options = nil| list_opts = build_topic_list_options list_opts.merge!(options) if options @@ -62,13 +62,14 @@ class ListController < ApplicationController list = TopicQuery.new(user, list_opts).public_send("list_#{filter}") - list.more_topics_url = construct_next_url_with(list_opts) - list.prev_topics_url = construct_prev_url_with(list_opts) + list.more_topics_url = construct_url_with(:next, list_opts) + list.prev_topics_url = construct_url_with(:prev, list_opts) if Discourse.anonymous_filters.include?(filter) @description = SiteSetting.site_description @rss = filter - if use_crawler_layout? + # Note the first is the default and we don't add a title + if idx > 0 && use_crawler_layout? filter_title = I18n.t("js.filters.#{filter.to_s}.title") if list_opts[:category] @title = I18n.t('js.filters.with_category', filter: filter_title, category: Category.find(list_opts[:category]).name) @@ -121,8 +122,8 @@ class ListController < ApplicationController guardian.ensure_can_see_private_messages!(target_user.id) unless action == :topics_by list = generate_list_for(action.to_s, target_user, list_opts) url_prefix = "topics" unless action == :topics_by - list.more_topics_url = url_for(construct_next_url_with(list_opts, url_prefix)) - list.prev_topics_url = url_for(construct_prev_url_with(list_opts, url_prefix)) + list.more_topics_url = url_for(construct_url_with(:next, list_opts, url_prefix)) + list.prev_topics_url = url_for(construct_url_with(:prev, list_opts, url_prefix)) respond_with_list(list) end end @@ -166,8 +167,8 @@ class ListController < ApplicationController user = list_target_user list = TopicQuery.new(user, top_options).list_top_for(period) list.for_period = period - list.more_topics_url = construct_next_url_with(top_options) - list.prev_topics_url = construct_prev_url_with(top_options) + list.more_topics_url = construct_url_with(:next, top_options) + list.prev_topics_url = construct_url_with(:prev, top_options) if use_crawler_layout? @title = I18n.t("js.filters.top.#{period}.title") @@ -279,14 +280,14 @@ class ListController < ApplicationController TopicQuery.new(current_user, opts).send("list_#{action}", target_user) end - def construct_next_url_with(opts, url_prefix = nil) + def construct_url_with(action, opts, url_prefix = nil) method = url_prefix.blank? ? "#{action_name}_path" : "#{url_prefix}_#{action_name}_path" - public_send(method, opts.merge(next_page_params(opts))) - end - - def construct_prev_url_with(opts, url_prefix = nil) - method = url_prefix.blank? ? "#{action_name}_path" : "#{url_prefix}_#{action_name}_path" - public_send(method, opts.merge(prev_page_params(opts))) + url = if action == :prev + public_send(method, opts.merge(prev_page_params(opts))) + else # :next + public_send(method, opts.merge(next_page_params(opts))) + end + url.sub('.json?','?') end def generate_top_lists(options) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index b0d35c669f..0ebb3a766c 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -335,7 +335,7 @@ class PostsController < ApplicationController offset = [params[:offset].to_i, 0].max limit = [(params[:limit] || 60).to_i, 100].min - posts = user_posts(user.id, offset, limit) + posts = user_posts(guardian, user.id, offset: offset, limit: limit) .where(id: PostAction.where(post_action_type_id: PostActionType.notify_flag_type_ids) .where(disagreed_at: nil) .select(:post_id)) @@ -351,7 +351,7 @@ class PostsController < ApplicationController offset = [params[:offset].to_i, 0].max limit = [(params[:limit] || 60).to_i, 100].min - posts = user_posts(user.id, offset, limit).where.not(deleted_at: nil) + posts = user_posts(guardian, user.id, offset: offset, limit: limit).where.not(deleted_at: nil) render_serialized(posts, AdminPostSerializer) end @@ -389,13 +389,26 @@ class PostsController < ApplicationController private - def user_posts(user_id, offset=0, limit=60) - Post.includes(:user, :topic, :deleted_by, :user_actions) - .with_deleted - .where(user_id: user_id) - .order(created_at: :desc) - .offset(offset) - .limit(limit) + def user_posts(guardian, user_id, opts) + posts = Post.includes(:user, :topic, :deleted_by, :user_actions) + .where(user_id: user_id) + .with_deleted + .order(created_at: :desc) + + if guardian.user.moderator? + + # Awful hack, but you can't seem to remove the `default_scope` when joining + # So instead I grab the topics separately + topic_ids = posts.dup.pluck(:topic_id) + secured_category_ids = guardian.secure_category_ids + topics = Topic.where(id: topic_ids).with_deleted.where.not(archetype: 'private_message') + topics = topics.secured(guardian) + + posts = posts.where(topic_id: topics.pluck(:id)) + end + + posts.offset(opts[:offset]) + .limit(opts[:limit]) end def params_key(params) diff --git a/app/controllers/user_avatars_controller.rb b/app/controllers/user_avatars_controller.rb index b8f1a34923..80093b600e 100644 --- a/app/controllers/user_avatars_controller.rb +++ b/app/controllers/user_avatars_controller.rb @@ -24,7 +24,7 @@ class UserAvatarsController < ApplicationController params.require(:version) params.require(:size) - return render_dot if params[:version].to_i > LetterAvatar::VERSION + return render_dot if params[:version] != LetterAvatar.version image = LetterAvatar.generate(params[:username].to_s, params[:size].to_i) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index a6950cbaaf..23dfb48705 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -6,7 +6,7 @@ require_dependency 'rate_limiter' class UsersController < ApplicationController skip_before_filter :authorize_mini_profiler, only: [:avatar] - skip_before_filter :check_xhr, only: [:show, :password_reset, :update, :account_created, :activate_account, :perform_account_activation, :authorize_email, :user_preferences_redirect, :avatar, :my_redirect] + skip_before_filter :check_xhr, only: [:show, :password_reset, :update, :account_created, :activate_account, :perform_account_activation, :authorize_email, :user_preferences_redirect, :avatar, :my_redirect, :toggle_anon] before_filter :ensure_logged_in, only: [:username, :update, :change_email, :user_preferences_redirect, :upload_user_image, :pick_avatar, :destroy_user_image, :destroy, :check_emails] before_filter :respond_to_suspicious_request, only: [:create] @@ -343,6 +343,18 @@ class UsersController < ApplicationController @success = I18n.t(message) end + def toggle_anon + user = AnonymousShadowCreator.get_master(current_user) || + AnonymousShadowCreator.get(current_user) + + if user + log_on_user(user) + render json: success_json + else + render json: failed_json, status: 403 + end + end + def change_email params.require(:email) user = fetch_user_from_params @@ -605,17 +617,12 @@ class UsersController < ApplicationController return false if is_api? params[:password_confirmation] != honeypot_value || - params[:challenge] != challenge_value.try(:reverse) + params[:challenge] != challenge_value.try(:reverse) end def user_params - params.permit( - :name, - :email, - :password, - :username, - :active - ).merge(ip_address: request.ip, registration_ip_address: request.ip) + params.permit(:name, :email, :password, :username, :active) + .merge(ip_address: request.remote_ip, registration_ip_address: request.remote_ip) end def fail_with(key) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3edce092e6..f49d845b2c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -15,6 +15,15 @@ module ApplicationHelper include ConfigurableUrls include GlobalPath + def ga_universal_json + cookie_domain = SiteSetting.ga_universal_domain_name.gsub(/^http(s)?:\/\//, '') + result = {cookieDomain: cookie_domain} + if current_user.present? + result[:userId] = current_user.id + end + result.to_json.html_safe + end + def shared_session_key if SiteSetting.long_polling_base_url != '/'.freeze && current_user sk = "shared_session_key" diff --git a/app/helpers/topics_helper.rb b/app/helpers/topics_helper.rb index 8ad809ef62..cb330dcf2b 100644 --- a/app/helpers/topics_helper.rb +++ b/app/helpers/topics_helper.rb @@ -4,4 +4,18 @@ module TopicsHelper link_to(topic.title,topic.relative_url) end + def categories_breadcrumb(topic) + breadcrumb = [{url: categories_path, + name: I18n.t('js.filters.categories.title')}] + + category = topic.category + if category + if (parent = category.parent_category) + breadcrumb.push url: parent.url, name: parent.name + end + breadcrumb.push url: category.url, name: category.name + end + breadcrumb + end + end diff --git a/app/jobs/base.rb b/app/jobs/base.rb index 2f7f680023..8127d755be 100644 --- a/app/jobs/base.rb +++ b/app/jobs/base.rb @@ -14,7 +14,7 @@ module Jobs end def self.num_email_retry_jobs - Sidekiq::RetrySet.new.select { |job| job.klass =~ /Email$/ }.size + Sidekiq::RetrySet.new.count { |job| job.klass =~ /Email$/ } end class Base diff --git a/app/jobs/regular/close_topic.rb b/app/jobs/regular/close_topic.rb index 61a27588ce..0703c971f5 100644 --- a/app/jobs/regular/close_topic.rb +++ b/app/jobs/regular/close_topic.rb @@ -4,6 +4,10 @@ module Jobs def execute(args) if topic = Topic.find_by(id: args[:topic_id]) closer = User.find_by(id: args[:user_id]) + guardian = Guardian.new(closer) + unless guardian.can_close?(topic) + closer = Discourse.system_user + end topic.auto_close(closer) end end diff --git a/app/jobs/scheduled/create_backup.rb b/app/jobs/regular/create_daily_backup.rb similarity index 80% rename from app/jobs/scheduled/create_backup.rb rename to app/jobs/regular/create_daily_backup.rb index 3c877cd38f..40024fc76d 100644 --- a/app/jobs/scheduled/create_backup.rb +++ b/app/jobs/regular/create_daily_backup.rb @@ -1,8 +1,7 @@ require "backup_restore/backup_restore" module Jobs - class CreateBackup < Jobs::Scheduled - daily at: 3.hours + class CreateDailyBackup < Jobs::Base sidekiq_options retry: false def execute(args) @@ -11,4 +10,3 @@ module Jobs end end end - diff --git a/app/jobs/regular/fix_avatar_in_quotes.rb b/app/jobs/regular/fix_avatar_in_quotes.rb new file mode 100644 index 0000000000..17ef0d2af6 --- /dev/null +++ b/app/jobs/regular/fix_avatar_in_quotes.rb @@ -0,0 +1,10 @@ +module Jobs + class FixAvatarInQuotes < Jobs::Base + + def execute(args) + post_ids_to_rebake = Post.exec_sql("SELECT post_id FROM quoted_posts WHERE quoted_post_id IN (SELECT id FROM posts WHERE user_id = ?)", args[:user_id]).values.flatten.map(&:to_i) + Post.where(id: post_ids_to_rebake).find_each.map(&:rebake!) + end + + end +end diff --git a/app/jobs/regular/resize_emoji.rb b/app/jobs/regular/resize_emoji.rb index 61ae0248c2..e46879f8e0 100644 --- a/app/jobs/regular/resize_emoji.rb +++ b/app/jobs/regular/resize_emoji.rb @@ -11,7 +11,7 @@ module Jobs force_aspect_ratio: SiteSetting.enforce_square_emoji } # make sure emoji aren't too big - OptimizedImage.downsize(path, path, 60, 60, opts) + OptimizedImage.downsize(path, path, 100, 100, opts) end end diff --git a/app/jobs/scheduled/badge_grant.rb b/app/jobs/scheduled/badge_grant.rb index 32aa9deca7..5f218f9118 100644 --- a/app/jobs/scheduled/badge_grant.rb +++ b/app/jobs/scheduled/badge_grant.rb @@ -11,7 +11,12 @@ module Jobs return unless SiteSetting.enable_badges Badge.all.each do |b| - BadgeGranter.backfill(b) + begin + BadgeGranter.backfill(b) + rescue => ex + # TODO - expose errors in UI + Discourse.handle_job_exception(ex, error_context({}, code_desc: 'Exception granting badges', extra: {badge_id: b.id})) + end end BadgeGranter.revoke_ungranted_titles! diff --git a/app/jobs/scheduled/poll_mailbox.rb b/app/jobs/scheduled/poll_mailbox.rb index 6d6f708b61..608559dff6 100644 --- a/app/jobs/scheduled/poll_mailbox.rb +++ b/app/jobs/scheduled/poll_mailbox.rb @@ -51,6 +51,8 @@ module Jobs message_template = :email_reject_topic_closed when Email::Receiver::AutoGeneratedEmailError message_template = :email_reject_auto_generated + when Discourse::InvalidAccess + message_template = :email_reject_invalid_access when ActiveRecord::Rollback message_template = :email_reject_post_error when Email::Receiver::InvalidPost @@ -70,6 +72,7 @@ module Jobs message = Mail::Message.new(mail_string) template_args[:former_title] = message.subject template_args[:destination] = message.to + template_args[:site_name] = SiteSetting.title client_message = RejectionMailer.send_rejection(message_template, message.from, template_args) Email::Sender.new(client_message, message_template).send diff --git a/app/jobs/scheduled/schedule_backup.rb b/app/jobs/scheduled/schedule_backup.rb new file mode 100644 index 0000000000..7408641e54 --- /dev/null +++ b/app/jobs/scheduled/schedule_backup.rb @@ -0,0 +1,12 @@ + +module Jobs + class ScheduleBackup < Jobs::Scheduled + daily at: 3.hours + sidekiq_options retry: false + + def execute(args) + return unless SiteSetting.backup_daily? + Jobs.enqueue_in(rand(10.minutes), :create_daily_backup) + end + end +end diff --git a/app/mailers/user_notifications.rb b/app/mailers/user_notifications.rb index 5fede4157e..74295249e7 100644 --- a/app/mailers/user_notifications.rb +++ b/app/mailers/user_notifications.rb @@ -79,10 +79,6 @@ class UserNotifications < ActionMailer::Base end end - def user_invited_to_private_message(user, opts) - notification_email(user, opts) - end - def user_replied(user, opts) opts[:allow_reply_by_email] = true opts[:use_site_subject] = true @@ -124,6 +120,17 @@ class UserNotifications < ActionMailer::Base notification_email(user, opts) end + def user_invited_to_private_message(user, opts) + opts[:use_template_html] = true + notification_email(user, opts) + end + + def user_invited_to_topic(user, opts) + opts[:use_template_html] = true + opts[:show_category_in_subject] = true + notification_email(user, opts) + end + def mailing_list_notify(user, post) send_notification_email( title: post.topic.title, @@ -188,17 +195,20 @@ class UserNotifications < ActionMailer::Base use_site_subject = opts[:use_site_subject] add_re_to_subject = opts[:add_re_to_subject] show_category_in_subject = opts[:show_category_in_subject] + use_template_html = opts[:use_template_html] + original_username = @notification.data_hash[:original_username] || @notification.data_hash[:display_username] send_notification_email( title: title, post: @post, - username: @notification.data_hash[:original_username], + username: original_username, from_alias: user_name, allow_reply_by_email: allow_reply_by_email, use_site_subject: use_site_subject, add_re_to_subject: add_re_to_subject, show_category_in_subject: show_category_in_subject, notification_type: notification_type, + use_template_html: use_template_html, user: user ) @@ -242,20 +252,26 @@ class UserNotifications < ActionMailer::Base end end - html = UserNotificationRenderer.new(Rails.configuration.paths["app/views"]).render( - template: 'email/notification', - format: :html, - locals: { context_posts: context_posts, - post: post, - classes: RTL.new(user).css_class - } - ) + topic_excerpt = "" + if opts[:use_template_html] + topic_excerpt = post.excerpt.gsub("\n", " ") if post.is_first_post? && post.excerpt + else + html = UserNotificationRenderer.new(Rails.configuration.paths["app/views"]).render( + template: 'email/notification', + format: :html, + locals: { context_posts: context_posts, + post: post, + classes: RTL.new(user).css_class + } + ) + end template = "user_notifications.user_#{notification_type}" template << "_pm" if post.topic.private_message? email_opts = { topic_title: title, + topic_excerpt: topic_excerpt, message: email_post_markdown(post), url: post.url, post_id: post.id, @@ -271,6 +287,8 @@ class UserNotifications < ActionMailer::Base include_respond_instructions: !user.suspended?, template: template, html_override: html, + site_description: SiteSetting.site_description, + site_title: SiteSetting.title, style: :notification } diff --git a/app/models/admin_dashboard_data.rb b/app/models/admin_dashboard_data.rb index faae6dfc8a..202bd3c27e 100644 --- a/app/models/admin_dashboard_data.rb +++ b/app/models/admin_dashboard_data.rb @@ -42,7 +42,8 @@ class AdminDashboardData title_check, site_description_check, site_contact_username_check, - notification_email_check + notification_email_check, + s3_deprecation_warning ].compact end @@ -186,4 +187,8 @@ class AdminDashboardData I18n.t('dashboard.ruby_version_warning') if RUBY_VERSION == '2.0.0' and RUBY_PATCHLEVEL < 247 end + def s3_deprecation_warning + I18n.t('dashboard.s3_deprecation_warning') if SiteSetting.enable_s3_uploads + end + end diff --git a/app/models/backup.rb b/app/models/backup.rb index 8b2b27d806..c143eeb10c 100644 --- a/app/models/backup.rb +++ b/app/models/backup.rb @@ -10,7 +10,7 @@ class Backup end def self.all - Dir.glob(File.join(Backup.base_directory, "*.tar.gz")) + Dir.glob(File.join(Backup.base_directory, "*.{gz,tgz}")) .sort_by { |file| File.mtime(file) } .reverse .map { |backup| Backup.create_from_filename(File.basename(backup)) } diff --git a/app/models/directory_item.rb b/app/models/directory_item.rb index 0c9e5d6756..65d8dede2b 100644 --- a/app/models/directory_item.rb +++ b/app/models/directory_item.rb @@ -7,7 +7,9 @@ class DirectoryItem < ActiveRecord::Base :likes_given, :topics_entered, :topic_count, - :post_count] + :post_count, + :posts_read, + :days_visited] end def self.period_types @@ -22,6 +24,10 @@ class DirectoryItem < ActiveRecord::Base end def self.refresh_period!(period_type) + + # Don't calculate it if the user directory is disabled + return unless SiteSetting.enable_user_directory? + since = case period_type when :daily then 1.day.ago when :weekly then 1.week.ago @@ -31,13 +37,15 @@ class DirectoryItem < ActiveRecord::Base end exec_sql "INSERT INTO directory_items - (period_type, user_id, likes_received, likes_given, topics_entered, topic_count, post_count) + (period_type, user_id, likes_received, likes_given, topics_entered, days_visited, posts_read, topic_count, post_count) SELECT :period_type, u.id, SUM(CASE WHEN ua.action_type = :was_liked_type THEN 1 ELSE 0 END), SUM(CASE WHEN ua.action_type = :like_type THEN 1 ELSE 0 END), - (SELECT COUNT(topic_id) FROM topic_views AS v WHERE v.user_id = u.id AND v.viewed_at > :since), + COALESCE((SELECT COUNT(topic_id) FROM topic_views AS v WHERE v.user_id = u.id AND v.viewed_at >= :since), 0), + COALESCE((SELECT COUNT(id) FROM user_visits AS uv WHERE uv.user_id = u.id AND uv.visited_at >= :since), 0), + COALESCE((SELECT SUM(posts_read) FROM user_visits AS uv2 WHERE uv2.user_id = u.id AND uv2.visited_at >= :since), 0), SUM(CASE WHEN ua.action_type = :new_topic_type THEN 1 ELSE 0 END), SUM(CASE WHEN ua.action_type = :reply_type THEN 1 ELSE 0 END) FROM users AS u @@ -53,7 +61,6 @@ class DirectoryItem < ActiveRecord::Base AND COALESCE(t.archetype, 'regular') = 'regular' AND p.deleted_at IS NULL AND (NOT (COALESCE(p.hidden, false))) - AND (NOT COALESCE(c.read_restricted, false)) AND COALESCE(p.post_type, :regular_post_type) != :moderator_action AND u.id > 0 GROUP BY u.id", diff --git a/app/models/discourse_single_sign_on.rb b/app/models/discourse_single_sign_on.rb index 377cb21028..4db846f93b 100644 --- a/app/models/discourse_single_sign_on.rb +++ b/app/models/discourse_single_sign_on.rb @@ -88,7 +88,7 @@ class DiscourseSingleSignOn < SingleSignOn user_params = { email: email, - name: User.suggest_name(try_name || try_username || email), + name: try_name || User.suggest_name(try_username || email), username: UserNameSuggester.suggest(try_username || try_name || email), ip_address: ip_address } @@ -110,21 +110,17 @@ class DiscourseSingleSignOn < SingleSignOn end def change_external_attributes_and_override(sso_record, user) - if SiteSetting.sso_overrides_email && email != sso_record.external_email - # set the user's email to whatever came in the payload + if SiteSetting.sso_overrides_email && user.email != email user.email = email end - if SiteSetting.sso_overrides_username && username != sso_record.external_username && user.username != username - # we have an external username change, and the user's current username doesn't match - # run it through the UserNameSuggester to override it - user.username = UserNameSuggester.suggest(username || name || email) + if SiteSetting.sso_overrides_username && + user.username != username + user.username = UserNameSuggester.suggest(username || name || email, user.username) end - if SiteSetting.sso_overrides_name && name != sso_record.external_name && user.name != name - # we have an external name change, and the user's current name doesn't match - # run it through the name suggester to override it - user.name = User.suggest_name(name || username || email) + if SiteSetting.sso_overrides_name && user.name != name + user.name = name || User.suggest_name(username || email) end if SiteSetting.sso_overrides_avatar && avatar_url.present? && ( diff --git a/app/models/group.rb b/app/models/group.rb index c8329eb5c2..8d1e38f42a 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -12,6 +12,8 @@ class Group < ActiveRecord::Base after_save :destroy_deletions after_save :automatic_group_membership + after_save :update_primary_group + after_save :update_title validate :name_format_validator validates_uniqueness_of :name, case_sensitive: false @@ -301,6 +303,59 @@ class Group < ActiveRecord::Base end end + def update_title + return if new_record? && !self.title.present? + + if self.title_changed? + sql = < COALESCE(:title,'') AND + id IN ( + SELECT user_id + FROM group_users + WHERE group_id = :id + ) +SQL + + self.class.exec_sql(sql, + title: title, + title_was: title_was, + id: id + ) + end + end + + def update_primary_group + return if new_record? && !self.primary_group? + + if self.primary_group_changed? + sql = <"} + -resize #{dimensions}#{!!opts[:force_aspect_ratio] ? "\\!" : "\\>"} #{to} } end @@ -123,7 +123,7 @@ class OptimizedImage < ActiveRecord::Base -coalesce -gravity center -background transparent - -thumbnail #{dimensions}#{!!opts[:force_aspect_ratio] ? "\\!" : "\\>"} + -resize #{dimensions}#{!!opts[:force_aspect_ratio] ? "\\!" : "\\>"} #{to} } end @@ -153,7 +153,7 @@ class OptimizedImage < ActiveRecord::Base return false if $?.exitstatus != 0 - ImageOptim.new.optimize_image(to) rescue nil + ImageOptim.new.optimize_image!(to) rescue nil true end diff --git a/app/models/post.rb b/app/models/post.rb index b4bf023d56..9e07e94f93 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -88,7 +88,7 @@ class Post < ActiveRecord::Base end def limit_posts_per_day - if user.created_at > 1.day.ago && post_number > 1 + if user.first_day_user? && post_number > 1 RateLimiter.new(user, "first-day-replies-per-day", SiteSetting.max_replies_in_first_day, 1.day.to_i) end end diff --git a/app/models/post_action.rb b/app/models/post_action.rb index 1ba8be9a4b..eb72e7678b 100644 --- a/app/models/post_action.rb +++ b/app/models/post_action.rb @@ -188,7 +188,7 @@ class PostAction < ActiveRecord::Base return if staff_already_replied?(related_post.topic) message_key = "flags_dispositions.#{disposition}" message_key << "_and_deleted" if delete_post - related_post.topic.add_moderator_post(moderator, I18n.t(message_key), skip_notifications: true) + related_post.topic.add_moderator_post(moderator, I18n.t(message_key)) end def staff_already_replied?(topic) diff --git a/app/models/post_alert_observer.rb b/app/models/post_alert_observer.rb index 20fa9e67c9..ce2b366526 100644 --- a/app/models/post_alert_observer.rb +++ b/app/models/post_alert_observer.rb @@ -35,7 +35,8 @@ class PostAlertObserver < ActiveRecord::Observer Notification.types[:liked], post, display_username: post_action.user.username, - post_action_id: post_action.id + post_action_id: post_action.id, + user_id: post_action.user_id ) end diff --git a/app/models/post_mover.rb b/app/models/post_mover.rb index 0a834912c4..77111f6151 100644 --- a/app/models/post_mover.rb +++ b/app/models/post_mover.rb @@ -43,6 +43,7 @@ class PostMover update_user_actions set_last_post_user_id(destination_topic) + destination_topic.reload destination_topic end diff --git a/app/models/report.rb b/app/models/report.rb index 3cc9f1c101..37df62e23f 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -62,10 +62,10 @@ class Report filtered_results = data.where('date >= ? AND date <= ?', report.start_date.to_date, report.end_date.to_date) report.data = [] - filtered_results.group(:date) + filtered_results.order(date: :asc) + .group(:date) .sum(:count) .each do |date, count| - report.data << {x: date, y: count} end diff --git a/app/models/rtl.rb b/app/models/rtl.rb index d4857c1fb9..e3a4946b3a 100644 --- a/app/models/rtl.rb +++ b/app/models/rtl.rb @@ -19,7 +19,7 @@ class RTL end def rtl_locales - %w(he ar) + %w(he ar fa_IR) end def css_class diff --git a/app/models/topic.rb b/app/models/topic.rb index 03868e13b8..e214923886 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -250,7 +250,7 @@ class Topic < ActiveRecord::Base # Additional rate limits on topics: per day and private messages per day def limit_topics_per_day apply_per_day_rate_limit_for("topics", :max_topics_per_day) - limit_first_day_topics_per_day if user.added_a_day_ago? + limit_first_day_topics_per_day if user.first_day_user? end def limit_private_messages_per_day @@ -537,7 +537,7 @@ class Topic < ActiveRecord::Base # Invite a user to the topic by username or email. Returns success/failure def invite(invited_by, username_or_email, group_ids=nil) if private_message? - # If the user exists, add them to the topic. + # If the user exists, add them to the message. user = User.find_by_username_or_email(username_or_email) if user && topic_allowed_users.create!(user_id: user.id) @@ -551,11 +551,24 @@ class Topic < ActiveRecord::Base end end - if username_or_email =~ /^.+@.+$/ + if username_or_email =~ /^.+@.+$/ && !SiteSetting.enable_sso # NOTE callers expect an invite object if an invite was sent via email invite_by_email(invited_by, username_or_email, group_ids) else - false + # invite existing member to a topic + user = User.find_by_username(username_or_email) + if user && topic_allowed_users.create!(user_id: user.id) + + # Notify the user they've been invited + user.notifications.create(notification_type: Notification.types[:invited_to_topic], + topic_id: id, + post_number: 1, + data: { topic_title: title, + display_username: invited_by.username }.to_json) + return true + else + false + end end end diff --git a/app/models/topic_featured_users.rb b/app/models/topic_featured_users.rb index 45771d28e8..a192cfe942 100644 --- a/app/models/topic_featured_users.rb +++ b/app/models/topic_featured_users.rb @@ -11,10 +11,8 @@ class TopicFeaturedUsers # Chooses which topic users to feature def choose(args={}) - clear - update keys(args) + self.class.ensure_consistency!(topic.id.to_i) update_participant_count - topic.save end def user_ids @@ -24,19 +22,29 @@ class TopicFeaturedUsers topic.featured_user4_id].uniq.compact end - def self.ensure_consistency! + def self.ensure_consistency!(topic_id=nil) sql = < t.user_id AND + WHERE p.deleted_at IS NULL AND + NOT p.hidden AND + p.user_id <> t.user_id AND p.user_id <> t.last_post_user_id GROUP BY t.id, p.user_id +), + +cte2 as ( + SELECT id, user_id, ROW_NUMBER() OVER(PARTITION BY id ORDER BY last_post_date ASC) as rank + FROM cte + WHERE rank <= #{count} ) UPDATE topics tt @@ -52,8 +60,7 @@ FROM ( MAX(case when c.rank = 2 then c.user_id end) featured_user2, MAX(case when c.rank = 3 then c.user_id end) featured_user3, MAX(case when c.rank = 4 then c.user_id end) featured_user4 - FROM cte as c - WHERE c.rank <= 4 + FROM cte2 as c GROUP BY c.id ) x WHERE x.id = tt.id AND @@ -62,7 +69,7 @@ WHERE x.id = tt.id AND COALESCE(featured_user2_id,-99) <> COALESCE(featured_user2,-99) OR COALESCE(featured_user3_id,-99) <> COALESCE(featured_user3,-99) OR COALESCE(featured_user4_id,-99) <> COALESCE(featured_user4,-99) -) +) #{"AND x.id = #{topic_id.to_i}" if topic_id} SQL Topic.exec_sql(sql) @@ -70,30 +77,7 @@ SQL private - def keys(args) - # Don't include the OP or the last poster - to_feature = topic.posts.where('user_id NOT IN (?, ?)', topic.user_id, topic.last_post_user_id) - - # Exclude a given post if supplied (in the case of deletes) - to_feature = to_feature.where("id <> ?", args[:except_post_id]) if args[:except_post_id].present? - - # Assign the featured_user{x} columns - to_feature.group(:user_id).order('count_all desc').limit(TopicFeaturedUsers.count).count.keys - end - - def clear - TopicFeaturedUsers.count.times do |i| - topic.send("featured_user#{i+1}_id=", nil) - end - end - - def update(user_keys) - user_keys.each_with_index do |user_id, i| - topic.send("featured_user#{i+1}_id=", user_id) - end - end - def update_participant_count - topic.participant_count = topic.posts.count('distinct user_id') + topic.update_columns(participant_count: topic.posts.count('distinct user_id')) end end diff --git a/app/models/topic_link_click.rb b/app/models/topic_link_click.rb index 0082635670..225d690439 100644 --- a/app/models/topic_link_click.rb +++ b/app/models/topic_link_click.rb @@ -13,6 +13,8 @@ class TopicLinkClick < ActiveRecord::Base validates_presence_of :topic_link_id validates_presence_of :ip_address + WHITELISTED_REDIRECT_HOSTNAMES = Set.new(%W{www.youtube.com youtu.be}) + # Create a click from a URL and post_id def self.create_from(args={}) url = args[:url] @@ -52,7 +54,10 @@ class TopicLinkClick < ActiveRecord::Base # If we have it somewhere else on the site, just allow the redirect. # This is likely due to a onebox of another topic. link = TopicLink.find_by(url: url) - return link.present? ? link.url : nil + return link.url if link.present? + + # Only redirect to whitelisted hostnames + return WHITELISTED_REDIRECT_HOSTNAMES.include?(uri.hostname) ? url : nil end return url if args[:user_id] && link.user_id == args[:user_id] diff --git a/app/models/user.rb b/app/models/user.rb index b53d8c3e93..62604333f7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -72,6 +72,7 @@ class User < ActiveRecord::Base validates :email, presence: true, uniqueness: true validates :email, email: true, if: :email_changed? validate :password_validator + validates :name, user_full_name: true, if: :name_changed? validates :ip_address, allowed_ip_address: {on: :create, message: :signup_not_allowed} after_initialize :add_trust_level @@ -311,8 +312,16 @@ class User < ActiveRecord::Base self.password_hash == hash_password(password, salt) end + def first_day_user? + !staff? && + trust_level < TrustLevel[2] && + created_at >= 24.hours.ago + end + def new_user? - created_at >= 24.hours.ago || trust_level == TrustLevel[0] + (created_at >= 24.hours.ago || trust_level == TrustLevel[0]) && + trust_level < TrustLevel[2] && + !staff? end def seen_before? @@ -560,10 +569,6 @@ class User < ActiveRecord::Base uploaded_avatar.present? end - def added_a_day_ago? - created_at > 1.day.ago - end - def generate_api_key(created_by) if api_key.present? api_key.regenerate!(created_by) @@ -641,6 +646,10 @@ class User < ActiveRecord::Base if SiteSetting.automatically_download_gravatars? && !avatar.last_gravatar_download_attempt Jobs.enqueue(:update_gravatar, user_id: self.id, avatar_id: avatar.id) end + + if self.uploaded_avatar_id_changed? + Jobs.enqueue(:fix_avatar_in_quotes, user_id: self.id) + end end def first_post_created_at @@ -716,6 +725,12 @@ class User < ActiveRecord::Base UserProfile.create(user_id: id) end + def anonymous? + SiteSetting.allow_anonymous_posting && + trust_level >= 1 && + custom_fields["master_id"].to_i > 0 + end + protected def badge_grant diff --git a/app/models/user_email_observer.rb b/app/models/user_email_observer.rb index 034a2e6492..e2389f5bb4 100644 --- a/app/models/user_email_observer.rb +++ b/app/models/user_email_observer.rb @@ -32,6 +32,10 @@ class UserEmailObserver < ActiveRecord::Observer enqueue :user_invited_to_private_message end + def invited_to_topic + enqueue :user_invited_to_topic + end + private def enqueue(type) diff --git a/app/serializers/basic_group_serializer.rb b/app/serializers/basic_group_serializer.rb index 0e22994212..9f6ad6b7a2 100644 --- a/app/serializers/basic_group_serializer.rb +++ b/app/serializers/basic_group_serializer.rb @@ -6,5 +6,7 @@ class BasicGroupSerializer < ApplicationSerializer :alias_level, :visible, :automatic_membership_email_domains, - :automatic_membership_retroactive + :automatic_membership_retroactive, + :primary_group, + :title end diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb index f07cd907e6..e8b3e717a2 100644 --- a/app/serializers/current_user_serializer.rb +++ b/app/serializers/current_user_serializer.rb @@ -25,7 +25,8 @@ class CurrentUserSerializer < BasicUserSerializer :disable_jump_reply, :custom_fields, :muted_category_ids, - :dismissed_banner_key + :dismissed_banner_key, + :is_anonymous def include_site_flagged_posts_count? object.staff? @@ -102,4 +103,8 @@ class CurrentUserSerializer < BasicUserSerializer object.user_profile.dismissed_banner_key end + def is_anonymous + object.anonymous? + end + end diff --git a/app/serializers/post_action_type_serializer.rb b/app/serializers/post_action_type_serializer.rb index 763bc3886b..d32bdf1ea3 100644 --- a/app/serializers/post_action_type_serializer.rb +++ b/app/serializers/post_action_type_serializer.rb @@ -25,8 +25,9 @@ class PostActionTypeSerializer < ApplicationSerializer protected - def i18n(field, vars={}) - I18n.t("post_action_types.#{object.name_key}.#{field}", vars) + def i18n(field, vars=nil) + key = "post_action_types.#{object.name_key}.#{field}" + vars ? I18n.t(key, vars) : I18n.t(key) end end diff --git a/app/serializers/topic_flag_type_serializer.rb b/app/serializers/topic_flag_type_serializer.rb index f95cf6a8d9..a764d1a820 100644 --- a/app/serializers/topic_flag_type_serializer.rb +++ b/app/serializers/topic_flag_type_serializer.rb @@ -2,8 +2,9 @@ class TopicFlagTypeSerializer < PostActionTypeSerializer protected - def i18n(field, vars={}) - I18n.t("topic_flag_types.#{object.name_key}.#{field}", vars) + def i18n(field, vars=nil) + key = "topic_flag_types.#{object.name_key}.#{field}" + vars ? I18n.t(key,vars) : I18n.t(key) end end diff --git a/app/services/anonymous_shadow_creator.rb b/app/services/anonymous_shadow_creator.rb new file mode 100644 index 0000000000..3441455d8c --- /dev/null +++ b/app/services/anonymous_shadow_creator.rb @@ -0,0 +1,70 @@ +class AnonymousShadowCreator + + def self.get_master(user) + return unless user + return if !SiteSetting.allow_anonymous_posting + + if (master_id = user.custom_fields["master_id"].to_i) > 0 + User.find_by(id: master_id) + end + + end + + def self.get(user) + return unless user + return if !SiteSetting.allow_anonymous_posting || + user.trust_level < SiteSetting.anonymous_posting_min_trust_level + + if (shadow_id = user.custom_fields["shadow_id"].to_i) > 0 + shadow = User.find_by(id: shadow_id) + + if shadow && shadow.post_count > 0 && + shadow.last_posted_at < SiteSetting.anonymous_account_duration_minutes.minutes.ago + shadow = nil + end + + shadow || create_shadow(user) + else + create_shadow(user) + end + end + + def self.create_shadow(user) + User.transaction do + shadow = User.create!( + password: SecureRandom.hex, + email: "#{SecureRandom.hex}@#{SecureRandom.hex}.com", + name: "", + username: UserNameSuggester.suggest(I18n.t(:anonymous).downcase), + active: true, + trust_level: 1, + trust_level_locked: true, + email_private_messages: false, + email_digests: false, + created_at: 1.day.ago # bypass new user restrictions + ) + + shadow.email_tokens.update_all confirmed: true + shadow.activate + + + # can not hold dupes + UserCustomField.where(user_id: user.id, + name: "shadow_id").destroy_all + + UserCustomField.create!(user_id: user.id, + name: "shadow_id", + value: shadow.id) + + UserCustomField.create!(user_id: shadow.id, + name: "master_id", + value: user.id) + + shadow.reload + user.reload + + shadow + + end + end +end diff --git a/app/services/badge_granter.rb b/app/services/badge_granter.rb index 9c17abaa92..b34b6543be 100644 --- a/app/services/badge_granter.rb +++ b/app/services/badge_granter.rb @@ -120,7 +120,9 @@ class BadgeGranter user_ids = list.map{|i| i["user_ids"]}.flatten.compact.uniq next unless post_ids.present? || user_ids.present? - find_by_type(type).each{|badge| backfill(badge, post_ids: post_ids, user_ids: user_ids)} + find_by_type(type).each{ |badge| + backfill(badge, post_ids: post_ids, user_ids: user_ids) + } end end diff --git a/app/services/post_alerter.rb b/app/services/post_alerter.rb index e62c06c43b..9064177433 100644 --- a/app/services/post_alerter.rb +++ b/app/services/post_alerter.rb @@ -10,14 +10,14 @@ class PostAlerter def after_create_post(post) if post.topic.private_message? # If it's a private message, notify the topic_allowed_users - post.topic.all_allowed_users.reject{ |user| user.id == post.user_id }.each do |user| - next if user.blank? - + post.topic.all_allowed_users.reject do |user| + user.blank? || + user.id == Discourse::SYSTEM_USER_ID || + user.id == post.user_id + end.each do |user| if TopicUser.get(post.topic, user).try(:notification_level) == TopicUser.notification_levels[:tracking] - next unless post.reply_to_post_number - next unless post.reply_to_post.user_id == user.id + next unless post.reply_to_post_number || post.reply_to_post.user_id == user.id end - create_notification(user, Notification.types[:private_message], post) end elsif post.post_type != Post.types[:moderator_action] @@ -82,12 +82,18 @@ class PostAlerter def create_notification(user, type, post, opts={}) return if user.blank? + return if user.id == Discourse::SYSTEM_USER_ID # Make sure the user can see the post return unless Guardian.new(user).can_see?(post) + notifier_id = opts[:user_id] || post.user_id + # apply muting here - return if post.user_id && MutedUser.where(user_id: user.id, muted_user_id: post.user_id).exists? + return if notifier_id && MutedUser.where(user_id: user.id, muted_user_id: notifier_id) + .joins(:muted_user) + .where('NOT admin AND NOT moderator') + .exists? # skip if muted on the topic return if TopicUser.get(post.topic, user).try(:notification_level) == TopicUser.notification_levels[:muted] diff --git a/app/services/post_owner_changer.rb b/app/services/post_owner_changer.rb index e5a03b1bcd..2776ebfa58 100644 --- a/app/services/post_owner_changer.rb +++ b/app/services/post_owner_changer.rb @@ -19,6 +19,7 @@ class PostOwnerChanger @topic.update_statistics @new_owner.user_stat.update(first_post_created_at: @new_owner.posts(true).order('created_at ASC').first.try(:created_at)) + @topic.save! end end end diff --git a/app/services/user_updater.rb b/app/services/user_updater.rb index 9dc5ee7948..c8741f867b 100644 --- a/app/services/user_updater.rb +++ b/app/services/user_updater.rb @@ -75,17 +75,13 @@ class UserUpdater end end - private - - attr_reader :user, :guardian - def update_muted_users(usernames) usernames ||= "" desired_ids = User.where(username: usernames.split(",")).pluck(:id) if desired_ids.empty? MutedUser.where(user_id: user.id).destroy_all else - MutedUser.where('id not in (?)', desired_ids).destroy_all + MutedUser.where('user_id = ? AND muted_user_id not in (?)', user.id, desired_ids).destroy_all # SQL is easier here than figuring out how to do the same in AR MutedUser.exec_sql("INSERT into muted_users(user_id, muted_user_id, created_at, updated_at) @@ -102,6 +98,10 @@ class UserUpdater end end + private + + attr_reader :user, :guardian + def format_url(website) if website =~ /^http/ website diff --git a/app/views/categories/index.html.erb b/app/views/categories/index.html.erb index 2b189514a6..3ffbc4c592 100644 --- a/app/views/categories/index.html.erb +++ b/app/views/categories/index.html.erb @@ -1,14 +1,26 @@ -<% @list.categories.each do |c| %> -
    -

    "><%= c.name %>

    -
    - <%- if c.displayable_topics.present? %> - <% c.displayable_topics.each do |t| %> - <%= t.title %> '>(<%= t.posts_count %>)
    - <% end %> - <%- end %> +
    + + <% @list.categories.each do |c| %> +
    + +

    + <%= c.name %> +

    + <%= c.description %> +
    + <%- if c.displayable_topics.present? %> + <% c.displayable_topics.each do |t| %> +
    + + + <%= t.title %> + '>(<%= t.posts_count %>) +
    + <% end %> + <%- end %> +
    -
    -<% end %> + <% end %> +
    <% content_for :title do %><%= I18n.t('js.filters.categories.title') %><% end %> diff --git a/app/views/common/_discourse_javascript.html.erb b/app/views/common/_discourse_javascript.html.erb index 8f0c83dd7e..7beae7ecb8 100644 --- a/app/views/common/_discourse_javascript.html.erb +++ b/app/views/common/_discourse_javascript.html.erb @@ -32,7 +32,7 @@ Discourse.BaseUri = '<%= Discourse::base_uri "/" %>'; Discourse.Environment = '<%= Rails.env %>'; Discourse.SiteSettings = PreloadStore.get('siteSettings'); - Discourse.LetterAvatarVersion = <%= LetterAvatar::VERSION %>; + Discourse.LetterAvatarVersion = '<%= LetterAvatar.version %>'; PreloadStore.get("customEmoji").forEach(function(emoji) { Discourse.Dialect.registerEmoji(emoji.name, emoji.url); }); diff --git a/app/views/common/_google_universal_analytics.html.erb b/app/views/common/_google_universal_analytics.html.erb index 8514da2f0a..39f7baf994 100644 --- a/app/views/common/_google_universal_analytics.html.erb +++ b/app/views/common/_google_universal_analytics.html.erb @@ -4,7 +4,7 @@ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create', '<%= SiteSetting.ga_universal_tracking_code %>', '<%= SiteSetting.ga_universal_domain_name.gsub(/^http(s)?:\/\//, '') %>'); + ga('create', '<%= SiteSetting.ga_universal_tracking_code %>', <%= ga_universal_json %>); ga('send', 'pageview'); diff --git a/app/views/common/_special_font_face.html.erb b/app/views/common/_special_font_face.html.erb index cf4ca63713..d6b169e353 100644 --- a/app/views/common/_special_font_face.html.erb +++ b/app/views/common/_special_font_face.html.erb @@ -1,34 +1,32 @@ +<%# + The fonts are loaded outside of the stylesheet so that we can dynamically change the path. + This is to get around CDN caching on the Origin: - <%# - The fonts are loaded outside of the stylesheet so that we can dynamically change - the path. This is to get around CDN caching on the Origin: + https://forums.aws.amazon.com/thread.jspa?threadID=114646 - https://forums.aws.amazon.com/thread.jspa?threadID=114646 + Also added a cache breaker there in case we have breaking config changes + &1 was added last when the nginx sample config changed +%> - Also added a cache breaker there in case we have breaking config changes - &1 was added last when the nginx sample config changed - %> - -<% font_domain = "#{request.protocol}#{request.host_with_port}&1" %> +<% font_domain = "#{request.protocol}#{request.host_with_port}&2" %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index baf1f7cbd0..12d954e738 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -42,7 +42,17 @@ <%= yield %> +
    + +
    +

    <%= t 'powered_by_html' %>

    @@ -61,7 +71,7 @@
    <% unless current_user %> -
    <%= render_google_analytics_code %> diff --git a/app/views/list/list.erb b/app/views/list/list.erb index 966c863f5f..c6ff86bb0c 100644 --- a/app/views/list/list.erb +++ b/app/views/list/list.erb @@ -1,21 +1,26 @@ -
    -<% @list.topics.each do |t| %> - <%= t.title %> - <% if !@category && t.category %> - [<%= t.category.name %>] +
    + + <% @list.topics.each_with_index do |t,i| %> +
    + + + <%= t.title %> + + <% if !@category && t.category %> + [<%= t.category.name %>] + <% end %> + '>(<%= t.posts_count %>) +
    <% end %> - '>(<%= t.posts_count %>)
    -<% end %>
    - <% if @list.topics.length > 0 && @list.more_topics_url %> -

    - <% if params[:page].to_i > 0 %> -   - <% end %> - -

    +
    + <% if params[:page].to_i > 0 %> + + <% end %> + +
    <% end %> <% if @rss %> diff --git a/app/views/robots_txt/index.erb b/app/views/robots_txt/index.erb index d265a6fbc6..ba30c7976c 100644 --- a/app/views/robots_txt/index.erb +++ b/app/views/robots_txt/index.erb @@ -11,3 +11,5 @@ Disallow: /auth/cas/callback Disallow: /assets/browser-update*.js Disallow: /users/ Disallow: /badges/ +Disallow: /search +Disallow: /search/ diff --git a/app/views/static/show.html.erb b/app/views/static/show.html.erb index e6aa2892e5..2f73233a03 100644 --- a/app/views/static/show.html.erb +++ b/app/views/static/show.html.erb @@ -1,20 +1,24 @@ - -<% if staff? %> -

    <%=t "edit_this_page" -%>

    -<% end %> - -<%= @body.html_safe %> +
    + <%= @body.html_safe %> +
    +
    <% if @title %> <% content_for :title do %><%= @title %><% end %> diff --git a/app/views/topics/show.html.erb b/app/views/topics/show.html.erb index 846bdc38c8..11b16051fe 100644 --- a/app/views/topics/show.html.erb +++ b/app/views/topics/show.html.erb @@ -1,40 +1,52 @@

    - <%= render_topic_title(@topic_view.topic) %> + <%= render_topic_title(@topic_view.topic) %>

    -<% if c = @topic_view.topic.category %> - <%= link_to c.name, c.url %> -<% end %> -
    + +
    + <% categories_breadcrumb(@topic_view.topic).each_with_index do |c,i| %> + + <%= link_to c[:url], itemprop: 'item' do %> + <%= c[:name] %> + <% end %> + + + <% end %> +
    +
    <% @topic_view.posts.each do |post| %> - <% if post.user %> -
    - <%= post.user.username %> - <%= "(#{post.user.name})" if (SiteSetting.display_name_on_posts && SiteSetting.enable_names?) %> — - <%= post.created_at.to_formatted_s(:iso8601) %> — - #<%= post.post_number %> -
    -
    - <% if post.hidden %> - <%= t('flagging.user_must_edit').html_safe %> - <% else %> - <%= post.cooked.html_safe %> - <% end %> -
    -
    - <% end %> +
    + <% if (u = post.user) %> +
    + + + <%= "(#{u.name})" if (SiteSetting.display_name_on_posts && SiteSetting.enable_names? && !u.name.blank?) %> + + + #<%= post.post_number %> +
    +
    + <%= post.hidden ? t('flagging.user_must_edit').html_safe : post.cooked.html_safe %> +
    + + +
    + <% end %> +
    <% end %> - -

    - <% if @topic_view.prev_page %> - <%= link_to t(:prev_page), @topic_view.prev_page_path, rel: 'prev' %> - <% end %> - <% if @topic_view.next_page %> - <%= link_to t(:next_page), @topic_view.next_page_path, rel: 'next' %> - <% end %> -

    - +<% if @topic_view.prev_page || @topic_view.next_page %> +
    + <% if @topic_view.prev_page %> + + <% end %> + <% if @topic_view.next_page %> + + <% end %> +
    +<% end %> <% content_for :head do %> <%= auto_discovery_link_tag(@topic_view, {action: :feed, slug: @topic_view.topic.slug, topic_id: @topic_view.topic.id}, title: t('rss_posts_in_topic', topic: @topic_view.title), type: 'application/rss+xml') %> diff --git a/config/application.rb b/config/application.rb index 2f72b3a826..400a4e50d4 100644 --- a/config/application.rb +++ b/config/application.rb @@ -88,8 +88,9 @@ module Discourse # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. config.time_zone = 'UTC' - # auto-load server locale in plugins - config.i18n.load_path += Dir["#{Rails.root}/plugins/*/config/locales/server.*.yml"] + # auto-load locales in plugins + # NOTE: we load both client & server locales since some might be used by PrettyText + config.i18n.load_path += Dir["#{Rails.root}/plugins/*/config/locales/*.yml"] # Configure the default encoding used in templates for Ruby 1.9. config.encoding = 'utf-8' diff --git a/config/initializers/99-unicorn.rb b/config/initializers/99-unicorn.rb index 072283c07c..43e8cb75f7 100644 --- a/config/initializers/99-unicorn.rb +++ b/config/initializers/99-unicorn.rb @@ -5,7 +5,7 @@ if defined? Unicorn::HttpServer s.extend(Scheduler::Defer::Unicorn) end - if ENV['UNICORN_ENABLE_OOBGC'] == '1' + if ENV['UNICORN_ENABLE_OOBGC'] == '1' && RUBY_VERSION < "2.2.0" require 'middleware/unicorn_oobgc' Middleware::UnicornOobgc.init end diff --git a/config/locales/client.ar.yml b/config/locales/client.ar.yml index 1e08093d81..884cec54ec 100644 --- a/config/locales/client.ar.yml +++ b/config/locales/client.ar.yml @@ -50,11 +50,95 @@ ar: few: "%{count} ثانية" many: "%{count} ثانية" other: "%{count} ثانية" + less_than_x_minutes: + zero: "< 0 د" + one: "< 1 د" + two: "< 2 د" + few: "< %{count} د" + many: "< %{count} د" + other: "< %{count} د" + x_minutes: + zero: "0 د" + one: "1 د" + two: "2 د" + few: "%{count} د" + many: "%{count} د" + other: "%{count} د" + about_x_hours: + zero: "0 س" + one: "1 س" + two: "2 س" + few: "%{count} س" + many: "%{count} س" + other: "%{count} س" + x_days: + zero: "0 ي" + one: "1 ي" + two: "2 ي" + few: "%{count} ي" + many: "%{count} ي" + other: "%{count} ي" + about_x_years: + zero: "0 ع" + one: "1 ع" + two: "2 ع" + few: "%{count} ع" + many: "%{count} ع" + other: "%{count} ع" + over_x_years: + zero: "> 0 ع" + one: "> 1 ع" + two: "> 2 ع" + few: "> %{count} ع" + many: "> %{count} ع" + other: "> %{count} ع" + almost_x_years: + zero: "0 ع" + one: "1 ع" + two: "2 ع" + few: "%{count} ع" + many: "%{count} ع" + other: "%{count} ع" date_month: "MMM D" date_year: "MMM 'YY" medium: + x_minutes: + zero: "0 دقيقة" + one: "دقيقة واحدة" + two: "دقيقتان" + few: "%{count} دقائق" + many: "%{count} دقيقة" + other: "%{count} دقيقة" + x_hours: + zero: "0 ساعة" + one: "ساعة واحدة" + two: "ساعتان" + few: "%{count} ساعات" + many: "%{count} ساعة" + other: "%{count} ساعة" + x_days: + zero: "0 يوم" + one: "يوم واحد" + two: "يومان" + few: "%{count} أيام" + many: "%{count} يومًا" + other: "%{count} يوم" date_year: "MMM D, 'YY" medium_with_ago: + x_minutes: + zero: "منذ 0 دقيقة" + one: "منذ دقيقة واحدة" + two: "منذ دقيقتين" + few: "منذ %{count} دقائق" + many: "منذ %{count} دقيقة" + other: "منذ %{count} دقيقة" + x_hours: + zero: "منذ 0 ساعة" + one: "منذ ساعة واحدة" + two: "منذ ساعتين" + few: "منذ %{count} ساعات" + many: "منذ %{count} ساعة" + other: "منذ %{count} ساعة" x_days: zero: "%{count} يوم مضى" one: "%{count} يوم مضى" @@ -64,6 +148,7 @@ ar: other: "%{count} يوم مضى" share: topic: 'ضع رابطاً في هذا الموضوع.' + post: 'الموضوع رقم %{postNumber}' close: 'اغلق' twitter: 'شارك هذا الرابط عن طريق تويتر' facebook: 'شارك هذا الرابط عن طريق فيس بوك' @@ -104,7 +189,15 @@ ar: daily: "يومي" weekly: "اسبوعي" every_two_weeks: "كل اسبوعين" + every_three_days: "كل ثلاثة أيام" max_of_count: "اقصى {{count}}" + character_count: + zero: "0 حرف" + one: "حرف واحد" + two: "حرفان" + few: "{{count}} أحرف" + many: "{{count}} حرفًا" + other: "{{count}} حرف" suggested_topics: title: "مواضيع مقترحة" about: @@ -136,6 +229,28 @@ ar: not_bookmarked: "لقد قمت بقراءة هذه المشاركة مسبقاً. اضغط هنا لحفظها." last_read: "هذه آخر مشاركة تمت قرائتها. اضغط هنا لحفظها." remove: "المفضلة" + confirm_clear: "هل تود فعلا إزالة كل علامات التفضيل من هذا الموضوع؟" + topic_count_latest: + zero: "0 مواضيع جديدة أو محدّثة" + one: "موضوع واحد جديد أو محدّث" + two: "موضوعان جديدان أو محدّثان" + few: "{{count}} مواضيع جديدة أو محدّثة" + many: "{{count}} موضوعًا جديدا أو محدّثا" + other: "{{count}} موضوع جديد أو محدّث" + topic_count_unread: + zero: "0 مواضيع غير مقروءة" + one: "موضوع واحد غير مقروء" + two: "موضوعان غير مقروءان" + few: "{{count}} مواضيع غير مقروءة" + many: "{{count}} موضوعًا غير مقروء" + other: "{{count}} موضوع غير مقروء" + topic_count_new: + zero: "0 مواضيع جديدة" + one: "موضوع واحد جديد" + two: "موضوعان جديدان" + few: "{{count}} مواضيع جديدة" + many: "{{count}} موضوعًا جديدًا" + other: "{{count}} موضوع جديد" click_to_show: "إضغط للعرض." preview: "معاينة" cancel: "الغاء" @@ -171,6 +286,22 @@ ar: posted_by_you: "مشاركتك " sent_by_user: "مرسلة من قبل {{user}}" sent_by_you: "مرسلة من قبلك " + directory: + filter_name: "التصفية باسم العضو" + title: "الأعضاء" + likes_given: "الإعجابات المعطاة" + likes_received: "الإعجابات المستلمة" + time_read: "وقت القراءة" + topic_count: "المواضيع" + post_count: "الردود" + no_results: "لم يتم العثور على أي نتيجة." + total_rows: + zero: "0 عضو" + one: "عضو واحد" + two: "عضوان" + few: "%{count} أعضاء" + many: "%{count} عضوًا" + other: "%{count} عضو" groups: visible: "المجموعة مخفية عن جميع المستخدمين" title: @@ -190,12 +321,10 @@ ar: members_mods_and_admins: "فقط اعضاء المجموعة والمشرفون والمدراء" everyone: "الكل" user_action_groups: - '1': "الإعجابات التي قمت بإعطائها" - '2': "الإعجابات التي استلمتها" + '1': "الإعجابات المعطاة" + '2': "الإعجابات المستلمة" '3': "المفضلة" '4': "مواضيع" - '5': "مشاركات" - '6': "ردود " '7': "إشارات" '9': "إقتباسات" '10': "تألقت" @@ -214,7 +343,21 @@ ar: toggle_ordering: "تبديل التحكم في الترتيب" subcategories: "تصنيفات فرعية" topic_stats: "عدد المواضيع الجديدة" + topic_stat_sentence: + zero: "لا مواضيع جديدة في ال%{unit} الماضي" + one: "موضوع واحد جديد في ال%{unit} الماضي" + two: "موضوعان جديدان في ال%{unit} الماضي" + few: "%{count} مواضيع جديدة في ال%{unit} الماضي" + many: "%{count} موضوعًا جديدًا في ال%{unit} الماضي" + other: "%{count} موضوع جديد في ال%{unit} الماضي" post_stats: "عدد المواضيع الجديدة" + post_stat_sentence: + zero: "لا مشاركات جديدة في ال%{unit} الماضي" + one: "مشاركة واحدة جديدة في ال%{unit} الماضي" + two: "مشاركتان جديدتان في ال%{unit} الماضي" + few: "%{count} مشاركات جديدة في ال%{unit} الماضي" + many: "%{count} مشاركة جديدة في ال%{unit} الماضي" + other: "%{count} مشاركة جديدة في ال%{unit} الماضي" ip_lookup: title: 'جدول العناوين ' hostname: Hostname @@ -236,8 +379,6 @@ ar: mute: "كتم" edit: "تعديل التفضيلات" download_archive: "تحميل مواضيعي" - new_private_message: "انشاء رسالة خاصة" - private_message: "رسائل خاصة" private_messages: "الرسائل" activity_stream: "النشاط" preferences: " التفضيلات" @@ -274,6 +415,9 @@ ar: delete_yourself_not_allowed: "لايمكنك حذف حسابك لان , تواصل مع المدير ليحذف حسابك " unread_message_count: "الرسائل" admin_delete: "حذف" + users: "الأعضاء" + muted_users: "الأعضاء المكتومون" + muted_users_instructions: "كتم جميع التنبيهات من هؤلاء الأعضاء." staff_counters: flags_given: "علامات مساعدة" flagged_posts: "# مشاركات" @@ -312,7 +456,6 @@ ar: uploaded_avatar_empty: "اضافة صورة " upload_title: "رفع صورتك " upload_picture: "رفع الصورة" - image_is_not_a_square: "تنبيه: تم اقتصاص جزء من الصورة ، لأنها ليست مربعة الشكل." change_profile_background: title: "لون خلفية الحساب" instructions: "سيتم وضع خلفية الحساب في المنتصف بعرض 850px" @@ -366,9 +509,9 @@ ar: email_digests: title: "إرسال رسالة إلكترونية تحتوي على جديد الموقع عندما لا أزور الموقع" daily: "يومي" + every_three_days: "كل ثلاثة أيام" weekly: "اسبوعي" - email_direct: "تلقي رسالة إلكترونية عند اقتباس مشاركة لك أو الرد على عليها أو في حالة ذكر اسمك @username" - email_private_messages: "إرسال إشعار بالبريد الإلكتروني عندما يرسل لك شخصاً رسالة خاصة" + every_two_weeks: "كل أسبوعين" email_always: "لاتفعل ارسال رسائل بريدية اذا كنت متفاعل مع الموقع" other_settings: "اخرى" categories_settings: "اقسام" @@ -376,10 +519,38 @@ ar: label: " \nإعتبر الوضوع جديد حين" not_viewed: "لم تقم بالاطلاع عليها حتى الآن" last_here: "تم انشائها منذ آخر زيارة لك" + after_n_days: + zero: "تم انشائها خلال الـ 0 يوم الأخير" + one: "تم انشائها خلال اليوم الأخير" + two: "تم انشائها خلال اليومين الأخيرين" + few: "تم انشائها خلال الـ {{count}} أيام الأخيرة" + many: "تم انشائها خلال الـ {{count}} يوم الأخيرة" + other: "تم انشائها خلال الـ {{count}} يوم الأخيرة" + after_n_weeks: + zero: "تم انشائها خلال الـ 0 أسبوع الأخيرة" + one: "تم انشائها خلال الأسبوع الأخير" + two: "تم انشائها خلال الأسبوعين الأخيرين" + few: "تم انشائها خلال الـ {{count}} أسابيع الأخيرة" + many: "تم انشائها خلال الـ {{count}} أسبوع الأخيرة" + other: "تم انشائها خلال الـ {{count}} أسبوع الأخيرة" auto_track_topics: "متابعة المواضيع التي أدخلها بشكل تلقائي" auto_track_options: never: "ابداً" always: "دائما" + after_n_seconds: + zero: "بعد 0 ثانية" + one: "بعد ثانية" + two: "بعد ثانيتين" + few: "بعد {{count}} ثوان" + many: "بعد {{count}} ثانية" + other: "بعد {{count}} ثانية" + after_n_minutes: + zero: "بعد 0 دقيقة" + one: "بعد دقيقة" + two: "بعد دقيقتين" + few: "بعد {{count}} دقائق" + many: "بعد {{count}} دقيقة" + other: "بعد {{count}} دقيقة" invited: search: "نوع البحث عن الدعوات" title: "دعوة" @@ -404,12 +575,13 @@ ar: none: "لم تقم بدعوة اي احد حتى الان. تستطيع ارسال دعوة , أو ارسال عدة دعوات عن طريقuploading a bulk invite file." text: "الدعوة من ملف" uploading: "جاري الرقع..." - success: "تم رفع الملف بنجاح, سيتم اشعارك قريبا " error: "كان هناك مشكلة في رفع الملف '{{filename}}': {{message}}" password: title: "كلمة المرور" too_short: "كلمة المرور قصيرة جداً" common: "كلمة المرور هذه شائعة " + same_as_username: "كلمة المرور مطابقة لاسم المستخدم." + same_as_email: "كلمة المرور مطابقة للبريد الإليكتروني." ok: "كلمة المرور هذة تعتبر جيدة." instructions: "على الاقل %{count} حرف" associated_accounts: "حساب مرتبط" @@ -426,7 +598,6 @@ ar: stream: posted_by: "ارسلت بواسطة" sent_by: " أرسلت بواسطة" - private_message: "رسالة خاصة" the_topic: "موضوع جديد" loading: "يتم التحميل..." errors: @@ -479,9 +650,7 @@ ar: enable: "إخفاء المشاركات المحذوفة" disable: "عرض المشاركات المحذوفة" private_message_info: - title: " رسالة خاصة" invite: " إستدعي الأخرين" - remove_allowed_user: "هل تريد حقا ازالة {{name}} من الرسائل الخاصة ?" email: 'البريد الإلكتروني' username: 'إسم المستخدم' last_seen: 'شوهدت' @@ -493,7 +662,7 @@ ar: title: "إنشاء حساب جديد" failed: "حدث خطأ ما, ربما بريدك الالكتروني مسجل مسبقا, جرب رابط نسيان كلمة المرور " forgot_password: - title: "نسيت الرمز السري" + title: " إعادة تعيين كلمة المرور" action: "نسيت كلمة المرور" invite: "ادخل اسم مستخدمك او بريدك الالكتروني وسنقوم بإرسال اعاذة ضبط كلمة المرور على بريدك" reset: " إعادة تعين الرمز السري" @@ -520,6 +689,7 @@ ar: requires_invite: "المعذرة، الوصول لهذا الموقع خاص بالمدعويين فقط." not_activated: "لا يمكنك تسجيل الدخول. لقد سبق و أن أرسلنا بريد إلكتروني إلى {{sentTo}} لتفعيل حسابك. الرجاء اتباع التعليمات المرسلة لتفعيل الحساب." not_allowed_from_ip_address: "لا يمكنك تستجيل الدخول من خلال هذا العنوان الرقمي - IP." + admin_not_allowed_from_ip_address: "لا يمكنك تسجيل الدخول كمدير من خلال هذا العنوان الرقمي - IP." resend_activation_email: "اضغط هنا لإرسال رسالة إلكترونية أخرى لتفعيل الحساب." sent_activation_email_again: "لقد سبق وأن تم إرسال رسالة إلكترونية إلى {{currentEmail}} لتفعيل حسابك. تأكد من مجلد السبام في بريدك." google: @@ -548,6 +718,7 @@ ar: emoji: "تعبيرات: ابتسامة" add_warning: "هذا تحذير رسمي" posting_not_on_topic: "أي موضوع تود الرد عليه؟" + saving_draft_tip: "جار الحفظ..." saved_draft_tip: "تم الحفظ" saved_local_draft_tip: "تم الحفظ محلياً" similar_topics: "موضوعك مشابه لـ ..." @@ -564,8 +735,7 @@ ar: reply_here: "الرد هنا" reply: "الرد" cancel: "إلغاء" - create_topic: "موضوع جديد" - create_pm: " رسالة خاصة" + create_topic: "إنشاء موضوع" title: "او اضغط على Ctrl+Enter" users_placeholder: "اضافة مستخدم" title_placeholder: "ما هو الموضوع المراد مناقشته في جملة واحدة ؟" @@ -615,11 +785,9 @@ ar: units: "(# of hours)" examples: 'أدخل الساعة (24)' notifications: - title: "الإشعار عندما يتم ذكر @name , أو الردود على مواضيعك أو مشاركاتك أو الرسالة الخاصة ...إلخ" none: "لا يمكن عرض الإشعارات في الوقت الحالي." more: "إظهار إشعارات قديمة" total_flagged: "مجموع المشاركات المعلّم عليها" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}}" replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -653,7 +821,6 @@ ar: user: "البحث عن مواضيع @{{username}}" category: "البحث في التصنيف \"{{category}}\"" topic: "بحث في هذا الموضوع" - private_messages: "البحث في الرسائل الخاصة" site_map: "الذهاب إلى قائمة مواضيع أو تصنيف آخر" go_back: 'الرجوع' not_logged_in_user: 'صفحة المستخدم مع ملخص عن نشاطه و إعداداته' @@ -673,6 +840,14 @@ ar: close_topics: "إغلاق المواضيع" archive_topics: "أرشفة المواضيع" notification_level: "تغيير مستوى الإشعارات" + choose_new_category: "اختر التصنيف الجديد للمواضيع:" + selected: + zero: "لم تختر أيّ موضوع." + one: "لقد اخترت موضوعًا واحدًا." + two: "لقد اخترت موضوعين اثنين." + few: "لقد اخترت {{count}} مواضيع." + many: "لقد اخترت {{count}} موضوعًا." + other: "لقد اخترت {{count}} موضوع." none: unread: "لا يوجد لديك مواضيع غير مقروءة" new: "لا يوجد لديك مواضيع جديدة" @@ -700,10 +875,23 @@ ar: filter_to: "{{post_count}} مشاركات/مشاركة في الموضوع" create: 'موضوع جديد' create_long: 'كتابة موضوع جديد' - private_message: 'رسالة خاصة' list: 'المواضيع' new: 'موضوع جديد' unread: 'غير مقروء' + new_topics: + zero: '0 موضوع جديد' + one: 'موضوع واحد جديد' + two: 'موضوعان جديدان' + few: '{{count}} مواضيع جديدة' + many: '{{count}} موضوعًا جديدًا' + other: '{{count}} موضوع جديد' + unread_topics: + zero: '0 موضوع غير مقروء' + one: 'موضوع واحد غير مقروء' + two: 'موضوعان غير مقروءان' + few: '{{count}} مواضيع غير مقروءة' + many: '{{count}} موضوعًا غير مقروء' + other: '{{count}} موضوع غير مقروء' title: 'موضوع' invalid_access: title: "الموضوع خاص" @@ -715,12 +903,42 @@ ar: not_found: title: "لم يتم العثور على الموضوع" description: "للأسف، لم نتمكن من إيجاد الموضوع. يمكن تم حذفه من قبل المشرف." + total_unread_posts: + zero: "لديك 0 مشاركة غير مقروءة في هذا الموضوع" + one: "لديك مشاركة واحدة غير مقروءة في هذا الموضوع" + two: "لديك مشاركتان غير مقروءتان في هذا الموضوع" + few: "لديك {{count}} مشاركات غير مقروءة في هذا الموضوع" + many: "لديك {{count}} مشاركة غير مقروءة في هذا الموضوع" + other: "لديك {{count}} مشاركة غير مقروءة في هذا الموضوع" + unread_posts: + zero: "لديك 0 مشاركة قديمة غير مقروءة في هذا الموضوع" + one: "لديك مشاركة واحدة قديمة غير مقروءة في هذا الموضوع" + two: "لديك مشاركتان قديمتان غير مقروءتان في هذا الموضوع" + few: "لديك {{count}} مشاركات قديمة غير مقروءة في هذا الموضوع" + many: "لديك {{count}} مشاركة قديمة غير مقروءة في هذا الموضوع" + other: "لديك {{count}} مشاركة قديمة غير مقروءة في هذا الموضوع" + new_posts: + zero: "لا يوجد مشاركات جديدة في هذا الموضوع منذ اخر زيارة لك" + one: "هناك مشاركة جديدة واحدة في هذا الموضوع منذ اخر زيارة لك" + two: "هناك مشاركتان جديدتان في هذا الموضوع منذ اخر زيارة لك" + few: "هناك {{count}} مشاركات جديدة في هذا الموضوع منذ اخر زيارة لك" + many: "هناك {{count}} مشاركة جديدة في هذا الموضوع منذ اخر زيارة لك" + other: "هناك {{count}} مشاركة جديدة في هذا الموضوع منذ اخر زيارة لك" + likes: + zero: "لا يوجد استحسانات في هذا الموضوع" + one: "هناك استحسان واحد في هذا الموضوع" + two: "هناك استحسانان اثنان في هذا الموضوع" + few: "هناك {{count}} استحسانات في هذا الموضوع" + many: "هناك {{count}} استحسانًا في هذا الموضوع" + 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,\n\tzero {}\n\tone {موضوع واحد غير مقروء }\n\ttwo {موضوعان غير مقروءان }\n\tfew {# مواضيع غير مقروءة }\n\tmany {# موضوعًا غير مقروء }\n\tother {# موضوع غير مقروء }\n}{BOTH, select,\n\ttrue {{ NEW, plural,\n\t\tzero {}\n\t\tone {وواحد جديد}\n\t\ttwo {واثنان جديدان}\n\t\tfew {و# جدد }\n\t\tmany {و# جددًا}\n\t\tother {و# جدد}\n\t}} false {{ NEW, plural,\n\t\tzero {}\n\t\tone {موضوع واحد جديد}\n\t\ttwo {موضوعان جديدان}\n\t\tfew {# مواضيع جديدة}\n\t\tmany {# موضوعًا جديدًا}\n\t\tother {# موضوع جديد}\n\t}} other {}\n}، أو {CATEGORY, select,\n\ttrue {تصفح مواضيع أخرى\ + \ في {catLink}}\n\tfalse {{latestLink}} other {}\n}." browse_all_categories: استعرض جميع التصنيفات view_latest_topics: شاهد آخر المواضيع suggest_create_topic: ما رأيك لو تكتب موضوع جديد؟ @@ -759,13 +977,11 @@ ar: '0': 'لن يصلك أي إشعار يخص هذا الموضوع بناء على طلبك.' watching_pm: title: "تحت المتابعة" - description: "سيتم إشعارك بأية رد على هذه الرسالة الخاصة. عدد الرسائل الغير مقروءة و الجديدة ستظهر بجانب موضوع الرسالة." watching: title: "تحت المتابعة" description: "سيتم إشعارك بأية رد على هذه الرسالة الخاصة. عدد الرسائل الغير مقروءة و الجديدة ستظهر بجانب الرسالة." tracking_pm: title: "متتبعة" - description: "عدد المشاركات الغير مقروءة و الجديدة سيظهر بجانب هذه الرسالة الخاصة. سيصلك إشعار إذا ذكرك أحد ما أو رد على مشاركتك." tracking: title: "تحت المتابعة" description: "عدد المشاركات الغير مقروءة و الجديدة سيظهر بجانب هذا الموضوع. سيصلك إشعار إذا ذكرك أحد ما أو رد على مشاركتك." @@ -774,10 +990,8 @@ ar: description: ".سيتم إشعارك إذا ذكر أحد ما اسمك أو رد على مشاركاتك" regular_pm: title: "منتظم" - description: "سيتم إشعارك إذا ذكر اسمك أحد ما أو رد على مشاركتك في الرسالة الخاصة." muted_pm: title: "كتم" - description: "لن يتم إشعارك بأي جديد يخص هذه الرسالة الخاصة." muted: title: "مكتوم" description: "لن يتم إشعارك بأي جديد يخص هذا الموضوع ولن يظهرهذا الموضوع في تبويب المواضيع الغير مقروءة." @@ -786,18 +1000,11 @@ ar: delete: "حذف الموضوع" open: "كتابة موضوع" close: "إغلاق الموضوع" - auto_close: "إغلاق تلقائي" - make_banner: "موضوع إعلاني" - remove_banner: "حذف الموضوع الإعلاني" - pin: "تثبيت الموضوع" - unpin: "إلغاء تثبيت الموضوع" - pin_globally: "تثبيت الموضوع على مستوى الموقع" unarchive: "التراجع عن أرشفة الموضوع" archive: "أرشفة الموضوع" invisible: "إزالة من القائمة" visible: "إضافة ضمن القائمة" reset_read: "تصفير القراءات" - multi_select: "اختيار مشاركات" reply: title: 'الرد' help: 'البدء بالرد على هذا الموضوع' @@ -815,22 +1022,15 @@ ar: automatically_add_to_groups_optional: "هذه الدعوة تتضمن صلاحيات الدخول على المجموعات : (اختياري , مدير فقط )" automatically_add_to_groups_required: "هذه الدعوة تتضمن صلاحيات الدخول على هذه المجموعات: (يتطلب , مدير" invite_private: - title: 'دعوة لرسالة خاصة' email_or_username: "دعوات عن طريق اسم المستخدم او البريد الالكتروني" email_or_username_placeholder: "البريد الإلكتروني أو إسم المستخدم" action: "دعوة" - success: "تم دعوة المستخدم للمشاركة في رسالة خاصة" error: "للأسف, حدثت مشكلة في دعوة المستخدم" group_name: "اسم المجموعة" invite_reply: title: 'دعوة' - action: 'دعوة بالبريد' - help: 'ارسال دعوة للأصدقاء جيث بإمكانهم الرد على الموضوع بضغطة واحدة' - to_topic: "سيتم ارسال رسالة بريد الكتروني ﻷصدقائك للمشاركة في هذا الموضوع" to_forum: "سيتم ارسال رسالة بريد الكتروني ﻷصدقائك للمشاركة في هذا الموضوع , لابتطلب تسجيل الدخول" email_placeholder: 'name@example.com' - success: "قمنا بإرسال دعوة لـ to {{email}}. سيتم تنبيهك عند قبول الدعوة , تستطيع متابعة الدعوة عن طريق مركز التنبيهات في الاعلى" - error: "للأسف, لايمكننا دعوة هذا المستخدم , ريما ﻷنه بالفعل مسجل لدينا؟ (الدعوات محدودة)" login_reply: 'سجل دخولك لرد' filters: cancel: "حذف التخصيص" @@ -859,13 +1059,10 @@ ar: select_all: تحديد الكل deselect_all: حذف الكل post: - reply: "الرد على {{link}} عن طريق {{replyAvatar}} {{username}}" reply_topic: "الرد على {{link}}" quote_reply: "الاقتباس" - edit: "التعديل {{link}} عن طريق {{replyAvatar}} {{username}}" edit_reason: "سبب:" post_number: "مشاركات {{number}}" - in_reply_to: "الرد" last_edited_on: "آخر تعديل للمشاركة في " reply_as_new_topic: "التعليق على الموضوع الاصلي" continue_discussion: "إكمال النقاش على {{postLink}}" @@ -941,8 +1138,6 @@ ar: inappropriate: "{{icons}} بلغ أنه غير لائق" notify_moderators: "{{icons}} تنبيه المشرف" notify_moderators_with_url: "{{icons}} نبه المشرف" - notify_user: "{{icons}} ارسال رسالة خاصة" - notify_user_with_url: "{icons}} sent a رسالة خاصة" bookmark: "{{icons}} اضف في المفضلة" like: "{{icons}} استحسان" vote: "{{icons}} صوت لهذا" @@ -951,7 +1146,6 @@ ar: spam: "تم الإبلاغ عن الموضوع على أنه سبام" inappropriate: "تم الإبلاغ عن الموضوع على أنه غير لائق" notify_moderators: "تم الإبلاغ عن الموضوع ليشاهده المشرف" - notify_user: "قمت بإرسال رسالة خاصة الى هذا المستخدم" bookmark: "قمت بتفضيل هذه المشاركة" like: "قمت بإستحسان هذا" vote: "قمت بالتصويت لهذه المشاركة" @@ -1046,7 +1240,6 @@ ar: private_reminder: 'التبليغات ذات خصوصية، تظهر فقط للمشرفين' action: 'التبليغ عن مشاركة' take_action: "أجراء العمليه " - notify_action: 'رسائل خاصة' delete_spammer: "حذف مرسلي البريد المزعج" delete_confirm: "أنت على وشك حذف %{posts} المشاركات و%{topics} المواضيع من هذا المستخدم , حذف حساباتهم منهم من التسجيل وحجب الاي بي %{ip_address}, واضافة بريدهم الالكتروني %{email} لقائمة المحجوبين . هل أنت متأكد أن هذا المستخدم سبام ?" yes_delete_spammer: "نعم , حذف مرسلي البريد المزعج" @@ -1068,7 +1261,6 @@ ar: flagging_topic: title: "شكرا لمساعدتنا في ابقاء مجتمعنا نضيفا" action: "التبليغ عن الموضوع" - notify_action: "رسالة خاصة" topic_map: title: "ملخص الموضوع" links_shown: "اظهار {{totalLinks}} روابط..." @@ -1163,15 +1355,6 @@ ar: top: title: "أعلى" help: "أكثر المواضيع نشاطا خلال سنة, شهر, اسبوع او يوم" - yearly: - title: "الاعلى في السنة" - monthly: - title: "الاعلى في الشهر" - weekly: - title: "الاعلى في الاسبوع" - daily: - title: "الاعلى في اليوم" - all: "كل الاوقات" this_year: "هذه السنة" this_month: "هذا الشهر" this_week: "هذا الاسبوع" @@ -1203,7 +1386,6 @@ ar: admins: 'مدراء:' blocked: 'محظور:' suspended: 'موقوف:' - private_messages_title: "رسائل خاصة" uploads: "عمليات الرفع" backups: "النسخ الاحتياطية" reports: @@ -1299,18 +1481,15 @@ ar: read_only: enable: title: "تفعيل وضع القراءة فقط" - text: "تفعيل وضع القراءة فقط" confirm: "هل أنت متأكد من تفعيل وضع القراءة فقط؟" disable: title: "تعطيل وضع القراءة فقط" - text: "تعطيل وضع القراءة فقط" logs: none: "No logs yet." columns: filename: "اسم الملف" size: "حجم" upload: - text: "رفع" uploading: "يتم الرفع..." success: "'{{filename}}' تم رفعه بنجاح." error: "هناك مشكلة في رفع '{{filename}}': {{message}}" @@ -1318,33 +1497,26 @@ ar: is_running: "هناك عملية مازالت تعمل ..." failed: "الـ {{operation}} فشلت. الرجاء التحقق من logs." cancel: - text: "إلغاء" title: "الغاء العملية الحالية" confirm: "هل أنت متأكد من رغبتك في الغاء العملية الحالية ؟" backup: - text: "نسخة احتياطية" title: "انشاء نسخة احتياطية" confirm: "هل تريد انشاء نسخة احتياطية جديدة ؟" without_uploads: "نعم (لا تضمن الملفات)" download: - text: "تحميل" title: "تحميل النسخة الاحتياطية" destroy: - text: "حذف" title: "حذف النسخة الاحتياطية" confirm: "هل أنت متأكد من رغبتك في حذف النسخة الاحتياطية؟" restore: is_disabled: "Restore is disabled in the site settings." - text: "Restore" title: "اعادة تخزين النسخة الاحتياطية" confirm: "هل أنت متأكد من رغبتك في اعادة تخزين النسخة الاحتياطية؟" rollback: - text: "اعادة السنخة السابقة" title: "Rollback the database to previous working state" confirm: "Are your sure you want to rollback the database to the previous working state?" export_csv: user_archive_confirm: "هل أنت متأكد من رغبتك في تحميل جميع مشاركاتك ؟" - success: "Export initiated, you will be notified via private message when the process is complete." failed: "فشل في التصدير, الرجاء التحقق من الـ logs" rate_limit_error: "المشاركات يمكن تحميلها لمرة واحدة في اليوم , الرجاء المحاولة غدا." button_text: "التصدير" @@ -1480,6 +1652,39 @@ ar: show: "إظهار" modal_title: "التفاصيل" no_previous: "لا يوجد قيمة سابقة." + deleted: "لايوجد قيمة جديدة , السجل قد حذف" + actions: + delete_user: "حذف المستخدم" + change_trust_level: "تغيير مستوى الثقة" + change_username: "تغيير اسم المستخدم" + change_site_setting: "تغيير اعدادات الموقع" + change_site_customization: "تخصيص الموقع" + delete_site_customization: "حذف هذا التخصيص؟" + suspend_user: "حظر المستخدم" + unsuspend_user: "رفع الحظر " + check_email: "التحقق من البريد" + delete_topic: "حذف الموضوع" + delete_post: "حذف المشاركة" + anonymize_user: "مستخدم مجهول" + screened_emails: + description: "عندما تتم محاول انشاء حساب جديد, سيتم التحقق من قائمة البريد الالكتروني وسيتم حظر التسجيل لهذا البريد واتخاذ اي اجراء متبع" + email: "قائمة البريد الالكتروني" + actions: + allow: "سماح" + screened_urls: + description: "الروابط الالكترونية الموجودة هنا تم استخدامها في مشاركات من قيل مستخدمين سبام " + url: "رابط" + domain: "عنوان" + screened_ips: + actions: + block: "حظر" + do_nothing: "سماح" + allow_admin: "سماح المدير" + form: + label: "جديد" + ip_address: "عناوين الIP" + add: "اضافة" + filter: "بحث" users: title: 'مستخدمين' create: 'اضافة مدير' @@ -1508,6 +1713,7 @@ ar: block: 'حظر' permissions: صلاحيات activity: أنشطة + like_count: الإعجابات المعطاة / المستلمة private_topics_count: موضوع خاص posts_read_count: المشاركات المقروءة post_count: المشاركات المنشأة diff --git a/config/locales/client.cs.yml b/config/locales/client.cs.yml index f4d030fbe0..ffcfaf7559 100644 --- a/config/locales/client.cs.yml +++ b/config/locales/client.cs.yml @@ -225,18 +225,26 @@ cs: sent_by_user: "Posláno uživatelem {{user}}" sent_by_you: "Posláno vámi" directory: - title: "Seznam uživatelů" - likes_given: "Rozdaných libí se" - likes_received: "Obdržených líbí se" - topics_entered: "Navštívených témat" + filter_name: "Filtrovat podle uživatelského jména" + title: "Uživatelé" + likes_given: "Rozdáno" + likes_received: "Obdrženo" + topics_entered: "Navštíveno" + topics_entered_long: "Témat navštíveno" time_read: "Čas strávený čtením" topic_count: "Témata" + topic_count_long: "Témat vytvořeno" post_count: "Odpovědi" - no_results: "Pro toto období nebylo nic nalezeno" + post_count_long: "Odpovědí" + no_results: "Žádné výsledky" + days_visited: "Návštěv" + days_visited_long: "Dní navštíveno" + posts_read: "Přečteno" + posts_read_long: "Příspěvků přečteno" total_rows: - one: "nalezen 1 uživatel" - few: "nalezeni %{count} uživatelé" - other: "nalezeno %{count} uživatelů" + one: "1 uživatel" + few: "%{count} uživatelé" + other: "%{count} uživatelů" groups: visible: "Skupina je viditelná pro všechny uživatele" title: @@ -257,8 +265,6 @@ cs: '2': "Obdržených 'líbí se'" '3': "Záložky" '4': "Témata" - '5': "Odpovědi" - '6': "Odezvy ostatních" '7': "Zmínění" '9': "Citace" '10': "Oblíbené" @@ -307,8 +313,6 @@ cs: mute: "Ignorovat" edit: "Upravit nastavení" download_archive: "Stáhnout moje příspěvky" - new_private_message: "Nová soukromá zpráva" - private_message: "Soukromé zprávy" private_messages: "Zprávy" activity_stream: "Aktivita" preferences: "Nastavení" @@ -345,6 +349,8 @@ cs: delete_yourself_not_allowed: "Váš účet teď nejde odstranit. Obraťte se na správce aby váš účet smazal za vás." unread_message_count: "Zprávy" admin_delete: "Smazat" + muted_users: "Zjišení" + muted_users_instructions: "Umlčet všechny notifikace od těchto uživatelů." staff_counters: flags_given: "užitečná nahlášení" flagged_posts: "nahlášených příspěvků" @@ -383,7 +389,6 @@ cs: uploaded_avatar_empty: "Přidat vlastní obrázek" upload_title: "Nahrát obrázek" upload_picture: "Nahrát obrázek" - image_is_not_a_square: "Upozornění: ořízli jsem váš obrázek; nebyl to čtverec." change_profile_background: title: "Pozadí profilu" instructions: "Pozadí profilu je zarovnáno doprostřed a má výchozí šířku 850px." @@ -438,8 +443,6 @@ cs: title: "Když tady dlouho nebudu, chci emailem zaslat co je nového:" daily: "denně" weekly: "týdně" - email_direct: "Upozornit emailem na moje citace, odpovědi na můj příspěvek a na @jmeno" - email_private_messages: "Upozornit emailem na nové soukromé konverzace" email_always: "Posílat upozorňovací emaily i když jsem zrovna na webu aktivní" other_settings: "Ostatní" categories_settings: "Kategorie" @@ -491,7 +494,6 @@ cs: none: "Zatím jste nikoho nepozval. Můžete poslat individuální pozvánku nebo pozvat skupinu lidí naráz pomocí nahrání souboru." text: "Hromadné pozvání s pomocí souboru" uploading: "Nahrávám..." - success: "Nahrání souboru proběhlo úspěšně. O dokončení celého procesu budete informování pomocí soukromé zprávy." error: "Nastala chyba při nahrávání '{{filename}}': {{message}}" password: title: "Heslo" @@ -515,7 +517,6 @@ cs: stream: posted_by: "Zaslal" sent_by: "Odeslal" - private_message: "soukromá zpráva" the_topic: "téma" loading: "Načítám..." errors: @@ -568,9 +569,7 @@ cs: enable: "Schovat smazané příspěvky" disable: "Zobrazit smazané příspěvky" private_message_info: - title: "Soukromá konverzace" invite: "pozvat účastníka" - remove_allowed_user: "Určitě chcete {{name}} dát pryč z téhle soukromé zprávy?" email: 'Email' username: 'Uživatelské jméno' last_seen: 'Naposledy viděn' @@ -582,7 +581,6 @@ cs: title: "Vytvořit nový účet" failed: "Něco se nepovedlo, možná je tato e-mailová adresa již použita. Zkuste použít formulář pro obnovení hesla." forgot_password: - title: "Zapomenuté heslo" action: "Zapomněl jsem své heslo" invite: "Vložte svoje uživatelské jméno nebo e-mailovou adresu a my vám zašleme postup pro obnovení hesla." reset: "Resetovat heslo" @@ -654,8 +652,6 @@ cs: reply_here: "Odpovědět sem" reply: "Odpovědět" cancel: "Zrušit" - create_topic: "Nové Téma" - create_pm: "Soukromá zpráva" title: "Nebo zmáčkněte Ctrl+Enter" users_placeholder: "Přidat uživatele" title_placeholder: "O čem je ve zkratce tato diskuze?" @@ -705,11 +701,9 @@ cs: units: "(počet hodin)" examples: 'Zadejte počet hodin (24).' notifications: - title: "oznámení o zmínkách pomocí @jméno, odpovědi na vaše příspěvky a témata, soukromé zprávy, atd." none: "Notifikace nebylo možné načíst." more: "zobrazit starší oznámení" total_flagged: "celkem nahlášeno příspěvků" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -743,7 +737,6 @@ cs: user: "Vyhledat příspěvky od @{{username}}" category: "Vyhledat v kategorii „{{category}}“" topic: "Vyhledat v tomto tématu" - private_messages: "Hledat v soukromých zprávách" site_map: "přejít na jiný seznam témat nebo kategorii" go_back: 'jít zpět' not_logged_in_user: 'stránka uživatele s přehledem o aktuální činnosti a nastavení' @@ -794,7 +787,6 @@ cs: filter_to: "{{post_count}} příspěvků v tématu" create: 'Nové téma' create_long: 'Vytvořit nové téma' - private_message: 'Vytvořit soukromou konverzaci' list: 'Témata' new: 'nové téma' unread: 'nepřečtený' @@ -879,13 +871,11 @@ cs: '0': 'Ignorujete všechna oznámení z tohoto tématu.' watching_pm: title: "Hlídání" - description: "O každém novém příspěvku budete informováni pomocí soukromé zprávy. Vedle názvu tématu se objeví počet nepřečtených a nových příspěvků." watching: title: "Hlídané" description: "Budete informováni o každém novém příspěvku v tomto tématu. Vedle názvu tématu se objeví počet nepřečtených a nových příspěvků." tracking_pm: title: "Sledování" - description: "U soukromých zpráv se zobrazí počet nových a nepřečtených příspěvků. Budete uporozněni když vás někdo zmíní jako @jmeno nebo odpoví na váš příspěvek." tracking: title: "Sledované" description: "U tématu se zobrazí počet nepřečtených a nových příspěvků. Budete uporozněni když vás někdo zmíní jako @jmeno nebo odpoví na váš příspěvek." @@ -894,10 +884,9 @@ cs: description: "Budete informováni pokud někdo zmíní vaše @jméno nebo odpoví na váš příspěvek." regular_pm: title: "Normální" - description: "Budete uporozněni když vás někdo zmíní jako @jmeno nebo odpoví na váš příspěvek v soukromé zprávě." muted_pm: title: "Ztišení" - description: "Nikdy nedostanete oznámení týkající se čehokoliv o této soukromé zprávě." + description: "Nikdy nedostanete oznámení týkající se čehokoliv v této zprávě." muted: title: "Ztišené" description: "nebudete dostávat žádná oznámení k tomuto tématu a ani se nebude zobrazovat v seznamu nepřečtených témat." @@ -906,20 +895,11 @@ cs: delete: "Odstranit téma" open: "Otevřít téma" close: "Zavřít téma" - auto_close: "Automaticky zavřít" - feature: "Povýšit téma" - remove_feature: "Zrušit povýšení tématu" - make_banner: "Banner Topic" - remove_banner: "Remove Banner Topic" - pin: "Připnout téma" - unpin: "Odstranit připnutí" - pin_globally: "Připnout téma globálně" unarchive: "Navrátit z archivu" archive: "Archivovat téma" invisible: "Zneviditelnit" visible: "Zviditelnit" reset_read: "Vynulovat počet čtení" - multi_select: "Výběr více příspěvků" reply: title: 'Odpovědět' help: 'začněte psát odpověď na toto téma' @@ -937,22 +917,15 @@ cs: automatically_add_to_groups_optional: "Tato pozvánka obsahuje také přístup do této skupiny: (volitelné, pouze administrátor)" automatically_add_to_groups_required: "Tato pozvánka obsahuje také přístup do těchto skupin: (Vyžadováno, pouze administrátor)" invite_private: - title: 'Pozvat do soukromé konverzace' email_or_username: "Email nebo uživatelské jméno pozvaného" email_or_username_placeholder: "emailová adresa nebo uživatelské jméno" action: "Pozvat" - success: "Pozvali jsme tohoto uživatele, aby se připojil do této soukromé zprávy." error: "Bohužel nastala chyba při odesílání pozvánky." group_name: "název skupiny" invite_reply: title: 'Pozvat k diskuzi' - action: 'Odeslat pozvánku' - help: 'odeslat pozvánku přátelům, aby mohli na toto téma odpovědět jedním kliknutím' - to_topic: "Pošleme krátký email dovolující vašemu příteli se okamžitě zapojit a odpovědět na toto téma pomocí kliknutí na odkaz. Nebude potřeba registrace." to_forum: "Pošleme krátký email dovolující vašemu příteli se okamžitě zapojit s pomocí kliknutí na odkaz. Nebude potřeba registrace." email_placeholder: 'jmeno@priklad.cz' - success: "Zaslali jsme pozvánku na {{email}}. Upozorníme vás až bude pozvánka použita. Své pozvánky můžete sledovat v tabulce pozvánek na svém uživatelském profilu." - error: "Bohužel se nepodařilo pozvat tuto osobu. Není již registrovaným uživatelem? (Pozvánky jsou omezeny)." login_reply: 'Přihlaste se, chcete-li odpovědět' filters: n_posts: @@ -1000,13 +973,10 @@ cs: few: Máte označeny {{count}} příspěvky. other: Máte označeno {{count}} příspěvků. post: - reply: "Odpovídáte na {{link}} od {{replyAvatar}} {{username}}" reply_topic: "Odpověď na {{link}}" quote_reply: "odpověď s citací" - edit: "Editujete {{link}} od uživatele {{replyAvatar}} {{username}}" edit_reason: "Důvod: " post_number: "příspěvek č. {{number}}" - in_reply_to: "Odpovědět" last_edited_on: "příspěvek naposledy upraven" reply_as_new_topic: "Odpovědět v propojeném tématu" continue_discussion: "Pokračující diskuze z {{postLink}}:" @@ -1101,8 +1071,6 @@ cs: inappropriate: "{{icons}} označili tento příspěvek jako nevhodný" notify_moderators: "{{icons}} nahlásili tento příspěvek" notify_moderators_with_url: "{{icons}} nahlásili tento příspěvek" - notify_user: "{{icons}} zahájili soukromou konverzaci" - notify_user_with_url: "{{icons}} zahájijli a soukromou konverzaci" bookmark: "{{icons}} si přidali příspěvek do záložek" like: "{{icons}} se líbí tento příspěvek" vote: "{{icons}} hlasovali pro tento příspěvek" @@ -1111,7 +1079,6 @@ cs: spam: "Označili jste tento příspěvek jako spam" inappropriate: "Označili jste tento příspěvek jako nevhodný" notify_moderators: "Nahlásili jste tento příspěvek" - notify_user: "Zahájili jste soukromou konverzaci s tímto uživatelem" bookmark: "Přidali jste si tento příspěvek do záložek" like: "Toto se vám líbí" vote: "Hlasovali jste pro tento příspěvek" @@ -1132,10 +1099,6 @@ cs: one: "Vy a 1 další člověk jste nahlásili tento příspěvek" few: "Vy a {{count}} další lidé jste nahlásili tento příspěvek" other: "Vy a {{count}} dalších lidí jste nahlásili tento příspěvek" - notify_user: - one: "Vy a 1 další člověk jste zahájili soukromou konverzaci s tímto uživatelem" - few: "Vy a {{count}} další lidé jste zahájili soukromou konverzaci s tímto uživatelem" - other: "Vy a {{count}} dalších lidí jste zahájili soukromou konverzaci s tímto uživatelem" bookmark: one: "Vy a 1 další člověk jste si přidali tento příspěvek do záložek" few: "Vy a {{count}} další lidé jste si přidali tento příspěvek do záložek" @@ -1165,10 +1128,6 @@ cs: one: "1 člověk nahlásil tento příspěvek" few: "{{count}} lidé nahlásili tento příspěvek" other: "{{count}} lidí nahlásilo tento příspěvek" - notify_user: - one: "1 člověk zahájil soukromou konverzaci s tímto uživatelem" - few: "{{count}} lidé zahájili soukromou konverzaci s tímto uživatelem" - other: "{{count}} lidí zahájilo soukromou konverzaci s tímto uživatelem" bookmark: one: "1 člověk si přidal tento příspěvek do záložek" few: "{{count}} lidé si přidali tento příspěvek do záložek" @@ -1277,7 +1236,6 @@ cs: private_reminder: 'nahlášení jsou soukromá, viditelná pouze pro správce' action: 'Nahlásit příspěvek' take_action: "Zakročit" - notify_action: 'Private message' delete_spammer: "Odstranit spamera" delete_confirm: "Chystáte se odstranit %{posts} příspěvků a %{topics} témat od tohoto uživatele, smazat jeho účet, a vložit jeho emailovou adresu %{email} na seznam permanentně blokovaných. Jste si jistí, že je tento uživatel opravdu spamer?" yes_delete_spammer: "Ano, odstranit spamera" @@ -1298,7 +1256,6 @@ cs: flagging_topic: title: "Děkujeme, že pomáháte udržovat komunitu zdvořilou!" action: "Nahlásit téma" - notify_action: "Private message" topic_map: title: "Souhrn tématu" links_shown: "zobrazit všech {{totalLinks}} odkazů..." @@ -1396,15 +1353,7 @@ cs: top: title: "Nejlepší" help: "výběr nejlepších témat za rok, měsíc, týden nebo den" - yearly: - title: "Nejlepší podle let" - monthly: - title: "Nejlepší podle měsíce" - weekly: - title: "Nejlepší podle týdne" - daily: - title: "Nejlepší podle dní" - all: "Za celou dobu" + all_time: "Za celou dobu" this_year: "Letos" this_month: "Tenhle měsíc" this_week: "Tenhle týden" @@ -1441,8 +1390,6 @@ cs: admins: 'Administrátoři:' blocked: 'Blokováno:' suspended: 'Zakázáno:' - private_messages_short: "Soukromé zprávy" - private_messages_title: "Soukromé zprávy" space_free: "{{size}} prázdné" uploads: "Nahrané soubory" backups: "zálohy" @@ -1476,7 +1423,6 @@ cs: agree_title: "Potvrdit toto hlášení jako právoplatné a korektní" agree_flag_modal_title: "Schvaluji a..." agree_flag_hide_post: "Schvaluji (skrýt příspěvek + poslat soukromou zprávu)" - agree_flag_hide_post_title: "Skrýt tento příspěvek a automaticky odeslat soukromou zprávu, která uživatele žádá o editaci" agree_flag_restore_post: "Schvaluji (obnovit příspěvek)" agree_flag_restore_post_title: "Obnovit tento příspěvek" agree_flag: "Souhlasit s hlášením" @@ -1585,18 +1531,15 @@ cs: read_only: enable: title: "Zapnout režim jen pro čtení" - text: "Zapnout režim jen pro čtení" confirm: "Určitě chcete zapnout režim jen pro čtení?" disable: title: "Vypnout režim jen pro čtení" - text: "Disable read-only mode" logs: none: "Zatím je log prázdný..." columns: filename: "Název souboru" size: "Velikost" upload: - text: "Nahrát" uploading: "Nahrávání..." success: "'{{filename}}' has successfully been uploaded." error: "There has been an error while uploading '{{filename}}': {{message}}" @@ -1604,32 +1547,25 @@ cs: is_running: "An operation is currently running..." failed: "The {{operation}} failed. Please check the logs." cancel: - text: "Zrušit" title: "Cancel the current operation" confirm: "Are you sure you want to cancel the current operation?" backup: - text: "Zálohovat" title: "Vytvořit zálohu" confirm: "Chcete začít novou zálohu?" download: - text: "Stáhnout" title: "Stáhnout zálohu" destroy: - text: "Smazat" title: "Odstranit zálohu" confirm: "Are you sure you want to destroy this backup?" restore: is_disabled: "Restore is disabled in the site settings." - text: "Obnovit" title: "Restore the backup" confirm: "Are your sure you want to restore this backup?" rollback: - text: "Rollback" title: "Rollback the database to previous working state" confirm: "Are your sure you want to rollback the database to the previous working state?" export_csv: user_archive_confirm: "Jste si jistí, že chcete stáhnout všechny své příspěvky?" - success: "Exportování bylo zahájeno. O dokončení budete informováni pomocí soukromé zprávy." failed: "Exportování selhalo. Prosím zkontrolujte logy." rate_limit_error: "Příspěvky mohou být staženy jednou za den. Prosíme, zkuste to znovu zítra." button_text: "Export" diff --git a/config/locales/client.da.yml b/config/locales/client.da.yml index ea187cd5e9..ff86f9206d 100644 --- a/config/locales/client.da.yml +++ b/config/locales/client.da.yml @@ -92,6 +92,7 @@ da: email: 'send dette link i en e-mail' topic_admin_menu: "administrationshandlinger på emne" emails_are_disabled: "Alle udgående emails er blevet globalt deaktiveret af en administrator. Ingen email notifikationer af nogen slags vil blive sendt." + s3_deprecation_warning: "WARNING! Amazon S3 will soon be deprecated for image/attachment storage. Please, follow the instructions to migrate to local storage." edit: 'redigér titel og kategori for dette emne' not_implemented: "Beklager, denne feature er ikke blevet implementeret endnu." no_value: "Nej" @@ -207,14 +208,22 @@ da: sent_by_user: "Sendt af {{user}}" sent_by_you: "Sendt af dig" directory: - title: "Bruger liste" - likes_given: "Likes givet" - likes_received: "Likes modtaget" - topics_entered: "Emner indstastet" + filter_name: "filtrer efter brugernavn" + title: "Brugere" + likes_given: "Givet" + likes_received: "Modtaget" + topics_entered: "Indtastet" + topics_entered_long: "Emner indtastet" time_read: "Læsetid" topic_count: "Emner" + topic_count_long: "Emner oprettet" post_count: "Svar" - no_results: "Der blev ikke fundet nogen resultater for denne periode." + post_count_long: "Svar sendt" + no_results: "Ingen resultater fundet." + days_visited: "Besøg" + days_visited_long: "Besøgsdage" + posts_read: "Læste" + posts_read_long: "Indlæg læst" groups: visible: "Gruppen er synlige for alle brugere" title: @@ -234,7 +243,7 @@ da: '2': "Likes modtaget" '3': "Bogmærker" '4': "Emner" - '5': "Indlæg" + '5': "Svar" '6': "Svar" '7': "Referencer" '9': "Citater" @@ -282,8 +291,8 @@ da: mute: "Mute" edit: "Redigér indstillinger" download_archive: "Download Mine Posts" - new_private_message: "Ny Private Besked" - private_message: "Private beskeder" + new_private_message: "Ny Besked" + private_message: "Besked" private_messages: "Beskeder" activity_stream: "Aktivitet" preferences: "Indstillinger" @@ -320,6 +329,9 @@ da: delete_yourself_not_allowed: "Du kan ikke slette din konto lige nu. Kontakt en administrator for at få din konto slettet." unread_message_count: "Beskeder" admin_delete: "Slet" + users: "Brugere" + muted_users: "Ignoreret" + muted_users_instructions: "Undertryk alle notifikationer fra disse brugere." staff_counters: flags_given: "hjælpsomme markeringer" flagged_posts: "markerede indlæg" @@ -358,7 +370,6 @@ da: uploaded_avatar_empty: "Tilføj et brugerdefineret profil billede" upload_title: "Upload dit profil billede" upload_picture: "Upload et billede" - image_is_not_a_square: "Advarsel: vi har beskåret dit billede fordi det ikke er kvadratisk." change_profile_background: title: "Profil baggrundsbillede" instructions: "Profil baggrunde vil blive centrerede og have en standard bredde på 850 pixels" @@ -415,8 +426,7 @@ da: every_three_days: "hver tredje dag" weekly: "ugenligt" every_two_weeks: "hver anden uge" - email_direct: "Send mig en email når nogen citere mig, svar på mit indlæg, eller nævner mit @brugernavn" - email_private_messages: "Send mig en email når nogen sender mig private beskeder" + email_private_messages: "Send mig en email når nogen sender mig en besked" email_always: "Send email notifikationer, selvom jeg er aktiv på forummet" other_settings: "Andre" categories_settings: "Kategorier" @@ -464,7 +474,7 @@ da: none: "Du har ikke inviteret nogen her endnu. Du kan sende individuelle invitationer eller invitere en masse mennesker på én gang ved at uploade en samlet liste over invitationer." text: "Masse invitering fra en fil" uploading: "Uploader..." - success: "Fil uploaded successfuldt, du vil blive meddelt via private beskeder når processen er fuldendt." + success: "Fil uploaded successfuldt, du vil blive meddelt via en beskede når processen er fuldendt." error: "Der var en fejl ved upload af filen '{{filename}}': {{message}}" password: title: "Adgangskode" @@ -488,7 +498,7 @@ da: stream: posted_by: "Skrevet af" sent_by: "Sendt af" - private_message: "privat besked" + private_message: "besked" the_topic: "emnet" loading: "Indlæser…" errors: @@ -541,9 +551,9 @@ da: enable: "Skjul Slettede Indlæg" disable: "Vis Slettede Indlæg" private_message_info: - title: "Privat samtale" + title: "Besked" invite: "Invitér andre…" - remove_allowed_user: "Ønsker du virkelig at fjerne {{name}} fra denne private samtale?" + remove_allowed_user: "Ønsker du virkelig at fjerne {{name}} fra denne samtale?" email: 'E-mail' username: 'Brugernavn' last_seen: 'Sidst set' @@ -555,7 +565,7 @@ da: title: "Opret konto" failed: "Noget gik galt. Måske er e-mail-adressen allerede registreret – prøv “Jeg har glemt min adgangskode”-linket" forgot_password: - title: "Glemt adgangskode" + title: "Nulstil kodeord" action: "Jeg har glemt min adgangskode" invite: "Skriv brugernavn eller e-mail-adresse, så sender vi dig en mail så du kan nulstille din adgangskode." reset: "Nulstil adgangskode" @@ -628,8 +638,8 @@ da: reply_here: "Svar her" reply: "Svar" cancel: "Annullér" - create_topic: "Nyt emne" - create_pm: "Privat besked" + create_topic: "Opret emne" + create_pm: "Besked" title: "Eller tryk Ctrl+Enter" users_placeholder: "Tilføj bruger" title_placeholder: "Hvad handler diskussionen om i korte træk?" @@ -679,11 +689,11 @@ da: units: "(# timer)" examples: 'Indtast antal timer (24).' notifications: - title: "notifikation ved @navns nævnelse, svar til dine indlæg og emner, private beskeder, mv." + title: "notifikation ved @navns nævnelse, svar til dine indlæg og emner, beskeder, mv." none: "Ikke i stand til at indlæse notifikationer for tiden." more: "se ældre notifikationer" total_flagged: "total markerede indlæg" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -717,7 +727,7 @@ da: user: "Søg i indlæg fra @{{username}}" category: "Søg i kategorien \"{{category}}\"" topic: "Søg i dette emne" - private_messages: "Søg i private beskeder" + private_messages: "Søg i beskeder" site_map: "gå til en anden emneoversigt eller kategori" go_back: 'gå tilbage' not_logged_in_user: 'bruger side, med oversigt over aktivitet og indstillinger' @@ -768,7 +778,7 @@ da: filter_to: "Vis {{post_count}} indlæg i emnet" create: 'Nyt emne' create_long: 'Opret et nyt emne i debatten' - private_message: 'Start en privat samtale' + private_message: 'Start en besked' list: 'Emner' new: 'nyt emne' unread: 'ulæste' @@ -846,13 +856,13 @@ da: '0': 'Du får ingen notifikationer for dette emne.' watching_pm: title: "Følger" - description: "Du vil blive underrettet for hver ny post i denne private mail. Antallet af ulæste og nye posts vil også blive vist ved siden af emnet" + description: "Du vil blive underrettet for hver ny post i denne besked. Antallet af ulæste og nye posts vil også blive vist ved siden af emnet" watching: title: "Overvåger" description: "Du vil blive underrettet for hvert nyt indlæg i denne tråd. En optælling af nye indlæg vil blive vist ved siden af tråden." tracking_pm: title: "Følger" - description: "Antallet af ulæste og nye indlæg, vil stå efter den private besked. Du bliver notificeret hvis nogen nævner dit @name eller svarer på dit indlæg." + description: "Antallet af ulæste og nye indlæg, vil stå efter beskeden. Du bliver notificeret hvis nogen nævner dit @name eller svarer på dit indlæg." tracking: title: "Følger" description: "Antallet af ulæste og nye indlæg vil stå efter emne linien. Du bliver notificeret hvis nogen nævner dit @name eller svarer på dine indlæg." @@ -861,10 +871,9 @@ da: description: "Du får notifikationer hvis nogen nævner dit @navn eller svarer på dit indlæg." regular_pm: title: "Standard" - description: "Du får notifikationer hvis nogen nævner dit @navn eller svarer på dit indlæg i denne private besked." + description: "Du får notifikationer hvis nogen nævner dit @navn eller svarer på dit indlæg i denne besked." muted_pm: title: "Lydløs" - description: "Du vil aldrig blive underrettet om noget omhandlende denne private mailboks" muted: title: "Stille!" description: "du får ikke besked om nogen hændelser i dette emne, og det vil ikke fremgå af din liste over ulæste emner." @@ -873,20 +882,11 @@ da: delete: "Slet emne" open: "Åbn emne" close: "Luk emne" - auto_close: "Luk automatisk" - feature: "Fremhævet Emne" - remove_feature: "Fjern Fremhævning" - make_banner: "Banner emne" - remove_banner: "Fjern banner emne" - pin: "Fastgør emne" - unpin: "Frigør emne" - pin_globally: "Fastgør emnet globalt" unarchive: "Gendan emne fra arkiv" archive: "Arkivér emne" invisible: "Gør ulistet" visible: "Går listet" reset_read: "Glem hvilke emner jeg har læst" - multi_select: "Vælg emner der skal flyttes" reply: title: 'Svar' help: 'begynd at skrive et svar til dette emne' @@ -903,47 +903,26 @@ da: feature_topic: title: "Fremhæv dette emne" pin: "Lad dette emne stå i toppen af {{categoryLink}} kategorien." - confirm_pin: "Er du sikker? Du har allerede {{count}} pinnede emner -- for mange pinnede emner kan gør det uoverskueligt at finde de andre emner." - unpin: "Fjern dette emne fra titlen på {{categoryLink}} kategorien." pin_note: "Brugere kan unpinne emnet individuelt." - already_pinned: - zero: "Ingen emner er pinnet lige nu i {{categoryLink}}." - one: "Emner der er pinnet i {{categoryLink}}: 1." - other: "Emner der er pinnet i {{categoryLink}}: {{count}}." pin_globally: "Få dette emne til at stå i toppen af alle emne lister, indtil et medlem af \"staff\" unpinner det." - confirm_pin_globally: "Er du sikker? Du har allerede {{count}} globalt pinnede emner -- for mange pinnede emner, kan gøre det svært at finde andre aktive emner." unpin_globally: "Fjern dette emne fra toppen af alle emne lister." global_pin_note: "Brugere kan unpinne emnet individuelt." - already_pinned_globally: - zero: "Der er ingen globalt pinnede emner." - one: "Emner der er globalt pinnede: 1." - other: "Emner der er globalt pinnede: {{count}}" make_banner: "Gør dette emne til en banner, der kommer til at stå i toppen på alle sider." remove_banner: "Fjern banneret, der står på toppen af alle sider." banner_note: "Brugere kan fjernet banneret ved at lukke det. Kun én banner kan være aktiv ad gangen." - already_banner: - zero: "Der er ingen banner emner lige nu." - one: "Der er et aktiv banner emne." inviting: "Inviterer…" automatically_add_to_groups_optional: "Denne invitation giver også adgang til disse grupper: (valgfrit, kun for administrator)" automatically_add_to_groups_required: "Denne invitation giver også adgang til disse grupper: (Påkrævet, kun for administrator)" invite_private: - title: 'Invitér til privat samtale' email_or_username: "Inviteret brugers e-mail eller brugernavn" email_or_username_placeholder: "e-mail-adresse eller brugernavn" action: "Invitér" - success: "Vi har inviteret brugeren til at deltage i din private samtale." error: "Beklager, der skete en fejl, da vi forsøgte at invitere brugeren." group_name: "gruppe navn" invite_reply: title: 'Invitér' - action: 'E-mail-invitation' - help: 'send invitationer til dine venner, så de kan svare på dette indlæg med et enkelt klik' - to_topic: "Vi sender din ven en kort e-mail, som gør det muligt at svare på dette emne med et enkelt klik uden at skulle logge ind." to_forum: "Vi sender din ven en kort e-mail, som gør det muligt at tilmelde sig øjeblikkeligt ved at klikke på et link, uden det er nødvendigt at logge ind." email_placeholder: 'e-mail-adresse' - success: "Vi har sendt en invitation til {{email}}. Vi påminder dig når invitationen er blevet accepteret. Check invitations-fanen på din brugerside, for at følge med i hvem du har inviteret." - error: "Beklager, vi kunne ikke invitere den person. Måske er de allerede brugere?" login_reply: 'Log ind for at svare' filters: n_posts: @@ -987,13 +966,10 @@ da: one: Du har valgt 1 indlæg. other: Du har valgt {{count}} indlæg. post: - reply: "Svar til {{link}} af {{replyAvatar}} {{username}}" reply_topic: "Svar til {{link}}" quote_reply: "citér svar" - edit: "Redigerer {{link}} af {{replyAvatar}} {{username}}" edit_reason: "Reason: " post_number: "indlæg {{number}}" - in_reply_to: "som svar til" last_edited_on: "indlæg sidst redigeret den" reply_as_new_topic: "Svar som linket emne" continue_discussion: "Fortsætter debatten fra {{postLink}}:" @@ -1085,8 +1061,6 @@ da: inappropriate: "{{icons}} markerede dette som upassende" notify_moderators: "{{icons}} underrettede moderatorer" notify_moderators_with_url: "{{icons}} underrettede moderatorer" - notify_user: "{{icons}} sendte en privat besked" - notify_user_with_url: "{{icons}} sendte en privat besked" bookmark: "{{icons}} bogmærker" like: "{{icons}} likes" vote: "{{icons}} stemmer" @@ -1095,7 +1069,6 @@ da: spam: "Du flagede dette som spam" inappropriate: "Du flagede dette som upassende" notify_moderators: "Du flagede dette til gennemsyn" - notify_user: "Du sendte en privat besked til denne bruger" bookmark: "Du bogmærkede dette indlæg" like: "Du liker dette indlæg" vote: "Du stemte for dette indlæg" @@ -1112,9 +1085,6 @@ da: notify_moderators: one: "Du og 1 anden flagede dette til moderation" other: "Du og {{count}} andre flagede dette til moderation" - notify_user: - one: "Du og 1 anden sendte en privat besked til denne bruger" - other: "Du og {{count}} andre sendte en privat besked til denne bruger" bookmark: one: "Du og 1 anden bogmærkede dette indlæg" other: "Du og {{count}} andre bogmærkede dette indlæg" @@ -1137,9 +1107,6 @@ da: notify_moderators: one: "1 person flagede dette til moderation" other: "{{count}} personer flagede dette til moderation" - notify_user: - one: "1 person sendte en privat besked til denne bruger" - other: "{{count}} personer sendte en privat besked til denne bruger" bookmark: one: "1 person bogmærkede dette indlæg" other: "{{count}} personer bogmærkede dette indlæg" @@ -1245,7 +1212,6 @@ da: private_reminder: 'flag er private, de er kun

    synlige for personalet' action: 'Flag indlæg' take_action: "Reagér" - notify_action: 'Underret' delete_spammer: "Slet spammer" delete_confirm: "Du er ved at slette %{posts} indlæg og %{topics} emner oprettet af denne bruger, fjerne deres konto, blokere tilmeldinger fra deres IP-adresse %{ip_address} og tilføje deres e-mail-adresse %{email} til en permanent blokeringsliste. Er du sikker på, at denne bruger virkelig er en spammer?" yes_delete_spammer: "Ja, slet spammer" @@ -1267,7 +1233,6 @@ da: flagging_topic: title: "Tak fordi du hjælper med at holde vores forum civiliseret!" action: "Rapporter emne" - notify_action: "Privat besked" topic_map: title: "Emne-resumé" links_shown: "vis alle {{totalLinks}} links..." @@ -1371,15 +1336,6 @@ da: top: title: "Top" help: "de mest aktive emner i det sidse år, måned, uge og dag" - yearly: - title: "Top årligt" - monthly: - title: "Top månedligt" - weekly: - title: "Top ugentligt" - daily: - title: "Top dagligt" - all: "Alt" this_year: "Dette år" this_month: "Denne måned" this_week: "Denne uge" @@ -1416,8 +1372,6 @@ da: admins: 'Admins:' blocked: 'Blokeret:' suspended: 'Suspenderet:' - private_messages_short: "PMs" - private_messages_title: "Private beskeder" space_free: "{{size}} tilbage" uploads: "uploads" backups: "backups" @@ -1451,7 +1405,6 @@ da: agree_title: "Bekræft dette flag er gyldigt og korrekt" agree_flag_modal_title: "Enig og..." agree_flag_hide_post: "Enig (skjul indlæg + send PM)" - agree_flag_hide_post_title: "Gem dette indlæg og send automatisk en privat besked til brugeren som tilskyndelse til at redigere det" agree_flag_restore_post: "Enig (gendan indlæg)" agree_flag_restore_post_title: "Gendan dette indlæg" agree_flag: "sæt markeringen til \"enig\"" @@ -1523,12 +1476,6 @@ da: name: "Navn" add: "Tilføj" add_members: "Tilføj medlemmer" - custom: - label: "Brugerdefineret" - title: "Brugerdefinerede grupper" - automatic: - label: "Automatisk" - title: "Automatiske grupper" automatic_membership_email_domains: "Brugere der registrerer med et email domæne der præcist matcher et på denne liste, vil automatisk blive tilføjet til denne gruppe:" automatic_membership_retroactive: "Brug denne email domæne regel til at tilføje brugere der allerede er registrerede brugere" api: @@ -1562,18 +1509,15 @@ da: read_only: enable: title: "Aktiver \"kun læsning\" tilstanden" - text: "Aktiver \"kun læsning\" tilstanden" confirm: "Er du sikker på du vil aktivere \"kun læsning\" tilstranden?" disable: title: "Deaktiver \"kun læsning\" tilstanden" - text: "Deaktiver \"kun læsning\" tilstanden" logs: none: "Ingen logs endnu..." columns: filename: "Filnavn" size: "Størrelse" upload: - text: "Upload" uploading: "Uploader..." success: "'{{filename}}' er blevet uploaded." error: "Der skete en fejl da filen '{{filename}}' blev forsøgt uploaded: {{message}}" @@ -1581,33 +1525,26 @@ da: is_running: "Der kører allerede en operation..." failed: "{{operation}} gik galt. Kig venligst i logfilerne." cancel: - text: "Annuller" title: "Annuller den nuværende handling" confirm: "Er du sikker på du vil annullere den nuværende handling?" backup: - text: "Backup" title: "Start backup" confirm: "Vil du starte en ny backup?" without_uploads: "Ja (inkluder ikke filer)" download: - text: "Download" title: "Download backuppen" destroy: - text: "Slet" title: "Sletter backuppen" confirm: "Er du sikker på du vil fjerne denne backup?" restore: is_disabled: "Gendan er deaktiveret i forum indstillingerne." - text: "Gendan" title: "Gendan backuppen" confirm: "Er du sikker på du vil gendanne fra denne backup?" rollback: - text: "Rul tilbage" title: "Rul databasen tilbage til et tidspunkt hvor tingene virkede" confirm: "Er du sikker på du vil rulle databasen tilbage?" export_csv: user_archive_confirm: "Er du sikker på du vil downloade dine indlæg?" - success: "Eksportering i gang, du får en notifikation når processen er afsluttet." failed: "Eksport fejlede. Tjek venligst loggen." rate_limit_error: "Indlæg kan downloades én gang om dagen, prøv igen i morgen." button_text: "Eksporter" diff --git a/config/locales/client.de.yml b/config/locales/client.de.yml index 55a1146b18..c16b27af06 100644 --- a/config/locales/client.de.yml +++ b/config/locales/client.de.yml @@ -92,6 +92,7 @@ de: email: 'diesen Link per E-Mail senden' topic_admin_menu: "Thema administrieren" emails_are_disabled: "Die ausgehende E-Mail-Kommunikation wurde von einem Administrator global deaktiviert. Es werden keinerlei Benachrichtigungen per E-Mail verschickt." + s3_deprecation_warning: "ACHTUNG! Amazon S3 wird zur Bild-/Anhangsspeicherung bald abgelehnt werden. Bitte folge den Anweisungen, um auf lokale Speicherung zu migrieren." edit: 'Titel und Kategorie dieses Themas ändern' not_implemented: "Entschuldige, diese Funktion wurde noch nicht implementiert!" no_value: "Nein" @@ -185,6 +186,8 @@ de: undo: "Rückgängig machen" revert: "Verwerfen" failed: "Fehlgeschlagen" + switch_to_anon: "Anonymer Modus" + switch_from_anon: "Anonymen Modus beenden" banner: close: "Diesen Banner ausblenden." choose_topic: @@ -207,17 +210,25 @@ de: sent_by_user: "Von {{user}} gesendet" sent_by_you: "Von dir gesendet" directory: - title: "Benutzerverzeichnis" - likes_given: "Abgegebene Likes" - likes_received: "Erhaltene Likes" - topics_entered: "Betrachtete Themen" + filter_name: "nach Benutzername filtern" + title: "Benutzer" + likes_given: "Gegeben" + likes_received: "Erhalten" + topics_entered: "Betrachtet" + topics_entered_long: "Betrachtete Themen" time_read: "Lesezeit" topic_count: "Themen" - post_count: "Antworten" - no_results: "Keine Ergebnisse für den gewählten Zeitabschnitt gefunden." + topic_count_long: "Erstellte Themen" + post_count: "Beiträge" + post_count_long: "Verfasste Beiträge" + no_results: "Es wurden keine Ergebnisse gefunden." + days_visited: "Aufrufe" + days_visited_long: "Besuchstage" + posts_read: "Gelesen" + posts_read_long: "Gelesene Beiträge" total_rows: - one: "1 Benutzer gefunden" - other: "%{count} Benutzer gefunden" + one: "1 Benutzer" + other: "%{count} Benutzer" groups: visible: "Gruppe ist für alle Benutzer sichtbar" title: @@ -285,8 +296,8 @@ de: mute: "Stummschalten" edit: "Einstellungen bearbeiten" download_archive: "Meine Beiträge herunterladen" - new_private_message: "Neue private Nachricht" - private_message: "Private Nachricht" + new_private_message: "Neue Nachricht" + private_message: "Nachricht" private_messages: "Nachrichten" activity_stream: "Aktivität" preferences: "Einstellungen" @@ -323,6 +334,9 @@ de: delete_yourself_not_allowed: "Du kannst im Moment dein Benutzerkonto nicht löschen. Kontaktiere einen Administrator, um dein Benutzerkonto löschen zu lassen." unread_message_count: "Nachrichten" admin_delete: "Löschen" + users: "Benutzer" + muted_users: "Stummgeschaltet" + muted_users_instructions: "Alle Benachrichtigungen von diesem Benutzer unterdrücken." staff_counters: flags_given: "hilfreiche Meldungen" flagged_posts: "gemeldete Beiträge" @@ -361,7 +375,7 @@ de: uploaded_avatar_empty: "Eigenes Bild hinzufügen" upload_title: "Lade dein Bild hoch" upload_picture: "Bild hochladen" - image_is_not_a_square: "Achtung: wir haben dein Bild zugeschnitten, da es nicht quadratisch war." + image_is_not_a_square: "Achtung: Wir haben dein Bild zugeschnitten, weil Höhe und Breite nicht übereingestimmt haben." change_profile_background: title: "Profilhintergrund" instructions: "Hintergrundbilder werden zentriert und haben eine Standardbreite von 850px." @@ -381,6 +395,7 @@ de: name: title: "Name" instructions: "Dein vollständiger Name (optional)" + instructions_required: "Dein vollständiger Name" too_short: "Dein Name ist zu kurz" ok: "Dein Name sieht in Ordnung aus" username: @@ -418,8 +433,7 @@ de: every_three_days: "alle drei Tage" weekly: "wöchentlich" every_two_weeks: "alle drei Tage" - email_direct: "Schicke eine E-Mail, wenn mich jemand zitiert, auf meine Beiträge antwortet oder meinen @Namen erwähnt." - email_private_messages: "Schicke eine E-Mail, wenn mir jemand eine private Nachricht sendet." + email_private_messages: "Sende mir eine E-Mail, wenn mir jemand eine Nachricht sendet." email_always: "E-Mail-Benachrichtigungen nicht unterdrücken, während ich im Forum aktiv bin" other_settings: "Andere" categories_settings: "Kategorien" @@ -467,7 +481,7 @@ de: 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" uploading: "Wird hochgeladen..." - success: "Die Datei wurde erfolgreich hochgeladen. Du erhältst eine private Nachricht, sobald der Vorgang abgeschlossen ist." + success: "Die Datei wurde erfolgreich hochgeladen. Du erhältst eine Nachricht, sobald der Vorgang abgeschlossen ist." error: "Beim Hochladen der Datei '{{filename}}' ist ein Fehler aufgetreten: {{message}}" password: title: "Passwort" @@ -491,7 +505,7 @@ de: stream: posted_by: "Verfasst von" sent_by: "Gesendet von" - private_message: "Private Nachricht" + private_message: "Nachricht" the_topic: "das Thema" loading: "Wird geladen..." errors: @@ -544,9 +558,9 @@ de: enable: "Gelöschte Beiträge ausblenden" disable: "Gelöschte Beiträge anzeigen" private_message_info: - title: "Private Nachricht" + title: "Nachricht" invite: "Andere einladen..." - remove_allowed_user: "Willst du {{name}} wirklich aus dieser privaten Unterhaltung entfernen?" + remove_allowed_user: "Willst du {{name}} wirklich aus dieser Unterhaltung entfernen?" email: 'E-Mail-Adresse' username: 'Benutzername' last_seen: 'Zuletzt gesehen' @@ -558,7 +572,7 @@ de: title: "Neues Benutzerkonto erstellen" failed: "Etwas ist fehlgeschlagen. Vielleicht ist diese E-Mail-Adresse bereits registriert. Versuche den 'Passwort vergessen'-Link." forgot_password: - title: "Passwort vergessen" + title: "Passwort zurücksetzen" action: "Ich habe mein Passwort vergessen" invite: "Gib deinen Benutzernamen oder deine E-Mail-Adresse ein. Wir senden dir eine E-Mail zum Zurücksetzen des Passworts." reset: "Passwort zurücksetzen" @@ -632,7 +646,7 @@ de: reply: "Antworten" cancel: "Abbrechen" create_topic: "Thema erstellen" - create_pm: "Private Nachricht erstellen" + create_pm: "Nachricht" title: "Oder drücke Strg+Eingabetaste" users_placeholder: "Benutzer hinzufügen" title_placeholder: "Um was geht es in dieser Diskussion? Schreib einen kurzen Satz." @@ -682,11 +696,11 @@ de: units: "(# Stunden)" examples: 'Gib die Anzahl der Stunden ein (24).' notifications: - title: "Benachrichtigung über Erwähnungen mit @Name, Antworten auf deine Beiträge und Themen, private Nachrichten etc." + title: "Benachrichtigung über @Name-Erwähnungen, Antworten auf deine Beiträge und Themen, Nachrichten, usw." none: "Die Benachrichtigungen können derzeit nicht geladen werden." more: "ältere Benachrichtigungen anzeigen" total_flagged: "Anzahl der gemeldeten Beiträge" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -694,6 +708,7 @@ de: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} hat deine Einladung angenommen

    " moved_post: "

    {{username}} hat {{description}} verschoben

    " linked: "

    {{username}} {{description}}

    " @@ -720,7 +735,7 @@ de: user: "Beiträge von @{{username}} durchsuchen" category: "Kategorie „{{category}}“ durchsuchen" topic: "Dieses Thema durchsuchen" - private_messages: "Private Nachrichten durchsuchen" + private_messages: "Nachrichten durchsuchen" site_map: "zu einer anderen Themenliste oder Kategorie wechseln" go_back: 'zurückgehen' not_logged_in_user: 'Benutzerseite mit einer Zusammenfassung der Benutzeraktivitäten und Einstellungen' @@ -754,6 +769,7 @@ de: bookmarks: "Du hast noch keine Themen, in denen du ein Lesezeichen gesetzt hast." category: "Es gibt keine Themen in {{category}}." top: "Es gibt keine Top-Themen." + search: "Es wurden keine Suchergebnisse gefunden." educate: new: '

    Hier werden neue Themen angezeigt.

    Standardmäßig werden jene Themen als neu angesehen und mit dem neu Indikator versehen, die in den letzten 2 Tagen erstellt wurden.

    Du kannst das in deinen Einstellungen ändern.

    ' unread: '

    Hier werden deine ungelesenen Themen angezeigt.

    Die Anzahl der ungelesenen Beiträge wird als 1 neben den Themen angezeigt.
    @@ -769,11 +785,12 @@ de: category: "Das waren alle Themen in der Kategorie „{{category}}“." top: "Das waren alle angesagten Themen." bookmarks: "Das waren alle Themen mit Lesezeichen." + search: "Es gibt keine weiteren Suchergebnisse." topic: filter_to: "{{post_count}} Beiträge im Thema" create: 'Neues Thema' create_long: 'Ein neues Thema erstellen' - private_message: 'Eine private Unterhaltung beginnen' + private_message: 'Eine Unterhaltung beginnen' list: 'Themen' new: 'neues Thema' unread: 'ungelesen' @@ -851,7 +868,7 @@ de: '0': 'Du ignorierst alle Benachrichtigungen dieses Themas.' watching_pm: title: "Beobachten" - description: "Du wirst über jeden neuen Beitrag in dieser privaten Unterhaltung benachrichtigt. Die Anzahl der ungelesenen und neuen Beiträge wird auch neben der Nachricht erscheinen." + description: "Du wirst über jeden neuen Beitrag in dieser Unterhaltung benachrichtigt. Die Anzahl der ungelesenen und neuen Beiträge wird auch neben dem Thema erscheinen." watching: title: "Beobachten" description: "Du wirst über jeden neuen Beitrag in diesem Thema benachrichtigt. Die Anzahl der ungelesenen und neuen Beiträge wird auch neben dem Thema erscheinen." @@ -866,10 +883,10 @@ de: description: "Du wirst benachrichtigt, wenn jemand deinen @Namen erwähnt oder auf deinen Beitrag antwortet." regular_pm: title: "Normal" - description: "Du wirst benachrichtigt, wenn jemand deinen @Namen erwähnt oder auf deinen Beitrag in der privaten Nachricht antwortet." + description: "Du wirst benachrichtigt, wenn jemand deinen @Namen erwähnt oder auf deinen Beitrag in der Nachricht antwortet." muted_pm: title: "Stummgeschaltet" - description: "Du erhältst keine Benachrichtigungen über diese private Unterhaltung." + description: "Du erhältst keine Benachrichtigungen im Zusammenhang mit dieser Unterhaltung." muted: title: "Stummgeschaltet" description: "Du erhältst keine Benachrichtigungen über dieses Thema und es wird nicht in deiner Liste ungelesener Themen aufscheinen." @@ -878,20 +895,21 @@ de: delete: "Thema löschen" open: "Thema öffnen" close: "Thema schließen" - auto_close: "Automatisch schließen" - feature: "Thema hervorheben" - remove_feature: "Hervorhebung entfernen" - make_banner: "Banner-Thema" - remove_banner: "Kein Banner-Thema" - pin: "Thema anheften" - unpin: "Thema loslösen" - pin_globally: "Thema global anheften" + multi_select: "Beiträge auswählen..." + auto_close: "Automatisch schließen…" + pin: "Thema anheften..." + unpin: "Thema loslösen..." unarchive: "Thema aus Archiv holen" archive: "Thema archivieren" invisible: "Unsichtbar machen" visible: "Sichtbar machen" reset_read: "„Gelesen“ zurücksetzen" - multi_select: "Beiträge auswählen" + feature: + pin: "Thema anheften" + unpin: "Thema loslösen" + pin_globally: "Thema global anheften" + make_banner: "Ankündigungsbanner" + remove_banner: "Ankündigungsbanner entfernen" reply: title: 'Antworten' help: 'beginne damit eine Antwort auf dieses Thema zu verfassen' @@ -908,47 +926,47 @@ de: feature_topic: title: "Thema hervorheben" pin: "Das Thema immer am Anfang der {{categoryLink}} Kategorie anzeigen." - confirm_pin: "Bist du sicher? Es gibt bereits {{count}} angeheftete Themen -- zu viele angeheftete Themen können die Sichtbarkeit anderer aktiver Themen beeinträchtigen." + confirm_pin: "Es gibt bereits {{count}} angeheftete Themen. Zu viele angeheftete Themen könnten neue und unbekannte Benutzer leicht überwältigen. Willst du wirklich noch ein weiteres Thema in dieser Kategorie anheften?" unpin: "Das Thema vom Anfang der {{categoryLink}} Kategorie loslösen." pin_note: "Benutzer können das Thema für sich selbst loslösen." already_pinned: - zero: "Momentan sind in {{categoryLink}} keine Themen angeheftet." - one: "Momentan in {{categoryLink}} angeheftete Themen: 1." - other: "Momentan in {{categoryLink}} angeheftete Themen: {{count}}." + zero: "Es sind in {{categoryLink}} keine Themen angeheftet." + one: "Momentan in {{categoryLink}} angeheftete Themen: 1" + other: "Momentan in {{categoryLink}} angeheftete Themen: {{count}}" pin_globally: "Das Thema immer am Anfang aller Themenlisten anzeigen, bis ein Mitarbeiter es wieder loslöst." - confirm_pin_globally: "Bist du sicher? Es gibt bereits {{count}} global angeheftete Themen -- zu viele angeheftete Themen können die Sichtbarkeit anderer aktiver Themen beeinträchtigen." + confirm_pin_globally: "Es gibt bereits {{count}} global angeheftete Themen. Zu viele angeheftete Themen könnten neue und unbekannte Benutzer leicht überwältigen. Willst du wirklich noch ein weiteres Thema global anheften?" unpin_globally: "Das Thema vom Anfang aller Themenlisten loslösen." global_pin_note: "Benutzer können das Thema für sich selbst loslösen." already_pinned_globally: - zero: "Momentan sind keine Themen global angeheftet." - one: "Momentan global angeheftete Themen: 1." - other: "Momentan global angeheftete Themen: {{count}}." + zero: "Es sind keine Themen global angeheftet." + one: "Momentan global angeheftete Themen: 1" + other: "Momentan global angeheftete Themen: {{count}}" make_banner: "Macht das Thema zu einem Ankündigungsbanner, welcher am Anfang aller Seiten angezeigt wird." remove_banner: "Entfernt das Ankündigungsbanner vom Anfang aller Seiten." banner_note: "Benutzer können das Ankündigungsbanner schließen und so für sich selbst dauerhaft ausblenden. Es kann zu jeder Zeit höchstens ein Thema ein Banner sein." already_banner: - zero: "Momentan gibt es kein Ankündigungsbanner." - one: "Es gibt derzeit ein anderes Ankündigungsbanner." + zero: "Es gibt kein Ankündigungsbanner." + one: "Es gibt bereits ein anderes Ankündigungsbanner." inviting: "Einladungen werden gesendet..." automatically_add_to_groups_optional: "Diese Einladung beinhaltet auch Zugang zu den folgenden Gruppen: (optional, nur Admin)" automatically_add_to_groups_required: "Diese Einladung beinhaltet auch Zugang zu folgenden Gruppen: (erforderlich, nur Admin)" invite_private: - title: 'Zu privater Unterhaltung einladen' + title: 'Zu einer Unterhaltung einladen' email_or_username: "E-Mail-Adresse oder Benutzername des Eingeladenen" email_or_username_placeholder: "E-Mail-Adresse oder Benutzername" action: "Einladen" - success: "Wir haben den Benutzer eingeladen, an dieser privaten Unterhaltung teilzunehmen." + success: "Wir haben den Benutzer eingeladen, an dieser Unterhaltung teilzunehmen." error: "Entschuldige, es gab einen Fehler beim Einladen des Benutzers." group_name: "Gruppenname" invite_reply: title: 'Einladen' - action: 'Einladung senden' - help: 'Freunden eine Einladung senden, sodass sie auf das Thema mit einem Klick antworten können' - to_topic: "Wir senden deinem Freund eine kurze E-Mail, die es ihm ermöglicht, direkt auf dieses Thema zu antworten. Es ist keine Anmeldung erforderlich." + username_placeholder: "Benutzername" + action: 'Einladung versenden' + help: 'per E-Mail oder Benachrichtigung weitere Personen zu diesem Thema einladen' to_forum: "Wir senden deinem Freund eine kurze E-Mail, die es ihm ermöglicht, dem Forum sofort beizutreten. Es ist keine Anmeldung erforderlich." + to_topic_blank: "Gib den Benutzername oder die E-Mail-Adresse der Person ein, die du zu diesem Thema einladen willst." email_placeholder: 'name@example.com' - success: "Wir haben an {{email}} eine Einladung verschickt. Wir werden dich benachrichtigen, sobald die Einladung angenommen wurde. Auf deiner Benutzerseite kannst du den Status deiner Einladungen verfolgen." - error: "Entschuldige, wir konnten diese Person nicht einladen. Hat diese Person vielleicht schon ein Benutzerkonto? (Einladungen sind in ihrer Zahl beschränkt)" + error: "Es tut uns leid, wir konnten diese Person nicht einladen. Wurde diese Person vielleicht schon eingeladen? (Einladungen sind in ihrer Zahl beschränkt)" login_reply: 'Anmelden, um zu antworten' filters: n_posts: @@ -992,13 +1010,12 @@ de: one: Du hast 1 Beitrag ausgewählt. other: Du hast {{count}} Beiträge ausgewählt. post: - reply: "Auf {{link}} von {{replyAvatar}} {{username}} antworten" + reply: "Du antwortest auf {{link}} {{replyAvatar}} {{username}}" reply_topic: "Auf {{link}} antworten" quote_reply: "Antwort zitieren" - edit: "Bearbeite {{link}} von {{replyAvatar}} {{username}}" + edit: "Du bearbeitest {{link}} {{replyAvatar}} {{username}}" edit_reason: "Grund: " post_number: "Beitrag {{number}}" - in_reply_to: "als Antwort auf" last_edited_on: "Beitrag zuletzt bearbeitet am" reply_as_new_topic: "Mit verknüpftem Thema antworten" continue_discussion: "Fortsetzung der Diskussion von {{postLink}}:" @@ -1090,8 +1107,8 @@ de: inappropriate: "{{icons}} haben das als unangemessen gemeldet" notify_moderators: "{{icons}} haben das den Moderatoren gemeldet" notify_moderators_with_url: "{{icons}} haben das den Moderatoren gemeldet" - notify_user: "{{icons}} haben eine private Nachricht gesendet" - notify_user_with_url: "{{icons}} haben eine private Nachricht gesendet" + notify_user: "{{icons}} hat eine Nachricht gesendet" + notify_user_with_url: "{{icons}} hat eine Nachricht gesendet" bookmark: "{{icons}} haben das als Lesezeichen" like: "{{icons}} gefällt dieser Beitrag" vote: "{{icons}} haben dafür gestimmt" @@ -1100,7 +1117,7 @@ de: spam: "Du hast das als Spam gemeldet" inappropriate: "Du hast das als Unangemessen gemeldet" notify_moderators: "Du hast dies den Moderatoren gemeldet" - notify_user: "Du hast diesem Benutzer eine private Nachricht gesendet" + notify_user: "Du hast diesem Benutzer eine Nachricht gesendet" bookmark: "Du hast bei diesem Beitrag ein Lesezeichen gesetzt" like: "Dir gefällt dieser Beitrag" vote: "Du hast für diesen Beitrag gestimmt" @@ -1118,8 +1135,8 @@ de: one: "Du und eine weitere Person haben dies den Moderatoren gemeldet" other: "Du und {{count}} weitere Personen haben dies den Moderatoren gemeldet" notify_user: - one: "Du und eine weitere Person haben diesem Benutzer eine private Nachricht gesendet" - other: "Du und {{count}} weitere Personen haben diesem Benutzer eine private Nachricht gesendet" + one: "Du und eine weitere Person haben diesem Benutzer eine Nachricht gesendet" + other: "Du und {{count}} weitere Personen haben diesem Benutzer eine Nachricht gesendet" bookmark: one: "Du und eine weitere Person haben bei diesem Beitrag ein Lesezeichen gesetzt" other: "Du und {{count}} weitere Personen haben bei diesem Beitrag ein Lesezeichen gesetzt" @@ -1143,8 +1160,8 @@ de: one: "Eine Person hat dies den Moderatoren gemeldet" other: "{{count}} Personen haben dies den Moderatoren gemeldet" notify_user: - one: "Eine Person hat diesem Benutzer eine private Nachricht gesendet" - other: "{{count}} Personen haben diesem Benutzer eine private Nachricht gesendet" + one: "Eine Person hat diesem Benutzer eine Nachricht gesendet" + other: "{{count}} Personen haben diesem Benutzer eine Nachricht gesendet" bookmark: one: "Eine Person hat bei diesem Beitrag ein Lesezeichen gesetzt" other: "{{count}} Personen haben bei diesem Beitrag ein Lesezeichen gesetzt" @@ -1250,7 +1267,7 @@ de: private_reminder: 'Meldungen sind vertraulich und nur für Mitarbeiter sichtbar' action: 'Beitrag melden' take_action: "Reagieren" - notify_action: 'Private Nachricht' + notify_action: 'Nachricht' delete_spammer: "Spammer löschen" delete_confirm: "Du wirst %{posts} Beiträge und %{topics} Themen von diesem Benutzer löschen, sein Konto entfernen, seine IP-Adresse %{ip_address} für Neuanmeldungen sperren und die E-Mail-Adresse %{ip_address} auf eine permanente Sperrliste setzen. Bist du dir sicher, dass dieser Benutzer wirklich ein Spammer ist?" yes_delete_spammer: "Ja, lösche den Spammer" @@ -1272,7 +1289,7 @@ de: flagging_topic: title: "Danke für deine Mithilfe!" action: "Thema melden" - notify_action: "Private Nachricht" + notify_action: "Nachricht" topic_map: title: "Zusammenfassung des Themas" links_shown: "zeige alle {{totalLinks}} Links..." @@ -1334,6 +1351,9 @@ de: read: title: "Gelesen" help: "Themen, die du gelesen hast; werden in der Reihenfolge angezeigt, in der du diese gelesen hast" + search: + title: "Suche" + help: "alle Themen durchsuchen" categories: title: "Kategorien" title_in: "Kategorie - {{categoryName}}" @@ -1372,15 +1392,17 @@ de: top: title: "Angesagt" help: "die aktivsten Themen in diesem Jahr, in diesem Monat, in dieser Woche und heute" + all: + title: "Gesamt" yearly: - title: "Angesagt jährlich" + title: "Jährlich" monthly: - title: "Angesagt monatlich" + title: "Monatlich" weekly: - title: "Angesagt wöchentlich" + title: "Wöchentlich" daily: - title: "Angesagt täglich" - all: "Gesamte Zeit" + title: "Täglich" + all_time: "Gesamt" this_year: "Dieses Jahr" this_month: "Dieser Monat" this_week: "Diese Woche" @@ -1417,8 +1439,8 @@ de: admins: 'Administratoren:' blocked: 'Blockiert:' suspended: 'Gesperrt:' - private_messages_short: "PNs" - private_messages_title: "Private Nachrichten" + private_messages_short: "Nachr." + private_messages_title: "Nachrichten" space_free: "{{size}} frei" uploads: "Uploads" backups: "Backups" @@ -1452,7 +1474,7 @@ de: agree_title: "Meldung bestätigen, weil diese gültig und richtig ist" agree_flag_modal_title: "Zustimmen und..." agree_flag_hide_post: "Zustimmen (Beitrag ausblenden + PN senden)" - agree_flag_hide_post_title: "Diesen Beitrag ausblenden und den Benutzer mit einer automatisch gesendeten, privaten Nachricht zum Bearbeiten des Beitrags auffordern." + agree_flag_hide_post_title: "Diesen Beitrag ausblenden und den Benutzer mit einer automatisch gesendeten Nachricht zum Bearbeiten des Beitrags auffordern." agree_flag_restore_post: "Zustimmen (Beitrag wiederherstellen)" agree_flag_restore_post_title: "Diesen Beitrag wiederherstellen" agree_flag: "Meldung zustimmen" @@ -1524,12 +1546,8 @@ de: name: "Name" add: "Hinzufügen" add_members: "Mitglieder hinzufügen" - custom: - label: "Benutzerdefiniert" - title: "Benutzerdefinierte Gruppen" - automatic: - label: "Automatisch" - title: "Automatische Gruppen" + custom: "Benutzerdefiniert" + automatic: "Automatisch" automatic_membership_email_domains: "Benutzer, deren E-Mail-Domain mit einem der folgenden Listeneinträge genau übereinstimmt, werden automatisch zu dieser Gruppe hinzugefügt:" automatic_membership_retroactive: "Diese Regel auch auf existierende Benutzer anwenden, um diese zur Gruppe hinzuzufügen." api: @@ -1563,18 +1581,19 @@ de: read_only: enable: title: "Nur-Lesen-Modus aktivieren" - text: "Nur-Lesen-Modus aktivieren" + label: "Nur-Lesen-Modus aktivieren" confirm: "Möchtest du wirklich den Nur-Lesen Modus aktivieren?" disable: title: "Nur-Lesen-Modus deaktivieren" - text: "Nur-Lesen-Modus deaktivieren" + label: "Nur-Lesen-Modus deaktivieren" logs: none: "Noch keine Protokolleinträge verfügbar..." columns: filename: "Dateiname" size: "Größe" upload: - text: "Hochladen" + label: "Hochladen" + title: "Eine Sicherung zu dieser Instanz hochladen" uploading: "Wird hochgeladen..." success: "'{{filename}}' wurde erfolgreich hochgeladen." error: "Beim Hochladen der Datei '{{filename}}' ist ein Fehler aufgetreten: {{message}}" @@ -1582,33 +1601,32 @@ de: is_running: "Ein Vorgang läuft gerade..." failed: "Der Vorgang '{{operation}}' ist fehlgeschlagen. Bitte überprüfe die Logs." cancel: - text: "Abbrechen" + label: "Abbrechen" title: "Den aktuellen Vorgang abbrechen" confirm: "Möchtest du wirklich den aktuellen Vorgang abbrechen?" backup: - text: "Backup" + label: "Sichern" title: "Ein Backup erstellen" confirm: "Willst du ein neues Backup starten?" without_uploads: "Ja (ohne Dateien)" download: - text: "Download" + label: "Herunterladen" title: "Backup herunterladen" destroy: - text: "Löschen" title: "Das Backup löschen" confirm: "Möchtest du wirklich das Backup löschen?" restore: is_disabled: "Wiederherstellung ist in den Website-Einstellungen deaktiviert." - text: "Wiederherstellen" + label: "Wiederherstellen" title: "Das Backup wiederherstellen" confirm: "Möchtest du wirklich dieses Backup wiederherstellen?" rollback: - text: "Zurücksetzen" + label: "Zurücksetzen" title: "Die Datenbank auf den letzten funktionierenden Zustand zurücksetzen" confirm: "Möchtest du wirklich die Datenbank auf den letzten funktionierenden Stand zurücksetzen?" export_csv: user_archive_confirm: "Möchtest du wirklich deine Beiträge herunterladen?" - success: "Der Export wurde gestartet. Du erhältst eine private Nachricht, sobald der Vorgang abgeschlossen ist." + success: "Der Export wurde gestartet. Du erhältst eine Nachricht, sobald der Vorgang abgeschlossen ist." failed: "Der Export ist fehlgeschlagen. Bitte überprüfe die Logs." rate_limit_error: "Beiträge können pro Tag nur einmal heruntergeladen werden. Bitte versuch es morgen wieder." button_text: "Exportieren" diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index d572ba63ec..c2d95b258e 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -105,6 +105,8 @@ en: emails_are_disabled: "All outgoing email has been globally disabled by an administrator. No email notifications of any kind will be sent." + s3_deprecation_warning: "WARNING! Amazon S3 will soon be deprecated for image/attachment storage. Please, follow the instructions to migrate to local storage." + edit: 'edit the title and category of this topic' not_implemented: "That feature hasn't been implemented yet, sorry!" no_value: "No" @@ -211,6 +213,9 @@ en: revert: "Revert" failed: "Failed" + switch_to_anon: "Anonymous Mode" + switch_from_anon: "Exit Anonymous Mode" + banner: close: "Dismiss this banner." @@ -242,11 +247,18 @@ en: title: "Users" likes_given: "Given" likes_received: "Received" - topics_entered: "Topics Entered" + topics_entered: "Entered" + topics_entered_long: "Topics Entered" time_read: "Time Read" topic_count: "Topics" + topic_count_long: "Topics Created" post_count: "Replies" + post_count_long: "Replies Posted" no_results: "No results were found." + days_visited: "Visits" + days_visited_long: "Days Visited" + posts_read: "Read" + posts_read_long: "Posts Read" total_rows: one: "1 user" other: "%{count} users" @@ -271,8 +283,8 @@ en: "2": "Likes Received" "3": "Bookmarks" "4": "Topics" - "5": "Posts" - "6": "Replies" + "5": "Replies" + "6": "Responses" "7": "Mentions" "9": "Quotes" "10": "Starred" @@ -322,8 +334,8 @@ en: mute: "Mute" edit: "Edit Preferences" download_archive: "Download My Posts" - new_private_message: "New Private Message" - private_message: "Private Message" + new_private_message: "New Message" + private_message: "Message" private_messages: "Messages" activity_stream: "Activity" preferences: "Preferences" @@ -408,7 +420,8 @@ en: uploaded_avatar_empty: "Add a custom picture" upload_title: "Upload your picture" upload_picture: "Upload Picture" - image_is_not_a_square: "Warning: we've cropped your image; it is not square." + image_is_not_a_square: "Warning: we've cropped your image; width and height were not equal." + cache_notice: "You've successfully changed your avatar but it might take some time to appear due to browser caching." change_profile_background: title: "Profile Background" @@ -432,6 +445,7 @@ en: name: title: "Name" instructions: "Your full name (optional)" + instructions_required: "Your full name" too_short: "Your name is too short" ok: "Your name looks good" username: @@ -474,8 +488,8 @@ en: weekly: "weekly" every_two_weeks: "every two weeks" - email_direct: "Send me an email when someone quotes me, replies to my post, or mentions my @username" - email_private_messages: "Send me an email when someone private messages me" + email_direct: "Send me an email when someone quotes me, replies to my post, mentions my @username, or invites me to a topic" + email_private_messages: "Send me an email when someone messages me" email_always: "Do not suppress email notifications when I am active on the site" other_settings: "Other" @@ -527,7 +541,7 @@ en: none: "You haven't invited anyone here yet. You can send individual invites, or invite a bunch of people at once by uploading a bulk invite file." text: "Bulk Invite from File" uploading: "Uploading..." - success: "File uploaded successfully, you will be notified via private message when the process is complete." + success: "File uploaded successfully, you will be notified via message when the process is complete." error: "There was an error uploading '{{filename}}': {{message}}" password: @@ -555,7 +569,7 @@ en: stream: posted_by: "Posted by" sent_by: "Sent by" - private_message: "private message" + private_message: "message" the_topic: "the topic" loading: "Loading..." @@ -615,9 +629,9 @@ en: disable: "Show Deleted Posts" private_message_info: - title: "Private Message" + title: "Message" invite: "Invite Others..." - remove_allowed_user: "Do you really want to remove {{name}} from this private message?" + remove_allowed_user: "Do you really want to remove {{name}} from this message?" email: 'Email' username: 'Username' @@ -712,7 +726,7 @@ en: reply: "Reply" cancel: "Cancel" create_topic: "Create Topic" - create_pm: "Private Message" + create_pm: "Message" title: "Or press Ctrl+Enter" users_placeholder: "Add a user" @@ -767,11 +781,11 @@ en: examples: 'Enter number of hours (24).' notifications: - title: "notifications of @name mentions, replies to your posts and topics, private messages, etc" + title: "notifications of @name mentions, replies to your posts and topics, messages, etc" none: "Unable to load notifications at this time." more: "view older notifications" total_flagged: "total flagged posts" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -779,6 +793,7 @@ en: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} accepted your invitation

    " moved_post: "

    {{username}} moved {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -808,7 +823,7 @@ en: user: "Search posts by @{{username}}" category: "Search the \"{{category}}\" category" topic: "Search this topic" - private_messages: "Search private messages" + private_messages: "Search messages" site_map: "go to another topic list or category" go_back: 'go back' @@ -845,6 +860,7 @@ en: bookmarks: "You have no bookmarked topics yet." category: "There are no {{category}} topics." top: "There are no top topics." + search: "There are no search results." educate: new: '

    Your new topics appear here.

    By default, topics are considered new and will show a new indicator if they were created in the last 2 days.

    You can change this in your preferences.

    ' unread: '

    Your unread topics appear here.

    By default, topics are considered unread and will show unread counts 1 if you:

    Or if you have explicitly set the topic to Tracked or Watched via the notification control at the bottom of each topic.

    You can change this in your preferences.

    ' @@ -858,12 +874,13 @@ en: category: "There are no more {{category}} topics." top: "There are no more top topics." bookmarks: "There are no more bookmarked topics." + search: "There are no more search results." topic: filter_to: "{{post_count}} posts in topic" create: 'New Topic' create_long: 'Create a new Topic' - private_message: 'Start a private message' + private_message: 'Start a message' list: 'Topics' new: 'new topic' unread: 'unread' @@ -962,13 +979,13 @@ en: "0": 'You are ignoring all notifications on this topic.' watching_pm: title: "Watching" - description: "You will be notified of every new post in this private message. A count of unread and new posts will also appear next to the topic." + description: "You will be notified of every new post in this message. A count of unread and new posts will also appear next to the topic." watching: title: "Watching" description: "You will be notified of every new post in this topic. A count of unread and new posts will also appear next to the topic." tracking_pm: title: "Tracking" - description: "A count of unread and new posts will appear next to the private message. You will be notified if someone mentions your @name or replies to your post." + description: "A count of unread and new posts will appear next to the message. You will be notified if someone mentions your @name or replies to your post." tracking: title: "Tracking" description: "A count of unread and new posts will appear next to the topic. You will be notified if someone mentions your @name or replies to your post. " @@ -977,10 +994,10 @@ en: description: "You will be notified if someone mentions your @name or replies to your post." regular_pm: title: "Regular" - description: "You will be notified if someone mentions your @name or replies to your post in the private message." + description: "You will be notified if someone mentions your @name or replies to your post in the message." muted_pm: title: "Muted" - description: "You will never be notified of anything about this private message." + 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." @@ -990,18 +1007,22 @@ en: delete: "Delete Topic" open: "Open Topic" close: "Close Topic" - auto_close: "Auto Close" - make_banner: "Banner Topic" - remove_banner: "Remove Banner Topic" - pin: "Pin Topic" - unpin: "Un-Pin Topic" - pin_globally: "Pin Topic Globally" + multi_select: "Select Posts…" + auto_close: "Auto Close…" + pin: "Pin Topic…" + unpin: "Un-Pin Topic…" unarchive: "Unarchive Topic" archive: "Archive Topic" invisible: "Make Unlisted" visible: "Make Listed" reset_read: "Reset Read Data" - multi_select: "Select Posts" + + feature: + pin: "Pin Topic" + unpin: "Un-Pin Topic" + pin_globally: "Pin Topic Globally" + make_banner: "Banner Topic" + remove_banner: "Remove Banner Topic" reply: title: 'Reply' @@ -1028,15 +1049,15 @@ en: pin_note: "Users can unpin the topic individually for themselves." already_pinned: zero: "There are no topics pinned in {{categoryLink}}." - one: "Topics currently pinned in {{categoryLink}}: 1" - other: "Topics currently pinned in {{categoryLink}}: {{count}}" + one: "Topics currently pinned in {{categoryLink}}: 1." + other: "Topics currently pinned in {{categoryLink}}: {{count}}." pin_globally: "Make this topic appear at the top of all topic lists, until a staff member unpins it." confirm_pin_globally: "You already have {{count}} globally pinned topics. Too many pinned topics may be a burden for new and anonymous users. Are you sure you want to pin another topic globally?" unpin_globally: "Remove this topic from the top of all topic lists." global_pin_note: "Users can unpin the topic individually for themselves." already_pinned_globally: zero: "There are no topics pinned globally." - one: "Topics currently pinned globally: 1" + one: "Topics currently pinned globally: 1." other: "Topics currently pinned globally: {{count}}." make_banner: "Make this topic into a banner that appears at the top of all pages." remove_banner: "Remove the banner that appears at the top of all pages." @@ -1050,24 +1071,29 @@ en: automatically_add_to_groups_required: "This invite also includes access to these groups: (Required, admin only)" invite_private: - title: 'Invite to Private Message' + title: 'Invite to Message' email_or_username: "Invitee's Email or Username" email_or_username_placeholder: "email address or username" action: "Invite" - success: "We've invited that user to participate in this private message." + success: "We've invited that user to participate in this message." error: "Sorry, there was an error inviting that user." group_name: "group name" invite_reply: title: 'Invite' - action: 'Email Invite' - help: 'send invitations to friends so they can reply to this topic with a single click' - to_topic: "We'll send a brief email allowing your friend to immediately join and reply to this topic by clicking a link, no login required." + username_placeholder: "username" + action: 'Send Invite' + help: 'invite others to this topic via email or notifications' to_forum: "We'll send a brief email allowing your friend to immediately join by clicking a link, no login required." + sso_enabled: "Enter the username of the person you'd like to invite to this topic." + to_topic_blank: "Enter the username or email address of the person you'd like to invite to this topic." + to_topic_email: "You've entered an email address. We'll email an invitation that allows your friend to immediately reply to this topic." + to_topic_username: "You've entered a username. We'll send a notification to that user with a link inviting them to this topic." email_placeholder: 'name@example.com' - success: "We mailed out an invitation to {{email}}. We'll notify you when the invitation is redeemed. Check the invitations tab on your user page to keep track of your invites." - error: "Sorry, we couldn't invite that person. Perhaps they are already a user? (Invites are rate limited)" + success_email: "We mailed out an invitation to {{emailOrUsername}}. We'll notify you when the invitation is redeemed. Check the invitations tab on your user page to keep track of your invites." + success_username: "We've invited that user to participate in this topic." + error: "Sorry, we couldn't invite that person. Perhaps they have already been invited? (Invites are rate limited)" login_reply: 'Log In to Reply' @@ -1118,13 +1144,12 @@ en: other: "You have selected {{count}} posts." post: - reply: "Replying to {{link}} by {{replyAvatar}} {{username}}" + reply: "Replying to {{link}} {{replyAvatar}} {{username}}" reply_topic: "Reply to {{link}}" quote_reply: "quote reply" - edit: "Editing {{link}} by {{replyAvatar}} {{username}}" + edit: "Editing {{link}} {{replyAvatar}} {{username}}" edit_reason: "Reason: " post_number: "post {{number}}" - in_reply_to: "reply to" last_edited_on: "post last edited on" reply_as_new_topic: "Reply as linked Topic" continue_discussion: "Continuing the discussion from {{postLink}}:" @@ -1224,8 +1249,8 @@ en: inappropriate: "{{icons}} flagged this as inappropriate" notify_moderators: "{{icons}} notified moderators" notify_moderators_with_url: "{{icons}} notified moderators" - notify_user: "{{icons}} sent a private message" - notify_user_with_url: "{{icons}} sent a private message" + notify_user: "{{icons}} sent a message" + notify_user_with_url: "{{icons}} sent a message" bookmark: "{{icons}} bookmarked this" like: "{{icons}} liked this" vote: "{{icons}} voted for this" @@ -1234,7 +1259,7 @@ en: spam: "You flagged this as spam" inappropriate: "You flagged this as inappropriate" notify_moderators: "You flagged this for moderation" - notify_user: "You sent a private message to this user" + notify_user: "You sent a message to this user" bookmark: "You bookmarked this post" like: "You liked this" vote: "You voted for this post" @@ -1252,8 +1277,8 @@ en: one: "You and 1 other flagged this for moderation" other: "You and {{count}} other people flagged this for moderation" notify_user: - one: "You and 1 other sent a private message to this user" - other: "You and {{count}} other people sent a private message to this user" + one: "You and 1 other sent a message to this user" + other: "You and {{count}} other people sent a message to this user" bookmark: one: "You and 1 other bookmarked this post" other: "You and {{count}} other people bookmarked this post" @@ -1277,8 +1302,8 @@ en: one: "1 person flagged this for moderation" other: "{{count}} people flagged this for moderation" notify_user: - one: "1 person sent a private message to this user" - other: "{{count}} sent a private message to this user" + one: "1 person sent a message to this user" + other: "{{count}} sent a message to this user" bookmark: one: "1 person bookmarked this post" other: "{{count}} people bookmarked this post" @@ -1391,7 +1416,7 @@ en: private_reminder: 'flags are private, only visible to staff' action: 'Flag Post' take_action: "Take Action" - notify_action: 'Private message' + notify_action: 'Message' delete_spammer: "Delete Spammer" delete_confirm: "You are about to delete %{posts} posts and %{topics} topics from this user, remove their account, block signups from their IP address %{ip_address}, and add their email address %{email} to a permanent block list. Are you sure this user is really a spammer?" yes_delete_spammer: "Yes, Delete Spammer" @@ -1414,7 +1439,7 @@ en: flagging_topic: title: "Thanks for helping to keep our community civil!" action: "Flag Topic" - notify_action: "Private message" + notify_action: "Message" topic_map: title: "Topic Summary" @@ -1488,6 +1513,9 @@ en: read: title: "Read" help: "topics you've read, in the order that you last read them" + search: + title: "Search" + help: "search all topics" categories: title: "Categories" title_in: "Category - {{categoryName}}" @@ -1528,15 +1556,17 @@ en: top: title: "Top" help: "the most active topics in the last year, month, week or day" + all: + title: "All Time" yearly: - title: "Top Yearly" + title: "Yearly" monthly: - title: "Top Monthly" + title: "Monthly" weekly: - title: "Top Weekly" + title: "Weekly" daily: - title: "Top Daily" - all: "All Time" + title: "Daily" + all_time: "All Time" this_year: "This year" this_month: "This month" this_week: "This week" @@ -1579,8 +1609,8 @@ en: admins: 'Admins:' blocked: 'Blocked:' suspended: 'Suspended:' - private_messages_short: "PMs" - private_messages_title: "Private Messages" + private_messages_short: "Msgs" + private_messages_title: "Messages" space_free: "{{size}} free" uploads: "uploads" backups: "backups" @@ -1618,7 +1648,7 @@ en: agree_title: "Confirm this flag as valid and correct" agree_flag_modal_title: "Agree and..." agree_flag_hide_post: "Agree (hide post + send PM)" - agree_flag_hide_post_title: "Hide this post and automatically send the user a private message urging them to edit it" + agree_flag_hide_post_title: "Hide this post and automatically send the user a message urging them to edit it" agree_flag_restore_post: "Agree (restore post)" agree_flag_restore_post_title: "Restore this post" agree_flag: "Agree with flag" @@ -1694,14 +1724,12 @@ en: name: "Name" add: "Add" add_members: "Add members" - custom: - label: "Custom" - title: "Custom Groups" - automatic: - label: "Automatic" - title: "Automatic Groups" + custom: "Custom" + automatic: "Automatic" automatic_membership_email_domains: "Users who register with an email domain that exactly matches one in this list will be automatically added to this group:" automatic_membership_retroactive: "Apply the same email domain rule to add existing registered users" + default_title: "Default title for all users in this group" + primary_group: "Automatically set as primary group" api: generate_master: "Generate Master API Key" @@ -1736,18 +1764,19 @@ en: read_only: enable: title: "Enable the read-only mode" - text: "Enable read-only mode" + label: "Enable read-only mode" confirm: "Are you sure you want to enable the read-only mode?" disable: title: "Disable the read-only mode" - text: "Disable read-only mode" + label: "Disable read-only mode" logs: none: "No logs yet..." columns: filename: "Filename" size: "Size" upload: - text: "Upload" + label: "Upload" + title: "Upload a backup to this instance" uploading: "Uploading..." success: "'{{filename}}' has successfully been uploaded." error: "There has been an error while uploading '{{filename}}': {{message}}" @@ -1755,34 +1784,33 @@ en: is_running: "An operation is currently running..." failed: "The {{operation}} failed. Please check the logs." cancel: - text: "Cancel" + label: "Cancel" title: "Cancel the current operation" confirm: "Are you sure you want to cancel the current operation?" backup: - text: "Backup" + label: "Backup" title: "Create a backup" confirm: "Do you want to start a new backup?" without_uploads: "Yes (do not include files)" download: - text: "Download" + label: "Download" title: "Download the backup" destroy: - text: "Delete" title: "Remove the backup" confirm: "Are you sure you want to destroy this backup?" restore: is_disabled: "Restore is disabled in the site settings." - text: "Restore" + label: "Restore" title: "Restore the backup" confirm: "Are your sure you want to restore this backup?" rollback: - text: "Rollback" + label: "Rollback" title: "Rollback the database to previous working state" confirm: "Are your sure you want to rollback the database to the previous working state?" export_csv: user_archive_confirm: "Are you sure you want to download your posts?" - success: "Export initiated, you will be notified via private message when the process is complete." + success: "Export initiated, you will be notified via message when the process is complete." failed: "Export failed. Please check the logs." rate_limit_error: "Posts can be downloaded once per day, please try again tomorrow." button_text: "Export" diff --git a/config/locales/client.es.yml b/config/locales/client.es.yml index 9d50165843..b764da1c3f 100644 --- a/config/locales/client.es.yml +++ b/config/locales/client.es.yml @@ -92,6 +92,7 @@ es: email: 'comparte este enlace por email' topic_admin_menu: "acciones de administrador para el tema" emails_are_disabled: "Todos los emails salientes han sido desactivados por un administrador. No se enviará ninguna notificación por email." + s3_deprecation_warning: "¡AVISO! El almacenamiento para archivos adjuntos e imágenes en Amazon S3 quedará obsoleto. Por favor, sigue las instrucciones para trasladarlo a almacenamiento local." edit: 'editar el título y la categoría de este tema' not_implemented: "Esta característica no ha sido implementada aún, ¡lo sentimos!" no_value: "No" @@ -185,6 +186,8 @@ es: undo: "Deshacer" revert: "Revertir" failed: "Falló" + switch_to_anon: "Modo Anónimo" + switch_from_anon: "Salir de Modo Anónimo" banner: close: "Descartar este banner." choose_topic: @@ -207,17 +210,25 @@ es: sent_by_user: "Enviado por {{user}}" sent_by_you: "Enviado por ti" directory: - title: "Directorio de usuario" - likes_given: "Me Gusta dados" - likes_received: "Me Gusta recibidos" - topics_entered: "Temas Vistos" + filter_name: "filtrar por usuario" + title: "Usuarios" + likes_given: "Dados" + likes_received: "Recibidos" + topics_entered: "Vistos" + topics_entered_long: "Temas vistos" time_read: "Tiempo de Lectura" topic_count: "Temas" + topic_count_long: "Temas creados" post_count: "Respuestas" - no_results: "No se han encontrado resultados para este período de tiempo." + post_count_long: "Posts escritos" + no_results: "No se encontraron resultados." + days_visited: "Visitas" + days_visited_long: "Días visitados" + posts_read: "Leídos" + posts_read_long: "Posts leídos" total_rows: - one: "1 usuario encontrado" - other: "%{count} usuarios encontrados" + one: "1 usuario" + other: "%{count} usuarios" groups: visible: "El grupo es visible para todos los usuarios" title: @@ -285,8 +296,8 @@ es: mute: "Silenciar" edit: "Editar Preferencias" download_archive: "Descargar mis posts" - new_private_message: "Nuevo Mensaje Privado" - private_message: "Mensaje Privado" + new_private_message: "Nuevo mensaje" + private_message: "Mensaje" private_messages: "Mensajes" activity_stream: "Actividad" preferences: "Preferencias" @@ -323,6 +334,9 @@ es: delete_yourself_not_allowed: "No puedes borrar tu cuenta en este momento. Contacta a un administrador para borrar tu cuenta en tu nombre." unread_message_count: "Mensajes" admin_delete: "Eliminar" + users: "Usuarios" + muted_users: "Silenciados" + muted_users_instructions: "Omite todas las notificaciones de estos usuarios." staff_counters: flags_given: "reportes útiles" flagged_posts: "posts reportados" @@ -361,7 +375,8 @@ es: uploaded_avatar_empty: "Añade una foto personalizada" upload_title: "Sube tu foto" upload_picture: "Subir Imagen" - image_is_not_a_square: "Advertencia: hemos recortado su foto; no es cuadrada." + image_is_not_a_square: "Advertencia: hemos recortado su imagen; la anchura y la altura no eran iguales." + cache_notice: "Has cambiado tu avatar correctamente, podría tardar un poco en aparecer debido al caching del navegador." change_profile_background: title: "Fondo de perfil" instructions: "Fondos de perfil serán centrados y tendrán un ancho por default de 850px." @@ -381,6 +396,7 @@ es: name: title: "Nombre" instructions: "Tu nombre completo (opcional)" + instructions_required: "Tu nombre completo" too_short: "Tu nombre es demasiado corto" ok: "Tu nombre es válido" username: @@ -418,8 +434,8 @@ es: every_three_days: "cada tres días" weekly: "semanalmente" every_two_weeks: "cada dos semanas" - email_direct: "Enviarme un email cuando alguien me cita, responde a mi post o menciona mi @usuario" - email_private_messages: "Enviarme un email cuando alguien me mande un mensaje privado" + email_direct: "Envíame un email cuando alguien me cite, responda a mis posts, mencione mi @usuario o me invite a un tema" + email_private_messages: "Notifícame por email cuando alguien me envíe un mensaje" email_always: "No detener notificaciones por e-mail cuando estoy activo en el sitio" other_settings: "Otros" categories_settings: "Categorías" @@ -467,7 +483,7 @@ es: none: "No has invitado a nadie todavía. Puede enviar invitaciones individuales o invitar a un grupo de personas a la vez subiendo un archivo para invitaciones en masa." text: "Archivo de Invitación en Masa" uploading: "Subiendo..." - success: "Archivo subido correctamente, serás notificado cuando el proceso se haya completado." + success: "Archivo subido correctamente, se te notificará con un mensaje cuando se complete el proceso." error: "Hubo un error al subir '{{filename}}': {{message}}" password: title: "Contraseña" @@ -491,7 +507,7 @@ es: stream: posted_by: "Publicado por" sent_by: "Enviado por" - private_message: "mensaje privado" + private_message: "mensaje" the_topic: "el tema" loading: "Cargando..." errors: @@ -544,9 +560,9 @@ es: enable: "Ocultar Posts Eliminados" disable: "Mostrar Posts Eliminados" private_message_info: - title: "Mensaje Privado" + title: "Mensaje" invite: "Invitar a Otros..." - remove_allowed_user: "¿Seguro que quieres eliminar a {{name}} de este mensaje privado?" + remove_allowed_user: "¿Seguro que quieres eliminar a {{name}} de este mensaje?" email: 'E-mail' username: 'Nombre de usuario' last_seen: 'Visto por última vez' @@ -558,7 +574,7 @@ es: title: "Crear nueva cuenta" failed: "Algo ha salido mal, tal vez este e-mail ya fue registrado, intenta con el enlace 'olvidé la contraseña'" forgot_password: - title: "Olvidé mi Contraseña" + title: "Restablecer contraseña" action: "Olvidé mi contraseña" invite: "Introduce tu nombre de usuario o tu dirección de e-mail, y te enviaremos un correo electrónico para cambiar tu contraseña." reset: "Restablecer Contraseña" @@ -632,7 +648,7 @@ es: reply: "Responder" cancel: "Cancelar" create_topic: "Crear tema" - create_pm: "Mensaje Privado" + create_pm: "Mensaje" title: "O pulsa Ctrl+Intro" users_placeholder: "Añadir usuario" title_placeholder: "En una frase breve, ¿de qué trata este tema?" @@ -682,11 +698,11 @@ es: units: "(# de horas)" examples: 'Introduzca el número de horas (24).' notifications: - title: "notificaciones por menciones a tu @nombre, respuestas a tus publicaciones y temas, mensajes privados, etc." + title: "notificaciones por menciones a tu @nombre, respuestas a tus posts y temas, mensajes, etc" none: "No se han podido cargar las notificaciones." more: "ver notificaciones antiguas" total_flagged: "total de posts reportados" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -694,6 +710,7 @@ es: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} ha aceptado tu invitación

    " moved_post: "

    {{username}} movió {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -720,7 +737,7 @@ es: user: "Buscar posts por @{{username}}" category: "Buscar en la categoría \"{{category}}\"" topic: "Buscar en este tema" - private_messages: "Buscar en mensajes privados" + private_messages: "Buscar en mensajes" site_map: "ir a otra lista de temas o categoría" go_back: 'volver' not_logged_in_user: 'página con el resumen de actividad y preferencias' @@ -754,6 +771,7 @@ es: bookmarks: "No tienes temas guardados en marcadores todavía." category: "No hay temas en la categoría {{category}}." top: "No hay temas en el top más vistos." + search: "No hay resultados de búsqueda." educate: new: '

    Tus nuevos temas aparecerán aquí.

    Por defecto, los temas son considerados nuevos y mostrarán un indicador: nuevo si son creados en los 2 últimos días.

    Puedes cambiar esto en tus preferencias.

    ' unread: '

    Tus temas sin leer aparecerán aquí.

    Por defecto, los temas son considerados no leídos y mostrán contadores de post sin leer 1 si:

    O si has establecido específicamente el tema a Seguir o Vigilar en el control de notificaciones al pie de cada tema.

    Puedes cambiar esto en tus preferencias.

    ' @@ -767,11 +785,12 @@ es: category: "No hay más temas en la categoría {{category}}." top: "No hay más temas en el top más vistos." bookmarks: "No hay más temas guardados en marcadores." + search: "No hay más resultados de búsqueda." topic: filter_to: "{{post_count}} posts en este tema" create: 'Crear tema' create_long: 'Crear un nuevo tema' - private_message: 'Empezar una conversación privada' + private_message: 'Empezar un mensaje' list: 'Temas' new: 'nuevo tema' unread: 'No leídos' @@ -849,13 +868,13 @@ es: '0': 'Estás ignorando todas las notificaciones en este tema.' watching_pm: title: "Vigilar" - description: "Se te notificará de cada nuevo post en este mensaje privado. Se añadirá un contador de posts nuevos y sin leer al lado del tema." + description: "Se te notificará de cada nuevo post en este mensaje. Se añadirá un contador de posts nuevos y sin leer al lado del tema." watching: title: "Vigilar" description: "Se te notificará de cada nuevo post en este tema. Se añadirá un contador de posts nuevos y sin leer al lado del tema." tracking_pm: title: "Seguir" - description: "Un contador de posts nuevos posts y posts sin ser leídos aparecerá en seguida del mensaje privado. Serás notificado si alguien menciona tu @nombre o responde a un post tuyo." + description: "Un contador de nuevos posts y posts no leídos aparecerá al lado del mensaje. Se te notificará si alguien menciona tu @nombre o responde a un post tuyo." tracking: title: "Seguir" description: "Un contador de posts nuevos posts y posts sin ser leídos aparecerá en seguida del tema. Serás notificado si alguien menciona tu @nombre o responde a un post tuyo." @@ -864,10 +883,10 @@ es: description: "Serás notificado si alguien menciona tu @nombre o responde a un post tuyo." regular_pm: title: "Normal" - description: "Serás notificado si alguien menciona tu @nombre o responde a un post tuyo en el mensaje privado." + description: "Se te notificará solo si alguien menciona tu @nombre o responde a tus posts en el hilo de mensajes." muted_pm: title: "Silenciar" - description: "No se te notificará sobre este mensaje privado." + description: "Nunca se te notificará nada sobre este hilo de mensajes." muted: title: "Silenciar" description: "Nunca recibirás notificaciones sobre este tema y no aparecerá en tu pestaña de no leídos." @@ -876,20 +895,21 @@ es: delete: "Eliminar tema" open: "Abrir tema" close: "Cerrar tema" - auto_close: "Auto-cierre" - feature: "Característica del Tema" - remove_feature: "Quitar Característica" - make_banner: "Tema de encabezado. " - remove_banner: "Remover tema de encabezado. " - pin: "Destacar tema" - unpin: "Dejar de destacar" - pin_globally: "Destacar tema globalmente" + multi_select: "Seleccionar posts..." + auto_close: "Auto-cierre..." + pin: "Destacar tema..." + unpin: "Dejar de destacar..." unarchive: "Desarchivar Tema" archive: "Archivar Tema" invisible: "Hacer invisible" visible: "Hacer visible" reset_read: "Restablecer datos de lectura" - multi_select: "Seleccionar posts para mover o eliminar" + feature: + pin: "Destacar tema" + unpin: "Dejar de destacar tema" + pin_globally: "Destacar tema globalmente" + make_banner: "Tema de encabezado" + remove_banner: "Remover tema de encabezado" reply: title: 'Responder' help: 'comienza a escribir una respuesta a este tema' @@ -906,47 +926,52 @@ es: feature_topic: title: "Característica de este Tema" pin: "Hacer que este tema aparecerá en la parte superior de la {{categoryLink}} categoría." - confirm_pin: "¿Estás seguro? Ya tiene {{count}} temas anclados - demasiados temas anclados pueden ocultar otros temas activos." - unpin: "Eliminar este tema desde el tema de la {{categoryLink}} categoría." + confirm_pin: "Hay ya {{count}} temas destacados. Que haya demasiados temas destacados puede resultar engorroso para los usuarios nuevos y anónimos. ¿Seguro que quieres destacar otro tema en esta categoría?" + unpin: "Eliminar este tema del top de la categoría {{categoryLink}}." pin_note: "Los usuarios pueden desanclar el tema de forma individual por sí mismos." already_pinned: - zero: "Actualmente no hay temas anclados en {{categoryLink}}." - one: "Tema anclado actualmente en {{categoryLink}}: 1." - other: "Temas anclados actualmente en {{categoryLink}}: {{count}}." + zero: "No hay temas destacados en {{categoryLink}}." + one: "Temas anclados actualmente en {{categoryLink}}: 1." + other: "Temas anclados actualmente en {{categoryLink}}: {{count}}." pin_globally: "Haz que este tema aparezca en la parte superior de todas las listas de temas, hasta que un miembro del personal le quite el anclaje." - confirm_pin_globally: "¿Estás seguro? Ya tiene {{count}} temas anclados a nivel global -- demasiados temas anclados pueden ocultar otros temas activos." + confirm_pin_globally: "Hay ya {{count}} temas destacados globalmente. Que haya demasiados temas destacados puede resultar engorroso para los usuarios nuevos y anónimos. ¿Seguro que quieres destacar otro tema de forma global?" unpin_globally: "Eliminar este tema de la parte superior de todas las listas de temas." global_pin_note: "Los usuarios pueden desanclar el tema de forma individual por sí mismos." already_pinned_globally: - zero: "No hay temas anclados actualmente a nivel global." - one: "Tema anclado actualmente a nivel global: 1." - other: "Temas anclados actualmente a nivel global: {{count}}." + zero: "No hay temas destacados globalmente." + one: "Temas anclados actualmente de forma global: 1." + other: "Temas destacados de forma global: {{count}}." make_banner: "Hacer de este tema una pancarta que aparece en la parte superior de todas las páginas." remove_banner: "Retire la pancarta que aparece en la parte superior de todas las páginas." banner_note: "Los usuarios pueden descartar la pancarta cerrándola. Sólo un tema puede ser una pancarta en cualquier momento dado." already_banner: - zero: "Actualmente no hay ningún tema como pancarta." - one: "Actualmente existe un tema como pancarta." + zero: "No hay tema de encabezado (banner)." + one: "Actualmente hay un tema de encabezado (banner)." inviting: "Invitando..." automatically_add_to_groups_optional: "Esta invitación incluye además acceso a estos grupos: (opcional, solo administradores)" automatically_add_to_groups_required: "Esta invitación incluye además acceso a estos grupos: (Requerido, solo administradores)" invite_private: - title: 'Invitar por mensaje Privado' + title: 'Invitar al hilo de mensajes.' email_or_username: "Email o nombre de usuario del invitado" email_or_username_placeholder: "dirección de email o nombre de usuario" action: "Invitar" - success: "Hemos invitado a ese usuario a participar en este mensaje privado." + success: "Hemos invitado a ese usuario a participar en este hilo de mensajes." error: "Lo sentimos, hubo un error al invitar a ese usuario." group_name: "nombre del grupo" invite_reply: title: 'Invitar' - action: 'Invitar por email' - help: 'enviar invitaciones a tus amigos para que puedan responder a este tema con un solo clic' - to_topic: "Enviaremos un correo electrónico breve permitiendo a tu amigo unirse inmediatamente y publicar en este tema al hacer clic en un enlace, sin necesidad de iniciar de sesión." + username_placeholder: "nombre de usuario" + action: 'Enviar invitación' + help: 'invitar a otros a este tema a través del correo electrónico o de las notificaciones' to_forum: "Enviaremos un correo electrónico breve permitiendo a tu amigo unirse inmediatamente al hacer clic en un enlace, sin necesidad de iniciar sesión." + sso_enabled: "Introduce el nombre de usuario de la persona a la que quieres invitar a este tema." + to_topic_blank: "Introduzca el nombre de usuario o dirección de correo electrónico de la persona que desea invitar a este tema." + to_topic_email: "Ha introducido una dirección de correo electrónico. Nosotros te enviaremos una invitación que le permita a su amigo responder inmediatamente a este tema." + to_topic_username: "Ha introducido un nombre de usuario. Le enviaremos una notificación a ese usuario con un enlace invitándolo a este tema." email_placeholder: 'nombre@ejemplo.com' - success: "Hemos enviado una invitación por email a {{email}}. Te notificaremos cuando la invitación sea aceptada. Revisa la pestaña de invitaciones en tu página de perfil para llevar el seguimiento de tus invitaciones." - error: "Lo sentimos, no pudimos invitar a esa persona. ¿Quizás es ya usuario? (La ratio de invitaciones es limitada)" + success_email: "Hemos enviado un email con tu invitación a {{emailOrUsername}}. Te notificaremos cuando se acepte. Puedes revisar la pestaña invitaciones en tu perfil de usuario para consultar el estado de tus invitaciones." + success_username: "Hemos invitado a ese usuario a participar en este tema." + error: "Lo sentimos, no pudimos invitar a esa persona. Tal vez ya han sido invitados? (La tasa de invitaciones son limitadas)" login_reply: 'Inicia Sesión para Responder' filters: n_posts: @@ -990,13 +1015,12 @@ es: one: Has seleccionado 1 post. other: Has seleccionado {{count}} posts. post: - reply: "Respondiendo a {{link}} por {{replyAvatar}} {{username}}" + reply: "Respondiendo a {{link}} {{replyAvatar}} {{username}}" reply_topic: "Responder a {{link}}" quote_reply: "citar" - edit: "Edición {{link}} por {{replyAvatar}} {{username}}" + edit: "Editando {{link}} {{replyAvatar}} {{username}}" edit_reason: "Motivo:" post_number: "post {{number}}" - in_reply_to: "responder a" last_edited_on: "post editado por última ven en" reply_as_new_topic: "Responder como tema enlazado" continue_discussion: "Continuando la discusión desde {{postLink}}:" @@ -1088,8 +1112,8 @@ es: inappropriate: "{{icons}} flagged reportó esto como inapropiado" notify_moderators: "{{icons}} ha notificado a los moderadores" notify_moderators_with_url: "{{icons}} moderadores notificados" - notify_user: "{{icons}} ha enviado un mensaje privado" - notify_user_with_url: "{{icons}} ha enviado un mensaje privado" + notify_user: "{{icons}} ha enviado un mensaje" + notify_user_with_url: "{{icons}} ha enviado un mensaje" bookmark: "{{icons}} ha marcado esto" like: "{{icons}} les gusta esto" vote: "{{icons}} ha votado esto" @@ -1098,7 +1122,7 @@ es: spam: "Has reportado esto como Spam" inappropriate: "Has reportado esto como inapropiado" notify_moderators: "Has reportado esto para que sea moderado" - notify_user: "Has enviado un mensaje privado a este usuario" + notify_user: "Has enviado un mensaje a este usuario" bookmark: "Has marcado este post" like: "Te ha gustado esto" vote: "Has votado este post" @@ -1116,8 +1140,8 @@ es: one: "Tú y otro usuario habéis reportado esto para moderar" other: "Tú y otros {{count}} usuarios habéis reportado esto para moderar" notify_user: - one: "Tú y otro usuario habéis enviado un mensaje privado a este usuario" - other: "Tú y otros {{count}} usuarios habéis enviado un mensaje privado a este usuario" + one: "Tú y otra persona habéis enviado un mensaje a este usuario" + other: "Tú y otras {{count}} personas habéis enviado un mensaje a este usuario" bookmark: one: "Tú y otro usuario habéis marcado este post" other: "Tú y otros {{count}} usuarios habéis marcado este post" @@ -1141,8 +1165,8 @@ es: one: "1 usuario ha reportado esto para que sea moderado" other: "{{count}} usuarios han reportado esto para que sea moderado" notify_user: - one: "1 persona envió un mensaje privado a este usuario" - other: "{{count}} envíaron un mensaje privado a este usuario" + one: "1 persona ha enviado un mensaje a este usuario" + other: "{{count}} personas han enviado un mensaje a este usuario" bookmark: one: "Una persona ha marcado este post" other: "{{count}} han marcado este post" @@ -1248,7 +1272,7 @@ es: private_reminder: 'los reportes son privados, son visibles únicamente por los administradores' action: 'Reportar post' take_action: "Tomar medidas" - notify_action: 'Mensaje privado' + notify_action: 'Mensaje' delete_spammer: "Borrar spammer" delete_confirm: "Estás a punto de eliminar %{posts} publicaciones y %{topics} temas de este usuario, borrar su cuenta, bloquear sus inicios de sesión desde su dirección IP %{ip_address}, y añadir su dirección de email %{email} a una lista de bloqueo permanente. ¿Estás seguro de que este usuario es realmente un spammer?" yes_delete_spammer: "Sí, borrar spammer" @@ -1270,7 +1294,7 @@ es: flagging_topic: title: "¡Gracias por ayudar a mantener una comunidad civilizada!" action: "Reportar tema" - notify_action: "Mensaje privado" + notify_action: "Mensaje" topic_map: title: "Resumen de temas" links_shown: "mostrar los {{totalLinks}} enlaces..." @@ -1315,8 +1339,8 @@ es: likes: "Likes" likes_lowercase: "Likes" likes_long: "este tema tiene {{number}} me gusta" - users: "Participantes" - users_lowercase: "Usuarios" + users: "Usuarios" + users_lowercase: "usuarios" category_title: "Categoría" history: "Historia" changed_by: "por {{author}}" @@ -1336,6 +1360,9 @@ es: read: title: "Leídos" help: "temas que ya has leído" + search: + title: "Buscar" + help: "buscar todos los temas" categories: title: "Categorías" title_in: "Categoría - {{categoryName}}" @@ -1374,15 +1401,17 @@ es: top: title: "Top" help: "los temas más con más actividad del último año, mes, semana, o día" + all: + title: "Siempre" yearly: - title: "Top del año" + title: "Año" monthly: - title: "Top del mes" + title: "Mes" weekly: - title: "Top de la semana" + title: "Semana" daily: - title: "Top del día" - all: "Todo el tiempo" + title: "Día" + all_time: "Siempre" this_year: "Este año" this_month: "Este mes" this_week: "Esta semana" @@ -1419,8 +1448,8 @@ es: admins: 'Administradores:' blocked: 'Bloqueados:' suspended: 'Suspendidos:' - private_messages_short: "PMs" - private_messages_title: "Mensajes Privados" + private_messages_short: "Msjs" + private_messages_title: "Mensajes" space_free: "{{size}} libre" uploads: "subidas" backups: "backups" @@ -1454,7 +1483,7 @@ es: agree_title: "Confirmar esta indicación como válido y correcto." agree_flag_modal_title: "Estar de acuerdo y..." agree_flag_hide_post: "Coincido (ocultar post + enviar MP)" - agree_flag_hide_post_title: "Ocultar este post y enviar automáticamente un mensaje privado al usuario para que edite su post de forma urgente." + agree_flag_hide_post_title: "Ocultar este post y enviar automáticamente un mensaje al usuario para que lo edite de forma urgente" agree_flag_restore_post: "De acuerdo (restaurar post)" agree_flag_restore_post_title: "Restaurar este post" agree_flag: "Estar de acuerdo con la indicación" @@ -1526,12 +1555,8 @@ es: name: "Nombre" add: "Añadir" add_members: "Añadir miembros" - custom: - label: "Personalizar" - title: "Grupos Personalizados" - automatic: - label: "Automático" - title: "Grupos Automáticos" + custom: "Personalizado" + automatic: "Automático" automatic_membership_email_domains: "Los usuarios que se registren con un dominio de e-mail que esté en esta lista serán automáticamente añadidos a este grupo:" automatic_membership_retroactive: "Aplicar la misma regla de dominio de email para usuarios registrados existentes " api: @@ -1565,18 +1590,19 @@ es: read_only: enable: title: "Habilitar el modo de 'solo-lectura'" - text: "Habilitar el modo de 'solo-lectura'" + label: "Activar el modo solo-lectura" confirm: "¿Estás seguro que quieres habilitar el modo de \"solo lectura\"?" disable: title: "Deshabilitar el modo de \"solo lectura\"" - text: "Deshabilitar el modo de \"solo lectura\"" + label: "Desactivar el modo solo-lectura" logs: none: "No hay información de momento..." columns: filename: "Nombre del archivo" size: "Tamaño" upload: - text: "Subir" + label: "Subir" + title: "Subir un backup a esta instancia" uploading: "Subiendo..." success: "El archivo '{{filename}}' se ha subido correctamente." error: "Ha ocurrido un error al subir el archivo '{{filename}}': {{message}}" @@ -1584,33 +1610,32 @@ es: is_running: "Actualmente una operación se está procesando..." failed: "La {{operation}} falló. Por favor revisa los logs" cancel: - text: "Cancelar" + label: "Cancelar" title: "Cancelar la operación actual" confirm: "¿Estás seguro que quieres cancelar la operación actual?" backup: - text: "Copia de seguridad" + label: "Backup" title: "Crear una copia de seguridad" confirm: "¿Quieres iniciar una nueva copia de seguridad?" without_uploads: "Sí (no incluir archivos)" download: - text: "Descargar" + label: "Descargar" title: "Descargar la copia de seguridad" destroy: - text: "Borrar" title: "Borrar la copia de seguridad" confirm: "¿Estás seguro que quieres borrar esta copia de seguridad?" restore: is_disabled: "Restaurar está deshabilitado en la configuración del sitio." - text: "Restaurar" + label: "Restaurar" title: "Restaurar la copia de seguridad" confirm: "¿Estás seguro que quieres restaurar esta copia de seguridad?" rollback: - text: "Deshacer" + label: "Revertir" title: "Regresar la base de datos al estado funcional anterior" confirm: "¿Estás seguro que quieres regresar la base de datos al estado funcional anterior?" export_csv: user_archive_confirm: "¿Seguro que quieres descargar todos tus posts?" - success: "Exportación comenzada, se te notificará a través de un mensaje privado cuando el proceso se haya completado." + success: "Exportación iniciada, se te notificará a través de un mensaje cuando el proceso se haya completado." failed: "Exportación fallida, revisa los logs." rate_limit_error: "Los posts se pueden descargar una vez al día, por favor, prueba otra vez mañana." button_text: "Exportar" diff --git a/config/locales/client.fa_IR.yml b/config/locales/client.fa_IR.yml new file mode 100644 index 0000000000..9053b1127b --- /dev/null +++ b/config/locales/client.fa_IR.yml @@ -0,0 +1,2235 @@ +# encoding: utf-8 +# +# Never edit this file. It will be overwritten when translations are pulled from Transifex. +# +# To work with us on translations, join this project: +# https://www.transifex.com/projects/p/discourse-org/ + +fa_IR: + js: + number: + human: + storage_units: + format: '%n %u' + units: + byte: + other: بایت + gb: GB + kb: KB + mb: MB + tb: TB + dates: + time: "h:mm a" + long_no_year: "MMM D h:mm a" + long_no_year_no_time: "MMM D" + long_with_year: "MMM D, YYYY h:mm a" + long_with_year_no_time: "MMM D, YYYY" + long_date_with_year: "MMM D, 'YY LT" + long_date_without_year: "MMM D, LT" + long_date_with_year_without_time: "MMM D, 'YY" + long_date_without_year_with_linebreak: "MMM D
    LT" + long_date_with_year_with_linebreak: "MMM D, 'YY
    LT" + tiny: + half_a_minute: "< ۱ دقیقه" + less_than_x_seconds: + other: "< %{count} ثانیه" + x_seconds: + other: "%{count} ثانیه" + less_than_x_minutes: + other: "< %{count} دقیقه" + x_minutes: + other: "%{count} دقیقه" + about_x_hours: + other: "%{count} ساعت" + x_days: + other: "%{count} روز" + about_x_years: + other: "%{count} سال" + over_x_years: + other: "> %{count} سال" + almost_x_years: + other: "%{count} سال" + date_month: "MMM D" + date_year: "MMM 'YY" + medium: + x_minutes: + other: "%{count} دقیقه" + x_hours: + other: "%{count} ساعت" + x_days: + other: "%{count} روز" + date_year: "MMM D, 'YY" + medium_with_ago: + x_minutes: + other: "%{count} دقیقه پیش" + x_hours: + other: "%{count} ساعت پیش" + x_days: + other: "%{count} روز پیش" + share: + topic: 'پیوندی به این موضوع را به اشتراک بگذارید' + post: 'ارسال #%{postNumber}' + close: 'بسته' + twitter: 'این پیوند را در توییتر به اشتراک بگذارید.' + facebook: 'این پیوند را در فیسبوک به اشتراک بگذارید.' + google+: 'این پیوند را در Google+‎ به اشتراک بگذارید.' + email: 'این پیوند را با ایمیل بفرستید' + topic_admin_menu: "اقدامات مدیریت موضوع" + emails_are_disabled: "تمام ایمیل های خروجی بصورت جهانی توسط مدیر قطع شده. هیچ ایمیل اخطاریه های ارسال نخواهد شد." + s3_deprecation_warning: "اخطار! آمازون S3 برای ذخیره سازی تصویر / فایل ضمیمه توصیه نمی شود. لطفا، به دنبال دستورالعمل ها و مهاجرت به ذخیره سازی محلی." + edit: 'سرنویس و دستهٔ این موضوع را ویرایش کنید' + not_implemented: "آن ویژگی هنوز به کار گرفته نشده، متأسفیم!" + no_value: "نه" + yes_value: "بله" + generic_error: "متأسفیم، خطایی روی داده." + generic_error_with_reason: "خطایی روی داد: %{error}" + sign_up: "ثبت نام" + log_in: "ورود" + age: "سن" + joined: "ملحق شده در" + admin_title: "مدیر" + flags_title: "پرچم‌ها" + show_more: "بیش‌تر نشان بده" + show_help: "کمک" + links: "پیوندها" + links_lowercase: "پیوندها" + faq: "پرسش‌های متداول" + guidelines: "راهنماها" + privacy_policy: "سیاست حریم خصوصی" + privacy: "حریم خصوصی" + terms_of_service: "شرایط استفاده از خدمات" + mobile_view: "نمایش برای موبایل " + desktop_view: "نمایش برای کامپیوتر" + you: "شما" + or: "یا" + now: "هم‌اکنون" + read_more: 'بیشتر بخوانید' + more: "بیشتر" + less: "کمتر" + never: "هرگز" + daily: "روزانه" + weekly: "هفتگی" + every_two_weeks: "هر دو هفته" + every_three_days: "هر سه روز" + max_of_count: "حداکثر {{count}}" + character_count: + other: "{{count}} نویسه" + suggested_topics: + title: "موضوعات پیشنهادی" + about: + simple_title: "درباره" + title: "درباره %{title}" + stats: "آمارهای سایت" + our_admins: "مدیران ما" + our_moderators: "مدیران ما" + stat: + all_time: "تمام وقت" + last_7_days: "7 روز اخیر" + last_30_days: "30 روز گذشته" + like_count: "لایک ها " + topic_count: "موضوعات" + post_count: "پست ها" + user_count: "کاربران جدید" + active_user_count: "کاربران فعال" + contact: "ارتباط با ما" + contact_info: "در شرایط حساس و مسائل اضطراری مربوط به سایت٬‌ لطفا با تماس بگیرید از طریق %{contact_info}." + bookmarked: + title: "نشانک" + clear_bookmarks: "پاک کردن نشانک ها" + help: + bookmark: "برای نشانک گذاری به اولین نوشته این موضوع مراجعه نمایید" + unbookmark: "برای حذف تمام نشانک های این موضوع کلیک کنید" + bookmarks: + not_logged_in: "متأسفیم، شما باید به وارد شوید تا روی نوشته ها نشانک بگذارید" + created: "شما این نوشته ها را نشانک گذاشته‌اید" + not_bookmarked: "شما این نوشته را خوانده‌اید؛ بفشارید تا روی آن نشانک بگذارید." + last_read: "این آخرین نوشته ای است که خوانده‌اید؛ بفشارید تا روی آن نشانک بگذارید." + remove: "پاک کردن نشانک" + confirm_clear: "آیا مطمئنید که می‌خواهید همه نشانک ها را از این موضوع پاک کنید؟" + topic_count_latest: + other: "{{count}} موضوعات تازه یا به‌ روز شده." + topic_count_unread: + other: "{{count}} موضوعات خوانده نشده." + topic_count_new: + other: "{{count}} موضوعات تازه." + click_to_show: "برای نمایش کلیک کنید." + preview: "پیش‌نمایش" + cancel: "لغو" + save: "ذخیره سازی تغییرات" + saving: "در حال ذخیره سازی ..." + saved: "ذخیره شد!" + upload: "بارگذاری" + uploading: "در حال بارگذاری..." + uploaded: "بارگذاری شد!" + enable: "فعال کردن" + disable: "ازکاراندازی" + undo: "برگردانی" + revert: "برگشت" + failed: "ناموفق" + switch_to_anon: "حالت ناشناس " + switch_from_anon: "بیرون آمدن از حالت ناشناس" + banner: + close: "این سردر را رد بده." + choose_topic: + none_found: "موضوعی یافت نشد." + title: + search: "جستجو برای یک موضوع از روی نام، نشانی (url) یا شناسه (id)" + placeholder: "سرنویس موضوع را اینجا بنویسید" + user_action: + user_posted_topic: "{{user}}نوشته شدموضوع" + you_posted_topic: "شما در این موضوع نوشته گذاشتید" + user_replied_to_post: "{{user}} replied to {{post_number}}" + you_replied_to_post: "You replied to {{post_number}}" + user_replied_to_topic: "{{user}} replied to the topic" + you_replied_to_topic: "You replied to the topic" + user_mentioned_user: "{{user}} mentioned {{another_user}}" + user_mentioned_you: "{{user}} mentioned you" + you_mentioned_user: "شما نام برده شده اید {{another_user}}" + posted_by_user: "Posted by {{user}}" + posted_by_you: "Posted by you" + sent_by_user: "Sent by {{user}}" + sent_by_you: "Sent by you" + directory: + filter_name: "فیلتر بر اساس نام کاربری" + title: "کاربران" + likes_given: "داده" + likes_received: "دریافت" + topics_entered: "وارد شده" + topics_entered_long: "موضوعات وارد شده" + time_read: "زمان خوانده‌ شده" + topic_count: "موضوعات" + topic_count_long: "موضوعات ساخته شده" + post_count: "پاسخ ها" + post_count_long: "پاسخ ها نوشته شده" + no_results: "نتیجه ای یافت نشد." + days_visited: "بازدید ها" + days_visited_long: "بازدید روزانه" + posts_read: "خواندن" + posts_read_long: "خواندن نوشته ها" + total_rows: + other: "%{count} کاربران" + groups: + visible: "همهٔ کاربران گروه را می‌بینند" + title: + other: "گروه‌ها" + members: "اعضا" + posts: "نوشته ها" + alias_levels: + title: "چه کسی می تواند این گروه به عنوان یک نام مستعار استفاده کند؟" + nobody: "هیچ‌کس" + only_admins: "تنها مدیران" + mods_and_admins: "فقط گردانندگان و ادمین ها" + members_mods_and_admins: "تنها کاربران گروه، مدیران ومدیران کل" + everyone: "هرکس" + user_action_groups: + '1': "پسندهای داده شده" + '2': "پسندهای دریافت شده" + '3': "نشانک‌ها" + '4': "موضوعات" + '5': "پاسخ ها" + '6': "واکنش" + '7': "اشاره‌ها" + '9': "نقل‌قول‌ها" + '10': "ستاره‌دار" + '11': "ویرایش‌ها" + '12': "ارسال موارد" + '13': "صندوق دریافت" + categories: + all: "همهٔ دسته‌بندی ها" + all_subcategories: "همه" + no_subcategory: "هیچی" + category: "دسته بندی" + posts: "نوشته ها" + topics: "موضوعات" + latest: "آخرین" + latest_by: "آخرین توسط" + toggle_ordering: "ضامن کنترل مرتب سازی" + subcategories: "زیر دسته‌ بندی ها" + topic_stats: "شمار موضوعات تازه." + topic_stat_sentence: + other: "%{count} موضوعات تازه در %{unit} گذشته." + post_stats: "تعداد نوشته های جدید." + post_stat_sentence: + other: "%{count} نوشته تازه در %{unit} گذشته." + ip_lookup: + title: جستجوی نشانی IP + hostname: نام میزبان + location: موقعیت + location_not_found: (ناشناس) + organisation: سازمان + phone: تلفن + other_accounts: "سایر حساب های کاربری با این ای پی ." + delete_other_accounts: "حذف %{count}" + username: "نام کاربری" + trust_level: "TL" + read_time: " زمان خواندن" + topics_entered: "موضوعات وارد شده" + post_count: "# نوشته ها" + confirm_delete_other_accounts: "آیا مطمئن هستید که می خواهید این حساب کاربری را حذف نمایید؟" + user: + said: "{{username}}:" + profile: "نمایه" + mute: "بی صدا" + edit: "ویرایش تنظیمات" + download_archive: "دانلود نوشته های من" + new_private_message: "پیام های جدید" + private_message: "پیام" + private_messages: "پیام‌ها" + activity_stream: "فعالیت" + preferences: "تنظیمات" + bookmarks: "نشانک‌ها" + bio: "درباره من" + invited_by: "فراخوان از سوی" + trust_level: "سطح اعتماد" + notifications: "آگاه‌سازی‌ها" + dismiss_notifications: "علامت گذاری همه به عنوان خوانده شده" + dismiss_notifications_tooltip: "علامت گذاری همه اطلاعیه های خوانده نشده به عنوان خوانده شده" + disable_jump_reply: "بعد از پاسخ من به پست من پرش نکن" + dynamic_favicon: "آگاه‌سازی پیام‌های آمده را در favicon نمایش بده (آزمایشی)" + edit_history_public: "اجازه بده کاربران دیگر اصلاحات نوشته مرا ببینند" + external_links_in_new_tab: "همهٔ پیوندهای برون‌رو را در یک تب جدید باز کن" + enable_quoting: "فعال کردن نقل قول گرفتن از متن انتخاب شده" + change: "تغییر" + moderator: "{{user}} یک مدیر است" + admin: "{{user}} یک مدیر کل است" + moderator_tooltip: "این کاربر یک مدیر است" + admin_tooltip: "این کاربر یک ادمین است" + suspended_notice: "این کاربر تا {{date}} در وضعیت معلق است." + suspended_reason: "دلیل: " + github_profile: "Github" + mailing_list_mode: "برای هر نوشته جدید، ایمیلی برای من بفرست (مگر اینکه من موضوع یا دسته‌بندی را ساکت کنم)" + watched_categories: "تماشا شده" + watched_categories_instructions: "شما همهٔ‌ موضوعات تازه در این دسته‌بندی ها را بطور خودکار خواهید دید. از همهٔ نوشته ها و موضوعات تازه آگاه خواهید شد، هم‌چنین شمار نوشته های تازه و نخوانده پس از فهرست موضوع نشان داده می‌شود." + tracked_categories: "پی‌گیری شده" + tracked_categories_instructions: "شما همهٔ‌ موضوعات تازه در این دسته‌ بندی ها را به صورت خودکار دنبال خواهید کرد. تعداد نوشته‌های تازه و خوانده نشده در کنار موضوع نشان داده خواهد شد." + muted_categories: "بی صدا شد" + muted_categories_instructions: "از هر آن‌چه درباره موضوعات تازه در این دسته‌ بندی ها روی دهد، شما آگاه نخواهید شد و در تب نخواندهٔ‌ شما نمایش داده نمی‌شوند." + delete_account: "حساب من را پاک کن" + delete_account_confirm: "آیا مطمئنید که می‌خواهید شناسه‌تان را برای همیشه پاک کنید؟ برگشتی در کار نیست!" + deleted_yourself: "حساب‌ کاربری شما با موفقیت حذف شد." + delete_yourself_not_allowed: "در حال حاضر شما نمی‌توانید حساب کاربری خود را حذف کنید. به این منظور با یکی از مدیران برای پاک کردن حسابتان تماس بگیرید." + unread_message_count: "پیام‌ها" + admin_delete: "پاک کردن" + users: "کاربران" + muted_users: "بی صدا شده" + muted_users_instructions: "متفوقف کردن تمام اطلاعیه ها از طرف این کاربران." + staff_counters: + flags_given: "پرچم گذاری های مفید" + flagged_posts: "نوشته های پرچم گذاری شده" + deleted_posts: "پست های حذف شده" + suspensions: "تعلیق کردن" + warnings_received: "هشدارها" + messages: + all: "همه" + mine: "خودم" + unread: "خوانده‌ نشده‌" + change_password: + success: "(ایمیل ارسال شد)" + in_progress: "(فرستادن ایمیل)" + error: "(خطا)" + action: "ارسال ریست رمز عبور به ایمیل " + set_password: "تغییر کلمه عبور" + change_about: + title: "تغییر «دربارهٔ من»" + change_username: + title: "تغییر نام کاربری" + confirm: "اگر نام کاربری خود را تغییر دهید، همهٔ نقل‌قول‌های پیشین از نوشته‌های شما و اشاره‌های @name از کار می‌افتند. آیا برای انجام این کار اطمینان کامل دارید؟" + taken: "متأسفیم، آن نام کاربری قبلا گرفته شده است." + error: "در فرآیند تغییر نام کاربری شما خطایی روی داد." + invalid: "آن نام کاربری نامعتبر است. تنها باید عددها و حرف‌ها را در بر بگیرد." + change_email: + title: "تغییر ایمیل" + taken: "متأسفیم، آن ایمیل در دسترس نیست." + error: "در تغییر ایمیلتان خطایی روی داد. شاید آن نشانی از پیش در حال استفاده است؟" + success: "ما ایمیلی به آن نشانی فرستاده‌ایم. لطفاً دستورکار تأییده را در آن دنبال کنید." + change_avatar: + title: "عکس نمایه خود را تغییر دهید" + gravatar: "گراواتا, بر اساس" + refresh_gravatar_title: "تازه‌سازی گراواتارتان" + letter_based: "سیستم تصویر پرفایل را اختصاص داده است" + uploaded_avatar: "تصویر شخصی" + uploaded_avatar_empty: "افزودن تصویر شخصی" + upload_title: "تصویرتان را بار بگذارید" + upload_picture: "بارگذاری تصویر" + image_is_not_a_square: "اخطار: ما تصویر شما بریدیم; طول و عرض برابر نبود." + cache_notice: "شما با موفقیت آواتار خود را تعویض نمودید ولی ممکن است کمی زمان ببرد برای ظاهر شدن بدلیل کش مرورگر" + change_profile_background: + title: "پس‌زمینه نمایه" + instructions: "تصاویر پس‌زمینه نمایه‌ها در مرکز قرار میگیرند و به صورت پیش‌فرض طول 850px دارند." + change_card_background: + title: "پس زمینه کارت کابر" + instructions: "تصاویر پس زمینه در مرکز قرار خواهند گرفت و عرض پیشفرض آن 590 پیکسل است" + email: + title: "ایمیل" + instructions: "هرگز بصورت عمومی نشان نده" + ok: "ایمیلی برای تایید برایتان می‌فرستیم" + invalid: "لطفا یک آدرس ایمیل معتبر وارد کنید" + authenticated: "ایمیل شما تصدیق شد توسط {{provider}}" + frequency: + zero: "ما برای شما سریعا ایمیلی می فرستیم در صورتی که چیزهای فرستاده شده در ایمیل را نخوانده باشید" + one: "ما در صورتی به شما ایمیل می زنیم که شما را تا آخرین لحظه ندیده باشیم" + other: "ما در صورتی به شما ایمیل می زنیم که شما را تا دقیقه {{count}} ندیده باشیم " + name: + title: "نام" + instructions: "نام کامل (اختیاری)" + instructions_required: "نام کامل شما" + too_short: "نام انتخابی شما خیلی کوتاه است" + ok: "نام انتخابی شما به نطر می رسد خوب است" + username: + title: "نام کاربری" + instructions: "منحصر به فرد،بدون فاصله،کوتاه" + short_instructions: "می توانید به کاربران دیگر اشاره کنید با@{{username}}" + available: "نام کاربری شما موجود است" + global_match: "ایمیل منطبق نام کاربری ثبت شد." + global_mismatch: "از پیش ثبت شده.این را امتحان کن {{suggestion}} ؟" + not_available: "فراهم نیست. این را امتحان کن {{suggestion}} ؟" + too_short: "نام کاربری انتخابی شما خیلی کوتاه است" + too_long: "نام کاربری انتخابی شما بسیار بلند است" + checking: "بررسی فراهمی نام‌کاربری..." + enter_email: 'نام کاربری پیدا شد; ایمیل منطبق را وارد کن' + prefilled: "ایمیل منطبق است با این نام کاربری ثبت شده " + locale: + title: "زبان رابط کاربر" + instructions: "زبان رابط کاربری. با تازه کردن صفحه تغییر خواهد کرد." + default: "(پیش‌فرض)" + password_confirmation: + title: "رمز عبور را مجدد وارد نمایید" + last_posted: "آخرین نوشته" + last_emailed: "آخرین ایمیل فرستاده شده" + last_seen: "مشاهده" + created: "عضو شده" + log_out: "خروج" + location: "موقعیت" + card_badge: + title: "کارت مدال کاربر" + website: "تارنما" + email_settings: "ایمیل" + email_digests: + title: "هنگامی که به سایت سر نمی‌زنم، گزارش کوتاهی از رویدادهای تازه را برایم ایمیل کن:" + daily: "روزانه" + every_three_days: "هر سه روز" + weekly: "هفتگی" + every_two_weeks: "هر دو هفته " + email_direct: "به من ایمیل ارسال کن هنگامی که کسی از من نقل قول کرد، به نوشته های من پاسخ داد، یا به من اشاره کرد @username یا مرا به موضوعی دعوت کرد." + email_private_messages: "به من ایمیل ارسال کن وقتی کسی به من پیام خصوصی فرستاد" + email_always: "برای من ایمیل آگاه سازی نفرست هنگامی که در سایت فعال هستم" + other_settings: "موارد دیگر" + categories_settings: "دسته‌بندی ها" + new_topic_duration: + label: "موضوعات را جدید در نظر بگیر وقتی" + not_viewed: "من هنوز آن ها را ندیدم" + last_here: "آخرین باری که اینجا بودم ساخته شده‌اند" + after_n_days: + other: " در {{count}} روز گذشته ساخته شده‌" + after_n_weeks: + other: "در {{count}} هفته گذشته ساخته شده‌" + auto_track_topics: "دنبال کردن خودکار موضوعاتی که وارد می‌شوم" + auto_track_options: + never: "هرگز" + always: "همیشه" + after_n_seconds: + other: "پس از {{count}} ثانیه" + after_n_minutes: + other: "پس از {{count}} دقیقه" + invited: + search: "بنویسید تا فراخوانه‌ها را جستجو کنید..." + title: "فراخوانه‌ها" + user: "کاربر فراخوانده شده" + none: "هنوز هیچ‌کسی را به اینجا فرانخوانده‌اید" + truncated: "نمایش {{count}} فراخوانهٔ نخست" + redeemed: "آزاد سازی دعوتنامه" + redeemed_at: "آزاد سازی" + pending: "دعوت های بی‌پاسخ" + topics_entered: "موضوعات بازدید شد" + posts_read_count: "خواندن نوشته ها" + expired: "این دعوت منقضی شده است." + rescind: "پاک کردن" + rescinded: "فراخوانه پاک شد" + reinvite: "ارسال دوباره دعوت" + reinvited: "فرستادن دوباره دعوتنامه" + time_read: "زمان خواندن" + days_visited: "روز های بازدید شده" + account_age_days: "عمر حساب بر اساس روز" + create: "فرستادن یک دعوتنامه" + bulk_invite: + none: "شما هنوز کسی را اینجا دعوت نکرده اید. می توانید بصورت تکی یا گروهی یکجا دعوتنامه را بفرستید از طریق بارگذار فراخوانه فله ای ." + text: "دعوت گروهی از طریق فایل" + uploading: "بارگذاری..." + success: "فایل با موفقیت بارگذاری شد٬ وقتی که پروسه تمام شد به شما را از طریق پیام اطلاع می دهیم. " + error: "در بارگذاری «{{filename}}» خطایی روی داد: {{message}}" + password: + title: "رمزعبور" + too_short: "رمز عبورتان خیلی کوتاه است" + common: "رمز عبور خیلی ساده‌ای است" + same_as_username: "رمز عبورتان با نام کاربری شما برابر است." + same_as_email: "رمز عبورتان با ایمیل شما برابر است. " + ok: "گذرواژهٔ خوبی است." + instructions: "در آخرین %{count} کاراکتر" + associated_accounts: "ورود ها" + ip_address: + title: "آخرین نشانی IP" + registration_ip_address: + title: "نشانی IP ثبت‌نامی" + avatar: + title: "عکس نمایه" + title: + title: "سرنویس" + filters: + all: "همه" + stream: + posted_by: "فرستنده:" + sent_by: "فرستنده:" + private_message: "پیام" + the_topic: "موضوع" + loading: "بارگذاری" + errors: + prev_page: "هنگام تلاش برای بارگزاری" + reasons: + network: "خطای شبکه" + server: "خطای سرور" + forbidden: "دسترسی قطع شده است" + unknown: "خطا" + desc: + network: "ارتباط اینترنتی‌تان را بررسی کنید." + network_fixed: "به نظر می رسد اون برگشت." + server: "کد خطا : {{status}}" + forbidden: "شما اجازه دیدن آن را ندارید." + unknown: "اشتباهی روی داد." + buttons: + back: "برگشت" + again: "تلاش دوباره" + fixed: "بارگذاری برگه" + close: "بستن" + assets_changed_confirm: "این وب سایت به روز رانی شده است،بارگزاری مجدد کنید برای آخرین نسخه ؟" + logout: "شما از سایت خارج شده اید" + refresh: "تازه کردن" + read_only_mode: + enabled: "مدیر حالت فقط برای خواندن را فعال کرده. می توانید به جستجو در وب سایت ادامه دهید ولی ممکن است تعاملات کار نکند." + login_disabled: "ورود به سیستم غیر فعال شده همزمان با اینکه سایت در حال فقط خواندنی است." + too_few_topics_notice: " 5 جستار عمومی و %{posts} دیدگاه عمومی بوجود بیاور تا گفتگو آغاز بشود. کاربران جدید میزان اعتماد را بدست بیاورند مگر محتوایی برای خواندن موجود باشد. این پیغام فقط به کارکنان نشان داده می شود" + learn_more: "بیشتر بدانید..." + year: 'سال' + year_desc: 'موضوعاتی که در 365 روز گذشته باز شده‌اند' + month: 'ماه' + month_desc: 'موضوعاتی که در 30 روز گذشته ساخته شده اند' + week: 'هفته' + week_desc: 'موضوعاتی که در 7 روز گذشته باز شده‌اند' + day: 'روز' + first_post: نوشته نخست + mute: بی صدا + unmute: صدادار + last_post: آخرین نوشته + last_post_lowercase: آخرین نوشته + summary: + enabled_description: "شما خلاصه ای از این موضوع را می بینید: بالاترین‌ نوشته های انتخاب شده توسط انجمن." + description: "{{count}} پاسخ" + description_time: "وجود دارد {{count}} پاسخ ها برا اساس زمان خواندن{{readingTime}} دقیقه." + enable: 'خلاصه این موضوع' + disable: 'نمایش همه نوشته‌ها' + deleted_filter: + enabled_description: "محتویات این موضوع باعث حذف نوشته شده٬ که پنهان شده است." + disabled_description: "پست های حذف شده در موضوع نشان داده است" + enable: "مخفی کردن نوشته های حذف شده" + disable: "نشان دادن نوشته های حذف شده" + private_message_info: + title: "پیام" + invite: "فراخواندن دیگران..." + remove_allowed_user: "آیا واقعا می خواهید اسم {{name}} از پیام برداشته شود ؟ " + email: 'رایانامه' + username: 'نام کاربری' + last_seen: 'مشاهده شد' + created: 'ساخته شده' + created_lowercase: 'ساخته شده' + trust_level: 'سطح اعتماد' + search_hint: 'نام کاربری ، ایمیل یا ای پی ' + create_account: + title: "ساختن شناسهٔ تازه" + failed: "اشتباهی روی داده، شاید این نام کاربری پیش‌تر استفاده شده؛ پیوند فراموشی گذرواژه می‌تواند کمک کند." + forgot_password: + title: "باز یابی کلمه عبور" + action: "گذرواژه‌ام را فراموش کرده‌ام" + invite: "نام‌کاربری و نشانی رایانامهٔ خود را بنویسید و ما رایانامهٔ بازیابی گذرواژه را برایتان می‌فرستیم." + reset: "باز یابی رمز عبور" + complete_username: "اگر حساب کاربری مشابه نام کاربری %{username} ,است،شما باید با استفاده از ایمیل رمز عبور حساب کاربری خود را مجدد تنظیم نمایید." + complete_email: "اگر حساب کاربری مشابه ایمیل %{email}, است،شما باید با استفاده از ایمیل رمز عبور حساب کاربری خود را مجدد تنظیم نمایید." + complete_username_found: "ما حساب کاربری مشابه نام کاربری %{username},پیدا کردیم،شما باید با استفاده از ایمیل رمز عبور حساب کاربری خود را مجدد تنظیم نمایید." + complete_email_found: "ما حساب کاربری مشابه با ایمیل %{email}, پیدا کردیم،شما باید با استفاده از ایمیل رمز عبور حساب کاربری خود را مجدد تنظیم نمایید." + complete_username_not_found: "هیچ حساب کاربری مشابه نام کاربری %{username} وجود ندارد" + complete_email_not_found: "هیچ حساب کاربری مشابه با %{email} وجود ندارد" + login: + title: "ورود" + username: "کاربر" + password: "گذرواژه" + email_placeholder: "نشانی رایانامه یا نام کاربری" + caps_lock_warning: "Caps Lock روشن است" + error: "خطای ناشناخته" + blank_username_or_password: "لطفا نام کاربری یا ایمیل خود ، با پسورد وارد نمایید." + reset_password: 'نوسازی گذرواژه' + logging_in: "درون آمدن..." + or: "یا" + authenticating: "اعتبارسنجی..." + awaiting_confirmation: "شناسهٔ‌کاربری‌تان چشم به راه فعال‌سازی است، پیوند فراموشی گذرواژه را برای دریافت یک رایانامهٔ‌فعال‌سازی دیگر باز کنید." + awaiting_approval: "هنوز کارمندی شناسهٔ‌شما را تأیید نکرده است. پس از تأیید، یک رایانامه دریافت خواهید کرد." + requires_invite: "متأسفیم، دسترسی به این انجمن تنها با فراخوانه امکان دارد." + not_activated: "هنوز نمی‌توانید به درون بیایید. پیش‌تر یک رایانامهٔ فعال‌سازی برایتان به نشانی {{sentTo}} فرستادیم. لطفاً دستور کار آن رایانامه را برای فعال‌سازی شناسه‌تان دنبال کنید." + not_allowed_from_ip_address: "شما نمی توانید با این اپی ادرس وارد شوید." + admin_not_allowed_from_ip_address: "شما نمی تواند با این اپی آدرس وارد کنترل پنل ادمین شوید." + resend_activation_email: "برای فرستادن دوبارهٔ رایانامهٔ‌فعال‌سازی، اینجا را بفشارید." + sent_activation_email_again: "رایانامهٔ‌ فعال‌سازی دیگری را برایتان به نشانی {{currentEmail}} فرستادیم. چند دقیقه‌ای طول می‌کشد تا برسد. مطمئن شوید که پوشهٔ هرزنامه را بررسی می‌کنید." + google: + title: "با Google" + message: "اعتبارسنجی با گوگل (مطمئن شوید که بازدارنده‌های pop up فعال نباشند)" + google_oauth2: + title: "با گوگل" + message: "اهراز هویت با گوگل (لطفا برسی کنید پاپ بلوکر فعال نباشد)" + twitter: + title: "با Twitter" + message: "اعتبارسنجی با توئیتر (مطمئن شوید که بازدارنده‌های pop up فعال نباشند)" + facebook: + title: "با Facebook" + message: "اعتبارسنجی با فیسبوک (مطمئن شوید که بازدارنده‌های pop up فعال نباشند)" + yahoo: + title: "با یاهو" + message: "اعتبارسنجی با یاهو (مطمئن شوید که بازدارنده‌های pop up فعال نباشند)" + github: + title: "با GitHub" + message: "اعتبارسنجی با گیت‌هاب (مطمئن شوید که بازدارنده‌های pop up فعال نباشند)" + apple_international: "اپل / بین المللی" + google: "گوگل" + twitter: "تویتر" + emoji_one: "یک شکلک" + composer: + emoji: "شکلک :smile:" + add_warning: "این یک هشدار رسمی است." + posting_not_on_topic: "به کدام موضوع می‌خواهید پاسخ دهید؟" + saving_draft_tip: "در حال ذخیره سازی ..." + saved_draft_tip: "اندوخته شد" + saved_local_draft_tip: "ذخیره سازی به صورت محلی" + similar_topics: "موضوع شما شبیه است به..." + drafts_offline: "پیش نویس آنلاین" + error: + title_missing: "سرنویس الزامی است" + title_too_short: "سرنویس دست‌کم باید {{min}} نویسه باشد" + title_too_long: "سرنویس نمی‌تواند بیش‌تر از {{max}} نویسه باشد" + post_missing: "نوشته نمی‌تواند تهی باشد" + post_length: "نوشته باید دست‌کم {{min}} نویسه داشته باشد" + category_missing: "باید یک دسته برگزینید" + save_edit: "ذخیره سازی ویرایش" + reply_original: "پاسخ دادن در موضوع اصلی" + reply_here: "پاسخ‌دادن همین‌جا" + reply: "پاسخ" + cancel: "لغو کردن" + create_topic: "ایجاد موضوع" + create_pm: "پیام" + title: "یا Ctrl+Enter را بفشارید" + users_placeholder: "افزودن یک کاربر" + title_placeholder: "در یک جملهٔ‌ کوتاه، این موضوع در چه موردی است؟" + edit_reason_placeholder: "چرا ویرایش می‌کنید؟" + show_edit_reason: "(افزودن دلیل ویرایش)" + reply_placeholder: "اینجا بنویسید. برای آرایش از Markdown یا BBCode استفاده کنید. برای باگذاری تصویر، آن را به اینجا بکشید یا بچسبانید." + view_new_post: "نوشته تازه‌تان را ببینید." + saving: "در حال ذخیره سازی..." + saved: "اندوخته شد!" + saved_draft: "در حال حاضر پیشنویس وجود دارد . برای از سر گیری انتخاب نمایید." + uploading: "بارگذاری..." + show_preview: 'نشان دادن پیش‌نمایش «' + hide_preview: '» پنهان کردن پیش‌نمایش' + quote_post_title: "نقل‌قول همهٔ‌ نوشته" + bold_title: "زخیم" + bold_text: "نوشته قوی " + italic_title: "تاکید" + italic_text: "متن تاکید شده" + link_title: "لینک ارتباط دار" + link_description: "توضیحات لینک را اینجا وارد کنید." + link_dialog_title: "لینک را درج کنید" + link_optional_text: "سرنویس اختیاری" + quote_title: "نقل قول" + quote_text: "نقل قول" + code_title: "نوشته تنظیم نشده" + code_text: "متن تورفتگی تنظیم نشده توسط 4 فضا خالی" + upload_title: "بارگذاری" + upload_description: "توضیح بارگذاری را در اینجا بنویسید" + olist_title: "لیست شماره گذاری شد" + ulist_title: "لیست بولت" + list_item: "فهرست موارد" + heading_title: "عنوان" + heading_text: "عنوان" + hr_title: "خط کش افقی" + undo_title: "برگردانی" + redo_title: "دوباره‌گردانی" + help: "راهنمای ویرایش با Markdown" + toggler: "مخفی یا نشان دادن پنل نوشتن" + admin_options_title: "تنظیمات اختیاری مدیران برای این موضوع" + auto_close: + label: "بستن خودکار موضوع در زمان :" + error: "لطفا یک مقدار معتبر وارد نمایید." + based_on_last_post: "آیا تا آخرین نوشته یک موضوع بسته نشده در این قدیمی است." + all: + examples: 'عدد ساعت را وارد نمایید (24)،زمان کامل (17:30) یا برچسب زمان (2013-11-22 14:00).' + limited: + units: "(# از ساعت ها)" + examples: 'لطفا عدد ساعت را وارد نمایید (24).' + notifications: + title: "اطلاع رسانی با اشاره به @name ،پاسخ ها به نوشته ها و موضوعات شما،پیام ها ، و ..." + none: "قادر به بار گذاری آگاه سازی ها در این زمان نیستیم." + more: "دیدن آگاه‌سازی‌های پیشن" + total_flagged: "همهٔ نوشته‌های پرچم خورده" + mentioned: "

    {{username}} {{description}}

    " + quoted: "

    {{username}} {{description}}

    " + replied: "

    {{username}} {{description}}

    " + posted: "

    {{username}} {{description}}

    " + edited: "

    {{username}} {{description}}

    " + liked: "

    {{username}} {{description}}

    " + private_message: "

    {{username}} {{description}}

    " + invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " + invitee_accepted: "

    {{username}} accepted your invitation

    " + moved_post: "

    {{username}} moved {{description}}

    " + linked: "

    {{username}} {{description}}

    " + granted_badge: "

    Earned '{{description}}'

    " + upload_selector: + title: "افزودن یک عکس" + title_with_attachments: "افزودن یک تصویر یا پرونده" + from_my_computer: "از دستگاه من" + from_the_web: "از وب" + remote_tip: "لینک به تصویر" + remote_tip_with_attachments: "لطفا لینک تصویر یا فایل ({{authorized_extensions}})" + local_tip: "بفشارید تا تصویری را از روی دستگاه خود برگزینید" + local_tip_with_attachments: "برای انتخاب یک تصویر یا فایل از دستگاه خود کلیک کنید ({{authorized_extensions}})" + hint: "(برای آپلود می توانید فایل را کیشده و در ویرایشگر رها کنید)" + hint_for_supported_browsers: "(شما همچنین می توانید با کشیدن و رها کردن یا چسباندن تصاویر در ویرایشگر آن ها را بار گذاری نمایید)" + uploading: "در حال بروز رسانی " + image_link: "به لینک تصویر خود اشاره کنید" + search: + title: "جستجوی موضوعات، نوشته ها، کاربران یا دسته‌ بندی ها" + no_results: "چیزی یافت نشد." + searching: "جستجو کردن..." + post_format: "#{{post_number}} توسط {{username}}" + context: + user: "جستجوی نوشته‌ها با @{{username}}" + category: "جستجوی دستهٔ «{{category}}»" + topic: "جستجوی این موضوع" + private_messages: "جستجوی پیام" + site_map: "به فهرست موضوع یا دسته‌ای دیگر بروید" + go_back: 'برگردید' + not_logged_in_user: 'صفحه کاربر با خلاصه ای از فعالیت های و تنظیمات' + current_user: 'به نمایه‌تان بروید' + topics: + bulk: + reset_read: "تنظیم مجدد خوانده شد" + delete: "حذف موضوعات" + dismiss_posts: "بستن نوشته ها" + dismiss_posts_tooltip: "پاک کردن شمارش خوانده نشده های این موضوع اما همچنان در لیست خوانده نشده های من آنها را نمایش بده زمانی که پست جدید ساخته شد" + dismiss_topics: "بستن موضوعات" + dismiss_topics_tooltip: "نشان دادن این تاپیک را از لیست خوانده نشده متوقف کن وقتی پست های جدید بوجود آمد" + dismiss_new: "بستن جدید" + toggle: "ضامن انتخاب یکباره موضوعات" + actions: "عملیات یکجا" + change_category: "تغییر دسته بندی" + close_topics: "بستن موضوعات" + archive_topics: "آرشیو موضوعات" + notification_level: "تغییر سطح آگاه‌سازی" + choose_new_category: "یک دسته بندی جدید برای موضوع انتخاب نمایید" + selected: + other: "شما تعداد {{count}} موضوع را انتخاب کرده اید." + none: + unread: "موضوع خوانده نشده‌ای ندارید." + new: "شما هیچ موضوع تازه‌ای ندارید" + read: "هنوز هیچ موضوعاتی را نخوانده‌اید." + posted: "هنوز در هیچ موضوعی نوشته نگذاشته‌اید." + latest: "هیچ موضوع تازه‌ای نیست. چه بد!" + hot: "هیچ موضوع داغی نیست." + bookmarks: "هنوز هیچ موضوع نشانک‌گذاری شده‌ای ندارید." + category: "هیچ موضوعاتی در {{category}} نیست." + top: "موضوع برتر وجود ندارد." + search: " هیچ نتیجه جستجویی وجود ندارد." + educate: + new: '

    موضوعات جدید در اینجا قرار می گیرند.

    به طور پیش فرض، موضوعات جدید در نظر گرفته خواهند شد و نشان داده می شوند جدید شاخص اگر آنها در 2 روز گذشته ایجاد شده باشند

    شما می توانید این را برای خود تغییر دهید تنظیمات.

    ' + unread: '

    موضوعات خوانده نشده شما در اینجا قرار می گیرند.

    به طور پیش فرض، موضوعات خوانده نشده در نظر گرفته خواهند شد و شمارش خوانده نشده ها نشان داده می شود 1 اگر شما:

    و یا اگر شما به صراحت مجموعه ای از موضوع مورد ردیابی و یا تماشا از طریق کنترل اطلاع رسانی در پایین هر موضوع انتخاب کرده اید.

    شما می توانید این را تغییر دهید. تنظیمات.

    ' + bottom: + latest: "موضوع تازهٔ دیگری نیست." + hot: "موضوع داغ دیگری نیست." + posted: "هیچ موضوعات نوشته شده ای وجود ندارد" + read: "موضوع خوانده شدهٔ‌ دیگری نیست." + new: "موضوع تازهٔ دیگری نیست." + unread: "موضوع خوانده نشدهٔ دیگری نیست." + category: "هیچ موضوع دیگری در {{category}} نیست." + top: "بالاترین‌ موضوعات بیشتری وجود ندارد" + bookmarks: "موضوعات نشانک‌گذاری شده‌ی دیگری وجود ندارد." + search: "نتیجه جستجوی دیگری وجود ندارد" + topic: + filter_to: "نوشته در موضوع {{post_count}} " + create: 'موضوع جدید' + create_long: 'ساخت یک موضوع جدید' + private_message: 'شروع یک پیام' + list: 'موضوعات' + new: 'موضوع تازه' + unread: 'خوانده نشده' + new_topics: + other: '{{count}} موضوعات جدید' + unread_topics: + other: '{{count}} موضوع خوانده نشده' + title: 'موضوع' + invalid_access: + title: "موضوع خصوصی است" + description: "متأسفیم، شما دسترسی به این موضوع ندارید!" + login_required: "برای مشاهده‌ی موضوع باید وارد سیستم شوید." + server_error: + title: "شکست در بارگذاری موضوع" + description: "متأسفیم، نتوانستیم موضوع را بار بگذاریم، شاید به دلیل یک مشکل ارتباطی. لطفاً دوباره تلاش کنید. اگر مشکل پابرجا بود، ما را آگاه کنید." + not_found: + title: "موضوع یافت نشد" + description: "متأسفیم، نتوانستیم آن موضوع را بیابیم. شاید کارمندی آن را پاک کرده؟" + total_unread_posts: + other: "شما تعداد {{count}} نوشته خوانده نشده در این موضوع دارید" + unread_posts: + other: "شما تعداد {{count}} نوشته خوانده نشده قدیمی در این موضوع دارید" + new_posts: + 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: "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: چرا یک موضوع نسازید؟ + jump_reply_up: رفتن به جدید ترین پاسخ + jump_reply_down: رفتن به آخرین پاسخ + deleted: "موضوع پاک شده است." + auto_close_notice: "این موضوع خودکار بسته خواهد شد %{timeLeft}." + auto_close_notice_based_on_last_post: "این نوشته بعد از %{duration} آخرین پاسخ بشته خواهد شد ." + auto_close_title: 'تنضیمات قفل خوکار' + auto_close_save: "‌ذخیره" + auto_close_remove: "این موضوع را خوکار قفل نکن" + progress: + title: نوشته ی در حال اجرا + go_top: "بالا" + go_bottom: "پایین" + go: "برو" + jump_bottom_with_number: "رفتن به نوشته ی %{post_number}" + total: همهٔ نوشته‌ها + current: نوشته کنونی + position: "نوشته %{current} از %{total}" + notifications: + reasons: + '3_6': 'شما آگاه‌سازی‌ها را دریافت خواهید کرد، زیرا شما در حال مشاهده ی این دسته بندی هستید.' + '3_5': 'شما آگاه‌سازی‌ها را دریافت خواهید کرد، زیرا تماشای خودکار این موضوع را آغاز کرده‌اید.' + '3_2': 'شما آگاه سازی دریافت می کنید زیرا در حال مشاهده این جستار هستید.' + '3_1': 'از آنجا که این موضوع را ساخته‌اید، از رویدادهای آن آگاه خواهید شد.' + '3': 'از آنجا که این موضوع را تماشا می‌کنید، از رویدادهای آن آگاه خواهید شد.' + '2_8': 'شما آگاه سازی دریافت خواهید کرد چرا که شما این دسته بندی را پی گیری می کنید.' + '2_4': 'از آنجا که به این جستار پاسخ فرستادید، از رویدادهای آن آگاه خواهید شد.' + '2_2': 'از آنجا که این موضوع را دنبال می‌کنید، از رویدادهای آن آگاه خواهید شد.' + '2': 'شما اطلاعیه ای دریافت خواهید کرد چون این موضوع را مطالعه می نمایید.' + '1_2': 'به شما اطلاع داده خواهد شد اگر کسی به شما @name اشاره یا به نوشته شما پاسخ داد. ' + '1': 'به شما اطلاع داده خواهد شد اگر کسی به شما @name اشاره یا به نوشته شما پاسخ داد. ' + '0_7': 'شما تمام آگاه سازی های این دسته بندی را نادیده گرفته اید' + '0_2': 'شما کل آگاه سازی های این جستار را نادیده گرفته اید' + '0': 'شما تمام آگاه سازی های این جستار را نادیده گرفته اید' + watching_pm: + title: "در حال مشاهده" + description: "به شما برای هر نوشته جدید در این وپیغام اطلاع داده خواهد شد. تعداد نوشته های خوانده نشده در کنار جستار پدیدار می شود" + watching: + title: "در حال مشاهده" + description: "به شما برای هر نوشته جدید در این جستار اطلاع رسانی خواهد شد ، و تعداد نوشته های خوانده نشده در کنار موضوع پدیدار می شود." + tracking_pm: + title: "ردگیری" + description: "تعداد نوشته های خوانده نشده و نوشته های جدید به عنوان پیام پدیدار می شود،به شما اطلاع داده خواهد شد اگر کسی به شما @name اشاره یا به نوشته های شما پاسخ دهند" + tracking: + title: "ردگیری" + description: "تعداد نوشته های خوانده نشده و نوشته های جدید به در کنار جستار پدیدار می شود، اگر کسی به شما @name اشاره یا به نوشته های شما پاسخ دهند به شما اطلاع داده خواهد شد" + regular: + title: "منظم" + description: "اگر کسی به شما اشاره @name یا به نوشته های شما پاسخ دهند به شما اطلاع داده خواهد شد." + regular_pm: + title: "عادی" + description: "به شما در قالب پیام اطلاع داده خواهد شد اگر کسی به شما @name اشاره یا به نوشته های شما پاسخ دهند. " + muted_pm: + title: "بی صدا شد" + description: " در باره این پیام هرگز به شما اطلاع رسانی نخواهید شد" + muted: + title: "بی صدا شد" + description: "درباره این موضوع به شما هرگز اطلاع رسانی نخواهد شد٬ و در کنار جستار شمار خوانده نشده ها پدیدار نمی شود" + actions: + recover: "بازیابی موضوع" + delete: "پاک کردن موضوع" + open: "باز کردن موضوع " + close: "بستن موضوع" + multi_select: "گزیدن دیدگاه‌ها..." + auto_close: "بستن خودکار" + pin: "سنجاق زدن جستار..." + unpin: "برداشتن سنجاق جستار..." + unarchive: "موضوع بایگانی نشده" + archive: "بایگانی کردن موضوع" + invisible: "خارج کردن از لیست" + visible: "فهرست ساخته شد" + reset_read: "تنظیم مجدد خواندن داده ها" + feature: + pin: "سنجاق زدن جستار" + unpin: "برداشتن سنجاق جستار" + pin_globally: "سنجاق کردن موضوع در سطح سراسری" + make_banner: "اعلان موضوع" + remove_banner: "حذف اعلان موضوع" + reply: + title: 'پاسخ' + help: 'آغاز ارسال یک پاسخ به این موضوع' + clear_pin: + title: "برداشتن سنجاق" + help: "سنجاق استاتوس این موضوع را بردارید که پس از آن دیگر این موضوع در بالای فهرست موضوعات شما دیده نمی‌شود." + share: + title: 'همرسانی ' + help: 'همرسانی یک پیوند برای این موضوع' + flag_topic: + title: 'پرچم' + help: 'پرچم خصوصی برای این موضوع جهت توجه یا برای ارسال آگاه سازی شخصی در باره آن.' + success_message: 'شما باموفقیت این موضوع را پرچم زدید' + feature_topic: + title: " ویژگی های این موضوع" + pin: "این موضوع را قابل رویت بالای دسته بندی {{categoryLink}} کن." + confirm_pin: "شما قبلا این {{count}} موضوع را سنجاق کردید. تعداد زیاد موضوع های سنجاق شده شاید برای کاربران جدید یا ناشناس بار سنگینی ایجاد کند. آیا شما اطمینان دارید از سنجاق کردن یک موضوع دیگر در این دسته بندی ؟" + unpin: "این موضوع را از لیست بالاترین‌ های دسته بندی {{categoryLink}} حذف کن" + pin_note: "کاربران می توانند موضوع را بصورت جداگانه برای خود از سنجاق در بیاورند" + already_pinned: + zero: "دیگر هیچ موضوعات سنجاق شده وجود ندارد در {{categoryLink}}." + one: "موضوعات در حال حاضر سنجاق شده اند {{categoryLink}}: 1." + other: "موضوعات در حال حاضر سنجاق شده اند {{categoryLink}}: {{count}}." + pin_globally: "این موضوع را در بالای موضوعات نشان بده٬‌ تا زمانیکه یکی از کارمندان آن را از سنجاق شدن در بیاورند. " + confirm_pin_globally: "شما قبلا این موضوع {{count}} را بصورت سراسری سنجاق زده اید. تعداد زیاد موضوع های سنجاق شده برای کاربران جدید و ناشناس می تواند سخت باشد. آیا از سنجاق کردن موضوع ها بصورت سراری اطمینان دارید ؟ " + unpin_globally: "حذف این موضوع از بالای همه لیست موضوعات." + global_pin_note: "کاربران می توانند موضوع را بصورت جداگانه برای خود از سنجاق در بیاورند" + already_pinned_globally: + zero: "هیچ موضوعی که به صورت سرسری سنجاق شده باشد وجود ندارد." + one: "موضوعات در سطح سراسری سنجاق شده است: 1." + other: "موضوعات در سطح سراسری سنجاق شده است: {{count}}." + make_banner: "این موضوع را در وارد بنر کن که در تمام صفحات در بالای صفحه نشان داده شود" + remove_banner: "حذف بنری که از بالای تمام صفحات نمایش داده می شود. " + banner_note: "کاربران می توانند بنر را با بستن آنها رد کنند. فقط یک موضوع را می توان بنر کرد در هرزمان داده شده ای. " + already_banner: + zero: "هیچ موضوع سرصفحه ای وجود ندارد" + one: "در حال حاضر یک موضوع بنر is وجود دارد." + inviting: "فراخوانی..." + automatically_add_to_groups_optional: "این دعوتنامه دارای دسترسی به این گروه ها است : (اختیاری٬ فقط ادمین)" + automatically_add_to_groups_required: "این دعوتنامه دارای دسترسی به این گروه ها است : (Required, admin only)" + invite_private: + title: 'دعوت به پیام خصوصی' + email_or_username: "دعوتنامه ی ایمیل یا نام کاربر" + email_or_username_placeholder: "نشانی ایمیل یا نام کاربری" + action: "دعوتنامه " + success: "ما آن کاربر را برای شرکت در این پیام دعوت کردیم." + error: "با معذرت٬ یک خطا برای دعوت آن کاربر وجود داشت" + group_name: "نام گروه" + invite_reply: + title: 'دعوتنامه ' + username_placeholder: "نام کاربری" + action: 'ارسال دعوتنامه ' + help: 'دعوت دیگران به این موضوع با ایمیل یا اطلاعیه ' + to_forum: "ما ایملی کوتاه برای شما می فرستیم که دوست شما با کلیک کردن بر روی لینک سریعا ملحق شود٫‌ به ورود سیستم نیازی نیست. " + sso_enabled: "نام کاربری کسی را که می خواهید برای این موضوع دعوت کنید را وارد نمایید" + to_topic_blank: "نام کاربری یا ایمیل کسی را که می خواهید برای این موضوع دعوت کنید را وارد نمایید" + to_topic_email: "شما یک ایمیل آدرس وارد کردید. ما یک ایمیل خواهیم فرستاد که به دوستان شما اجازه می دهد سریعا به این جستار پاسخ دهند." + to_topic_username: "شما یک نام کاربری وارد کردید. ما یک آگاه سازی برای آن کاربر به همراه یک پیوند می فرستیم برای دعوت آنها به این جستار. " + email_placeholder: 'name@example.com' + success_email: "lما از طریق ایمیل دعوت نامه ارسال کردیم {{emailOrUsername}} . هنگامی که به دعوت شما پاسخ داده شد ما به شما اطلاع خواهیم داد.برای پی گیری به تب دعوت ها در پنل کاربری مراجعه نمایید" + success_username: "ما آن کاربر را برای شرکت در این جستار دعوت کردیم." + error: "متاسفیم٬‌ ما آن شخص را نمی توانیم دعوت کنیم. شاید قبلا دعوت شده اند. (فراخوان ها تعداد محدودی دارند)" + login_reply: 'برای پاسخ وارد شوید' + filters: + n_posts: + other: "{{count}} نوشته ها" + cancel: "حذف فیلتر" + split_topic: + title: "انتقال به موضوع جدید" + action: "انتقال به موضوع جدید" + topic_name: "نام موضوع تازه" + error: "اینجا یک ایراد بود برای جابجایی نوشته ها به موضوع جدید." + instructions: + other: "شما نزدیک به ساخت یک موضوع جدید و افزون کردن ان با {{count}} با نوشته های که انتخاب کرده ای. " + merge_topic: + title: "انتقال به موضوع موجود" + action: "انتقال به موضوع موجود" + error: "اینجا یک ایراد برای جابجایی نوشته ها به آن موضوع بود." + instructions: + other: "لطفاً موضوعی را که قصد دارید تا {{count}}از نوشته‌ها را به آن انتقال دهید، انتخاب نمایید." + change_owner: + title: "تغییر مالکیت نوشته ها" + action: "تغییر مالکیت" + error: "آنجا یک ایراد برای تغییر مالکیت آن پست وجود داشت. " + label: "مالک جدید نوشته ها " + placeholder: "نام کاربری مالک جدید" + instructions: + other: "لطفا مالک جدید را برای این {{count}} نوشته انتخاب کنید با {{old_user}}." + instructions_warn: "نکته٬ هر گونه آگاه سازی برای این پست همانند سابق برای کاربر جدید فرستاده نمی شود. .
    اخطار: در حال حاضر٬‌ هیچگونه اطلاعات قبلی به کاربر جدید فرستاده نشده. با احتیاط استفاده شود. " + multi_select: + select: 'انتخاب' + selected: 'انتخاب شده ({{count}}) ' + select_replies: 'انتخاب کردن + جواب دادن' + delete: حذف انتخاب شده ها + cancel: لغو انتخاب + select_all: انتخاب همه + deselect_all: عدم انتخاب همه + description: + other: شما تعداد {{count}} نوشته انتخاب کرده اید + post: + reply: "در حال پاسخ به {{link}} {{replyAvatar}} {{username}}" + reply_topic: "پاسخ به {{link}}" + quote_reply: "پاسخ با نقل قول" + edit: "در حال ویرایش {{link}} {{replyAvatar}} {{username}}" + edit_reason: "دلیل:" + post_number: "نوشته {{number}}" + last_edited_on: "آخرین ویرایش نوشته در" + reply_as_new_topic: "پاسخگویی به عنوان یک موضوع لینک شده" + continue_discussion: "دنبالهٔ موضوع {{postLink}}:" + follow_quote: "برو به نوشته ای که نقل‌قول شده" + show_full: "نمایش کامل نوشته" + show_hidden: 'نمایش درون‌مایهٔ پنهان' + deleted_by_author: + other: "(نوشته های ارسال شده توسط نویسنده،بصورت خودکار در %{count} ساعت حذف می شود مگر اینکه پرچم شود)" + expand_collapse: "باز کردن/گستردن" + gap: + other: "{{count}} نوشته پنهان" + more_links: "{{count}} مورد دیگر..." + unread: "نوشته خوانده نشده است" + has_replies: + other: "پاسخ‌ها" + errors: + create: "متأسفیم، در فرستادن نوشته شما خطایی روی داد. لطفاً دوباره تلاش کنید." + edit: "متأسفیم، در ویرایش نوشته شما خطایی روی داد. لطفاً دوباره تلاش کنید." + upload: "متأسفیم، در بارگذاری آن پرونده خطایی روی داد. لطفاً دوباره تلاش کنید." + attachment_too_large: "با عرض پوزش٬ فایلی را که تلاش برای ارسال آن دارید بسیار بزرگ است (حداکثر سایز {{max_size_kb}}kb است)" + file_too_large: "با عرض پوزش٬ فایلی را که تلاش برای ارسال آن دارید بسیار بزرگ است (حداکثر سایز {{max_size_kb}}kb است)" + too_many_uploads: "متأسفیم، هر بار تنها می‌توانید یک پرونده را بار بگذارید." + too_many_dragged_and_dropped_files: "با عرض پوزش، شما همزمان فقط می توانید 10 فایل را گرفته و رها کنید." + upload_not_authorized: "متأسفیم، پرونده‌ای که تلاش دارید آن را بار بگذارید، پروانه‌دار نیست (پسوندهای پروانه‌دار: {{authorized_extensions})" + image_upload_not_allowed_for_new_user: "با عرض پوزش، کاربران جدید نمی توانند تصویر بار گذاری نماییند." + attachment_upload_not_allowed_for_new_user: "با عرض پوزش، کاربران جدید نمی توانند فایل پیوست بار گذاری نماییند." + attachment_download_requires_login: "با عرض پوزش، شما برای دانلود فایل پیوست باید وارد سایت شوید." + abandon: + confirm: "آیا شما مطمئن هستید که میخواهید نوشته خود را رها کنید؟" + no_value: "خیر، نگه دار" + yes_value: "بله، رها کن" + via_email: "این نوشته از طریق ایمیل ارسال شده است" + wiki: + about: "این یک نوشته ویکی است;کاربران عادی می توانند آن را ویرایش نماییند" + archetypes: + save: ' ذخیره تنظیمات' + controls: + reply: "آغاز ساخت یک پاسخ به این نوشته" + like: "شبیه این نوشته" + has_liked: "شما این نوشته را لایک کرده اید" + undo_like: "برگنداندن لایک" + edit: "ویرایش این نوشته" + edit_anonymous: "با عرض پوزش، اما شما برای ویرایش این نوشته باید وارد سیستم شوید." + flag: "پرچم خصوصی این نوشته برا رسیدگی یا ارسال پیام خصوصی در باره آن" + delete: "حذف این نوشته" + undelete: "بازگردانی این نوشته" + share: "اشتراک گذاری یک لینک در این نوشته" + more: "بیشتر" + delete_replies: + confirm: + other: "آیا شما می خواهید تعداد {{count}} پاسخ را از این نوشته حذف کنید ؟" + yes_value: "بله، پاسخ ها را حذف کن" + no_value: "نه، تنها این نوشته" + admin: "عملیات مدیریت نوشته" + wiki: "ساخت ویکی" + unwiki: "حذف ویکی" + convert_to_moderator: "اضافه کردن رنگ مدیر" + revert_to_regular: "حذف زنگ مدیر" + rebake: "باز سازی اچ تی ام ال" + unhide: "آشکار کردن" + actions: + flag: 'پرچم' + defer_flags: + other: "پرچم تسلیم" + it_too: + off_topic: "هم‌چنین آن یکی را پرچم بزنید" + spam: "هم‌چنین آن یکی را پرچم بزنید" + inappropriate: "هم‌چنین آن یکی را پرچم بزنید" + custom_flag: "هم‌چنین آن یکی را پرچم بزنید" + bookmark: "هم‌چنین نشانک‌گذاری آن یکی" + like: "همچنین آن یکی را پسند کنید" + vote: "هم‌چنین به آن یکی رأی دهید" + undo: + off_topic: "برداشتن پرچم" + spam: "برداشتن پرچم" + inappropriate: "برگرداندن پرچم" + bookmark: "برداشتن نشانک" + like: "خنثی سازی لایک" + vote: "خنثی سازی امتیاز" + people: + off_topic: "{{icons}} برای این مورد پرچم آف-‌تاپیک زد" + spam: "{{icons}} برای این مورد پرچم هرزنامه زد" + spam_with_url: "{{icons}} پرچم گذاری شداین یک هرزنامه است" + inappropriate: "{{icons}} با پرچم گزاری این مورد را نامناسب بدان" + notify_moderators: "{{icons}} مدیران را آگاه کرد" + notify_moderators_with_url: "{{icons}} مدیران را آگاه کرد" + notify_user: "{{icons}} ارسال یک پیام خصوصی" + notify_user_with_url: "{{icons}} ارسال پیام خصوصی" + bookmark: "{{icons}} این را نشانه‌گذاری کرد" + like: "{{icons}} این مورد را پسندید" + vote: "{{icons}} رأی داد به این " + by_you: + off_topic: "شما برای این مورد پرچم آف-تاپیک زدید" + spam: "شما برای این مورد پرچم هرزنامه زدید" + inappropriate: "شما این مورد را نامناسب گزارش کردید." + notify_moderators: "شما این مورد را برای بررسی پرچم زدید" + notify_user: "شما یک پیام به این کاربر ارسال کردید" + bookmark: "شما روی این نوشته نشانک گذاشتید" + like: "شما این نوشته را پسند کردید" + vote: "شما به این نوشته رأی دادید" + by_you_and_others: + off_topic: + other: "شما و {{count}} کاربر دیگر این مورد را آف-تاپیک گزارش کردید" + spam: + other: "شما و {{count}} کاربر دیگر این مورد را هرزنامه گزارش کردید" + inappropriate: + other: "شما و {{count}} کاربر دیگر این مورد را نامناسب گزارش کردید" + notify_moderators: + other: "شما و {{count}} کاربر دیگر این مورد را برای بررسی گزارش کردید" + notify_user: + other: "شما و {{count}} افراد دیگر به این کاربر پیام فرستاده اید" + bookmark: + other: "شما و {{count}} کاربر دیگر روی این نوشته نشانک گذاشتید" + like: + other: "شما و {{count}} کاربر دیگر این مورد را پسند کردید" + vote: + other: "شما و {{count}} کاربر دیگر به این نوشته رأی دادید" + by_others: + off_topic: + other: "{{count}} کاربر ین مورد را آف-تاپیک گزارش کردند" + spam: + other: "{{count}} کاربر ین مورد را هرزنامه گزارش کردند" + inappropriate: + other: "{{count}} کاربر این مورد را نامناسب گزارش کردند" + notify_moderators: + other: "{{count}} کاربر این مورد را برای بررسی گزارش کردند" + notify_user: + other: "{{count}} ارسال پیام به این کاربر" + bookmark: + other: "{{count}} کاربر روی این نوشته نشانک گذاشتند" + like: + other: "{{count}} کاربر این مورد را پسند کردند" + vote: + other: "{{count}} کاربران به این نوشته رأی دادند" + edits: + one: ۱ ویرایش + other: "{{count}} ویرایش" + zero: هیچ ویرایشی + delete: + confirm: + other: "آیا مطمئنید که می‌خواهید همهٔ آن نوشته ها را پاک کنید؟" + revisions: + controls: + first: "بازبینی نخست" + previous: "بازبینی پیشین" + next: "بازبینی پسین" + last: "بازبینی نهایی" + hide: "مخفی کردن نسخه" + show: "نمایش نسخه" + comparing_previous_to_current_out_of_total: "{{previous}} در مقابل {{current}} / {{total}}" + displays: + inline: + title: "نمایش خروجی رندر با اضافات و از بین بردن درون خطی" + button: ' HTML' + side_by_side: + title: "نمایش تفاوت های خروجی رندر شده سو به سو" + button: ' HTML' + side_by_side_markdown: + title: "نمایش تفاوت های خروجی منبع اولیه سو به سو" + button: ' Raw' + details: + edited_by: "ویرایش‌گر:" + category: + can: 'can… ' + none: '(بدون دسته)' + choose: 'انتخاب یک دسته بندی…' + edit: 'ویرایش' + edit_long: "ویرایش" + view: 'نمایش موضوعات در دسته' + general: 'عمومی' + settings: 'تنظیمات' + delete: 'پاک کردن دسته' + create: 'دسته بندی جدید' + save: 'ذخیره سازی دسته بندی' + slug: 'Slug دسته بندی' + slug_placeholder: '(اختیاری) dash-کلمه برای url' + creation_error: خطایی در ساخت این دسته بروز کرد. + save_error: خطایی در ذخیره سازی این دسته بندی روی داد. + name: "نام دسته" + description: "توضیحات" + topic: "دسته بندی موضوع" + logo: "تصویر لوگو برای دسته بندی" + background_image: "تصویر پس زمینه برای دسته بندی" + badge_colors: "رنگ مدال ها" + background_color: "رنگ پس زمینه" + foreground_color: "رنگ پیش زمینه" + name_placeholder: "حداکثر یک با دوکلمه" + color_placeholder: "هر رنگ وب" + delete_confirm: "آیا مطمئنید که می‌خواهید این دسته‌بندی را پاک کنید؟" + delete_error: "هنگام حذف دسته بندی خطایی رخ داد." + list: "فهرست دسته‌ بندی ها" + no_description: "لطفا برای این دسته بندی توضیحاتی اضافه نمایید." + change_in_category_topic: "ویرایش توضیحات" + already_used: 'این رنگ توسط یک دسته بندی دیگر گزیده شده است' + security: "امنیت" + images: "تصاویر" + auto_close_label: "بسته شدن خودکار موضوعات پس از:" + auto_close_units: "ساعت ها" + email_in: "آدرس ایمیل های دریافتی سفارشی:" + email_in_allow_strangers: "تایید ایمیل ها از کاربران ناشناس بدون حساب کاربری" + email_in_disabled: "ارسال پست با ایمیل در تنظیمات سایت غیر فعال است. برای فعال سازی موضوعات جدید را با ایمیل ارسال کنید, " + email_in_disabled_click: 'فعال کردن تنظیمات "email in".' + allow_badges_label: "امکان اهداء مدال در این دسته بندی را بده" + edit_permissions: "ویرایش پروانه‌ها" + add_permission: "افزودن پروانه" + this_year: "امسال" + position: "موقعیت" + default_position: "موقعیت پیش فرض" + position_disabled: "دسته‌ها به‌ترتیب فعالیت نمایش داده می‌شوند. برای مهار ترتیب دسته‌ها در فهرست‌ها، تنظیمات «موقعیت‌های دستهٔ ثابت» را به کار اندازید." + position_disabled_click: 'در تنظیمات "مکان دسته بندی ثابت" فعال را کنید.' + parent: "دسته مادر" + notifications: + watching: + title: "در حال تماشا" + description: "شما به صورت خود کار تمام نوشته های این دسته بندی را مشاهده خواهید کرد، به شما تمام نوشته های جدید در موضوعات، بعلاوه تعداد نوشته های خوانده نشده اطلاع رسانی خواهد شد و نوشته های جدید در کنار موضوعات پدیدار میشود" + tracking: + title: "پیگیری" + description: "شما به صورت خود کار تمام موضوعات جدید در این دسته بندی را پی گیری خواهید کرد . تعداد نوشته های خوانده نشده در کنار موشوعات نمایش داده می شود" + regular: + title: "منظم" + description: "به شما اطلاع داده خواهد شد اگر کسی به شما اشاره @name یا به نوشته های شما پاسخ دهند" + muted: + title: "بی صدا شد" + description: "به شما همه چیز در رابطه با این دسته بندی اطلاع داده خواهد شد ، و آن ها در تب خوانده نشده پدیدار نمی شوند" + flagging: + title: 'تشکر برای کمک به نگه داشتن جامعه ما بصورت مدنی !' + private_reminder: 'پرچم های خصوصی, فقط قابل مشاهده برای مدیران' + action: 'پرچم‌گذاری نوشته' + take_action: "اقدام" + notify_action: 'پیام' + delete_spammer: "پاک کردن هرزنگار" + delete_confirm: "شما در مورد حذف %{posts} نوشته ها و %{topics} موضوغات این کاربر،و حذف حساب کاربری وی، مسدود شدن ثبت نام از این آدرس آی پی%{ip_address} و اضافه شدن ایمیل %{email} به لیست مسدودیت دائمی.\nآیا اطمینان دارید که این کاربر یک اسپمر است ؟" + yes_delete_spammer: "بله، پاک‌کردن هرزنگار" + ip_address_missing: "(N/A)" + hidden_email_address: "(مخفی)" + submit_tooltip: "ایجاد پرچم خصوصی" + take_action_tooltip: "رسیدن سریع به آستانه پرچم، بلافاصله به جای انتظار برای پرچم انجمن" + cant: "متأسفیم، در این زمان نمی‌توانید روی این نوشته پرچم بگذارید." + formatted_name: + off_topic: "آن موضوع قدیمی است" + inappropriate: "این نامناسب است" + spam: "آن هرزنامه است" + custom_placeholder_notify_user: "خاص، سودمند باشید و همیشه مهربان." + custom_placeholder_notify_moderators: "به ما اجازه دهید بدانیم شما در مورد چه چیز آن نگران هستید، و ارائه لینک مربوطه و نمونه آن امکان پذیر است." + custom_message: + at_least: "دست‌کم {{n}} نویسه بنویسید" + more: "{{n}} نویسهٔ دیگر تا..." + left: "{{n}} مانده" + flagging_topic: + title: "تشکر برای کمک به جامعه مدنی انجمن ما!" + action: "پرچم‌گذاری موضوع" + notify_action: "پیام" + topic_map: + title: "چکیدهٔ موضوع" + links_shown: "نمایش همه {{totalLinks}} پیوند ها..." + clicks: + other: "%{count} کلیک ها" + topic_statuses: + warning: + help: "این یک هشدار رسمی است." + bookmarked: + help: "شما بر روی این موضوع نشانک گذاشته‌اید." + locked: + help: "این موضوع بسته شده؛ پاسخ‌های تازه اینجا پذیرفته نمی‌شوند" + unpinned: + title: "خارج کردن از سنجاق" + help: "این موضوع برای شما شنجاق نشده است، آن طور منظم نمایش داده خواهد شد" + pinned_globally: + title: "به صورت سراسری سنجاق شد" + help: "این موضوع بصورت سراسری سنجاق شده است، آن بالای تمامی موضوعات نمایش داده خواهد شد" + pinned: + title: "سنجاق شد" + help: "این موضوع برای شما سنجاق شده است، آن طور منظم در بالای دسته بندی نمایش داده خواهد شد." + archived: + help: "این موضوع بایگانی شده؛ یخ زده و نمی‌تواند تغییر کند." + invisible: + help: "این موضوع از لیست خارج شد: آن درلیست موضوعات نمایش داده نخواهد شد، و فقط از طریق لینک مستقیم در دسترس خواهد بود. " + posts: "نوشته‌ها" + posts_lowercase: "نوشته ها" + posts_long: "این موضوع {{number}} نوشته دارد" + posts_likes_MF: | + این موضوع است {count, plural, one {1 reply} other {# replies}} {ratio, select, + low {with a high like to post ratio} + med {with a very high like to post ratio} + high {with an extremely high like to post ratio} + other {}} + original_post: "نوشته اصلی" + views: "نمایش‌ها" + views_lowercase: "نمایش‌ها" + replies: "پاسخ‌ها" + views_long: "از این موضوع {{number}} بار بازدید شده" + activity: "فعالیت" + likes: "پسندها" + likes_lowercase: "پسند ها" + likes_long: "{{number}} پسند در این موضوع وجود دارد" + users: "کاربران" + users_lowercase: "کاربران" + category_title: "دسته" + history: "تاریخچه" + changed_by: "توسط {{author}}" + raw_email: + title: "ایمیل خام" + not_available: "در دسترس نیست!" + categories_list: "فهرست دسته‌ بندی ها" + filters: + with_topics: "%{filter} موضوعات" + with_category: "%{filter} %{category} موضوعات" + latest: + title: "آخرین ها" + help: "موضوعات با نوشته های تازه" + hot: + title: "داغ" + help: "گزینشی از داغترین موضوعات" + read: + title: "خواندن" + help: "موضوعاتی که شما خواندید٬ بر اساس آخرین خوانده شده ها. " + search: + title: "جستجو" + help: "جستجوی تمام موضوعات" + categories: + title: "دسته‌ بندی ها" + title_in: "دسته بندی - {{categoryName}}" + help: "همهٔ موضوعات در دسته‌ بندی ها جای گرفتند" + unread: + title: + zero: "خوانده‌ نشده‌" + one: "خوانده‌ نشده‌ (۱)" + other: "خوانده‌ نشده‌ ({{count}})" + help: "موضوعاتی که در حال حاضر مشاهده می کنید یا دنبال می کنید با نوشته های خوانده نشده" + lower_title_with_count: + one: "1 خوانده نشده" + other: "{{count}} خوانده نشده" + new: + lower_title_with_count: + one: "۱ تازه" + other: "{{count}} تازه" + lower_title: "جدید" + title: + zero: "جدید" + one: "جدید (1)" + other: "جدید ({{count}})" + help: "موضوعات ایجاد شده در چند روز گذشته" + posted: + title: "نوشته‌های من" + help: "در این موضوع شما نوشته داردید" + bookmarks: + title: "نشانک ها" + help: "موضوعاتی که نشانک‌گذاری کرده‌اید." + category: + title: + zero: "{{categoryName}}" + one: "{{categoryName}} (۱)" + other: "{{categoryName}} ({{count}})" + help: "موضوعات تازه در دستهٔ {{categoryName}}" + top: + title: "بالاترین‌ ها" + help: "بیشترین موضوعات فعال در سال گذشته، ماه ، هفته یا روز" + all: + title: "تمام وقت" + yearly: + title: "سالیانه " + monthly: + title: "ماهیانه " + weekly: + title: "هفتگی" + daily: + title: "روزانه" + all_time: "تمام وقت" + this_year: "امسال" + this_month: "این ماه" + this_week: "این هفته" + today: "امروز" + other_periods: "دیدن بالاترین‌ موضوعات بیشتر " + browser_update: 'متاسفانه,مرورگر شما خیلی قدیمی است برای ادامه کار در این وب سایت. لطفا مرورگر خود را بروز رسانی نمایید.' + permission_types: + full: "ساختن / پاسخ دادن / دیدن" + create_post: "پاسخ دادن / دیدن" + readonly: "دیدن" + admin_js: + type_to_filter: "بنویسید تا فیلتر کنید..." + admin: + title: 'ادمین دیسکورس' + moderator: 'مدیران' + dashboard: + title: "پیشخوان" + last_updated: "آخرین به‌ روزرسانی پیش‌خوان" + version: "نسخه" + up_to_date: "شما به روز هستید!" + critical_available: "به روز رسانی مهم در دسترس است." + updates_available: "بروز رسانی در درسترس است." + please_upgrade: "لطفا ارتقاء دهید!" + no_check_performed: "بررسی برای بروزرسانی انجام نشد. از اجرای sidekiq اطمینان حاصل کنید." + stale_data: "بررسی برای بروزرسانی اخیراً انجام نگرفته است. از اجرای sidekiq اطمینان حاصل کنید." + version_check_pending: "گویا به‌تازگی به‌روز کرده‌اید. عالیه!" + installed_version: "نصب" + latest_version: "آخرین" + problems_found: "ما در نصب Discourse شما چند مشکل پیدا کرده ایم." + last_checked: " آخرین چک شده" + refresh_problems: "تازه کردن" + no_problems: "هیچ مشکلات پیدا نشد." + moderators: 'مدیران:' + admins: 'مدیران کل:' + blocked: 'مسدود شده ها:' + suspended: 'تعلیق شده:' + private_messages_short: "پیام" + private_messages_title: "پیام" + space_free: "{{size}} آزاد" + uploads: "بارگذاری ها" + backups: "پشتیبان ها" + traffic_short: "ترافیک" + traffic: "درخواست های نرم افزار وب" + page_views: "درخواست های API" + page_views_short: "درخواست های API" + show_traffic_report: "نمایش دقیق گزارش ترافیک" + reports: + today: "امروز" + yesterday: "دیروز" + last_7_days: "7 روز اخیر" + last_30_days: "آخرین 30 روز" + all_time: "همه زمان ها" + 7_days_ago: "7 روز پیش" + 30_days_ago: "30 روز پیش" + all: "همه" + view_table: "جدول" + view_chart: "نمودار میله ها" + refresh_report: "تازه کردن گزارش" + start_date: "تاریخ شروع" + end_date: "تاریخ پایان" + commits: + latest_changes: "آخرین تغییرات: لطفا دوباره به روز رسانی کنید!" + by: "توسط" + flags: + title: "پرچم ها" + old: "قدیمی" + active: "فعال" + agree: "موافقت کردن" + agree_title: "تایید این پرچم به عنوان معتبر و صحیح" + agree_flag_modal_title: "موافقت کردن و..." + agree_flag_hide_post: "موافقت با (مخفی کردن نوشته + ارسال پیام خصوصی)" + agree_flag_hide_post_title: "این نوشته را مخفی کن و به کاربر به صورت خودکار پیام ارسال کن تا این نوشته را ویرایش کند" + agree_flag_restore_post: "موافقم (بازگرداندن نوشته)" + agree_flag_restore_post_title: "بازگرداندن این نوشته" + agree_flag: "موافقت با پرچم گذاری" + agree_flag_title: "موافقت با پرچم و نگه داشتن نوشته بدون تغییر" + defer_flag: " واگذار کردن" + defer_flag_title: "حذف این پرچم; بدون نیاز به اقدام در این زمان" + delete: "حذف" + delete_title: "حذف پرچم نوشته و اشاره به." + delete_post_defer_flag: "حذف نوشته و رها کردن پرچم" + delete_post_defer_flag_title: "حذف نوشته; اگر اولین نوشته است، موضوع را حذف نمایید." + delete_post_agree_flag: "حذف نوشته و موافقت با پرچم" + delete_post_agree_flag_title: "حذف نوشته; اگر اولین نوشته است، موضوع را حذف نمایید." + delete_flag_modal_title: "حذف و..." + delete_spammer: "حذف اسپمر" + delete_spammer_title: "حذف کاربر و تمام نوشته ها و موضوعات این کاربر" + disagree_flag_unhide_post: "مخالفم (با رویت نوشته)" + disagree_flag_unhide_post_title: "حذف تمام پرچم های این نوشته و دوباره نوشته را قابل نمایش کن " + disagree_flag: "مخالف" + disagree_flag_title: "انکار این پرچم به عنوان نامعتبر است و یا نادرست" + clear_topic_flags: "تأیید" + clear_topic_flags_title: "موضوع بررسی و موضوع حل شده است. تأیید را بفشارید تا پرچم‌ها برداشته شوند." + more: "(پاسخ های بیشتر...)" + dispositions: + agreed: "موافقت شد" + disagreed: "مخالفت شد" + deferred: "دیرفرست" + flagged_by: "پرچم شده توسط" + resolved_by: "حل شده توسط" + took_action: "زمان عمل" + system: "سیستم" + error: "اشتباهی روی داد" + reply_message: "پاسخ دادن" + no_results: "هیچ پرچمی نیست" + topic_flagged: "این موضوع پرچم خورده است." + visit_topic: " موضوع را ببینید برای اقدام لازم" + was_edited: "نوشته پس از پرچم اول ویرایش شد" + previous_flags_count: "این موضوع در حال حاضر با {{count}} پرچم گذاری شده است." + summary: + action_type_3: + other: "موضوعات غیرفعال x{{count}}" + action_type_4: + other: "نامناسب X{{count}}" + action_type_6: + other: "دلخواه x{{count}}" + action_type_7: + other: "دلخواه x{{count}}" + action_type_8: + other: " هرزنامه x{{count}}" + groups: + primary: "گروه اولیه" + no_primary: "(بدون گروه اولیه)" + title: "گروه‌ها" + edit: "ویرایش گروه‌ها" + refresh: "تازه کردن" + new: "جدید" + selector_placeholder: "نام کاربری را وارد نمایید ." + name_placeholder: "نام گروه، بدون فاصله، همان قاعده نام کاربری" + about: "اعضای گروهت و نام ها را اینجا ویرایش کن" + group_members: "اعضای گروه" + delete: "حذف" + delete_confirm: "حفظ کردن این گروه؟" + delete_failed: "قادر به حذف گروه نیستیم. اگر این یک گروه خودکار است، نمی توان آن را از بین برد." + delete_member_confirm: "حذف کردن '%{username}' از '%{group}' گروه؟" + name: "نام" + add: "اضافه کردن" + add_members: "اضافه کردن عضو" + custom: "دلخواه" + automatic: "خودکار" + automatic_membership_email_domains: " کاربرانی که با ایمیل دامنه ثبت نام کرده اند،دقیقا شبیه دامنه های لیست، بصورت خودکار به این گروه اضافه می شوند :" + automatic_membership_retroactive: "درخواست همان قاعده دامنه ایمیل برای اضافه کردن برای کاربران ثبت نام کرده" + api: + generate_master: "ایجاد کلید اصلی API" + none: "هم اکنون هیچ کلید API فعالی وجود ندارد" + user: "کاربر" + title: "API" + key: "کلید API" + generate: "تولید کردن" + regenerate: "ایجاد مجدد" + revoke: "لغو کردن" + confirm_regen: "آیا می خواهید API موجود را با یک API جدید جایگزین کنید؟" + confirm_revoke: "آیا مطمئن هستید که می خواهید کلید را برگردانید؟" + info_html: "موضوعات تازه پس از آخرین بازدید شما" + all_users: "همه کاربران" + note_html: "این کلید را امن نگهدارید، تمام کاربرانی که آن را دارند می توانند نوشته های دلخواه بسازند به عنوان هر کاربری" + plugins: + title: "افزونه ها" + installed: "افزونه های نصب شده" + name: "نام" + none_installed: "شما هیچ افزونه نصب شده ای ندارید" + version: "نسخه" + change_settings: "تغییر تنظیمات" + howto: "چگونه یک افزونه نصب کنیم؟" + backups: + title: "پشتیبان گیری" + menu: + backups: "پشتیبان ها" + logs: "گزارش ها" + none: "هیچ پشتیبانی در دسترس نیست." + read_only: + enable: + title: "به کار گرفتن شیوهٔ‌ فقط-خواندنی" + label: "غیر فعال کردن مد فقط خواندن" + confirm: "آیا مطمئنید که می‌خواهید حالت فقط-خواندنی را فعال کنید ؟" + disable: + title: " حالت فقط-خواندنی را غیر فعال کن" + label: "غیر فعال کردن مد فقط خواندن" + logs: + none: "هنوز بدون گزارش است ..." + columns: + filename: "نام پرونده" + size: "اندازه" + upload: + label: "بار گذاری" + title: "آپلود یک نسخه پشتیبان برای نمونه" + uploading: "در حال بار گذاری ..." + success: "'{{filename}}' با موفقیت آپلود شد." + error: "هنگام آپلود خطایی رخ می دهد '{{filename}}': {{message}}" + operations: + is_running: "عملیاتی در جریان است..." + failed: "{{operation}} ناموفق شد. لطفا گزارشات را بررسی نمایید." + cancel: + label: "لغو کردن" + title: "کنار گذاشتن عملیات کنونی" + confirm: "آیا مطمئنید که می‌خواهید عملیات کنونی را کنار بگذارید؟" + backup: + label: "پشتیبان گیری" + title: "ساخت یک پشتیبان" + confirm: "آیا می خواهید یک پشیبان گیری جدید را آغاز نمایید ؟" + without_uploads: "بله (فایل ها را شامل نمی شود)" + download: + label: "دانلود" + title: "دانلود پشتیبان" + destroy: + title: "پاک کردن پشتیبان" + confirm: "آیا مطمئنید که می‌خواهید پشتیبان را از بین ببرید؟" + restore: + is_disabled: "بازگردانی در تنظیمات سایت از کار انداخته شده است." + label: "بازیابی" + title: "بازیابی پشتیبان" + confirm: "آیا مطمئنید که می‌خواهید پشتیبان را برگردانید؟" + rollback: + label: "عقبگرد" + title: "عقب گرد پایگاه داده به حالت کار قبلی" + confirm: "آیا مطمئن هستید به بازگشت به حالت کار قبلی پایگاه داده ؟" + export_csv: + user_archive_confirm: "آیا مطمئنید که می‌خواهید نوشته‌هایتان را دانلود کنید؟" + success: "فرایند برون ریزی، به شما از طریق پیام اطلاع رسانی خواهد شد وقتی این فرایند تکمیل شود." + failed: "برون ریزی شکست خورد. لطفا لوگ گزارشات را مشاهده فرمایید." + rate_limit_error: "نوشته ها را می توانید روزی فقط یک بار دانلود کنید. لطفا فردا دوباره امتحان کنید." + button_text: "خروجی گرفتن" + button_title: + user: "برون ریزی لیست کاربر در قالب CSV ." + staff_action: "برون ریزی تمام فعالیت مدیران با فرمت CSV ." + screened_email: "برون ریزی کامل لیست ایمیل به نمایش در آمده در فرمت CSV." + screened_ip: "برون ریزی کامل لیست IP به نمایش در آمده در فرمت CSV." + screened_url: "برون ریزی کامل لیست URL به نمایش در آمده در فرمت CSV." + invite: + button_text: "ارسال دعوتنامه" + button_title: "ارسال دعوتنامه" + customize: + title: "شخصی‌سازی" + long_title: "شخصی‌سازی سایت" + css: "CSS" + header: "سردر" + top: "بالا" + footer: "پانوشته " + head_tag: + text: "" + title: "HTML هایی که قرار داده شده قبل از تگ " + body_tag: + text: "" + title: "HTML هایی که قرار داده شده قبل از تگ " + override_default: "شامل شیوه نامه استاندارد نکن" + enabled: "فعال شد؟" + preview: "پیش‌نمایش" + undo_preview: "حذف پیش نمایش" + rescue_preview: "به سبک پیش فرض" + explain_preview: "مشاهده‌ی سایت با این قالب سفارشی" + explain_undo_preview: "بازگشت به شیوه نامه های فعال شخصی" + explain_rescue_preview: "دیدن سایت با شیوه نامه پیش فرض" + save: "ذخیره سازی" + new: "تازه" + new_style: "سبک جدید" + delete: "پاک کردن" + delete_confirm: "پاک کردن این شخصی‌سازی؟" + about: "اطلاح شیوه نامه CSS و هدر HTML در سایت، اضافه کردنیک سفارشی سازی برای شروع." + color: "رنگ" + opacity: "تاری" + copy: "کپی" + css_html: + title: "CSS/HTML" + long_title: "شخصی‌سازی CSS و HTML" + colors: + title: "رنگ‌ها" + long_title: "طرح‌های رنگی" + about: "تغییر رنگ استفاده شده در انجمن بدون نوشتن کد CSS.با اضافه کردن یک طرح شروع کنید." + new_name: "طرح رنگ جدید" + copy_name_prefix: "نمونه سازی از" + delete_confirm: "این طرح رنگ پاک شود؟" + undo: "خنثی کردن" + undo_title: "برگشت دادن رنگ دخیره شده خود به آخرین رنگی که ذخیره شده است" + revert: "برگشت" + revert_title: "تنظیم مجدد این رنگ به رنگ به پیش فرض دیسکورس." + primary: + name: 'اولی' + description: 'متن بیشتر، آیکون ها، و کناره ها.' + secondary: + name: 'دومی' + description: 'رنگ پس زمینه اصلی، و رنگ متن برخی از دکمه ها.' + tertiary: + name: 'سومین' + description: 'لینک ها، برخی از دکمه ها، اطلاعیه ها، و مد رنگ.' + quaternary: + name: "چهارمی" + description: "لینک های ناوبری." + header_background: + name: "پس زمینه هدر" + description: "رنگ پس زمینه هدر سایت" + header_primary: + name: "هدر اولیه" + description: "نوشته و آیکن های هدر سایت" + highlight: + name: 'برجسته کردن' + description: 'رنگ پس زمینه عناصر را برجسته کرده بر روی صفحه، مانند نوشته ها و موضوعات.' + danger: + name: 'خطرناک' + description: 'رنگ اقدامات را برجسته کردن مانند حذف نوشته ها و موضوعات.' + success: + name: 'موفقیت' + description: 'استفاده شده برای مشخص کردن اقدام موفقیت آمیز بود' + love: + name: 'دوست داشتن' + description: "رنگ دکمه های لایک" + wiki: + name: 'ویکی' + description: "رنگ پایه استفاده شده برای پس زمینه نوشته ها ی ویکی ." + email: + title: "ایمیل " + settings: "تنظیمات" + all: "همه" + sending_test: "فرستادن ایمیل آزمایشی..." + error: "خطا - %{server_error}" + test_error: "در ارسال ایمیل آزمایشی مشکلی وجود داشته است. لطفاً مجدداً تنظیمات ایمیل خود را بررسی کنید، از این که هاستتان اتصالات ایمیل را مسدود نکرده اطمینان حاصل کرده و مجدداً تلاش کنید." + sent: "فرستاده شده" + skipped: "رد داده شده" + sent_at: "ارسال شده در" + time: "زمان" + user: "کاربر" + email_type: "نوع ایمیل" + to_address: "به آدرس" + test_email_address: "آدرس ایمیل برای آزمایش" + send_test: "ارسال ایمیل آزمایشی" + sent_test: "فرستاده شد!" + delivery_method: "روش تحویل" + preview_digest: "پیشنمایش خلاصه" + preview_digest_desc: "پیش نمایش بصورت هفتگی خلاصه نوشته های کاربران غیر فعال ارسال شد." + refresh: "تازه‌سازی" + format: "قالب" + html: "html" + text: "متن" + last_seen_user: "آخرین مشاهده کاربر :" + reply_key: "کلید پاسخ" + skipped_reason: "رد دادن دلیل" + logs: + none: "هیچ آماری یافت نشد." + filters: + title: "فیلتر" + user_placeholder: "نام کاربری" + address_placeholder: "name@example.com" + type_placeholder: "خلاصه، ثبت نام ..." + reply_key_placeholder: "کلید پاسخ" + skipped_reason_placeholder: "دلیل" + logs: + title: "گزارش ها" + action: "عمل" + created_at: "ساخته شد" + last_match_at: "آخرین مطابقت " + match_count: "مطابقت ها" + ip_address: "IP" + topic_id: " ID موضوع" + post_id: "ID نوشته" + delete: 'حذف' + edit: 'ویرایش‌' + save: 'ذخیره ' + screened_actions: + block: "انسداد" + do_nothing: "هیچ کاری نکن" + staff_actions: + title: "عملیات مدیران" + instructions: "بر روی نام کاربر کلیک کنید تا عمل فیلتر لیست انجام شود. بر روی عکس نمایه کلیک کنید تا به صفحه کاربر هدایت شوید." + clear_filters: "همه چیز را نشان بده " + staff_user: "کاربران مدیر" + target_user: "کاربران هدف" + subject: "عنوان" + when: "چه زمانی" + context: "محتوا" + details: "جزئیات" + previous_value: "پیشین" + new_value: "جدید" + diff: "تفاوت" + show: "نمایش" + modal_title: "جزئیات" + no_previous: "هیچ مقدار قبلی وجود ندارد." + deleted: "بدون مقدار جدید. رکورد حذف شد." + actions: + delete_user: "حذف کاربر" + change_trust_level: "تغییر دادن سطح اعتماد" + change_username: "تغییر نام کاربری" + change_site_setting: "تغییر تنظیمات سایت" + change_site_customization: "تغییر سفارشی‌سازی سایت" + delete_site_customization: "پاک‌کردن سفارشی‌سازی سایت" + suspend_user: "کاربر تعلیق شده" + unsuspend_user: "کابر تعلیق نشده" + grant_badge: "اعطای مدال" + revoke_badge: "لغو کردن مدال" + check_email: "برسی ایمل" + delete_topic: "حذف موضوع" + delete_post: "حذف نوشته" + impersonate: "جعل هویت کردن" + anonymize_user: "کاربر ناشناس" + screened_emails: + title: "ایمیل ها نمایش داده شده" + description: "وقتی کسی سعی می کند یک حساب جدید ایجاد کند، از آدرس ایمیل زیر بررسی و ثبت نام مسدود خواهد شد، و یا برخی از اقدام های دیگر انجام می شود." + email: "آدرس ایمیل" + actions: + allow: "اجازه" + screened_urls: + title: "URL های نمایش داده شده" + description: "URLs ذکر شده در اینجا در پست های کاربران مورد استفاده قرار گرفت ٬ که به عنوان اسپم شناسایی شده است" + url: "URL" + domain: "دامنه" + screened_ips: + title: "نمایش IPs" + description: 'آدرس IP که مشاهده شده. "اجازه" استفاده در لیست سفید.' + delete_confirm: "آیا از حذف قانون وضع شده برای {ip_address}% اطمینان دارید؟" + roll_up_confirm: "آیا مطمئن هستید که می خواهید IP مشاهده شده به زیر شبکه بازگشت داده شوند ؟" + rolled_up_some_subnets: "با موفقیت IP مسدود شده بازگشت داده شد به ورودی های این زیر شبکه: %{subnets}." + rolled_up_no_subnet: "هیچ چیز برای ذخیره کردن وجود ندارد." + actions: + block: "انسداد" + do_nothing: "اجازه دادن" + allow_admin: "به مدیر اجازه بده" + form: + label: "جدید:" + ip_address: "نشانی IP" + add: "افزودن" + filter: "جستجو" + roll_up: + text: "جمع کردن" + title: "ساخت مسدود سازی زیر شبکه جدید اگر آنها آخرین 'min_ban_entries_for_roll_up' ورودی ها بودند." + logster: + title: "گزارش خطا" + impersonate: + title: "جعل هویت کردن" + help: "با استفاده ازابزار جعل هویت کردن یک حساب کاربری را برای اشکال زدایی انتخاب نمایید، شما باید بعد از اتمام کار یک بار خارج شوید." + users: + title: 'کاربران' + create: 'اضافه کردن کاربر ادمین' + last_emailed: "آخرین ایمیل فرستاده شده" + not_found: "متاسفیم٬ این کاربر در سیستم ما وجود ندارد." + id_not_found: "متاسفیم٬ این ID کاربری در سیستم ما وجود ندارد." + active: "فعال" + show_emails: "ایمیل عا را نشان بده" + nav: + new: "جدید" + active: "فعال" + pending: "در انتظار" + staff: 'مدیران' + suspended: 'تعلیق شد ' + blocked: 'مسدود شده' + suspect: 'مشکوک' + approved: "تایید شده ؟" + approved_selected: + other: "کاربران تایید شده ({{count}})" + reject_selected: + other: "کاربران رد شده ({{count}})" + titles: + active: 'کاربران فعال' + new: 'کاربران تازه' + pending: 'کاربران در انتظار بررسی' + newuser: 'کاربران در سطح اعتماد 0 (کاربران جدید)' + basic: 'کاربران در سطح اعتماد 1 (کاربر اصلی)' + regular: 'کاربران در سطح اعتماد 2 (عضو رسمی)' + leader: 'کاربران در سطح اعتماد 3 (منظم)' + elder: 'کاربران در سطح اعتماد 4 (رهبر)' + staff: "مدیر" + admins: 'کاربران مدیر' + moderators: 'مدیران' + blocked: 'کاربران مسدود شده' + suspended: 'کاربران تعلیق شده' + suspect: 'کاربران مشکوک' + reject_successful: + other: "کاربران %{count} با موفقیت رد شدند" + reject_failures: + other: "رد کاربران %{count} ناموفق بود" + not_verified: "تایید نشده" + check_email: + title: "ایمیل این کاربران را قابل رویت کن." + text: "نشان دادن" + user: + suspend_failed: "در جریان به تعلیق درآوردن این کاربر اشتباهی رخ داد. {{error}}" + unsuspend_failed: "در جریان خارج کردن این کاربر از تعلیق، اشتباهی رخ داد {{error}}" + suspend_duration: "کاربر چه مدت در تعلیق خواهد بود؟" + suspend_duration_units: "(روز ها)" + suspend_reason_label: "شما چرا معلق شده‌اید؟ این متن بر روی صفحه‌ی نمایه‌ی کاربر برای همه قابل مشاهده خواهد بود، و در هنگام ورود به سیستم نیز به خود کاربر نشان داده خواهد شد. لطفاً خلاصه بنویسید." + suspend_reason: "دلیل" + suspended_by: "تعلیق شده توسط" + delete_all_posts: "پاک کردن همهٔ نوشته‌ها" + delete_all_posts_confirm: "شما می خواهید تعداد %{posts} نوشته و تعداد %{topics} موضوع خذف کنید،آیا مطمئن هستید؟" + suspend: "تعلیق" + unsuspend: "خارج کردن از تعلیق" + suspended: "تعلیق شد ؟" + moderator: "مدیر ؟ " + admin: "مدیر؟" + blocked: "مسدود شد ؟" + show_admin_profile: "مدیر" + edit_title: "ویرایش سرنویس" + save_title: "ذخیره سازی سرنویس" + refresh_browsers: "تازه کردن اجباری مرورگر" + refresh_browsers_message: "ارسال پیام به تمام مشتریان! " + show_public_profile: "نمایش نمایه عمومی" + impersonate: 'جعل هویت کردن' + ip_lookup: "IP Lookup" + log_out: "خروج" + logged_out: "کاربر از کل دستگاه ها خارج شد." + revoke_admin: 'ابطال مدیریت' + grant_admin: 'اعطای مدیریت' + revoke_moderation: 'پس گرفتن مدیریت' + grant_moderation: 'اعطای مدیریت' + unblock: 'رفع انسداد' + block: ' انسداد' + reputation: ' اعتبار' + permissions: پروانه‌ها + activity: فعالیت + like_count: لایک‌های اعطایی/ دریافتی + last_100_days: 'در 100 روز گذشته' + private_topics_count: موضوعات خصوصی + posts_read_count: خواندن نوشته ها + post_count: نوشته ها ایجاد شد + topics_entered: ' موضوعات بازدید شده' + flags_given_count: پرچم های داده شده + flags_received_count: پرچم های دریافت شده + warnings_received_count: اخطار های دریافت شده + flags_given_received_count: 'پرچم های داده شده/ دریافت شده' + approve: 'تصویب' + approved_by: "تصویب شده توسط" + approve_success: "کاربر تایید شده و ایمیل با دستورالعمل فعال سازی ارسال شد." + approve_bulk_success: "موفقیت! همه کاربران انتخاب شده تایید و اطلاعیه ارسال شد." + time_read: "خواندن زمان" + anonymize: "کاربر ناشناس" + anonymize_confirm: "آیا مطمئن هستید که می خواهید این حساب کاربری را ناشناس کنید؟ این ایمیل و نام کاربری را تغییر و تمام اطلاعات نمایه را بطور مجدد تنظیم می کند" + anonymize_yes: "بله ، این یک حساب کاربری ناشناس است." + anonymize_failed: "یک مشکل با حساب کاربری ناشناس وجود دارد" + delete: "پاک کردن کاربر" + delete_forbidden_because_staff: "مدیران کل و مدیران را نمی‌توانید پاک کنید" + delete_posts_forbidden_because_staff: "نمی توان همه نوشته های مدیران کل و مدیران را حذف کرد" + delete_forbidden: + other: "کاربرانی را که دارای موضوع هستند نمی‌توانید پاک کنید. پیش از تلاش برای پاک کردن کاربر، نخست همهٔ‌ موضوعاتش را پاک کنید. (موضوعات که بیش از %{count} روز پیش فرستاده شده باشند، نمی‌توانند پاک شوند.)" + cant_delete_all_posts: + other: "نمی توان همه نوشته ها را خذف کرد. برخی نوشته ها قدیمی تر از %{count} هستند.(در delete_user_max_post_age setting.)" + cant_delete_all_too_many_posts: + other: "نمی توان همه نوشته ها را خذف کرد. چون تعداد کاربران از %{count} تعداد نوشته ها بیشتر است.(delete_all_posts_max)" + delete_confirm: "آیا مطمئن هستید که می خواهید این کاربر را حذف کنید ؟ این برای همیشه است!" + delete_and_block: "حذف و مسدودکن این IP و آدرس ایمل را" + delete_dont_block: "فقط حذف" + deleted: "کاربر پاک شد." + delete_failed: "خطایی در پاک کردن آن کاربر روی داد. پیش از تلاش برای پاک کردن کاربر، مطمئن شوید همهٔ‌ موضوعات پاک شوند." + send_activation_email: "فرستادن ایمیل فعال‌سازی" + activation_email_sent: "یک ایمیل فعال‌سازی فرستاده شده است." + send_activation_email_failed: "در فرستادن ایمیل فعال‌سازی دیگری مشکل وجود دارد. \n%{error}" + activate: "فعال‌سازی شناسه کاربری" + activate_failed: "در فعال‌سازی این کاربر مشکلی پیش آمد." + deactivate_account: "غیرفعال‌کردن حساب کاربری" + deactivate_failed: "برای غیرفعال کردن این کاربر مشکلی وجود دارد." + unblock_failed: ' برداشتن رفع انسداد این کاربر مشکلی وجود دارد.' + block_failed: 'برای انسداد این کاربر مشکلی وجود دارد.' + deactivate_explanation: "کاربر غیر فعال باید دوباره ایمیل خود را تایید کند." + suspended_explanation: "کاربر تعلیق شده نمی‌تواند وارد سیستم شود." + block_explanation: "کاربر انسداد شده نمی‌تواند نوشته ای بگذارد یا موضوعی آغاز کند." + trust_level_change_failed: "در تغییر سطح اعتماد کاربر مشکلی پیش آمد." + grant_admin_failed: "در اعطای اختیارات مدیریت مشکلی پیش آمد." + grant_moderation_failed: "یک مشکل در اعطای امتیازات مدیریت وجود دارد." + suspend_modal_title: "کاربر تعلیق شده" + trust_level_2_users: "کاربران سطح اعتماد 2" + trust_level_3_requirements: " سطح اعتماد 3 مورد نیاز است" + trust_level_locked_tip: "سطح اعتماد بسته شده است. سیستم قادر به ترفیع/تنزل درجه‌ی کاربر نیست." + trust_level_unlocked_tip: "سطح اعتماد باز شده است. سیستم قادر به ترفیع/تنزل درجه‌ی کاربر خواهد بود." + lock_trust_level: "بستن سطح اعتماد" + unlock_trust_level: "باز کردن سطح اعتماد" + tl3_requirements: + title: "شرایط لازم برای سطح اعتماد 3." + table_title: "در ۱۰۰ روز اخیر:" + value_heading: "مقدار" + requirement_heading: "نیازمندی‌ها" + visits: "بازدیدها" + days: "روز ها" + topics_replied_to: "پاسخ به موضوعات" + topics_viewed: "بازدید موضوعات" + topics_viewed_all_time: "موضوعات مشاهده شده ( تمام مدت )" + posts_read: "نوشته‌های خوانده شده" + posts_read_all_time: "نوشته‌های خوانده شده ( تمام مدت )" + flagged_posts: "نوشته‌های پرچم‌خورده" + flagged_by_users: "کاربرانی که پرچم خورده‌اند" + likes_given: "لایک‌های اعطایی" + likes_received: "لایک‌های دریافتی" + likes_received_days: "لایک‌های دریافتی: روزهای خاص" + likes_received_users: "لایک‌های دریافتی: کاربران خاص" + qualifies: "دارای صلاحیت برای سطح اعتماد 3." + does_not_qualify: "فاقد صلاحیت برای سطح اعتماد 3." + will_be_promoted: "به‌زودی ترفیع درجه خواهد گرفت." + will_be_demoted: "به‌زودی تنزل درجه خواهد گرفت." + on_grace_period: "در حال حاضر در مهلت ارتقا٬ تنزل نخواهد گرفت." + locked_will_not_be_promoted: "سطح اعتماد بسته شده. دیگر ترفیع درجه نخواهد گرفت." + locked_will_not_be_demoted: "سطح اعتماد بسته شده. دیگردرجه تنزل نخواهد گرفت." + sso: + title: "ورود یکپارچه به سیستم" + external_id: " ID خارجی" + external_username: "نام کاربری" + external_name: "نام" + external_email: "ایمیل" + external_avatar_url: "URL تصویر نمایه" + user_fields: + title: "زمینه های کاربر" + help: "به فیلدهایی که کاربرانتان می‌توانند پر کنند اضافه کنید." + create: "ساخت فیلد برای کاربر" + untitled: "بدون عنوان" + name: "نام فیلد" + type: "نوع فیلد" + description: "توضیحات فیلد" + save: "ذخیره کردن" + edit: "ویرایش" + delete: "حذف" + cancel: "لغو کردن" + delete_confirm: "آیا برای حذف این فیلد کاربری مطمئن هستید ؟" + required: + title: "مورد نیاز در ثبت نام؟" + enabled: "مورد نیاز " + disabled: "مورد نیاز نیست " + editable: + title: "قابل ویرایش بعد از ثبت نام؟" + enabled: "قابل ویرایش" + disabled: "غیر قابل ویرایش" + show_on_profile: + title: "در نمایه عمومی نمایش داده شود؟" + enabled: "نمایش در نمایه" + disabled: "در نمایه نشان ندهد" + field_types: + text: 'فیلد متن' + confirm: 'تاییدیه' + site_text: + none: "یک دسته‌ از محتویات را برای آغاز ویرایش انتخاب کنید." + title: 'محتویات متن' + site_settings: + show_overriden: 'تنها بازنویسی‌شده‌ها را نمایش بده' + title: 'تنظیمات' + reset: 'بازنشانی' + none: 'هیچ کدام' + no_results: "چیزی یافت نشد." + clear_filter: "واضح" + add_url: "اضافه کردن URL" + categories: + all_results: 'همه' + required: 'مورد نیاز' + basic: 'راه اندازی اولیه' + users: 'کاربران' + posting: 'در حال نوشتن' + email: 'رایانامه' + files: 'پرونده‌ها' + trust: 'سطح اعتماد' + security: 'امنیت' + onebox: "یک جعبه" + seo: 'SEO' + spam: 'هرزنامه' + rate_limits: 'میزان محدودیت ها ' + developer: 'توسعه دهنده' + embedding: "توکاری" + legal: "حقوقی" + uncategorized: 'دیگر' + backups: "پشتیبان‌ها" + login: "ورود" + plugins: "افزونه ها" + badges: + title: مدال ها + new_badge: مدال جدید + new: جدید + name: نام + badge: مدال + display_name: نام نمایشی + description: توضیح + badge_type: نوع مدال + badge_grouping: گروه + badge_groupings: + modal_title: گروه بندی مدال + granted_by: اعطا شده توسط + granted_at: اعطا شده در + reason_help: (یک لینک به یک نوشته یا موضوع) + save: ذخیره سازی + delete: پاک کردن + delete_confirm: آیا مطمئنید که می‌خواهید این مدال را پاک کنید؟ + revoke: 'ابطال ' + reason: دلیل + expand: گستردن hellip&; + revoke_confirm: آیا مطمئنید که می‌خواهید این مدال را باطل کنید؟ + edit_badges: ویرایش مدال‌ها + grant_badge: اعطای مدال + granted_badges: مدال های اعطایی + grant: اهداء + no_user_badges: "%{name} هیچ مدالی دریافت نکرده است." + no_badges: مدالی برای اعطا کردن وجود ندارد. + none_selected: "برای شروع یک مدال رو انتخاب کنید" + allow_title: اجازه استفاده مدال برای عنوان + multiple_grant: نمی توان چندین با اهداء کرد + listable: نشان دادن مدال در صفحه مدال های عمومی + enabled: به‌کارگیری مدال + icon: آیکن + image: تصویر + icon_help: "استفاده از یک نوع فونا باحال یا URL به یک تصویر" + query: پرس جوی مدال (SQL) + target_posts: پرس و جو نوشته های هدف + auto_revoke: لفو اجرای روزانه پروس و جو + show_posts: نمایش نوشته ای که در آن مدال اهداء شده در صفحه مدال ها + trigger: گیره + trigger_type: + none: "به‌روزرسانی روزانه" + post_action: "هنگامی‌که کاربری روی نوشته ای کاری انجام می‌دهد" + post_revision: "هنگامی که یک کاربر نوشته ای ویرایش می‌کند یا فرستد" + trust_level_change: "هنگامی که کاربری سطح اعتماد را تغییر می‌دهد" + user_change: "هنگامی که کاربری ویرایش یا ساخته می‌شود" + preview: + link_text: "پیش نمایش مدال های اعطایی" + plan_text: "پیشنمایش با طرح پرسش" + modal_title: "پیشنمایش پرسش مدال " + sql_error_header: "خطایی با پرسش وجود دارد" + error_help: "پیروی کنید از پیوند برای کمک در رابطه با پرسش مدال ها" + bad_count_warning: + header: "هشدار!" + text: "نمونه اعطای گم شده وجود دارد. این اتفاق زمانی می افتد که پرس و جوuser IDs یا post IDs که وجود ندارد را برمی گرداند. این ممکن است باعث خیلی از نتایج غیر منتظره بعد از آن شود - لطفا دوباره بررسی کنید." + grant_count: + zero: "هیچ مدالی برای اختصاص دادن وجود ندارد" + one: "1 مدال اختصاص داده شد." + other: "٪ {COUNT} مدال ها اختصاص داده شد" + sample: "نمونه:" + grant: + with: %{username} + with_post: %{username} برای نوشته در %{link} + with_post_time: %{username} برای نوشته %{link} در %{time} + with_time: %{username} در %{time} + emoji: + title: "شکلک" + help: "اضافه کردن شکلک های جدید که در دسترس همگان خواهد بود.(PROTIP: کشیدن و رها کردن فایل های چندگانه در یک بار)" + add: "افزودن شکلک جدید" + name: "نام" + image: "تصویر" + delete_confirm: "آیا مطمئنید که می‌خواهید شکلک :{name}%: را پاک کنید؟" + lightbox: + download: "دریافت" + search_help: + title: 'کمک جستجو' + keyboard_shortcuts_help: + title: 'میانبر‌های صفحه کلید' + jump_to: + title: 'بپر به' + home: 'g, h خانه (آخرین ها)' + latest: 'g, lآخرین' + new: 'g, n جدید' + unread: 'g, u خوانده نشده' + categories: 'g, c دسته بندی ها' + top: 'g, t بالا ترین' + navigation: + title: 'راهبری' + jump: '# رفتن به نوشته #' + back: 'برگشت' + up_down: 'k/j انتقال انتخاب شده ↑ ↓' + open: 'o or Enter باز کردن موضوع انتخاب شده' + next_prev: 'shift+j/shift+k بخش قبلی/بعدی' + application: + title: 'نرم‌افزار' + create: 'c ساختن یک موضوع جدید' + notifications: 'n باز کردن آگاه‌سازی‌ها' + site_map_menu: '= باز کردن منوی سایت' + user_profile_menu: 'p باز کردن منوی کاربران' + show_incoming_updated_topics: '. نمایش موضوعات بروز شده' + search: '/ جستجو' + help: '? باز کردن راهنمای کیبورد' + dismiss_new_posts: 'x, rبستن جدید/نوشته ها ' + dismiss_topics: 'x, t بستن موضوعات' + actions: + title: 'اقدامات' + bookmark_topic: 'f تعویض نشانک موضوع' + pin_unpin_topic: 'shift+p سنجاق /لغو سنجاق موضوع' + share_topic: 'shift+s اشتراک گذاری نوشته' + share_post: 'به اشتراک‌گذاری نوشته' + reply_as_new_topic: 't پاسخگویی به عنوان یک موضوع لینک شده' + reply_topic: 'shift+r پاسخ به موضوع' + reply_post: 'r پاسخ به نوشته' + quote_post: 'نقل‌قول نوشته' + like: 'l پسندیدن نوشته' + flag: '! پرچم‌گذاری نوشته' + bookmark: 'b نشانک‌گذاری نوشته' + edit: 'e ویرایش نوشته' + delete: 'd پاک کردن نوشته' + mark_muted: 'm, m بی صدا کردن موضوع' + mark_regular: 'm, r تنظیم ( پیش فرض) موضوع' + mark_tracking: 'b>m, t پیگری جستار' + mark_watching: 'm, w مشاهده موضوع' + badges: + title: مدال‌ها + allow_title: "می تواند برای یک عنوان استفاده شود" + multiple_grant: "می توان چندین بار اهدا کرد" + badge_count: + other: "%{count} مدال" + more_badges: + other: "+%{count} بیش‌تر" + granted: + other: "%{count} اعطا شد" + select_badge_for_title: انتخاب یک مدال برای استفاده در عنوان خود + none: "" + badge_grouping: + getting_started: + name: شروع + community: + name: انجمن + trust_level: + name: سطح اعتماد + other: + name: دیگر + posting: + name: در حال نوشتن + badge: + editor: + name: ویرایشگر + description: نخستین ویرایش نوشته + basic_user: + name: اساسی + description: اعطا کردن تمام عملکرد های ضروری برای انجمن + member: + name: عضو + description: اعطا کردن دعوت نامه + regular: + name: منظم + description: a> دعوت نامه تغییر دسته بندی، تغییر نام دهید، به دنبال کردن لینک ها و سالن + leader: + name: رهبر + description: 'اعطا کردن + + ویرایش سراسری، پین، بستن، بایگانی، تقسیم و ادغام' + welcome: + name: خوش آمدید + description: ' یک پسند دریافت شد' + autobiographer: + name: نویسندهء شرح حال + description: فیلد کاربر نمایه اطلاعات + anniversary: + name: سالگرد + description: عضو فعال به مدت یک سال،ارسال شده حداقل یک بار + nice_post: + name: نوشته‌ی دلپذیر + description: دریافت 10 پسند در یک نوشته. این نشان را می توان چندین بار اعطا کرد + good_post: + name: نوشته‌ی خوب + description: دریافت 25 پسند در یک نوشته. این نشان را می توان چندین بار اعطا کرد + great_post: + name: نوشته‌ی عالی + description: دریافت 50 پسند در یک نوشته. این نشان را می توان چندین بار اعطا کرد + nice_topic: + name: موضوع دلپذیر + description: دریافت 10 پسند در یک موضوع. این نشان را می توان چندین بار اعطا کرد + good_topic: + name: موضوع خوب + description: دریافت 25 پسند در یک موضوع. این نشان را می توان چندین بار اعطا کرد + great_topic: + name: موضوع عالی + description: دریافت 50 پسند در یک موضوع. این نشان را می توان چندین بار اعطا کرد + nice_share: + name: ا‌شتراک‌گذاری خوب + description: اشتراک گذاری نوشته با 25 بازدید کننده منحصر به فرد + good_share: + name: اشتراک‌گذاری خوب + description: اشتراک گذاری نوشته با 300 بازدید کننده منحصر به فرد + great_share: + name: اشتراک‌گذاری عالی + description: اشتراک گذاری نوشته با 1000 بازدید کننده منحصر به فرد + first_like: + name: نخستین پسند + description: نوشته ای را پسندید + first_flag: + name: پرچم نخست + description: نوشته را پرچم زد + first_share: + name: نخستین اشتراک‌گذاری + description: نوشته ای به اشتراک گذاشته شده + first_link: + name: پیوند نخست + description: لینک های داخلی اضافه شده به دیگر موضوعات + first_quote: + name: نقل‌قول نخست + description: نقل قول یک کاربر + read_guidelines: + name: خواندن دستورالعمل ها + description: خواندن دستورالعمل های انجمن + reader: + name: خواننده + description: مطالعه تمام نوشته‌هایی در یک موضوع که بیش از 100 نوشته دارد. + google_search: | +

    جستجو با گوگل

    +

    + + + + + +

    diff --git a/config/locales/client.fi.yml b/config/locales/client.fi.yml index fbe1f216dd..0ee1226e4e 100644 --- a/config/locales/client.fi.yml +++ b/config/locales/client.fi.yml @@ -92,6 +92,7 @@ fi: email: 'lähetä tämä linkki sähköpostissa' topic_admin_menu: "ketjun ylläpitotoimet" emails_are_disabled: "Ylläpitäjä on estänyt kaiken lähtevän sähköpostiliikenteen. Mitään sähköposti-ilmoituksia ei lähetetä." + s3_deprecation_warning: "VAROITUS! Kuvien ja liitetiedostojen tallentamisen Amazon S3-tuki lakkautetaan kohta. Ole hyvä ja seuraa ohjeita siirtyäksesi paikalliseen tallennukseen." edit: 'muokkaa tämän ketjun otsikkoa ja aluetta' not_implemented: "Tätä toimintoa ei ole vielä toteutettu, pahoittelut!" no_value: "Ei" @@ -152,12 +153,16 @@ fi: bookmarked: title: "Kirjanmerkki" clear_bookmarks: "Tyhjennä kirjanmerkit" + help: + bookmark: "Klikkaa lisätäksesi ketjun ensimmäisen viestin kirjanmerkkeihin" + unbookmark: "Klikkaa poistaaksesi kaikki tämän ketjun kirjanmerkit" bookmarks: not_logged_in: "pahoittelut, sinun täytyy kirjautua sisään voidaksesi lisätä viestin kirjanmerkin" created: "olet lisännyt tämän viestin kirjainmerkkeihisi" not_bookmarked: "olet lukenut tämän viestin, klikkaa lisätäksesi sen kirjanmerkkeihisi" last_read: "tämä on viimeisin viesti jonka olet lukenut, klikkaa lisätäksesi sen kirjanmerkkeihisi" remove: "Poista kirjanmerkki" + confirm_clear: "Oletko varma, että haluat poistaa kaikki kirjanmerkit tässä ketjussa?" topic_count_latest: one: "{{count}} uusi tai päivittynyt ketju." other: "{{count}} uutta tai päivittynyttä ketjua." @@ -181,6 +186,8 @@ fi: undo: "Peru" revert: "Palauta" failed: "Epäonnistui" + switch_to_anon: "Anonyymi tila" + switch_from_anon: "Poistu anonyymistä tilasta" banner: close: "Sulje tämä banneri." choose_topic: @@ -203,14 +210,22 @@ fi: sent_by_user: "Lähettäjä {{user}}" sent_by_you: "Lähettäjä sinä" directory: + filter_name: "suodata tunnuksen perusteella" title: "Käyttäjät" - likes_given: "Annetut tykkäykset" - likes_received: "Saadut tykkäykset" - topics_entered: "Mukana ketjuissa" + likes_given: "Annetut" + likes_received: "Saadut" + topics_entered: "Avatut" + topics_entered_long: "Avattuja ketjuja" time_read: "Lukuaika" topic_count: "Ketjut" + topic_count_long: "Luotuja ketjuja" post_count: "Vastaukset" - no_results: "Tänä aikana ei löytynyt tuloksia" + post_count_long: "Kirjoitettuja vastauksia" + no_results: "Ei tuloksia." + days_visited: "Vierailut" + days_visited_long: "Päiviä vierailtu" + posts_read: "Luetut" + posts_read_long: "Luettuja viestejä" total_rows: one: "1 käyttäjä" other: "%{count} käyttäjää" @@ -281,8 +296,8 @@ fi: mute: "Vaimenna" edit: "Muokkaa asetuksia" download_archive: "Lataa viestini" - new_private_message: "Uusi yksityisviesti" - private_message: "Yksityisviesti" + new_private_message: "Uusi viesti" + private_message: "Viesti" private_messages: "Viestit" activity_stream: "Toiminta" preferences: "Asetukset" @@ -319,6 +334,9 @@ fi: delete_yourself_not_allowed: "Et voi poistaa käyttäjätiliäsi juuti nyt. Sinun tulee pyytää ylläpitäjää poistamaan tilisi." unread_message_count: "Viestit" admin_delete: "Poista" + users: "Käyttäjät" + muted_users: "Vaimennetut" + muted_users_instructions: "Älä näytä ilmoituksia näiltä käyttäjiltä" staff_counters: flags_given: "hyödyllisiä lippuja" flagged_posts: "liputettuja viestejä" @@ -357,7 +375,8 @@ fi: uploaded_avatar_empty: "Lisää oma kuva" upload_title: "Lataa oma kuva" upload_picture: "Valitse kuva" - image_is_not_a_square: "Varoitus: olemme rajanneet kuvaasti; se ei ole neliön muotoinen." + image_is_not_a_square: "Varoitus: olemme rajanneet kuvaasti; korkeus ja leveys eivät olleet samoja" + cache_notice: "Profiilikuva on vaihdettu onnistuneesti, mutta se ei välttämättä näy heti" change_profile_background: title: "Profiilin taustakuva" instructions: "Profiilin taustakuvan leveys on 850 pikseliä." @@ -377,6 +396,7 @@ fi: name: title: "Nimi" instructions: "Koko nimesi (valinnainen)" + instructions_required: "Koko nimesi" too_short: "Nimesi on liian lyhyt" ok: "Nimesi vaikuttaa hyvältä" username: @@ -414,8 +434,8 @@ fi: every_three_days: "joka kolmas päivä" weekly: "viikottain" every_two_weeks: "joka toinen viikko" - email_direct: "Lähetä minulle sähköposti, jos joku lainaa viestiäni, vastaa viestiini tai viittaa @nimeeni." - email_private_messages: "Lähetä minulle sähköposti jos joku lähettää minulle yksityisviestin" + email_direct: "Lähetä minulle sähköposti, jos joku lainaa viestiäni, vastaa viestiini, viittaa @nimeeni, tai kutsuu minut viestiketjuun" + email_private_messages: "Lähetä minulle sähköposti, kun joku lähettää minulle viestin" email_always: "Älä jätä lähettämättä sähköposti-ilmoituksia, vaikka olen aktiivinen palstalla." other_settings: "Muut" categories_settings: "Keskustelualueet" @@ -463,7 +483,7 @@ fi: none: "Et ole kutsunut vielä ketään. Voit lähettää yksittäisiä kutsuja tai kutsua useita ihmisiä kerralla lähettämällä massakutsun tiedostosta." text: "Lähetä massakutsu tiedostosta" uploading: "Lähettää..." - success: "Tiedoston lähettäminen onnistui. Saat yksityisviestillä tiedon, kun prosessi on valmis." + success: "Tiedoston lähettäminen onnistui. Saat viestin, kun prosessi on valmis." error: "Tiedoston '{{filename}}' lähetyksen aikana tapahtui virhe: {{message}}" password: title: "Salasana" @@ -487,7 +507,7 @@ fi: stream: posted_by: "Viestin kirjoittaja" sent_by: "Lähettänyt" - private_message: "yksityisviesti" + private_message: "viesti" the_topic: "ketju" loading: "Lataa..." errors: @@ -540,9 +560,9 @@ fi: enable: "Piilota poistetut viestit" disable: "Näytä poistetut viestit" private_message_info: - title: "Yksityisviesti" + title: "Viesti" invite: "Kutsu muita..." - remove_allowed_user: "Haluatko varmasti poistaa käyttäjän {{name}} tästä yksityisestä keskustelusta?" + remove_allowed_user: "Haluatko varmasti poistaa käyttäjän {{name}} tästä keskustelusta?" email: 'Sähköposti' username: 'Käyttäjätunnus' last_seen: 'Nähty' @@ -554,7 +574,7 @@ fi: title: "Luo uusi tunnus" failed: "Jotain meni pieleen. Ehkäpä tämä sähköpostiosoite on jo rekisteröity, kokeile salasana unohtui -linkkiä." forgot_password: - title: "Salasana unohtui" + title: "Salasanan nollaus" action: "Unohdin salasanani" invite: "Syötä käyttäjätunnuksesi tai sähköpostiosoitteesi, niin lähetämme sinulle salasanan nollausviestin." reset: "Nollaa salasana" @@ -581,6 +601,7 @@ fi: requires_invite: "Pahoittelut, tämä palsta on vain kutsutuille käyttäjille." not_activated: "Et voi vielä kirjautua sisään. Lähetimme aiemmin vahvistusviestin osoitteeseen {{sentTo}}. Seuraa viestin ohjeita ottaaksesi tunnuksen käyttöön." not_allowed_from_ip_address: "Kirjautuminen estetty tästä IP-osoitteesta." + admin_not_allowed_from_ip_address: "Et voi kirjautua ylläpitäjänä tästä IP-osoitteesta." resend_activation_email: "Klikkaa tästä lähettääksesi vahvistusviestin uudelleen." sent_activation_email_again: "Lähetimme uuden vahvistusviestin sinulle osoitteeseen {{sentTo}}. Viestin saapumisessa voi kestää muutama minuutti, muista tarkastaa myös roskapostikansio." google: @@ -626,8 +647,8 @@ fi: reply_here: "Vastaa tänne" reply: "Vastaa" cancel: "Peruuta" - create_topic: "Uusi ketju" - create_pm: "Yksityisviesti" + create_topic: "Luo ketju" + create_pm: "Viesti" title: "Tai paina Ctrl+Enter" users_placeholder: "Lisää käyttäjä" title_placeholder: "Kuvaile lyhyesti mistä tässä ketjussa on kyse?" @@ -677,11 +698,11 @@ fi: units: "(# tuntia)" examples: 'Syötä aika tunteina (24).' notifications: - title: "ilmoitukset @nimeen viittauksista, vastauksista omiin viesteihin ja ketjuihin, yksityisviesteistä ym." + title: "ilmoitukset @nimeen viittauksista, vastauksista omiin viesteihin ja ketjuihin, viesteistä ym." none: "Ilmoitusten lataaminen ei onnistunut." more: "vanhat ilmoitukset" total_flagged: "yhteensä liputettuja viestejä" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -689,6 +710,7 @@ fi: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} hyväksyi kutsusi

    " moved_post: "

    {{username}} siirsi {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -715,7 +737,7 @@ fi: user: "Etsi @{{username}} viestejä" category: "Etsi alueelta \"{{category}}\"" topic: "Etsi tästä ketjusta" - private_messages: "Etsi yksityisviesteistä" + private_messages: "Etsi viesteistä" site_map: "siirry toiseen ketjuun tai alueelle" go_back: 'mene takaisin' not_logged_in_user: 'käyttäjäsivu, jossa on tiivistelmä käyttäjän viimeaikaisesta toiminnasta sekä käyttäjäasetukset' @@ -735,6 +757,7 @@ fi: close_topics: "Sulje ketjut" archive_topics: "Arkistoi ketjut" notification_level: "Vaihda ilmoitusasetusta" + choose_new_category: "Valitse uusi alue ketjuille:" selected: one: "Olet valinnut yhden ketjun." other: "Olet valinnut {{count}} ketjua." @@ -748,6 +771,7 @@ fi: bookmarks: "Et ole vielä merkinnyt kirjanmerkkejä." category: "Alueella {{category}} ei ole ketjua." top: "Huippuketjuja ei ole." + search: "Hakutuloksia ei löytynyt." educate: new: '

    Uudet ketjut ilmestyvät tähän.

    Oletuksena, ketjut tulkitaan uusiksi ja niiden yhteydessä näytetäänuusi-merkki, kun ne on luotu edellisen kahden päivän aikana.

    Voit muuttaa tätä käyttäjäasetuksistasi.

    ' unread: '

    Lukemattomat viestit ilmestyvät tähän.

    Oletuksena, ketjut tulkitaan lukemattomiksi ja niiden yhteydessä näytetään 1 jos olet:

    • luonut ketjun
    • vastannut ketjuun
    • lukenut ketjua enemmän, kuin 4 minuuttia

    tai, jos olet erikseen merkannut ketjun seurantaan tai tarkkailuun ketjun lopusta löytyvästä painikkeesta.

    Voit muuttaa tätä käyttäjäasetuksistasi.

    ' @@ -761,11 +785,12 @@ fi: category: "Alueen {{category}} ketjuja ei ole enempää." top: "Huippuketjuja ei ole enempää." bookmarks: "Merkattuja ketjuja ei ole enempää." + search: "Hakutuloksia ei ole enempää." topic: filter_to: "{{post_count}} viestiä ketjussa" create: 'Uusi ketju' create_long: 'Luo uusi ketju' - private_message: 'Luo yksityisviesti' + private_message: 'Luo viesti' list: 'Ketjut' new: 'uusi ketju' unread: 'lukemattomat' @@ -843,13 +868,13 @@ fi: '0': 'Et saa mitään ilmoituksia tästä ketjusta.' watching_pm: title: "Tarkkaile" - description: "Saat ilmoituksen kaikista uusista viesteistä tässä yksityisviestiketjussa. Uusien ja lukemattomien viestien lukumäärä näytetään ketjun yhteydessä." + description: "Saat ilmoituksen kaikista uusista viesteistä tässä viestiketjussa. Uusien ja lukemattomien viestien lukumäärä näytetään ketjun yhteydessä." watching: title: "Tarkkaile" description: "Saat ilmoituksen kaikista uusista viesteistä tässä ketjussa. Uusien ja lukemattomien viestien lukumäärä ilmestyy näkyviin ketjun yhteydessä." tracking_pm: title: "Seuraa" - description: "Lukemattomien ja uusien viestien lukumäätä näytetään yksityisviestin yhteydessä. Saat ilmoituksen jos joku mainitsee @nimesi tai vastaa sinulle viestissään." + description: "Lukemattomien ja uusien viestien lukumäärä näytetään viestin yhteydessä. Saat ilmoituksen, jos joku mainitsee @nimesi tai vastaa sinulle viestissään." tracking: title: "Seuraa" description: "Lukemattomien ja uusien viestien lukumäärä näytetään ketjun yhteydessä. Saat ilmoituksen jos joku mainitsee @nimesi tai vastaa sinulle viestissään." @@ -858,10 +883,10 @@ fi: description: "Saat ilmoituksen jos joku mainitsee @nimesi tai vastaa viestiisi." regular_pm: title: "Tavallinen" - description: "Saat ilmoituksen jos joku mainitsee @nimesi tai vastaa viestiisi yksityisessä keskustelussa." + description: "Saat ilmoituksen jos joku mainitsee @nimesi tai vastaa viestiisi tässä keskustelussa." muted_pm: title: "Vaimenna" - description: "Et saa mitään ilmoituksia tästä yksityisviestistä." + description: "Et saa mitään ilmoituksia tästä keskustelusta." muted: title: "Vaimenna" description: "Et saa ilmoituksia mistään tässä ketjussa eikä se näy lukemattomat-välilehdessä." @@ -870,20 +895,21 @@ fi: delete: "Poista ketju" open: "Avaa ketju" close: "Sulje ketju" - auto_close: "Automaattinen sulkeminen" - feature: "Nosta ketju" - remove_feature: "Poista nosto" - make_banner: "Tee ketjusta banneri" - remove_banner: "Poista banneri" - pin: "Kiinnitä ketju" - unpin: "Poista ketjun kiinnitys" - pin_globally: "Kiinnitä ketju koko palstalle" + multi_select: "Valitse viestejä..." + auto_close: "Sulje automaattisesti..." + pin: "Kiinnitä ketju..." + unpin: "Poista ketjun kiinnitys..." unarchive: "Poista ketjun arkistointi" archive: "Arkistoi ketju" invisible: "Poista listauksista" visible: "Näytä listauksissa" reset_read: "Nollaa tiedot lukemisista" - multi_select: "Valitse viestejä" + feature: + pin: "Kiinnitä ketju" + unpin: "Poista ketjun kiinnitys" + pin_globally: "Kiinnitä ketju koko palstalle" + make_banner: "Tee ketjusta banneri" + remove_banner: "Poista banneri" reply: title: 'Vastaa' help: 'aloita kirjottamaan uutta vastausta tähän ketjuun' @@ -899,11 +925,33 @@ fi: success_message: 'Ketjun liputus onnistui.' feature_topic: title: "Nosta tämä ketju" + pin: "Näytä ketju {{categoryLink}}-alueen ylimmäisenä." + confirm_pin: "Olet kiinnittänyt jo {{count}} ketjua. Liian monta kiinnitettyä ketjua voi olla liian suuri taakka uusille ja kirjautumattomille käyttäjille. Oletko varma, että haluat kiinnittä vielä uuden ketjun tällä alueella?" + unpin: "Älä enää pidä tätä ketjua {{categoryLink}}-aluen ylimmäisenä." + pin_note: "Käyttäjät voivat poistaa ketjun kiinnityksen itseltään." + already_pinned: + zero: "Alueella {{categoryLink}} ei ole kiinnitettyjä ketjuja." + one: "Kiinnitettyjä ketjuja alueella {{categoryLink}}: 1." + other: "Kiinnitettyjä ketjuja alueella {{categoryLink}}: {{count}}." + pin_globally: "Kiinnitä tämä ketju kaikkien ketjulistausten ylimmäiseksi, kunnes henkilökunnan jäsen poistaa kiinnityksen." + confirm_pin_globally: "Olet kiinnittänyt jo {{count}} ketjua kaikille alueille. Liian monta kiinnitettyä ketjua voi olla liian suuri taakka uusille ja kirjautumattomille käyttäjille. Oletko varma, että haluat kiinnittä vielä uuden ketjun kaikille alueille?" + unpin_globally: "Älä enää pidä tätä ketjua kaikkien alueiden ylimmäisenä." + global_pin_note: "Käyttäjät voivat poistaa ketjun kiinnityksen itseltään." + already_pinned_globally: + zero: "Mitään ketjuja ei ole kiinnitetty kaikille alueille." + one: "Kaikille alueille kiinnitettyjen ketjujen lukumäärä: 1." + other: "Kaikille alueille kiinnitettyjen ketjujen lukumäärä: {{count}}." + make_banner: "Tee tästä ketjusta banneri, joka näytetään kaikkien sivujen ylimmäisenä." + remove_banner: "Poista banneri, joka näytetään kaikkien sivujen ylimmäisenä." + banner_note: "Käyttäjät voivat piilottaa bannerin sulkemalla sen. Vain yksi ketju kerrallaan voi olla banneri." + already_banner: + zero: "Banneriketjua ei ole." + one: "Banneri ketju on käytössä." inviting: "Kutsutaan..." automatically_add_to_groups_optional: "Tämä kutsu sisältää automaattisesti pääsyn ryhmiin: (valinnainen, vain ylläpitäjille)" automatically_add_to_groups_required: "Tämä kutsu sisältää automaattisesti pääsyn ryhmiin: (Vaaditaan, vain ylläpitäjille)" invite_private: - title: 'Kutsu yksityisviestiin' + title: 'Kutsu keskusteluun' email_or_username: "Kutsuttavan sähköpostiosoite tai käyttäjänimi" email_or_username_placeholder: "sähköpostiosoite tai käyttäjänimi" action: "Kutsu" @@ -912,13 +960,18 @@ fi: group_name: "ryhmän nimi" invite_reply: title: 'Kutsu' - action: 'Sähköpostikutsu' - help: 'Lähetä kutsuja ystäville, jotta he voivat vastata tähän ketjuun yhdellä klikkauksella' - to_topic: "Lähetämme lyhyen sähköpostin, jonka avulla ystäväsi voi heti vastata tähän ketjuun klikkaamalla linkkiä, ilman sisäänkirjautumista." + username_placeholder: "käyttäjätunnus" + action: 'Lähetä kutsu' + help: 'Kutsu muita tähän ketjuun sähköpostin tai palstan ilmoitusten kautta' to_forum: "Lähetämme lyhyen sähköpostin jonka avulla ystäväsi voi liittyä klikkaamalla linkkiä, sisäänkirjautumista ei tarvita." + sso_enabled: "Syötä henkilön käyttäjätunnus, jonka haluaisit kutsua tähän ketjuun." + to_topic_blank: "Syötä henkilön käyttäjätunnus tai sähköpostiosoite, jonka haluaisit kutsua tähän ketjuun." + to_topic_email: "Syötit sähköpostiosoitteen. Lähetämme ystävällesi sähköpostin, jonka avulla hän voi heti vastata tähän ketjuun." + to_topic_username: "Syötit käyttäjätunnuksen. Lähetämme tälle käyttäjälle ilmoituksen, joka sisältää kutsun ja linkin tähän ketjuun." email_placeholder: 'nimi@esimerkki.fi' - success: "Olemme lähettäneet kutsun osoitteeseen {{email}}. Ilmoitamme, kun kutsuun on vastattu. Voit seurata käyttäjäsivusi kutsut-välilehdeltä kutsujesi tilannetta." - error: "Pahoittelut, emme pystyneet kutsumaan tätä henkilöä. Ehkäpä hän on jo rekisteröitynyt? (Huomaa, että kutsumistiheyttä rajoitetaan)" + success_email: "Olemme lähettäneet kutsun osoitteeseen {{emailOrUsername}}. Ilmoitamme, kun kutsuun on vastattu. Voit seurata käyttäjäsivusi kutsut-välilehdeltä kutsujesi tilannetta." + success_username: "Olemme kutsuneet käyttäjän osallistumaan tähän ketjuun." + error: "Pahoittelut, emme onnistuneet kutsumaan tätä henkilöä. Ehkäpä hänet on jo kutsuttu? (Huomaa, että kutsumistiheyttä rajoitetaan)" login_reply: 'Kirjaudu sisään vastataksesi' filters: n_posts: @@ -962,13 +1015,12 @@ fi: one: Olet valinnut yhden viestin. other: Olet valinnut {{count}} viestiä. post: - reply: "Vastaus käyttäjän {{replyAvatar}} {{username}} viestiin {{link}}" + reply: "Vastataan {{link}} {{replyAvatar}} {{username}}" reply_topic: "Vastaus ketjuun {{link}}" quote_reply: "lainaa" - edit: "Viestin {{link}} muokkaus käyttäjältä {{replyAvatar}} {{username}}" + edit: "Muokataan {{link}} {{replyAvatar}} {{username}}" edit_reason: "Syy:" post_number: "viesti {{number}}" - in_reply_to: "vastauksena" last_edited_on: "viestin viimeinen muokkausaika" reply_as_new_topic: "Vastaa aihetta sivuavassa ketjussa" continue_discussion: "Jatkoa ketjulle {{postLink}}:" @@ -1056,11 +1108,12 @@ fi: people: off_topic: "{{icons}} liputtivat tämän asiaan kuulumattomaksi" spam: "{{icons}} liputtivat tämän roskapostiksi" + spam_with_url: "{{icons}} liputtivat tämän roskapostiksi" inappropriate: "{{icons}} liputtivat tämän asiattomaksi" notify_moderators: "{{icons}} ilmoittivat valvojille" notify_moderators_with_url: "{{icons}} ilmoittivat valvojille" - notify_user: "{{icons}} lähettivät yksityisviestin" - notify_user_with_url: "{{icons}} lähettivät yksityisviestin" + notify_user: "{{icons}} lähetti viestin" + notify_user_with_url: "{{icons}} lähetti viestin" bookmark: "{{icons}} lisäsivät tämän kirjanmerkkeihinsä" like: "{{icons}} tykkäsivät tästä" vote: "{{icons}} äänestivät tätä" @@ -1069,7 +1122,7 @@ fi: spam: "Liputit tämän roskapostiksi" inappropriate: "Liputit tämän asiattomaksi" notify_moderators: "Liputit tämän valvojille tiedoksi" - notify_user: "Lähetit tälle käyttäjälle yksityisviestin" + notify_user: "Lähetit viestin tälle käyttäjälle" bookmark: "Olet lisännyt viestin kirjainmerkkeihisi" like: "Tykkäsit tästä" vote: "Olet äänestänyt tätä viestiä" @@ -1087,8 +1140,8 @@ fi: one: "Sinä ja yksi muu käyttäjä liputitte tämän valvojille tiedoksi" other: "Sinä ja {{count}} muuta liputtivat tämän valvojille tiedoksi" notify_user: - one: "Sinä ja yksi muu käyttäjä lähetitte tälle käyttäjälle yksityisviestin" - other: "Sinä ja {{count}} muuta lähettivät tälle käyttäjälle yksityisviestin" + one: "Sinä ja 1 muuta lähetitte tälle käyttäjälle yksityisviestin" + other: "Sinä ja {{count}} muuta lähetitte tälle käyttäjälle viestin" bookmark: one: "Sinä ja yksi muu käyttäjä lisäsitte tämän kirjanmerkkeihinne" other: "Sinä ja {{count}} muuta lisäsivät tämän kirjanmerkkeihinsä" @@ -1112,8 +1165,8 @@ fi: one: "yksi käyttäjä liputti tämän tiedoksi valvojalle" other: "{{count}} käyttäjää liputti tämän tiedoksi valvojalle" notify_user: - one: "yksi käyttäjä lähetti yksityisviestin tälle käyttäjälle" - other: "{{count}} käyttäjää lähetti tälle käyttäjälle yksityisviestin" + one: "1 henkilö lähetti tälle käyttäjälle yksityisviestin" + other: "{{count}} henkilöä on lähettänyt tälle käyttäjälle yksityisviestin" bookmark: one: "yksi käyttäjä lisäsi tämän viestin kirjanmerkkeihinsä" other: "{{count}} käyttäjää lisäsi tämän veistin kirjanmerkkeihinsä" @@ -1219,7 +1272,7 @@ fi: private_reminder: 'liput ovat yksityisiä, ne näkyvät ainoastaan henkilökunnalle' action: 'Liputa viesti' take_action: "Ryhdy toimiin" - notify_action: 'Yksityisviesti' + notify_action: 'Viesti' delete_spammer: "Poista roskapostittaja" delete_confirm: "Olet aikeissa poistaa %{posts} viestiä ja %{topics} ketjua tältä käyttäjältä, sekä käyttäjätilin, estää tunnuksen luomisen tästä IP osoitteesta %{ip_address}, ja lisätä sähköpostiosoitteen %{email} pysyvästi estolistalle. Oletko varma, että tämä käyttäjä todella on roskapostittaja?" yes_delete_spammer: "Kyllä, poista roskapostittaja" @@ -1241,7 +1294,7 @@ fi: flagging_topic: title: "Kiitos avustasi yhteisön hyväksi!" action: "Liputa ketju" - notify_action: "Yksityisviesti" + notify_action: "Viesti" topic_map: title: "Ketjun tiivistelmä" links_shown: "Näytä kaikki {{totalLinks}} linkkiä..." @@ -1271,6 +1324,12 @@ fi: posts: "Viestejä" 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} + other {}} original_post: "Aloitusviesti" views: "Katselut" views_lowercase: "katselut" @@ -1301,6 +1360,9 @@ fi: read: title: "Luetut" help: "lukemasi ketjut, lukemisjärjestyksessä" + search: + title: "Etsi" + help: "etsi kaikista ketjuista" categories: title: "Keskustelualueet" title_in: "Alue - {{categoryName}}" @@ -1339,15 +1401,17 @@ fi: top: title: "Huiput" help: "Aktiivisimmat ketjut viimeisen vuoden, kuukauden ja päivän ajalta" + all: + title: "Kaikkina aikoina" yearly: - title: "Vuoden huiput" + title: "Vuosittain" monthly: - title: "Kuukauden huiput" + title: "Kuukausittain" weekly: - title: "Viikon huiput" + title: "Viikoittain" daily: - title: "Päivän huiput" - all: "Kaikki" + title: "Päivittäin" + all_time: "Kaikkina aikoina" this_year: "Tänä vuonna" this_month: "Tässä kuussa" this_week: "Tällä viikolla" @@ -1385,7 +1449,7 @@ fi: blocked: 'Estetyt:' suspended: 'Hyllytetyt:' private_messages_short: "YV:t" - private_messages_title: "Yksityisviestit" + private_messages_title: "Viestit" space_free: "{{size}} vapaata" uploads: "lataukset" backups: "varmuuskopiot" @@ -1419,7 +1483,7 @@ fi: agree_title: "Vahvista, että lippu on annettu oikeasta syystä" agree_flag_modal_title: "Ole samaa mieltä ja..." agree_flag_hide_post: "Samaa mieltä (piilota viesti ja lähetä YV)" - agree_flag_hide_post_title: "Piilota tämä viesti automaattisesti ja lähetä käyttäjälle muokkaamaan hoputtava yksityisviesti" + agree_flag_hide_post_title: "Piilota tämä viesti automaattisesti ja lähetä käyttäjälle muokkaamaan hoputtava viesti" agree_flag_restore_post: "Ole samaa mieltä (palauta viesti)" agree_flag_restore_post_title: "Palauta tämä viesti" agree_flag: "Ole samaa mieltä lipun kanssa" @@ -1491,8 +1555,8 @@ fi: name: "Nimi" add: "Lisää" add_members: "Lisää jäseniä" - automatic: - label: "Automaattinen" + custom: "Mukautetut" + automatic: "Automaattiset" automatic_membership_email_domains: "Käyttäjät, jotka luovat tunnuksen sähköpostiosoitteella, jonka verkkotunnus on tällä listalla, lisätään tähän ryhmään:" automatic_membership_retroactive: "Lisää jo olemassa olevat käyttäjät käyttäen samaa sääntöä verkkotunnuksista" api: @@ -1526,18 +1590,19 @@ fi: read_only: enable: title: "Käynnistä vain luku -tila." - text: "Käynnistä vain luku -tila." + label: "Käynnistä vain luku -tila." confirm: "Oletko varma, että haluat käynnistää vain luku -tilan?" disable: title: "Poista vain luku -tila" - text: "Poista vain luku -tila" + label: "Poista vain luku -tila" logs: none: "Lokeja ei ole vielä..." columns: filename: "Tiedostonimi" size: "Koko" upload: - text: "Lähetä" + label: "Lähetä" + title: "Lataa varmuuskopio tälle koneelle" uploading: "Lähettää..." success: "Tiedosto '{{filename}}' on lähetetty onnistuneesti." error: "Tiedoston '{{filename}}' lähetyksen aikana tapahtui virhe: {{message}}" @@ -1545,33 +1610,32 @@ fi: is_running: "Operaatiota suoritetaan parhaillaan..." failed: "{{operation}} epäonnistui. Tarkista loki-tiedostot." cancel: - text: "Peruuta" + label: "Peruuta" title: "Peruuta toiminto" confirm: "Oletko varma, että haluat peruuttaa meneillään olevan toiminnon?" backup: - text: "Varmuuskopioi" + label: "Varmuuskopioi" title: "Luo varmuuskopio" confirm: "Haluatko luoda uuden varmuuskopion?" without_uploads: "Kyllä (älä sisällytä tiedostoja)" download: - text: "Lataa" + label: "Lataa" title: "Lataa varmuuskopio" destroy: - text: "Poista" title: "Poista varmuuskopio" confirm: "Oletko varma, että haluat tuhota tämän varmuuskopion?" restore: is_disabled: "Palautus on estetty sivuston asetuksissa." - text: "Palauta" + label: "Palauta" title: "Palauta varmuuskopio" confirm: "Oletko varma, että haluat palauttaa tämän varmuuskopion?" rollback: - text: "Palauta" + label: "Palauta" title: "Palauta tietokanta edelliseen toimivaan tilaan" confirm: "Oletko varma, että haluat palauttaa tietokannan edelliseen toimivaan tilaan?" export_csv: user_archive_confirm: "Oletko varma, että haluat ladata viestisi?" - success: "Vienti on käynnissä. Saat ilmoituksen yksityisviestillä, kun prosessi on valmis." + success: "Vienti on käynnissä. Saat ilmoituksen viestillä, kun prosessi on valmis." failed: "Vienti epäonnistui. Tarkista loki-tiedostot." rate_limit_error: "Viestit voidaan ladata kerran päivässä, yritä uudestaan huomenna." button_text: "Vie" @@ -1744,6 +1808,7 @@ fi: delete_topic: "poista ketju" delete_post: "poista viesti" impersonate: "esiinny käyttäjänä" + anonymize_user: "anonymisoi käyttäjä" screened_emails: title: "Seulottavat sähköpostiosoitteet" description: "Uuden käyttäjätunnuksen luonnin yhteydessä annettua sähköpostiosoitetta verrataan alla olevaan listaan ja tarvittaessa tunnuksen luonti joko estetään tai suoritetaan muita toimenpiteitä." @@ -1877,8 +1942,13 @@ fi: approve_success: "Käyttäjä on hyväksytty ja hänelle on lähetetty sähköpostilla ohjeet tilin vahvistamiseen." approve_bulk_success: "Kaikki valitut käyttäjät on hyväksytty ja heille on lähetetty ilmoitus." time_read: "Lukuaika" + anonymize: "Anonymisoi käyttäjä" + anonymize_confirm: "Oletko VARMA, että halua anonymisoida tämän käyttäjätilin? Tämä muuttaa käyttäjänimen ja sähköpostiosoitteen, sekä nollaa kaikki profiilitiedot." + anonymize_yes: "Kyllä, anonymisoi tämä käyttäjätili" + anonymize_failed: "Käyttäjätilin anonymisointi ei onnistunut." delete: "Poista käyttäjä" delete_forbidden_because_staff: "Ylläpitäjiä ja valvojia ei voi poistaa." + delete_posts_forbidden_because_staff: "Ylläpitäjien ja moderaattoreiden kaikkia viestejä ei voi poistaa." delete_forbidden: one: "Käyttäjiä ei voi poistaa jos heillä on kirjoitettuja viestejä. Poista ensin viestit ennen käyttäjätilin poistamista. (Vanhempia viestejä, kuin %{count} päivä ei voi poistaa)" other: "Käyttäjiä ei voi poistaa jos heillä on kirjoitettuja viestejä. Poista ensin viestit ennen käyttäjätilin poistamista. (Vanhempia viestejä, kuin %{count} päivää ei voi poistaa)" @@ -2021,6 +2091,7 @@ fi: modal_title: Arvomerkkien ryhmitys granted_by: Myöntäjä granted_at: Myönnetty + reason_help: (Linkki viestiin tai ketjuun) save: Tallenna delete: Poista delete_confirm: Oletko varma, että haluat poistaa tämän arvomerkin? @@ -2113,6 +2184,7 @@ fi: dismiss_topics: 'x, t Unohda ketjut' actions: title: 'Toiminnot' + bookmark_topic: 'f Vaihda kirjanmerkkeihin tai pois' pin_unpin_topic: 'shift+p Kiinnitä ketju/poista kiinnitys' share_topic: 'shift+s Jaa ketju' share_post: 's Jaa viesti' diff --git a/config/locales/client.fr.yml b/config/locales/client.fr.yml index c48e880517..0e2947af81 100644 --- a/config/locales/client.fr.yml +++ b/config/locales/client.fr.yml @@ -92,6 +92,7 @@ fr: email: 'envoyer ce lien dans un courriel' topic_admin_menu: "actions administrateur pour ce sujet" emails_are_disabled: "Le courriel sortant a été désactivé par un administrateur. Aucune notification courriel ne sera envoyée." + s3_deprecation_warning: "ATTENTION ! Le support d'Amazon S3 pour l'hébergement des images et des pièces jointes va bientôt être abandonné. Merci de suivre ces instructions pour migrer vers de l'hébergement local." edit: 'éditer le titre et la catégorie de ce sujet' not_implemented: "Cette fonctionnalité n'a pas encore été implémentée, désolé." no_value: "Non" @@ -207,17 +208,25 @@ fr: sent_by_user: "Envoyé par {{user}}" sent_by_you: "Envoyé par vous" directory: - title: "Répertoire utilisateur" - likes_given: "J'aime donnés" - likes_received: "J'aime reçus" - topics_entered: "Sujets visités" + filter_name: "filtrer par pseudo" + title: "Utilisateurs" + likes_given: "Donnés" + likes_received: "Reçus" + topics_entered: "Visités" + topics_entered_long: "Sujets visités" time_read: "Temps de lecture" topic_count: "Sujets" + topic_count_long: "Sujets créés" post_count: "Réponses" - no_results: "Aucun résultat n'a été trouvé pour cette période de temps." + post_count_long: "Réponses envoyés" + no_results: "Aucun résultat n'a été trouvé." + days_visited: "Visites" + days_visited_long: "Jours visités" + posts_read: "Lus" + posts_read_long: "Messages lus" total_rows: - one: "1 utilisateur trouvé" - other: "%{count} utilisateurs trouvés" + one: "1 utilisateur" + other: "%{count} utilisateurs" groups: visible: "Ce groupe est visible par tous les utilisateurs" title: @@ -237,7 +246,7 @@ fr: '2': "J'aime reçus" '3': "Signets" '4': "Sujets" - '5': "Messages" + '5': "Réponses" '6': "Réponses" '7': "Mentions" '9': "Citations" @@ -285,7 +294,7 @@ fr: mute: "Silencieux" edit: "Modifier les préférences" download_archive: "Télécharger mes messages" - new_private_message: "Nouveau Message Privé" + new_private_message: "Nouveau message privé" private_message: "Message privé" private_messages: "Messages privés" activity_stream: "Activité" @@ -323,6 +332,9 @@ fr: delete_yourself_not_allowed: "Vous ne pouvez pas supprimer votre compte maintenant. Contactez un administrateur pour faire supprimer votre compte pour vous." unread_message_count: "Messages" admin_delete: "Supprimer" + users: "Utilisateurs" + muted_users: "Silencieux" + muted_users_instructions: "Cacher toutes les notifications de ces utilisateurs." staff_counters: flags_given: "signalements utiles" flagged_posts: "messages signalés" @@ -361,7 +373,7 @@ fr: uploaded_avatar_empty: "Ajouter une avatar personnalisé" upload_title: "Envoyer votre avatar" upload_picture: "Envoyer une image" - image_is_not_a_square: "Attention : nous avons découpé votre image ; elle n'est pas carrée." + image_is_not_a_square: "Attention : nous avons découpé votre image; la largeur et la hauteur n'étaient pas égales." change_profile_background: title: "Arrière plan du profil" instructions: "L'arrière-plan du profil sera centré avec une largeur par défaut de 850 pixels." @@ -381,6 +393,7 @@ fr: name: title: "Nom d'utilisateur" instructions: "Votre nom complet (facultatif)" + instructions_required: "Votre nom complet" too_short: "Votre nom est trop court" ok: "Votre nom a l'air bon." username: @@ -418,7 +431,6 @@ fr: every_three_days: "tous les trois jours" weekly: "hebdomadaire" every_two_weeks: "toutes les deux semaines" - email_direct: "M'envoyer un courriel quand quelqu'un me cite, répond à mon message ou mentionne mon @pseudo" email_private_messages: "M'envoyer un courriel quand quelqu'un m'envoie un message privé" email_always: "Ne pas recevoir de courriel de notifications lorsque je suis actif sur le site" other_settings: "Autre" @@ -544,9 +556,9 @@ fr: enable: "Cacher les messages supprimés" disable: "Afficher les messages supprimés" private_message_info: - title: "Message Privé" + title: "Message privé" invite: "Inviter d'autres utilisateurs…" - remove_allowed_user: "Êtes-vous sûr de vouloir supprimer {{name}} de ce message privé ?" + remove_allowed_user: "Êtes-vous sûr de vouloir supprimer {{name}} de ce message privé?" email: 'Courriel' username: 'Pseudo' last_seen: 'Vu' @@ -558,7 +570,7 @@ fr: title: "Créer un nouveau compte" failed: "Quelque chose s'est mal passé, peut-être que cette adresse de courriel est déjà enregistrée, essayez le lien Mot de passe oublié." forgot_password: - title: "Mot de passe oublié ?" + title: "Réinitialisation du mot de passe" action: "J'ai oublié mon mot de passe" invite: "Saisir votre pseudo ou votre adresse de courriel, et vous recevrez un nouveau mot de passe par courriel." reset: "Réinitialiser votre mot de passe" @@ -631,7 +643,7 @@ fr: reply_here: "Répondre ici" reply: "Répondre" cancel: "Annuler" - create_topic: "Créer votre sujet" + create_topic: "Créer un sujet" create_pm: "Message privé" title: "ou appuyez sur Ctrl+Entrée" users_placeholder: "Ajouter un utilisateur" @@ -682,11 +694,11 @@ fr: units: "(# d'heures)" examples: 'Saisir le nombre d''heures (24).' notifications: - title: "Notification des mentions de votre @pseudo, réponses à vos sujets et messages, etc." + title: "notifications des mentions de votre @pseudo, des réponses à vos messages, à vos sujets, etc." none: "Actuellement il est impossible de montrer les notifications." more: "voir les anciennes notifications" total_flagged: "Nombre total de messages signalés" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -694,6 +706,7 @@ fr: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} a accepté votre invitation

    " moved_post: "

    {{username}} a déplacé {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -720,7 +733,7 @@ fr: user: "Chercher dans les messages de @{{username}}" category: "Rechercher dans la catégorie \"{{category}}\"" topic: "Rechercher dans ce sujet" - private_messages: "Chercher les messages privés" + private_messages: "Rechercher des messages" site_map: "aller à une autre liste de sujet ou catégorie" go_back: 'retour' not_logged_in_user: 'page utilisateur avec un résumé de l''activité en cours et les préférences ' @@ -754,6 +767,7 @@ fr: bookmarks: "Vous n'avez pas encore ajouté de sujet à vos signets" category: "Il n'y a aucun sujet sur {{category}}." top: "Il n'y a pas de meilleurs sujets." + search: "Votre recherche ne retourne aucun résultat." educate: new: '

    Vos nouveaux sujets apparaissent ici

    Par défaut, les sujets sont considérés comme nouveau et affiche l''indicateur nouveau lorsqu''ils ont été crées dans les deux derniers jours.

    @@ -771,11 +785,12 @@ fr: category: "Il n'y a plus de sujet sur {{category}} à lire." top: "Il n'y a plus de meilleurs sujets." bookmarks: "Il n'y a plus de sujets dans vos signets." + search: "Il n'y a plus de résultats à votre recherche." topic: filter_to: "{{post_count}} messages sur ce sujet" create: 'Créer votre sujet' create_long: 'Créer un nouveau sujet' - private_message: 'Commencer un message privé' + private_message: 'Écrire un message' list: 'Sujets' new: 'nouveau sujet' unread: 'non-lus' @@ -853,13 +868,13 @@ fr: '0': 'Vous ignorez toutes les notifications de ce sujet.' watching_pm: title: "Suivre attentivement" - description: "Vous serez averti de chaque nouveau message de cette conversation privée. Le nombre de messages non lus et nouveaux apparaîtra également à côté du sujet." + description: "Vous serez averti de chaque nouvelle publication dans ce message. Le nombre de publications non lues et nouvelles apparaîtra également à côté du sujet." watching: title: "Surveiller" description: "Vous serez notifier de chaque nouveau message de ce sujet. Les nombres de messages non lus et de nouveaux messages apparaîtront également à côté du sujet." tracking_pm: title: "Suivi simple" - description: "Le nombre de messages non lus et nouveaux apparaîtra à côté de ce message privée. Vous serez averti si quelqu'un mentionne votre @pseudo ou répond à votre message." + description: "Le nombre de publications non lues et nouvelles apparaîtra à côté du message. Vous serez averti si quelqu'un mentionne votre @pseudo ou réponds à votre publication." tracking: title: "Suivi" description: "Le nombre de messages non lus et de nouveaux messages apparaîtra à côté du sujet. Vous serez averti si quelqu'un mentionne votre @pseudo ou répond à votre message." @@ -868,10 +883,10 @@ fr: description: "Vous serez averti si quelqu'un mentionne votre @pseudo ou répond à votre message." regular_pm: title: "Normal" - description: "Vous serez averti si quelqu'un mentionne votre @pseudo ou répond à votre message privé." + description: "Vous serez averti si quelqu'un mentionne votre @pseudo ou réponds à votre publication dans le message." muted_pm: title: "Silencieux" - description: "Vous ne serez jamais averti de quoi que ce soit à propos de ​​ce message privé." + description: "Vous ne serez jamais averti de quoi que ce soit à propos de ce message." muted: title: "Silencieux" description: "Vous ne serez jamais informé de quoi que ce soit à propos de ce sujet, et il n'apparaîtra pas dans votre onglet non lu." @@ -880,20 +895,11 @@ fr: delete: "Supprimer Sujet" open: "Ouvrir Sujet" close: "Fermer le sujet" - auto_close: "Fermeture automatique" - feature: "Mettre sujet en évidence" - remove_feature: "Enlever mise en évidence" - make_banner: "Bannière de sujet" - remove_banner: "Retirer la bannière de sujet" - pin: "Épingler le sujet" - unpin: "De-épingler le sujet" - pin_globally: "Épingler le sujet globalement" unarchive: "Désarchiver le sujet" archive: "Archiver le sujet" invisible: "Retirer de la liste des sujets" visible: "Afficher dans la liste des sujets" reset_read: "Réinitialiser les lectures" - multi_select: "Sélectionner les messages" reply: title: 'Répondre' help: 'commencez à répondre à ce sujet' @@ -910,47 +916,48 @@ fr: feature_topic: title: "Mettre ce sujet en évidence" pin: "Faire apparaître ce sujet en haut de la catégorie {{categoryLink}}." - confirm_pin: "Êtes-vous sûr? Vous avez déjà {{count}} sujets épinglés - s'il y a trop de sujets épinglés cela peut cacher les sujets actifs." + confirm_pin: "Vous avez déjà {{count}} sujets épinglés. S'il y a trop de sujets épinglés cela peut être lourd pour les nouveaux utilisateurs et utilisateurs anonymes. Êtes-vous sûr de vouloir ajouter un nouveau sujet épinglé dans cette catégorie?" unpin: "Enlever ce sujet du haut de la catégorie {{categoryLink}}." pin_note: "Les utilisateurs peuvent enlever l'épingle de ce sujet eux-mêmes." already_pinned: zero: "Aucun sujet actuellement épinglé dans {{categoryLink}}." - one: "Sujets actuellement épinglés dans {{categoryLink}}: 1." - other: "Sujets actuellement épinglés dans {{categoryLink}}: {{count}}." + one: "Sujets actuellement épinglés dans {{categoryLink}}: 1." + other: "Sujets actuellement épinglés dans {{categoryLink}}: {{count}}." pin_globally: "Faire apparaître ce sujet en haut de toutes les listes de sujet, jusqu'à ce qu'un responsable l'enlève." - confirm_pin_globally: "Êtes-vous sûr? Vous avez déjà {{count}} sujets épinglés globalement - s'il y a trop de sujets épinglés cela peut cacher les sujets actifs." + confirm_pin_globally: "Vous avez déjà {{count}} sujets épinglés globalement. S'il y a trop de sujets épinglés cela peut être lourd pour les nouveaux utilisateurs et les utilisateurs anonymes. Êtes-vous sûr de vouloir rajouter une sujet épinglé globalement?" unpin_globally: "Enlever ce sujet du haut de toutes les listes de sujet." global_pin_note: "Les utilisateurs peuvent enlever l'épingle du sujet individuellement." already_pinned_globally: zero: "Aucun sujet épinglé globalement." - one: "Sujets actuellement épinglés globalement : 1." - other: "Sujets actuellement épinglés globalement : {{count}}." + one: "Sujets actuellement épinglés globalement : 1." + other: "Sujets actuellement épinglés globalement : {{count}}." make_banner: "Transformer ce sujet en gros titre qui apparaît en haut de chaque page." remove_banner: "Enlever le gros titre qui apparaît en haut de chaque page." banner_note: "Les utilisateurs peuvent fermer le gros titre. Seul un sujet peut être mis en gros titre à la fois." already_banner: zero: "Il n'y a pas actuellement de sujet en gros titre." - one: "Il y a actuellement un sujet en gros titre." + one: "Il y a actuellement un sujet en gros titre." inviting: "Invitation en cours…" automatically_add_to_groups_optional: "Cette invitation inclus l'accès à ces groupes: (optionnel, administrateur uniquement)" automatically_add_to_groups_required: "Cette invitation inclus l'accès à ces groupes: (Requis, administrateur uniquement)" invite_private: - title: 'Inviter au message privé' + title: 'Inviter dans la discussion' email_or_username: "Adresse de courriel ou @pseudo de l'invité" email_or_username_placeholder: "adresse de courriel ou @pseudo" action: "Inviter" - success: " Vous avez invité cet utilisateur à participer à cet conversation privée." + success: "Nous avons invité cet utilisateur à participer à ce message." error: "Désolé, il y a eu une erreur lors de l'invitation de cet utilisateur." group_name: "nom du groupe" invite_reply: title: 'Inviter' - action: 'Envoyer l''invitation' - help: 'envoyer des invitations à des amis pour qu''ils puissent participer à ce sujet en un simple clic' - to_topic: "Nous allons envoyer un courriel à votre ami pour qu'il rejoigne et puisse répondre immédiatement à ce sujet en cliquant sur un lien, sans qu'il ait à se connecter." + action: 'Envoyer une invitation' + help: 'inviter d''autres personnes sur ce sujet par email ou notifications' to_forum: "Nous allons envoyer un courriel à votre ami pour lui permettre de participer au forum juste en cliquant sur un lien, sans qu'il ait à se connecter." + to_topic_blank: "Entrez le nom d'utilisateur ou l'adresse email de la personne que vous souhaitez inviter sur ce sujet." + to_topic_email: "Vous avez entré une adresse email. Nous allons envoyer une invitation à votre ami lui permettant de répondre immédiatement à ce sujet." + to_topic_username: "Vous avez entré un nom d'utilisateur. Nous allons envoyer une notification à cet utilisateur avec un lien l'invitant sur ce sujet." email_placeholder: 'nom@exemple.com' - success: "Nous avons envoyé un courriel à {{email}}. Nous vous avertirons lorsque l'invitation sera acceptée. Suivez vos invitations dans l'onglet prévu à cet effet sur votre page utilisateur." - error: "Désolé, nous n'avons pas pu invité cette personne. Peut-être est-elle déjà utilisateur? (Le débit des invitations est limité)" + error: "Désolé, nous n'avons pas pu inviter cette personne. Elle a peut-être déjà été invitée ? (Le nombre d'invitations est limité)" login_reply: 'Se connecter pour répondre' filters: n_posts: @@ -1000,7 +1007,6 @@ fr: edit: "Éditer {{link}} par {{replyAvatar}} {{username}}" edit_reason: "Raison :" post_number: "message {{number}}" - in_reply_to: "répondre à" last_edited_on: "message dernièrement édité le" reply_as_new_topic: "Répondre en créant un sujet lié" continue_discussion: "Suite du sujet {{postLink}}:" @@ -1092,8 +1098,8 @@ fr: inappropriate: "{{icons}} l'ont signalé comme inapproprié" notify_moderators: "{{icons}} l'ont signalé pour modération" notify_moderators_with_url: "{{icons}} l'ont signalé pour modération" - notify_user: "{{icons}} ont démarré une conversation privée" - notify_user_with_url: "{{icons}} ont démarré une conversation privée" + notify_user: "{{icons}} a envoyé un message" + notify_user_with_url: "{{icons}} a envoyé un message" bookmark: "{{icons}} l'ont ajouté à leurs signets" like: "{{icons}} l'ont aimé" vote: "{{icons}} ont voté pour" @@ -1102,7 +1108,7 @@ fr: spam: "Vous l'avez signalé comme étant du spam" inappropriate: "Vous l'avez signalé comme inapproprié" notify_moderators: "Vous l'avez signalé pour modération" - notify_user: "Vous avez démarré une conversation privée avec cet utilisateur" + notify_user: "Vous avez envoyé un message à cet utilisateur" bookmark: "Vous l'avez ajouté à vos signets" like: "Vous l'avez aimé" vote: "Vous avez voté pour" @@ -1120,8 +1126,8 @@ fr: one: "Vous et 1 autre personne l'avez signalé pour modération" other: "Vous et {{count}} autres personnes l'avez signalé pour modération" notify_user: - one: "Vous et 1 autre personne avez démarré une conversation privée avec cet utilisateur" - other: "Vous et {{count}} autres personnes avez démarré une conversation privée avec cet utilisateur" + one: "1 autre personne et vous avez envoyé un message à cet utilisateur" + other: "{{count}} autres personnes et vous avez envoyé un message à cet utilisateur" bookmark: one: "Vous et 1 autre personne l'avez ajouté à vos signets" other: "Vous et {{count}} autres personnes l'avez ajouté à vos signets" @@ -1145,8 +1151,8 @@ fr: one: "1 personne a signalé ceci pour modération" other: "{{count}} personnes ont signalé pour modération" notify_user: - one: "1 personne a démarré une conversation privée avec cet utilisateur" - other: "{{count}} personnes ont démarré une conversation privée avec cet utilisateur" + one: "1 personne a envoyé un message à cet utilisateur" + other: "{{count}} personnes ont envoyé un message à cet utilisateur" bookmark: one: "1 personne a ajouté ceci à ses signets" other: "{{count}} personnes ont ajouté ceci à leurs signets" @@ -1252,7 +1258,7 @@ fr: private_reminder: 'les signalements sont privés, seulement visible aux modérateurs' action: 'Signaler ce message' take_action: "Signaler" - notify_action: 'Message privé' + notify_action: 'Message' delete_spammer: "Supprimer le spammeur" delete_confirm: "Vous vous apprêtez à supprimer %{posts} messages et %{topics} sujets de cet utilisateur, supprimer son compte, bloquer les inscriptions depuis son adresse IP %{ip_address} et à ajouter son adresse de courriel %{email} à la liste des utilisateurs bloqués. Etes-vous sûr que cet utilisateur est un spammeur ?" yes_delete_spammer: "Oui, supprimer le spammeur" @@ -1274,7 +1280,7 @@ fr: flagging_topic: title: "Merci de nous aider à garder notre communauté civilisé !" action: "Signaler Sujet" - notify_action: "Message privé" + notify_action: "Message" topic_map: title: "Résumé du sujet" links_shown: "montrer les {{totalLinks}} liens..." @@ -1340,6 +1346,9 @@ fr: read: title: "Lus" help: "sujets que vous avez lus, dans l'ordre de dernière lecture" + search: + title: "Rechercher" + help: "rechercher dans tous les sujets" categories: title: "Catégories" title_in: "Catégorie - {{categoryName}}" @@ -1378,15 +1387,6 @@ fr: top: title: "Top" help: "les meilleurs sujets de l'année, du mois, de la semaine ou du jour" - yearly: - title: "Top Annuel" - monthly: - title: "Top Mensuel" - weekly: - title: "Top Hebdomadaire" - daily: - title: "Top Quotidien" - all: "depuis toujours" this_year: "Cette année" this_month: "Ce mois-ci" this_week: "Cette semaine" @@ -1423,8 +1423,8 @@ fr: admins: 'Administateurs :' blocked: 'Bloqués :' suspended: 'Suspendu :' - private_messages_short: "MPs" - private_messages_title: "Messages Privés" + private_messages_short: "Msgs" + private_messages_title: "Messages" space_free: "{{size}} libre" uploads: "téléchargements" backups: "sauvegardes" @@ -1458,7 +1458,7 @@ fr: agree_title: "Confirme que le signalement est correct et valide." agree_flag_modal_title: "Accepter et..." agree_flag_hide_post: "Accepter (caché le message + envoi d'un MP)" - agree_flag_hide_post_title: "Cacher ce message et envoyer automatiquement un message privé urgent à l'utilisateur pour qu'il le modifie." + agree_flag_hide_post_title: "Masquer ce message et envoyer automatiquement un message à l'utilisateur afin qu'il le modifie rapidement" agree_flag_restore_post: "Accepter (restauré le message)" agree_flag_restore_post_title: "Restaurer ce message" agree_flag: "Accepter le signalement" @@ -1530,12 +1530,8 @@ fr: name: "Nom" add: "Ajouter" add_members: "Ajouter des membres" - custom: - label: "Personnalisé" - title: "Groupes personnalisés" - automatic: - label: "Automatique" - title: "Groupes automatiques" + custom: "Personnaliser" + automatic: "Automatique" automatic_membership_email_domains: "Les utilisateurs qui s'enregistrent avec un domaine courriel qui correspond exactement à un élément de cette liste seront automatiquement ajoutés à ce groupe:" automatic_membership_retroactive: "Appliquer la même règle de domaine courriel pour les utilisateurs existants" api: @@ -1569,18 +1565,19 @@ fr: read_only: enable: title: "Activer le mode lecture seule" - text: "Activer le mode lecture seule" + label: "Activer le mode lecture seule" confirm: "Êtes-vous sûr de vouloir activer le mode lecture seule?" disable: title: "Désactiver le mode lecture seule" - text: "Désactiver le mode lecture seule" + label: "Désactiver le mode lecture seule" logs: none: "Pas de journaux pour l'instant..." columns: filename: "Nom du fichier" size: "Taille" upload: - text: "Envoyer" + label: "Envoyer" + title: "Envoyer une sauvegarde à cette instance" uploading: "Envoi en cours..." success: "'{{filename}}' a été envoyé avec succès." error: "Il y a eu une erreur lors de l'envoi de '{{filename}}': {{message}}" @@ -1588,33 +1585,32 @@ fr: is_running: "Une opération est en cours d'exécution ..." failed: "Le/La {{operation}} a échoué(e). Veuillez consulter les journaux." cancel: - text: "Annuler" + label: "Annuler" title: "Annuler l'opération en cours" confirm: "Êtes-vous sûr de vouloir annuler l'opération en cours?" backup: - text: "Sauvegarder" + label: "Sauvegarder" title: "Créer une sauvegarde" confirm: "Voulez-vous démarrer une nouvelle sauvegarde ?" without_uploads: "Oui (ne pas inclure les fichiers)" download: - text: "Télécharger" + label: "Télécharger" title: "Télécharger la sauvegarde" destroy: - text: "Supprimer" title: "Supprimer la sauvegarde" confirm: "Êtes-vous sûr de vouloir détruire cette sauvegarde?" restore: is_disabled: "La restauration est désactivée dans les paramètres du site." - text: "Restaurer" + label: "Restaurer" title: "Restaurer la sauvegarde" confirm: "Êtes-vous sûr de vouloir restaurer cette sauvegarde?" rollback: - text: "Restaurer (Rollback)" + label: "Revenir en arrière" title: "Restaurer (RollBack) la base de données à l'état de travail précédent" confirm: "Êtes-vous sûr de vouloir restaurer (rollback) la base de données à l'état de fonctionnement précédent?" export_csv: user_archive_confirm: "Êtes-vous sûr de vouloir télécharger vos messages?" - success: "L'exportation a été initialisé. Vous serez averti par message privé lorsque le traitement sera terminé." + success: "L'exportation a été initialisé. Vous serez averti par message lorsque le traitement sera terminé." failed: "L'export a échoué. Veuillez consulter les logs." rate_limit_error: "Les messages peuvent être téléchargés une fois par jour, veuillez ressayer demain." button_text: "Exporter" diff --git a/config/locales/client.he.yml b/config/locales/client.he.yml index b6cf97408d..611655d6d4 100644 --- a/config/locales/client.he.yml +++ b/config/locales/client.he.yml @@ -92,6 +92,7 @@ he: email: 'שלח קישור בדוא"ל' topic_admin_menu: "פעולות ניהול לנושא" emails_are_disabled: "כל הדוא\"ל היוצא נוטרל באופן גורף על ידי מנהל אתר. שום הודעת דוא\"ל, מכל סוג שהוא, תשלח." + s3_deprecation_warning: "אזהרה! Amazon S3 יהיה בקרוב לא מומלץ לשימוש לאכסון צרופות/image. אנא עקבו אחר ההנחיות להעברה לאכסון מקומי." edit: 'ערוך את הכותרת והקטגוריה של הנושא' not_implemented: "סליחה, תכונה זו עדיין לא מומשה!" no_value: "לא" @@ -161,6 +162,7 @@ he: not_bookmarked: "קראת הודעה זו, לחץ להוספה למועדפים" last_read: "זו ההודעה האחרונה שקראת, לחץ להוספה למועדפים" remove: "הסר מהמועדפים" + confirm_clear: "האם את/ה בטוחים שאתם מעוניינים לנקות את כל הסימניות מנושא זה?" topic_count_latest: one: "נושא חדש או עדכון {{count}} ." other: "{{count}} נושאים חדשים או עדכונים." @@ -184,6 +186,8 @@ he: undo: "ביטול (Undo)" revert: "לחזור" failed: "נכשל" + switch_to_anon: "מצב אנונימי" + switch_from_anon: "יצאה ממצב אנונימי" banner: close: "שחרור באנר זה." choose_topic: @@ -205,6 +209,26 @@ he: posted_by_you: "פורסם על ידך" sent_by_user: "נשלח על ידי {{user}}" sent_by_you: "נשלח על ידך" + directory: + filter_name: "סינון לפי שם_משתמש/ת" + title: "משתמשים" + likes_given: "ניתנ/ו" + likes_received: "התקבל/ו" + topics_entered: "כניסות" + topics_entered_long: "נושאים אליהם נכנסת" + time_read: "זמן קריאה" + topic_count: "נושאים" + topic_count_long: "נושאים שנוצרו" + post_count: "תגובות" + post_count_long: "תגובות שפורסמו" + no_results: "לא נמצאו תוצאות" + days_visited: "ביקורים" + days_visited_long: "ימים לביקור" + posts_read: "נקראו" + posts_read_long: "פרסומים שנקראו" + total_rows: + one: "משתמש/ת 1" + other: "%{count} משתמשים" groups: visible: "הקבוצה זמינה לכל המשתמשים" title: @@ -224,7 +248,7 @@ he: '2': "לייקים שהתקבלו" '3': "מועדפים" '4': "נושאים" - '5': "הודעות" + '5': "תשובות" '6': "תגובות" '7': "אזכורים" '9': "ציטוטים" @@ -272,8 +296,8 @@ he: mute: "השתק" edit: "ערוך העדפות" download_archive: "הורדת הפרסומים שלי" - new_private_message: "מסר פרטי חדש" - private_message: "הודעה פרטית" + new_private_message: "הודעה חדשה" + private_message: "הודעה" private_messages: "הודעות" activity_stream: "פעילות" preferences: "העדפות" @@ -310,6 +334,9 @@ he: delete_yourself_not_allowed: "אתה לא יכול למחוק את חשבונך כרגע. צור קשר עם מנהל כדי שימחק אותו בשבילך." unread_message_count: "הודעות" admin_delete: "מחק" + users: "משתמשים" + muted_users: "מושתק" + muted_users_instructions: "להשבית כל התראה ממשתמשים אלו" staff_counters: flags_given: "סימונים שעוזרים" flagged_posts: "הודעות מסומנות" @@ -348,7 +375,8 @@ he: uploaded_avatar_empty: "הוסף תמונה אישית" upload_title: "העלה את התמונה שלך" upload_picture: "העלאת תמונה" - image_is_not_a_square: "אזהרה: חתכנו את התמונה שלך, היא לא ריבועית" + image_is_not_a_square: "אזהרה: קיצצנו את התמונה שלך; האורך והרוחב לא היו שווים." + cache_notice: "שינית בהצלחה את האווטר שלך אבל יתכן ויקח קצת זמן עד שהשינוי יופיע בשל עניני זכרון מטמון בדפדפן." change_profile_background: title: "שינוי רקע פרופיל" instructions: "רקעי הפרופיל ימורכזו ויוצגו ברוחב ברירת מחדל של 850px." @@ -368,6 +396,7 @@ he: name: title: "שם" instructions: "שמך המלא (רשות)" + instructions_required: "שמך המלא" too_short: "השם שלך קצר מידי" ok: "השם נראה טוב" username: @@ -405,8 +434,8 @@ he: every_three_days: "כל שלושה ימים" weekly: "שבועית" every_two_weeks: "כל שבועיים" - email_direct: "שלחו לי דואל כשמישהו/י מצטטים אותי, מגיבים לפרסום שלי או מזכירים את @שם_המשתמש/ת" - email_private_messages: "שלחו לי דוא\"ל כשמישהו/מישהי שולחים לי מסר פרטי" + email_direct: "שלחו לי דוא\"ל כשמישהו/י מצטטים אותי, מגיבם לפרסום שלי, מזכירים את @שם_המשתמש/ת שלי, או מזמינים אותי לנושא" + email_private_messages: "שלחו לי דוא\"ל כשמישהו/י שולחים לי מסר" email_always: "אל תמנעו התראות דוא\"ל כאשר אני פעיל/ה באתר" other_settings: "אחר" categories_settings: "קטגוריות" @@ -454,7 +483,7 @@ he: none: "נכון לעכשיו לא הזמנת לכאן אף אחד. תוכלו לשלוח הזמנות אישיות, או להזמין כמה אנשים בבת אחת באמצעות העלאת קובץ הזמנה קבוצתית." text: "הזמנה קבוצתית מקובץ" uploading: "העלאה..." - success: "הקובץ הועלה בהצלחה, תקבלו התראה באמצעות מסר פרטי כאשר התהליך יושלם" + success: "העלאת הקובץ החלה בהצלחה, תקבלו התראה באמצעות מסר כאשר התהליך יושלם." error: "חלה תקלה בהעלאת \"'{{filename}}': \n{{message}}" password: title: "סיסמה" @@ -478,7 +507,7 @@ he: stream: posted_by: "פורסם על ידי" sent_by: "נשלח על ידי" - private_message: "הודעה פרטית" + private_message: "הודעה" the_topic: "הנושא" loading: "טוען..." errors: @@ -531,9 +560,9 @@ he: enable: "הסתר פרסומים שנמחקו" disable: "הצגת פרסומים שנמחקו" private_message_info: - title: "הודעה פרטית" + title: "הודעה" invite: "הזמינו אחרים..." - remove_allowed_user: "האם באמת להסיר את {{name}} מההודעה הפרטית הזו?" + remove_allowed_user: "האם את/ה באמת רוצה להסיר את {{name}} מהודעה זו?" email: 'דוא"ל' username: 'שם משתמש' last_seen: 'נצפה' @@ -545,7 +574,7 @@ he: title: "יצירת חשבון חדש" failed: "משהו לא בסדר, אולי כבר קיימת כתובת דואר אלקטרוני כזו. נסה את קישור שכחתי סיסמה." forgot_password: - title: "שכחתי סיסמה" + title: "אתחול סיסמה" action: "שכחתי את הסיסמה שלי" invite: "הזן שם משתמש או כתובת דואר אלקטרוני ונשלח לך קישור לאיפוס סיסמה" reset: "איפוס סיסמה" @@ -601,6 +630,7 @@ he: emoji: "Emoji :smile:" add_warning: "זוהי התראה רשמית." posting_not_on_topic: "לאיזה נושא רצית להגיב?" + saving_draft_tip: "שמירה..." saved_draft_tip: "נשמר" saved_local_draft_tip: "נשמר מקומית" similar_topics: "הנושא שלך דומה ל..." @@ -617,8 +647,8 @@ he: reply_here: "תגובה כאן" reply: "תגובה" cancel: "ביטול" - create_topic: "נושא חדש" - create_pm: "הודעה פרטית" + create_topic: "יצירת נושא" + create_pm: "הודעה" title: "או לחץ Ctrl+Enter" users_placeholder: "הוספת משתמש" title_placeholder: " במשפט אחד, במה עוסק הדיון הזה?" @@ -668,11 +698,11 @@ he: units: "(# מספר שעות)" examples: 'הזינו מספר שעות (24).' notifications: - title: "התראות של אזכורי @שם, תגובות להודעות ונושאים שלך, הודעות פרטיות וכיו\"ב" + title: "התראות אודות אזכור @שם, תגובות לפרסומים ולנושאים שלך, הודעות וכו'" none: "לא ניתן לטעון כעת התראות." more: "הצגת התראות ישנות יותר" total_flagged: "סך הכל נושאים מדוגללים" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -680,6 +710,7 @@ he: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} אישר/ה את הזמנתך

    " moved_post: "

    {{username}} הזיז/ה {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -706,7 +737,7 @@ he: user: "חיפוש פרסומים לפי @{{username}}" category: "חיפוש בקטגוריה \"{{category}}\"" topic: "חפשו בנושא זה" - private_messages: "חיפוש הודעות פרטיות" + private_messages: "חיפוש הודעות" site_map: "לך לרשימת נושאים או קטגוריה אחרת" go_back: 'חזור אחורה' not_logged_in_user: 'עמוד משתמש עם סיכום פעילות נוכחית והעדפות' @@ -740,6 +771,7 @@ he: bookmarks: "אין לך עדיין סימניות לנושאים." category: "אין נושאים בקטגוריה {{category}}." top: "אין נושאים מובילים." + search: "אין תוצאות חיפוש" educate: new: '

    הנושאים החדשים שלך יופיעו כאן.

    כברירת מחדל, נושאים נחשבים חדשים ויופיעו עם האינדיקציה חדש אם הם נוצרו ב-2 הימים האחרונים. .

    תוכלו לשנות זאת ב העדפות .

    ' unread: '

    הנושאים הלא-נקראים שלך מופיעים כאן.

    כברירת מחדל נושאים נחשבים ככאלה שלא נקראו ויוצגו כ- 1 אם את/ה:

    • יצרת את הנושא

    או אם כיוונתם את הנושא הזה להיות תחת מעקב או צפייה באמצעות כפתור ההתראות שבתחתית כל נושא.

    את/ה יכולים לשנות זאת בהעדפות.

    ' @@ -753,11 +785,12 @@ he: category: "אין עוד נושאים בקטגוריה {{category}}." top: "אין עוד נושאים מובילים." bookmarks: "אין עוד סימניות לנושאים." + search: "אין עוד תוצאות חיפוש" topic: filter_to: "{{post_count}} הודעות בנושא" create: 'נושא חדש' create_long: 'יצירת נושא חדש' - private_message: 'התחלת הודעה פרטית' + private_message: 'תחילת הודעה' list: 'נושאים' new: 'נושא חדש' unread: 'לא נקרא/ו' @@ -835,13 +868,13 @@ he: '0': 'אתה מתעלם מכל ההתראות בנושא זה.' watching_pm: title: "צופה" - description: "תקבל/י התראה על כל פרסום חדש במסר הפרטי הזה. סך הפרסומים החדשים ושלא נקראו יופיע גם לצד הנושא." + description: "תקבל/י התראה על כל פרסום בהודעה זו. גם סך הפרסומים החדשים ואלו שלא נקראו יופיעו לצד הנושא." watching: title: "צופה" description: "תקבל/י התראה על כל פרסום חדש תחת נושא זה. סך הפרסומים החדשים ושלא נקראו יופיע גם לצד הנושא." tracking_pm: title: "עוקב" - description: "סך הפרסום החדש והלא נקראים שלך יופיע לצד המסר הפרטי. תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך." + description: "סך הפרסומים החדשים ואלו שלא נקראו יופיע לצד ההודעה. תקבל/י התראה אם מישהו/י יזכירו את @שם_המשתמש/ת שלך או יגיבו לפרסום שלך." tracking: title: "עוקב" description: "סך הפרסום החדשים והלא נקראים יופיע לצד הנושא. תקבלו התראה אם מישהו יזכיר את @שם_המשתמש שלך או ישיב על פרסום שלך." @@ -850,10 +883,10 @@ he: description: "תרבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך." regular_pm: title: "רגיל" - description: "תקבלו התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או ישיב לפרסום שלך במסר הפרטי." + description: "תקבל/י התראה אם מישהו יזכיר את @שם_המשתמש/ת שלך או יגיב לפרסום שלך בהודעה." muted_pm: title: "מושתק" - description: "לעולם לא תקבל/י התראות על כל הקשור להודעה פרטית זו." + description: "לעולם לא תקבל/י התראה לשום דבר בנוגע להודעה זו." muted: title: "מושתק" description: "לעולם לא תקבל/י התראות על הנושא הזה, והוא לא יופיע בעמוד הלא נקראו שלך." @@ -862,18 +895,21 @@ he: delete: "מחק נושא" open: "פתח נושא" close: "נעל נושא" - auto_close: "נעילה אוטומטית" - make_banner: "נושא הבאנר" - remove_banner: "הסרת נושא הבאנר" - pin: "נעץ נושא" - unpin: "בטל נעיצת נושא" - pin_globally: "נעץ נושא גלובלית" + multi_select: "בחר/י פרסומים..." + auto_close: "סגירה אוטומטית..." + pin: "נעיצת נושא.." + unpin: "שחרור נעיצת נושא..." unarchive: "הוצא נושא מארכיון" archive: "הכנס נושא לארכיון" invisible: "הסתרה" visible: "גילוי" reset_read: "אפס מידע שנקרא" - multi_select: "בחר הודעות" + feature: + pin: "נעיצת נושא" + unpin: "שחרור נעיצת נושא" + pin_globally: "נעיצת נושא גלובלית" + make_banner: "באנר נושא" + remove_banner: "הסרת באנר נושא" reply: title: 'תגובה' help: 'החל בכתיבת הודעה לנושא זה' @@ -887,26 +923,40 @@ he: title: 'סימון' help: 'סמנו נושא זה באופן פרטי לתשומת לב או שלחו התראה פרטית בנוגע אליו' success_message: 'סמנת נושא זה בהצלחה.' + feature_topic: + title: "הצגת נושא זה" + pin: "גרמו לנושא זה להופיע בראש הקטגוריה {{categoryLink}}." + confirm_pin: "יש לך כבר {{count}} נושאים נעוצים. מספר גדול מידי של נושאים נעוצים עשויים להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם רוצים להצמיד נושא נוסף בקטגוריה זו? " + unpin: "הסרת נושא זה מראש הקטגוריה {{categoryLink}}." + pin_note: "המשתמש/ת יכולים להסיר את הנושא באופן עצמאי עבור עצמם." + already_pinned: + zero: "אין נושאים מוצמדים בקטגוריה {{categoryLink}}." + pin_globally: "גרמו לנושא זה להופיע בראש כל רשימות הנושאים, עד שחבר/ת צוות מסירים אותו." + confirm_pin_globally: "יש לך כבר {{count}} נושאים המוצמדים באופן גלובאלי. עודף נושאים מוצמדים עשוי להכביד על משתמשים חדשים או אנונימיים. האם את/ה בטוחים שאתם מעוניינים להצמיד נושא גלובאלי נוסף?" + unpin_globally: "הסרת נושא זה מראש כל רשימות הנושאים." + global_pin_note: "משתמשים יכולים להסיר את הצמדת הנושא באופן עצמאי לעצמם." + already_pinned_globally: + zero: "אין נושאים המוצמדים באופן גלובלי." + other: "נושאים שכרגע מוצמדים גלובלית: {{count}}." + make_banner: "הפכו נושא זה לבאנר אשר מופיע בראש כל העמודים." + remove_banner: "הסרת הבאנר שמופיע בראש כל העמודים." + banner_note: "משתמשים יכולים לבטל את הבאנר על ידי סגירתו. רק נושא אחד יכול לשמש כבאנר בזמן נתון." + already_banner: + zero: "לא מוגדר באנר נושא" + one: "יש כרגע באנר נושאי." inviting: "מזמין..." automatically_add_to_groups_optional: "הזמנה זו כוללת גישה לקבוצות הללו: (אופציונלי, רק מנהל/ת)" automatically_add_to_groups_required: "הזמנה זו כוללת גישה לקבוצות הללו: (חובה, רק מנהל/ת)" invite_private: - title: 'הזמנה להודעה פרטית' email_or_username: "כתובת דואר אלקטרוני או שם משתמש של המוזמן" email_or_username_placeholder: "כתובת דואר אלקטרוני או שם משתמש" action: "הזמנה" - success: "הזמנו את המשתמש/ת להשתתף בשיחה פרטית זו." error: "סליחה, הייתה שגיאה בהזמנת משתמש זה." group_name: "שם הקבוצה" invite_reply: title: 'הזמנה' - action: 'הזמנה באמצעות דואר אלקטרוני' - help: 'שלח הזמנה לחברים כדי שהם יוכלו להגיב לנושא בלחיצה אחת' - to_topic: "נשלח מייל קצר המאפשר לחברך להצטרף באופן מיידי ולהשיב לנושא באמצעות לחיצה על קישור, ללא צורך להירשם למערכת הפורומים." to_forum: "נשלח מייל קצר המאפשר לחברך להצטרף באופן מיידי באמצעות לחיצה על קישור, ללא צורך בהתחברות למערכת הפורומים." email_placeholder: 'name@example.com' - success: "שלחנו הזמנה אל {{email}}. נודיע לך כאשר ההזמנה תתקבל. בדקו את לשונית ההזמנות בעמוד המשתמש/ת שלך כדי לעקוב אחר ההזמנות ששלחת." - error: "מצטערים לא יכלנו להזמין איש/ה אלו. ייתכן שהם כבר משתמשים באתר? (הזמנות הן בעלות הגבלת קצב)" login_reply: 'התחברו כדי להשיב' filters: n_posts: @@ -950,13 +1000,10 @@ he: one: בחרת הודעה אחת. other: בחרת {{count}} הודעות. post: - reply: "מגיב ל {{link}} מאת {{replyAvatar}} {{username}}" reply_topic: "תגובה ל {{link}}" quote_reply: "תגובה עם ציטוט" - edit: "עורך את {{link}} מאת {{replyAvatar}} {{username}}" edit_reason: "סיבה: " post_number: "הודעה {{number}}" - in_reply_to: "השב ל" last_edited_on: "הודעה נערכה לאחרונה ב" reply_as_new_topic: "תגובה כנושא מקושר" continue_discussion: "ממשיך את הדיון מ {{postLink}}:" @@ -1048,8 +1095,6 @@ he: inappropriate: "{{icons}} סומן בלתי ראוי" notify_moderators: "{{icons}} הודיעו למנהלים" notify_moderators_with_url: "{{icons}} הודיעו למנהלים" - notify_user: "{{icons}} שלחו הודעה פרטית" - notify_user_with_url: "{{icons}} שלחו הודעה פרטית" bookmark: "{{icons}} סימנו כמועדף" like: "{{icons}} נתנו לייק" vote: "{{icons}} הצביעו עבור זה" @@ -1058,7 +1103,6 @@ he: spam: "סמנת את זה כספאם" inappropriate: "סמנת את זה כלא ראוי" notify_moderators: "סמנת את זה עבור המנהלים" - notify_user: "שלחת הודעה פרטית למשתמש הזה" bookmark: "סימנת הודעה זו כמועדפת" like: "נתת לזה לייק" vote: "הצבעת להודעה זו" @@ -1075,9 +1119,6 @@ he: notify_moderators: one: "אתה ועוד אחד דגללתם את זה עבור ניהול" other: "את/ה ועוד {{count}} אנשים אחרים סמנתם את זה לניהול" - notify_user: - one: "אתה ועוד אחד שלחתם הודעה פרטית למשתמש זה" - other: "אתה ועוד {{count}} אנשים אחרים שלחתם הודעה פרטית למשתמש זה" bookmark: one: "אתה ועוד אחד סימנתם הודעה זו כמועדפת" other: "אתה ועוד {{count}} אנשים אחרים סימנתם הודעה זו כמועדפת" @@ -1100,9 +1141,6 @@ he: notify_moderators: one: "אדם אחד דגלל את זה לניהול" other: "{{count}} אנשים סמנו את זה לניהול" - notify_user: - one: "אדם אחד שלח הודעה פרטית למשתמש הזה" - other: "{{count}} אנשים שלחו הודעה פרטית למשתמש הזה" bookmark: one: "אדם אחד סימן הודעה זו כמועדפת" other: "{{count}} אנשים סימנו הודעה זו כמועדפת" @@ -1208,7 +1246,6 @@ he: private_reminder: 'דגלים הם פרטיים וניתנים לצפייה ע"י הצוות בלבד' action: 'סימון פרסום' take_action: "בצע פעולה" - notify_action: 'הודעה פרטית' delete_spammer: "מחק ספאמר" delete_confirm: "אתה עומד למחוק %{posts} הודעות ו-%{topics} נושאים של המשתמש הזה, להסיר את החשבון שלהם, לחסור הרשמה מכתובת ה-IP שלהם %{ip_address}, ולהוסיף את כתובת הדואר האלקטרוני %{email} לרשימה שחורה. אתה בטוח שזה באמת ספאמר?" yes_delete_spammer: "כן, מחק ספאמר" @@ -1230,7 +1267,6 @@ he: flagging_topic: title: "תודה על עזרתך לשמירה על תרבות הקהילה שלנו!" action: "סימון נושא" - notify_action: "הודעה פרטית" topic_map: title: "סיכום נושא" links_shown: "הצג את כל הקישורים {{totalLinks}}..." @@ -1334,15 +1370,6 @@ he: top: title: "מובילים" help: "הנושאים הפעילים ביותר בשנה, חודש, שבוע או יום האחרונים" - yearly: - title: "מובילים שנתי" - monthly: - title: "מובילים חודשי" - weekly: - title: "המיטב השבועי" - daily: - title: "המיטב היומי" - all: "כל הזמנים" this_year: "השנה" this_month: "החודש" this_week: "השבוע" @@ -1379,8 +1406,6 @@ he: admins: 'מנהלים ראשיים:' blocked: 'חסומים:' suspended: 'מושעים:' - private_messages_short: "ה\"פ" - private_messages_title: "הודעות פרטיות" space_free: "{{size}} חופשיים" uploads: "העלאות" backups: "גיבויים" @@ -1414,7 +1439,6 @@ he: agree_title: "אישור סימון זה כתקין ונכון" agree_flag_modal_title: "הסכמה ו..." agree_flag_hide_post: "קבחה (הסתרת פרסום + שליחת מסר פרטי)" - agree_flag_hide_post_title: "הסתירו פרסום זה ושלחו למשתמ/ת מסר פרטי אוטומטי עם בקשה לערוך אותו." agree_flag_restore_post: "הסכמה (שחזור הפרסום)" agree_flag_restore_post_title: "שחזור פרסום זה" agree_flag: "הסכמה עם הסימון" @@ -1519,18 +1543,15 @@ he: read_only: enable: title: "אפשר מצב קריאה בלבד" - text: "אפשר מצב קריאה בלבד" confirm: "אתה בטוח שברצונך לאפשר את מצב קריאה בלבד??" disable: title: "בטל מצב קריאה בלבד" - text: "בטל מצב קריאה בלבד" logs: none: "עדיין אין לוגים..." columns: filename: "שם קובץ" size: "גודל" upload: - text: "העלאה" uploading: "מעלה..." success: "'{{filename}}' הועלה בהצלחה." error: "הייתה שגיאה במהלך העלאת '{{filename}}': {{message}}" @@ -1538,33 +1559,26 @@ he: is_running: "פעולה רצה כרגע..." failed: "ה{{operation}} נכשלה. אנא בדוק את הלוגים." cancel: - text: "ביטול" title: "בטל את הפעולה הנוכחית" confirm: "אתה בטוח שברצונך לבטל את הפעולה הנוכחית?" backup: - text: "גיבוי" title: "צור גיבוי" confirm: "האם תרצו להתחיל גיבוי חדש?" without_uploads: "כן (ללא הכללת קבצים)" download: - text: "הורד" title: "הורד את הגיבוי" destroy: - text: "מחק" title: "הסר את הגיבוי" confirm: "אתה בטוח שברצונך להשמיד את הגיבוי הזה?" restore: is_disabled: "שחזור אינו מאופשר לפי הגדרות האתר." - text: "שחזר" title: "שחזר את הגיבוי" confirm: "אתה בטוח שברצונך לשחזר את הגיבוי הזה?" rollback: - text: "חזור לאחור" title: "הזחר את מסד הנתונים למצב עבודה קודם" confirm: "אתה בטוח שברצונך להחזיר את מסד הנתונים למצב עבודה קודם?" export_csv: user_archive_confirm: "האם את/ה בטוח/ה שאתם רוצים להוריד את הפרסומים שלכם?" - success: "פעולת היצוא החלה, תקבלו התראה באמצעות מסר פרטי כאשר התהליך יושלם." failed: "הייצוא נכשל. אנא בדקו ברישומי הלוג." rate_limit_error: "ניתן להוריד פרסומים פעם ביום, אנא נסו שוב מחר." button_text: "ייצוא" diff --git a/config/locales/client.id.yml b/config/locales/client.id.yml index a1e66224f2..a1ee66ad0e 100644 --- a/config/locales/client.id.yml +++ b/config/locales/client.id.yml @@ -195,8 +195,6 @@ id: '2': "Likes Diterima" '3': "Markah" '4': "Topik" - '5': "Post" - '6': "Balasan" '7': "Disebutkan" '9': "Kutipan" '10': "Bertanda Bintang" @@ -233,8 +231,6 @@ id: mute: "Redam" edit: "Ubah Preferensi" download_archive: "Unduh Pos Saya" - new_private_message: "Pesan Pribadi Baru" - private_message: "Private Message" private_messages: "Messages" activity_stream: "Activity" bookmarks: "Markah" @@ -302,7 +298,6 @@ id: last_seen: 'Terlihat' created: 'Dibuat' forgot_password: - title: "Lupa Password" action: "Saya lupa password" login: email_placeholder: "email atau username" diff --git a/config/locales/client.it.yml b/config/locales/client.it.yml index 5a86a93b1c..e61067cf25 100644 --- a/config/locales/client.it.yml +++ b/config/locales/client.it.yml @@ -92,6 +92,7 @@ it: email: 'invia questo collegamento via email' topic_admin_menu: "azioni amministrative sull'argomento" emails_are_disabled: "Tutte le email in uscita sono state disabilitate a livello globale da un amministratore. Non sarà inviata nessun tipo di notifica via email." + s3_deprecation_warning: "ATTENZIONE! Amazon S3 sarà presto reso obsoleto per l'archiviazione di immagini/allegati. Segui le istruzioni per migrare all'archiviazione locale." edit: 'modifica titolo e categoria dell''argomento' not_implemented: "Spiacenti! Questa funzione non è stata ancora implementata." no_value: "No" @@ -161,6 +162,7 @@ it: not_bookmarked: "hai letto questo messaggio; clicca per inserirlo nei segnalibri" last_read: "questo è l'ultimo messaggio che hai letto; clicca per inserirlo nei segnalibri" remove: "Rimuovi Segnalibro" + confirm_clear: "Sei sicuro di voler cancellare tutti segnalibri da questo argomento?" topic_count_latest: one: "{{count}} discussione nuova o aggiornata" other: "{{count}} argomenti nuovi o aggiornati." @@ -184,6 +186,8 @@ it: undo: "Annulla" revert: "Ripristina" failed: "Fallito" + switch_to_anon: "Modalità Anonima" + switch_from_anon: "Esci Modalità Anonima" banner: close: "Nascondi questo banner." choose_topic: @@ -205,6 +209,26 @@ it: posted_by_you: "Pubblicato da te" sent_by_user: "Inviato da {{user}}" sent_by_you: "Inviato da te" + directory: + filter_name: "filtra per nome utente" + title: "Utenti" + likes_given: "Dati" + likes_received: "Ricevuti" + topics_entered: "Inseriti" + topics_entered_long: "Argomenti Inseriti" + time_read: "Tempo di Lettura" + topic_count: "Argomenti" + topic_count_long: "Argomenti Creati" + post_count: "Risposte" + post_count_long: "Risposte Inviate" + no_results: "Nessun risultato trovato." + days_visited: "Visite" + days_visited_long: "Giorni Frequenza" + posts_read: "Letti" + posts_read_long: "Messaggi Letti" + total_rows: + one: "1 utente" + other: "%{count} utenti" groups: visible: "Il Gruppo è visibile a tutti gli utenti" title: @@ -224,7 +248,7 @@ it: '2': "Mi piace - Ricevuti" '3': "Segnalibri" '4': "Argomenti" - '5': "Messaggi" + '5': "Risposte" '6': "Risposte" '7': "Menzioni" '9': "Citazioni" @@ -272,8 +296,8 @@ it: mute: "Ignora" edit: "Modifica opzioni" download_archive: "Scarica i miei messaggi" - new_private_message: "Nuovo Messaggio Privato" - private_message: "Messaggio privato" + new_private_message: "Nuovo Messaggio" + private_message: "Messaggio" private_messages: "Messaggi" activity_stream: "Attività" preferences: "Opzioni" @@ -310,6 +334,9 @@ it: delete_yourself_not_allowed: "Non puoi eliminare il tuo account in questo momento. Contatta un amministratore e chiedigli di cancellarlo per te." unread_message_count: "Messaggi" admin_delete: "Cancella" + users: "Utenti" + muted_users: "Azzittiti" + muted_users_instructions: "Occulta tutte le notifiche da questi utenti." staff_counters: flags_given: "segnalazioni utili" flagged_posts: "messaggi segnalati" @@ -348,7 +375,8 @@ it: uploaded_avatar_empty: "Aggiungi un'immagine personalizzata" upload_title: "Carica la tua foto" upload_picture: "Carica Immagine" - image_is_not_a_square: "Attenzione: abbiamo ritagliato la tua immagine; non è quadrata." + image_is_not_a_square: "Attenzione: abbiamo ritagliato la tua immagine; l'altezza e la larghezza non erano uguali." + cache_notice: "Il tuo avatar è stato cambiato ma ci potrebbe volere un po' prima che appaia a causa della cache del browser." change_profile_background: title: "Sfondo Profilo" instructions: "Gli sfondi del profilo saranno centrati e avranno per difetto un'ampiezza di 850px." @@ -368,6 +396,7 @@ it: name: title: "Nome" instructions: "Nome completo (facoltativo)" + instructions_required: "Il tuo nome completo" too_short: "Il nome è troppo breve" ok: "Il nome sembra adeguato" username: @@ -405,8 +434,8 @@ it: every_three_days: "ogni tre giorni" weekly: "ogni settimana" every_two_weeks: "ogni due settimane" - email_direct: "Inviami un'email quando qualcuno mi cita, risponde a un mio messaggio o menziona il mio @nome" - email_private_messages: "Inviami un'email quando qualcuno mi scrive un messaggio privato" + email_direct: "Inviami un'email quando qualcuno mi cita, risponde a un mio messaggio, menziona il mio @nome o mi invita ad un argomento" + email_private_messages: "Inviami una email quando qualcuno mi scrive un messaggio" email_always: "Non sospendere le notifiche via email anche quando sono attivo sul sito" other_settings: "Altro" categories_settings: "Categorie" @@ -454,7 +483,7 @@ it: 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" uploading: "In caricamento..." - success: "Il file è stato caricato con successo, riceverai una notifica con un messaggio privato quando il processo sarà completato." + success: "Il file è stato caricato con successo, riceverai un messaggio di notifica quando il processo sarà completato." error: "Si è verificato un errore durante il caricamento {{filename}}': {{message}}" password: title: "Password" @@ -478,7 +507,7 @@ it: stream: posted_by: "Pubblicato da" sent_by: "Inviato da" - private_message: "messaggio privato" + private_message: "messaggio" the_topic: "l'argomento" loading: " Caricamento..." errors: @@ -531,9 +560,9 @@ it: enable: "Nascondi Messaggi Eliminati" disable: "Mostra Messaggi Eliminati" private_message_info: - title: "Messaggio Privato" + title: "Messaggio" invite: "Invita altri utenti..." - remove_allowed_user: "Davvero vuoi rimuovere {{name}} da questo messaggio privato?" + remove_allowed_user: "Davvero vuoi rimuovere {{name}} da questo messaggio?" email: 'Email' username: 'Nome utente' last_seen: 'Ultima visita' @@ -545,7 +574,7 @@ it: title: "Crea Nuovo Account" failed: "Qualcosa non ha funzionato. Forse questa email è già registrata, prova a usare il link di recupero password" forgot_password: - title: "Password Dimenticata" + title: "Reimposta Password" action: "Ho dimenticato la password" invite: "Inserisci il nome utente o l'indirizzo email. Ti manderemo un'email per l'azzeramento della password." reset: "Azzera Password" @@ -601,6 +630,7 @@ it: emoji: "Emoji :smile:" add_warning: "Questo è un avvertimento ufficiale." posting_not_on_topic: "A quale argomento vuoi rispondere?" + saving_draft_tip: "salvataggio..." saved_draft_tip: "salvato" saved_local_draft_tip: "salvato in locale" similar_topics: "Il tuo argomento è simile a..." @@ -618,10 +648,10 @@ it: reply: "Rispondi" cancel: "Annulla" create_topic: "Crea Argomento" - create_pm: "Messaggio Privato" + create_pm: "Messaggio" title: "O premi Ctrl+Enter" users_placeholder: "Aggiunti un utente" - title_placeholder: "In breve, di cosa tratta questa discussione?" + title_placeholder: "In breve, di cosa tratta questo argomento?" edit_reason_placeholder: "perché stai scrivendo?" show_edit_reason: "(aggiungi motivo della modifica)" reply_placeholder: "Scrivi qui. Per formattare il testo, usa Markdown o BBCode. Trascina o incolla un'immagine per caricarla." @@ -668,11 +698,11 @@ it: units: "(n° di ore)" examples: 'Inserisci il numero di ore (24).' notifications: - title: "notifiche di quando @name viene citato, se ci sono risposte ai tuoi messaggi e argomenti, messaggi privati ecc." + title: "notifiche di menzioni @nome, risposte ai tuoi messaggi e argomenti ecc." none: "Impossibile caricare le notifiche al momento." more: "visualizza le notifiche precedenti" total_flagged: "totale argomenti segnalati" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -680,6 +710,7 @@ it: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}}ha accettato il tuo invito

    " moved_post: "

    {{username}} ha spostato {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -706,7 +737,7 @@ it: user: "Cerca messaggi di @{{username}}" category: "Cerca nella categoria \"{{category}}\"" topic: "Cerca in questo argomento" - private_messages: "Cerca nei messaggi privati" + private_messages: "Cerca messaggi" site_map: "vai a un altro elenco di argomenti o categoria" go_back: 'indietro' not_logged_in_user: 'pagina utente con riassunto delle attività correnti e delle impostazioni' @@ -740,6 +771,7 @@ it: bookmarks: "Non hai ancora argomenti nei segnalibri." category: "Non ci sono argomenti in {{category}}." top: "Non ci sono argomenti di punta." + search: "Non ci sono risultati della ricerca." educate: new: '

    Qui compaiono i tuoi nuovi argomenti.

    Per difetto, gli argomenti creati negli ultimi 2 giorni saranno considerati nuovi e mostreranno l''indicatore nuovo.

    Puoi cambiare questa configurazione nelle tue preferenze.

    ' unread: '

    Qui compaiono i tuoi argomenti non letti.

    Per difetto, gli argomenti sono considerati non letti e mostrano un conteggio di non lettura 1 se hai:

    • Creato l''argomento
    • Risposto all''argomento
    • Letto l''argomento per più di 4 minuti

    Oppure se hai esplicitamente impostato l''argomento come Seguito o Osservato usando il pannello di controllo delle notifiche in fondo ad ogni argomento.

    Puoi cambiare questa configurazione nelle tue preferenze.

    ' @@ -753,11 +785,12 @@ it: category: "Non ci sono altri argomenti nella categoria {{category}}." top: "Non ci sono altri argomenti di punta." bookmarks: "Non ci sono ulteriori argomenti nei segnalibri." + search: "Non ci sono altri risultati di ricerca." topic: filter_to: "{{post_count}} suoi messaggi" create: 'Nuovo Argomento' create_long: 'Crea un nuovo Argomento' - private_message: 'Inizia un messaggio privato' + private_message: 'Inizia a scrivere un messaggio' list: 'Argomenti' new: 'nuovo argomento' unread: 'non letto' @@ -807,7 +840,7 @@ it: auto_close_notice_based_on_last_post: "Questo argomento si chiuderà %{duration} dopo l'ultima risposta." auto_close_title: 'Impostazioni di auto-chiusura' auto_close_save: "Salva" - auto_close_remove: "Non chiudere automaticamente questo Argomento" + auto_close_remove: "Non chiudere automaticamente questo argomento" progress: title: Avanzamento dell'argomento go_top: "alto" @@ -835,13 +868,11 @@ it: '0': 'Stai ignorando tutte le notifiche di questo argomento.' watching_pm: title: "In osservazione" - description: "Riceverai una notifica per ogni nuovo messaggio ricevuto all'interno di questo messaggio privato. Accanto all'argomento comparirà anche un conteggio dei messaggi non letti e di quelli nuovi." watching: title: "In osservazione" description: "Riceverai una notifica per ogni nuovo messaggio in questo argomento. Accanto all'argomento comparirà anche un conteggio dei messaggi non letti e di quelli nuovi." tracking_pm: title: "Seguito" - description: "Vicino al messaggio privato apparirà il totale dei messaggi non letti e nuovi. Riceverai una notifica se qualcuno menziona il tuo @nome o risponde al tuo messaggio." tracking: title: "Seguito" description: "Accanto all'argomento comparirà il totale dei messaggi non letti e di quelli nuovi. Riceverai una notifica se qualcuno menziona il tuo @nome o risponde al tuo messaggio." @@ -850,10 +881,8 @@ it: description: "Riceverai notifiche se qualcuno menziona il tuo @nome o risponde al tuo messaggio." regular_pm: title: "Normale" - description: "Riceverai notifiche se qualcuno menziona il tuo @nome o risponde al tuo messaggio all'interno del messaggio privato." muted_pm: title: "Ignorato" - description: "Non ti verrà notificato nulla di questo messaggio privato." muted: title: "Ignorato" description: "Non ti verrà notificato nulla di questo argomento e non comparirà nella tab dei non letti." @@ -862,18 +891,11 @@ it: delete: "Cancella Argomento" open: "Apri Argomento" close: "Chiudi Argomento" - auto_close: "Chiudi Automaticamente" - make_banner: "Argomento Annuncio" - remove_banner: "Rimuovi Argomento Annuncio" - pin: "Appunta Argomento" - unpin: "Spunta Argomento" - pin_globally: "Appunta Argomento Globalmente" unarchive: "De-archivia Argomento" archive: "Archivia Argomento" invisible: "Rendi Invisibile" visible: "Rendi Visibile" reset_read: "Reimposta Dati Letti" - multi_select: "Seleziona Messaggi" reply: title: 'Rispondi' help: 'inizia a scrivere una risposta a questo argomento' @@ -887,26 +909,29 @@ it: title: 'Segnala' help: 'segnala questo argomento o invia una notifica privata' success_message: 'Hai segnalato questo argomento con successo.' + feature_topic: + title: "Poni argomento in primo piano" + pin: "Fai apparire questo argomento in cima alla categoria {{categoryLink}}." + unpin: "Rimuovi questo argomento dalla cima della categoria {{categoryLink}}." + make_banner: "Rendi questo argomento uno striscione che apparirà in cima a tutte le pagine." + remove_banner: "Rimuovi lo striscione che appare in cima a tutte le pagine." + banner_note: "Gli utenti possono rimuovere lo striscione chiudendolo. Solo un argomento alla volta può diventare uno striscione." + already_banner: + zero: "Non c'è alcun argomento striscione." + one: "Al momento c'è un argomento striscione." inviting: "Sto invitando..." automatically_add_to_groups_optional: "Questo invito include anche l'accesso ai seguenti gruppi: (opzionale, solo amministratori)" automatically_add_to_groups_required: "Questo invito include anche l'accesso ai seguenti gruppi: (Richiesto, solo amministratori)" invite_private: - title: 'Richiedi un Messaggio Privato' email_or_username: "Email o Utente di chi invita" email_or_username_placeholder: "indirizzo email o nome utente" action: "Invita" - success: "Abbiamo invitato l'utente a partecipare a questo messaggio privato." error: "Spiacenti, si è verificato un errore durante l'invito dell'utente." group_name: "nome gruppo" invite_reply: title: 'Invita' - action: 'Invita via email' - help: 'invia inviti agli amici così potranno rispondere a questo argomento con un solo click' - to_topic: "Invieremo una breve email che permetterà al tuo amico di entrare immediatamente e rispondere a questo argomento cliccando su un collegamento, non sarà necessario effettuare il collegamento." to_forum: "Invieremo una breve email che permetterà al tuo amico di entrare subito cliccando un collegamento, senza bisogno di effettuare il collegamento." email_placeholder: 'nome@esempio.com' - success: "Abbiamo mandato un invito a {{email}}. Ti invieremo una notifica quando l'invito verrà confermato. Controlla gli inviti dal tab sulla tua pagina utente per tenere traccia dei tuoi inviti." - error: "Spiacenti, non è stato possibile invitare la persona. Per caso è già un utente? (Gli inviti hanno limiti di frequenza)" login_reply: 'Collegati per Rispondere' filters: n_posts: @@ -950,13 +975,10 @@ it: one: Hai selezionato 1 messaggio. other: Hai selezionato {{count}} messaggi. post: - reply: "Rispondi a {{link}} da parte di {{replyAvatar}} {{username}}" reply_topic: "Rispondi a {{link}}" quote_reply: "rispondi citando" - edit: "Modifica {{link}} di {{replyAvatar}} {{username}}" edit_reason: "Motivo:" post_number: "messaggio {{number}}" - in_reply_to: "rispondi a" last_edited_on: "ultima modifica al messaggio:" reply_as_new_topic: "Rispondi come Argomento collegato" continue_discussion: "Continua la discussione da {{postLink}}:" @@ -1048,8 +1070,6 @@ it: inappropriate: "{{icons}} l'hanno segnalato come inappropriato" notify_moderators: "{{icons}} hanno informato i moderatori" notify_moderators_with_url: "{{icons}} hanno informato i moderatori" - notify_user: "{{icons}} hanno inviato un messaggio privato" - notify_user_with_url: "{{icons}} hanno invitao un messaggio privato" bookmark: "{{icons}} l'hanno inserito nei segnalibri" like: "A {{icons}} è piaciuto" vote: "{{icons}} l'hanno votato" @@ -1058,7 +1078,7 @@ it: spam: "L'hai segnalato come spam" inappropriate: "L'hai segnalato come inappropriato" notify_moderators: "L'hai segnalato per la moderazione" - notify_user: "Hai inviato un messaggio privato a questo utente" + notify_user: "Hai inviato un messaggio a questo utente" bookmark: "Hai inserito questo messaggio nei segnalibri" like: "Ti piace" vote: "Hai votato per questo post" @@ -1076,8 +1096,8 @@ it: one: "Tu e un'altra persona lo avete contrassegnato per la moderazione" other: "Tu e {{count}} altre persone lo avete contrassegnato per la moderazione" notify_user: - one: "Tu e un'altra persona avete inviato un messaggio privato a questo utente" - other: "Tu e {{count}} altre persone avete inviato un messaggio privato a questo utente" + one: "Tu e un'altra persona avete inviato un messaggio a questo utente" + other: "Tu e {{count}} altre persone avete inviato un messaggio a questo utente" bookmark: one: "Tu e un'altra persona avete inserito questo messaggio nei segnalibri" other: "Tu e {{count}} altre persone avete inserito questo messaggio nei segnalibri" @@ -1101,8 +1121,8 @@ it: one: "Una persona lo ha contrassegnato per la moderazione" other: "{{count}} persone lo hanno contrassegnato per la moderazione" notify_user: - one: "Una persona ha inviato un messaggio privato a questo utente" - other: "{{count}} persone hanno inviato un messaggio privato a questo utente" + one: "Una persona ha inviato un messaggio a questo utente" + other: "{{count}} persone hanno inviato un messaggio a questo utente" bookmark: one: "Una persona ha inserito un segnalibro a questo post" other: "{{count}} persone hanno inserito un segnalibro a questo post" @@ -1208,7 +1228,7 @@ it: private_reminder: 'le segnalazioni sono private, visibili soltanto allo staff ' action: 'Segnala Messaggio' take_action: "Procedi" - notify_action: 'Messaggio privato' + notify_action: 'Messaggio' delete_spammer: "Cancella Spammer" delete_confirm: "Stai per eliminare %{posts} messaggi e %{topics} argomenti di questo utente, rimuovere il suo account, bloccare le iscrizioni da questo indirizzo IP %{ip_address}, e aggiungere il suo indirizzo email %{email} all'elenco di quelli bloccati. Sei sicuro che questo utente sia davvero uno spammer?" yes_delete_spammer: "Sì, cancella lo spammer" @@ -1230,7 +1250,7 @@ it: flagging_topic: title: "Grazie per aiutarci a mantenere la nostra comunità civile!" action: "Segnala Argomento" - notify_action: "Messaggio privato" + notify_action: "Messaggio" topic_map: title: "Riassunto Argomento" links_shown: "mostra tutti i {{totalLinks}} collegamenti..." @@ -1292,6 +1312,9 @@ it: read: title: "Letti" help: "argomenti che hai letto, in ordine di lettura" + search: + title: "Cerca" + help: "cerca tutti gli argomenti" categories: title: "Categorie" title_in: "Categoria - {{categoryName}}" @@ -1330,15 +1353,6 @@ it: top: title: "Di Punta" help: "gli argomenti più attivi nell'ultimo anno, mese, settimana o giorno" - yearly: - title: "Migliori dell'anno" - monthly: - title: "Migliori del mese" - weekly: - title: "Migliori della settimana" - daily: - title: "Migliori del giorno" - all: "Senza limiti di tempo" this_year: "Quest'anno" this_month: "Questo mese" this_week: "Questa settimana" @@ -1376,7 +1390,7 @@ it: blocked: 'Bloccati:' suspended: 'Sospesi: ' private_messages_short: "MP" - private_messages_title: "Messaggi Privati" + private_messages_title: "Messaggi" space_free: "{{size}} liberi" uploads: "caricamenti" backups: "backup" @@ -1410,7 +1424,7 @@ it: agree_title: "Conferma che questa segnalazione è valida e corretta" agree_flag_modal_title: "Acconsento e..." agree_flag_hide_post: "D'accordo (nascondi il messaggio e invia MP)" - agree_flag_hide_post_title: "Nascondi questo messaggio e invia automaticamente all'utente un messaggio privato chiedendogli di modificarlo" + agree_flag_hide_post_title: "Nascondi questo messaggio e invia automaticamente all'utente un messaggio chiedendogli di modificarlo" agree_flag_restore_post: "D'accordo (ripristina messaggio)" agree_flag_restore_post_title: "Ripristina questo messaggio" agree_flag: "Accetta la segnalazione" @@ -1482,6 +1496,8 @@ it: name: "Nome" add: "Aggiungi" add_members: "Aggiungi membri" + custom: "Personalizzato" + automatic: "Automatico" 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" api: @@ -1515,18 +1531,19 @@ it: read_only: enable: title: "Abilita modalità sola lettura" - text: "Abilita modalità sola lettura" + label: "Abilita la modalità sola lettura" confirm: "Sicuro di voler attivare la modalità di sola lettura?" disable: title: "Disattiva la modalità di sola lettura" - text: "Disattiva la modalità di sola lettura" + label: "Disabilita la modalità sola lettura" logs: none: "Nessun log al momento..." columns: filename: "Nome del file" size: "Dimensione" upload: - text: "Carica" + label: "Carica" + title: "Carica un backup su questa istanza" uploading: "In caricamento..." success: "'{{filename}}' è stato caricato con successo." error: "Si è verificato un errore durante il caricamento {{filename}}': {{message}}" @@ -1534,33 +1551,31 @@ it: is_running: "Un'operazione è attualmente in esecuzione..." failed: "{{operation}} non è riuscito/a. Controlla i log per saperne di più." cancel: - text: "Annulla" + label: "Annulla" title: "Annulla l'operazione in corso" confirm: "Sei sicuro di voler annullare l'operazione corrente?" backup: - text: "Backup" + label: "Backup" title: "Crea un backup" confirm: "Vuoi creare un nuovo backup?" without_uploads: "Sì (non includere i file)" download: - text: "Download" + label: "Scarica" title: "Scarica il backup" destroy: - text: "Cancella" title: "Rimuovi il backup" confirm: "Sicuro di voler distruggere questo backup?" restore: is_disabled: "Il ripristino è disabilitato nelle opzioni del sito." - text: "Ripristina" + label: "Ripristina" title: "Ripristina il backup" confirm: "Sicuro di voler ripristinare questo backup?" rollback: - text: "Annulla tutto" + label: "Rollback" title: "Ripristina il database a una versione funzionante precedente" confirm: "Sicuro di voler ripristinare una precedente versione funzionante del database?" export_csv: user_archive_confirm: "Sei sicuro di voler scaricare i tuoi messaggi?" - success: "Esportazione iniziata, verrai avvertito con un messaggio privato al termine del processo." failed: "Esportazione fallita. Controlla i log." rate_limit_error: "I messaggi possono essere scaricati una volta al giorno, prova ancora domani." button_text: "Esporta" diff --git a/config/locales/client.ja.yml b/config/locales/client.ja.yml index bebada7ac5..609d5a5fd3 100644 --- a/config/locales/client.ja.yml +++ b/config/locales/client.ja.yml @@ -187,16 +187,16 @@ ja: sent_by_user: "{{user}} が送信" sent_by_you: "あなた が送信" directory: - title: "ユーザーディレクトリ" - likes_given: "与えた「いいね!」" - likes_received: "もらった「いいね!」" - topics_entered: "閲覧したトピック数" + filter_name: "ユーザ名でフィルタ" + title: "ユーザ" + likes_given: "与えた" + likes_received: "もらった" time_read: "読んだ時間" topic_count: "トピック" post_count: "返信" - no_results: "この範囲に結果はありませんでした" + no_results: "結果はありませんでした" total_rows: - other: "%{count} 人のユーザー" + other: "%{count} 人のユーザ" groups: visible: "このグループは全てのユーザに表示されています。" title: @@ -215,8 +215,6 @@ ja: '2': "「いいね!」 された" '3': "ブックマーク" '4': "トピック" - '5': "投稿" - '6': "リプライ" '7': "タグ付け" '9': "引用" '10': "お気に入り" @@ -261,8 +259,6 @@ ja: mute: "ミュート" edit: "プロフィールを編集" download_archive: "自分の投稿をダウンロード" - new_private_message: "プライベートメッセージ作成" - private_message: "プライベートメッセージ" private_messages: "メッセージ" activity_stream: "アクティビティ" preferences: "設定" @@ -299,6 +295,9 @@ ja: delete_yourself_not_allowed: "アカウントを削除できませんでした。サイトアドミンを連絡してください。" unread_message_count: "メッセージ" admin_delete: "削除" + users: "ユーザ" + muted_users: "ミュート" + muted_users_instructions: "これらのユーザからの全ての通知を抑制します" staff_counters: flags_given: "役に立たフラグ" flagged_posts: "フラグしたポスト" @@ -337,7 +336,6 @@ ja: uploaded_avatar_empty: "カスタム画像を追加" upload_title: "画像をアップロード" upload_picture: "画像アップロード" - image_is_not_a_square: "警告: 画像が正方形ではなかったためクロップしました。" change_profile_background: title: "プロフィール背景" instructions: "プロフィール背景は、幅850pxでセンタリングされます" @@ -394,8 +392,6 @@ ja: every_three_days: "3日毎" weekly: "毎週" every_two_weeks: "2週間に1回" - email_direct: "自分のユーザ名に言及したり、ユーザ名が引用された場合はメールで知らせる" - email_private_messages: "プライベートメッセージが来た場合はメールを送る" email_always: "ログインしている際にメール通知を受け取る。" other_settings: "その他" categories_settings: "カテゴリ設定" @@ -439,7 +435,6 @@ ja: none: "あなたはまだ誰も招待していません。" text: "ファイルからまとめて招待をする" uploading: "アップロード中..." - success: "ファイルアップロードが成功しました。処理が完了したら、プライベートメッセージで通知されます" error: "ファイルアップロードエラー:'{{filename}}': {{message}}" password: title: "パスワード" @@ -463,7 +458,6 @@ ja: stream: posted_by: "投稿者" sent_by: "送信者" - private_message: "プライベートメッセージ" the_topic: "トピック" loading: "読み込み中..." errors: @@ -516,9 +510,7 @@ ja: enable: "削除されたポストを非表示する" disable: "削除されたポストを表示" private_message_info: - title: "プライベートメッセージ" invite: "友人を招待..." - remove_allowed_user: "このプライベートメッセージより本当に {{name}} を削除しますか?" email: 'メール' username: 'ユーザ名' last_seen: '最終アクティビティ' @@ -530,7 +522,7 @@ ja: title: "アカウントの作成" failed: "エラーが発生しました。既にこのメールアドレスは使用中かもしれません。「パスワードを忘れました」リンクを試してみてください" forgot_password: - title: "パスワードを忘れました" + title: "パスワードリセット" action: "パスワードを忘れました" invite: "ユーザ名かメールアドレスを入力してください。パスワードリセット用のメールを送信します。" reset: "パスワードをリセット" @@ -603,8 +595,7 @@ ja: reply_here: "ここに回答" reply: "回答" cancel: "キャンセル" - create_topic: "新しいトピック" - create_pm: "プライベートメッセージ" + create_topic: "トピック作成" title: "またはCtrl+Enter" users_placeholder: "ユーザの追加" title_placeholder: "このディスカッションを簡潔に説明してください。" @@ -654,11 +645,9 @@ ja: units: "(# of hours)" examples: '時間(24)を入力してください' notifications: - title: "@ユーザ名 のタグ付けやあなたのポストやトピックへの回答、プライベートメッセージなどの通知" none: "通知はありません" more: "古い通知を確認する" total_flagged: "フラグがたったポストの総数" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -692,7 +681,6 @@ ja: user: "@{{username}}のポストを検索" category: "\"{{category}}\" カテゴリで検索する" topic: "このトピックを探す" - private_messages: "プライベートメッセージ検索" site_map: "別のトピックリストやカテゴリに移動" go_back: '戻る' not_logged_in_user: 'ユーザアクチビティと設定ページ' @@ -742,7 +730,6 @@ ja: filter_to: "トピック内の{{post_count}}個のポストを表示" create: 'トピック' create_long: '新しいトピックの作成' - private_message: 'プライベートメッセージを作成' list: 'トピック' new: '新規トピック' unread: '未読' @@ -814,13 +801,11 @@ ja: '0': 'このトピックに関して一切通知を受けません。' watching_pm: title: "参加中" - description: "このメッセージに対して新しい投稿があった場合、登録されたメールアドレスと、NVコミュニティ内の通知ボックスに通知が届き、トピック一覧に新しい投稿数がつきます。" watching: title: "参加中" description: "このトピックに対して新しい投稿があった場合、登録されたメールアドレスと、NVコミュニティ内の通知ボックスに通知が届き、トピック一覧に新しい投稿数がつきます。" tracking_pm: title: "トラック中" - description: "未読件数と新しい投稿がプライベートメッセージされます。他ユーザーからタグ付けをされた場合、またはあなたの投稿に回答が付いた場合に通知されます" tracking: title: "トラック中" description: "未読件数と新しい投稿がプライベートメッセージされます。他ユーザーからタグ付けをされた場合、またはあなたの投稿に回答が付いた場合に通知されます" @@ -829,10 +814,8 @@ ja: description: "他ユーザーからタグ付けをされた場合、またはあなたの投稿に回答が付いた場合に通知されます" regular_pm: title: "通常" - description: "他ユーザーからタグ付けをされた場合、またはあなたのメッセージに回答が付いた場合に通知されます" muted_pm: title: "ミュートされました" - description: "このプライベートメッセージについての通知を受け取りません。" muted: title: "ミュート" description: "このトピックについての通知を受け取りません。また、未読タブにも通知されません。" @@ -841,20 +824,11 @@ ja: delete: "トピック削除" open: "トピックを開く" close: "トピックを終了する" - auto_close: "自動終了" - feature: "特集トピック" - remove_feature: "特集を解除" - make_banner: "バナートピック" - remove_banner: "バナートピックを削除" - pin: "トピックのピン留め" - unpin: "トピックのピン留め解除" - pin_globally: "トピックを全サイト的にピン留めする" unarchive: "トピックのアーカイブ解除" archive: "トピックのアーカイブ" invisible: "リストされないようにする" visible: "リストする" reset_read: "読み込みデータをリセット" - multi_select: "移動するポストを選択" reply: title: '回答' help: 'このトピックに回答する' @@ -871,47 +845,37 @@ ja: feature_topic: title: "トピックを特集" pin: "このトピックを{{categoryLink}}カテゴリのトップに表示する" - confirm_pin: " 続けますか? 既に{{count}} 個ピン留めしています。 多すぎるピン留めはアクティブなトピックが分かりにくくなります" - unpin: " {{categoryLink}} カテゴリからトピックを削除" + confirm_pin: "あなたは既に {{count}} 個ピン留めしています。多すぎるピン留めは新規、及び匿名ユーザーの負担になる場合があります。このカテゴリの別のトピックのピン留めを続けますか?" + unpin: "{{categoryLink}} カテゴリのトップからトピックを削除" pin_note: "ユーザーはトピックを個別にピン留め解除することができます" already_pinned: - zero: "{{categoryLink}}のトピックはピン留めされていません" - one: " {{categoryLink}}内のトピックは現在1個ピン留めされています" - other: "{{categoryLink}}内のトピックは現在{{count}}個ピン留めされています" + zero: "{{categoryLink}}にはピン留めされたトピックはありません" pin_globally: "スタッフメンバーがこのトピックをピン留め解除しない限り、トピック一覧のトップに表示する" - confirm_pin_globally: "続けますか? 既に{{count}} 個ピン留めしています。 多すぎるピン留めはアクティブなトピックが分かりにくくなります" + confirm_pin_globally: "既に{{count}} 個ピン留めしています。 多すぎるピン留めは新規ユーザと匿名ユーザの負担になる場合があります。ピン留めを続けますか?" unpin_globally: "トピック一覧のトップからこのトピックを削除します" global_pin_note: "ユーザーはトピックを個別にピン留め解除することができます" already_pinned_globally: zero: "現在ピン留めされていません" - one: "現在1個ピン留めされています" - other: "現在{{count}}個ピン留めされています" + other: "現在{{count}}個ピン留めされています" make_banner: "このトピックを全てのページのバナーに表示します" remove_banner: "全てのページのバナーを削除します" banner_note: "ユーザーはバナーを閉じることができます。常に1つのトピックだけがバナー表示されます" already_banner: zero: "バナートピックはありません" - one: "現在のバナートピックです" + one: "これら現在のバナートピックです。" inviting: "招待中..." automatically_add_to_groups_optional: "この招待によって、リストされたグループに参加することができます。" automatically_add_to_groups_required: "この招待によって、リストされたグループに参加することができます。" invite_private: - title: 'プライベートメッセージへの招待' email_or_username: "招待するユーザのメールアドレスまたはユーザ名" email_or_username_placeholder: "メールアドレスまたはユーザ名" action: "招待" - success: "プライベートメッセージに招待しました。" error: "申し訳ありませんが、ユーザ招待中にエラーが発生しました。" group_name: "グループ名" invite_reply: title: '友人を招待して回答してもらう' - action: 'メールで招待' - help: 'このトピックにワンクリックで回答ができるように友人を招待メールを送る' - to_topic: "ログインしなくてもこの投稿に返信ができることを、あなたの友人に知らせます。" to_forum: "ログインしなくてもこの投稿に返信ができることを、あなたの友人に知らせます。" email_placeholder: 'メールアドレス' - success: "{{email}}に招待を送りました。" - error: "申し訳ありません、そのユーザは招待することができませんでした。既にアカウント登録されていませんか?(招待は制限されています)" login_reply: 'ログインして返信' filters: n_posts: @@ -950,13 +914,10 @@ ja: description: other: 現在{{count}}個のポストを選択中。 post: - reply: "{{replyAvatar}} {{username}} による {{link}} に回答" reply_topic: "{{link}} に回答" quote_reply: "引用して回答" - edit: "{{replyAvatar}} {{username}} による {{link}} を編集" edit_reason: "理由: " post_number: "ポスト{{number}}" - in_reply_to: "こちらへの回答" last_edited_on: "ポストの最終編集日" reply_as_new_topic: "リンクトピックとして引用返信" continue_discussion: "{{postLink}} からの議論を継続:" @@ -1043,8 +1004,6 @@ ja: inappropriate: "{{icons}} 不適切であると報告するフラグを立つ" notify_moderators: "{{icons}} がモデレータに通報しました" notify_moderators_with_url: "{{icons}} 通知されたモデレータ" - notify_user: "{{icons}} がプライベートメッセージを送信しました" - notify_user_with_url: "{{icons}} がプライベートメッセージeを送信しました" bookmark: "{{icons}} がブックマークしました" like: "{{icons}} が「いいね!」しています" vote: "{{icons}} が投票しました" @@ -1053,7 +1012,6 @@ ja: spam: "スパムを報告するフラグを立てました" inappropriate: "不適切であると報告するフラグを立てました" notify_moderators: "モデレータ確認を必要とするというフラグを立てました" - notify_user: "このユーザにプライベートメッセージを送信しました" bookmark: "このポストをブックマークしました" like: "あなたが「いいね!」しました" vote: "あなたがこのポストに投票しました" @@ -1066,8 +1024,6 @@ ja: other: "あなたと他{{count}}人が不適切であるとフラグを立てました" notify_moderators: other: "あなたと他{{count}}人がモデレータ確認を要するとフラグを立てました" - notify_user: - other: "あなたと他{{count}}人がこのユーザにプライベートメッセージを送信しました" bookmark: other: "あなたと他{{count}}人がこのポストをブックマークしました" like: @@ -1083,8 +1039,6 @@ ja: other: "{{count}}人のユーザが不適切であるとフラグを立てました" notify_moderators: other: "{{count}}人のユーザがモデレータ確認を要するとフラグを立てました" - notify_user: - other: "{{count}}人のユーザがこのユーザにプライベートメッセージを送信しました" bookmark: other: "{{count}}人のユーザがこのポストをブックマークしました" like: @@ -1186,7 +1140,6 @@ ja: private_reminder: 'フラッグはプライベートです。スタッフのみが参照できます' action: 'フラグをつける' take_action: "アクションをする" - notify_action: '通知する' delete_spammer: "スパマーの削除" delete_confirm: "このユーザによる%{posts}個のポストと%{topics}個のトピックを削除し、アカウントを削除し、このユーザのメールアドレス %{email} をブロックリストに追加しようとしています。本当にこのユーザをスマパー認定してもよいですか?" yes_delete_spammer: "はい、スパマーを削除する" @@ -1208,7 +1161,6 @@ ja: flagging_topic: title: "私達のコミュニティの維持を助けてくれてありがとうごうざいます" action: "トピックにフラグを立てる" - notify_action: "プライベートメッセージ" topic_map: title: "トピックのサマリー" links_shown: "全{{totalLinks}}リンクを表示..." @@ -1311,15 +1263,6 @@ ja: top: title: "トップ" help: "過去年間、月間、週間及び日間のアクティブトピック" - yearly: - title: "年間トップ" - monthly: - title: "月間トップ" - weekly: - title: "週間トップ" - daily: - title: "日間トップ" - all: "全て" this_year: "今年" this_month: "今月" this_week: "今週" @@ -1356,8 +1299,6 @@ ja: admins: '管理者:' blocked: 'ブロック中:' suspended: '停止中:' - private_messages_short: "PMs" - private_messages_title: "プライベートメッセージ" space_free: "{{size}} free" uploads: "アップロード" backups: "バックアップ" @@ -1391,7 +1332,6 @@ ja: agree_title: "有効かつ正しいとしてフラッグを確認" agree_flag_modal_title: "Agree and..." agree_flag_hide_post: "賛成(ポスト非表示 + プライベートメッセージ送信)" - agree_flag_hide_post_title: "このポストを非表示にし、編集を促すプライベートメッセージをユーザに自動的に送信する" agree_flag_restore_post: "賛成(投稿を復元)" agree_flag_restore_post_title: "この投稿を復元" agree_flag: "フラッグに賛成する" @@ -1458,12 +1398,6 @@ ja: name: "名前" add: "追加" add_members: "メンバー追加" - custom: - label: "カスタム" - title: "カスタムグループ" - automatic: - label: "Automatic" - title: "自動作成グループ" automatic_membership_email_domains: "リスト内のメールアドレスのドメインに正確に一致したユーザーは自動的にグループに追加される" automatic_membership_retroactive: "同じメールアドレスドメインのルールを既に登録済みのユーザにも適用" api: @@ -1497,18 +1431,15 @@ ja: read_only: enable: title: "読み取り専用モードに有効する" - text: "読み取り専用モードにする" confirm: "本当に読み取り専用モードを有効しますか?" disable: title: "読み取り専用モードを無効にする" - text: "読み取り専用モードをやめる" logs: none: "ログがありません" columns: filename: "ファイル名" size: "サイズ" upload: - text: "アップロード" uploading: "アップロード中" success: "ファイル'{{filename}}' がアップロードされました。" error: "ファイル '{{filename}}'アップロードエラー: {{message}}" @@ -1516,33 +1447,26 @@ ja: is_running: "バックアップ作業を実行中..." failed: "{{operation}}失敗しました。ログをチェックください。" cancel: - text: "キャンセル" title: "バックアップ作業をキャンセルする" confirm: "本当に実行中バックアップ作業をキャンセルしますか?" backup: - text: "バックアップ" title: "バックアップを作成します" confirm: "新しいバックアップを作成したいですか?" without_uploads: "はい(ファイルは含まない)" download: - text: "ダウンロード" title: "バックアップをダウンロード" destroy: - text: "削除" title: "バックアップを削除" confirm: "このバックアップを削除しますか?" restore: is_disabled: "バックアップ復元を無効にされています。" - text: "復元" title: "バックアップを復元" confirm: "本当にバックアップを復元しますか?" rollback: - text: "ロールバック" title: "データベースを元の作業状態にロールバックする" confirm: "本当にデータベースを元の作業状態にロールバックしますか?" export_csv: user_archive_confirm: "あなたのポストをダウンロードしてよいですか?" - success: "エクスポートは開始されました。処理が完了すると、プライベートメッセージで通知されます" failed: "出力失敗。詳しくはログに参考してください。" rate_limit_error: "ポストは1日1回ダウンロードできます。明日試してください" button_text: "エクスポート" @@ -1685,7 +1609,7 @@ ja: do_nothing: "何もしない" staff_actions: title: "スタッフ操作" - instructions: "ユーザー名、アクションをクリックすると、リストふぁフィルタされます。プロフィール画像をクリックするとユーザページに遷移します" + instructions: "ユーザー名、アクションをクリックすると、リストはフィルタされます。プロフィール画像をクリックするとユーザページに遷移します" clear_filters: "全てを表示する" staff_user: "スタッフユーザ" target_user: "対象ユーザ" diff --git a/config/locales/client.ko.yml b/config/locales/client.ko.yml index 2b02928c84..1ced13adc7 100644 --- a/config/locales/client.ko.yml +++ b/config/locales/client.ko.yml @@ -109,6 +109,7 @@ ko: daily: "매일" weekly: "매주" every_two_weeks: "격주" + every_three_days: "3일마다" max_of_count: "max of {{count}}" character_count: other: "{{count}} 자" @@ -130,8 +131,10 @@ ko: user_count: "새로운 사용자" active_user_count: "활성화된 사용자" contact: "Contact Us" + contact_info: "사이트 운영과 관련된 사항이나 요청이 있으시다면 이메일 %{contact_info}로 연락주시기 바랍니다." bookmarked: title: "북마크" + clear_bookmarks: "북마크 제거" bookmarks: not_logged_in: "죄송합니다. 게시물을 즐겨찾기에 추가하려면 로그인을 해야 합니다." created: "이 게시글을 북마크 하였습니다." @@ -179,6 +182,17 @@ ko: posted_by_you: "당신이 게시함" sent_by_user: "{{user}}가 보냄" sent_by_you: "당신이 보냄" + directory: + filter_name: "사용자명으로 필터" + title: "사용자" + likes_given: "제공한" + likes_received: "받은" + time_read: "읽은 시간" + topic_count: "토픽" + post_count: "답글" + no_results: "결과가 없습니다." + total_rows: + other: "%{count} 사용자" groups: visible: "모든 사용자에게 보이는 그룹입니다." title: @@ -197,8 +211,6 @@ ko: '2': "받은 '좋아요'" '3': "북마크" '4': "토픽" - '5': "작성한 답글" - '6': "받은 답글" '7': "언급" '9': "인용" '10': "즐겨찾기" @@ -243,8 +255,6 @@ ko: mute: "알림 끄기" edit: "환경 설정 편집" download_archive: "내 게시글 다운로드" - new_private_message: "새로운 비공개 메시지" - private_message: "개인 메시지" private_messages: "메시지" activity_stream: "활동" preferences: "환경 설정" @@ -281,6 +291,8 @@ ko: delete_yourself_not_allowed: "지금은 당신의 계정을 삭제할 수 없습니다. 관리자에게 당신의 계정을 삭제해달라고 연락해보세요." unread_message_count: "메시지" admin_delete: "삭제" + users: "사용자" + muted_users: "알람 끄기" staff_counters: flags_given: "유용한 신고" flagged_posts: "신고된 게시글" @@ -319,7 +331,6 @@ ko: uploaded_avatar_empty: "커스텀 사진 추가" upload_title: "프로필 사진 업로드" upload_picture: "사진 업로드" - image_is_not_a_square: "경고: 정사각형 이미지가 아니기 때문에 사진을 수정하였습니다." change_profile_background: title: "프로필 배경" instructions: "프로필 배경은 가운데를 기준으로 표시되며 850px이 기본 가로 사이즈 입니다." @@ -373,9 +384,9 @@ ko: email_digests: title: "사이트 방문이 없을 경우, 새로운 글을 요약하여 메일로 보냄" daily: "매일" + every_three_days: "매 3일마다" weekly: "매주" - email_direct: "누군가 나를 인용했을 때, 내 글에 답글을 달았을때, 혹은 내 이름을 언급했을때 이메일 보내기" - email_private_messages: "누군가 나에게 개인 메시지를 보냈을때 이메일 보내기" + every_two_weeks: "격주" email_always: "싸이트에 방문 중 일 때 이메일 알림을 보내지 마세요." other_settings: "추가 사항" categories_settings: "카테고리" @@ -419,12 +430,13 @@ ko: none: "아직 아무도 초대하지 않았습니다. 초대장을 각각 보내거나, uploading a bulk invite file을 이용하여 단체 초대를 보낼 수 있습니다." text: "파일로 대량 초대하기" uploading: "업로드 중..." - success: "파일이 성공적으로 업로드되었습니다. 완료되면 비공개 메시지로 알려드리겠습니다." error: "'{{filename}}': {{message}} 업로드중 에러가 있었습니다." password: title: "비밀번호" too_short: "암호가 너무 짧습니다." common: "That password is too common." + same_as_username: "비밀번호가 아이디와 동일합니다." + same_as_email: "비밀번호가 이메일과 동일합니다." ok: "적절한 암호입니다." instructions: "글자 수가 %{count}자 이상이어야 합니다." associated_accounts: "로그인" @@ -441,7 +453,6 @@ ko: stream: posted_by: "에 의해 작성되었습니다" sent_by: "에 의해 전송되었습니다" - private_message: "비공개 메시지" the_topic: "토픽" loading: "로딩 중..." errors: @@ -494,9 +505,7 @@ ko: enable: "삭제된 글 숨김" disable: "삭제된 글 보기" private_message_info: - title: "개인 메시지" invite: "다른 사람 초대" - remove_allowed_user: "{{name}}에게서 온 개인 메시지를 삭제할까요?" email: '이메일' username: '아이디' last_seen: '마지막 접근' @@ -508,7 +517,7 @@ ko: title: "회원 가입" failed: "뭔가 잘못되었습니다. 이 메일은 등록이 되어있습니다. 비밀번호를 잊으셨다면 비밀번호 찾기를 눌러주세요." forgot_password: - title: "비밀번호를 찾기" + title: "비밀번호 재설정" action: "비밀번호를 잊어버렸습니다." invite: "사용자 이름 또는 이메일 주소를 입력하시면 비밀번호 재설정 이메일을 보내드립니다." reset: "암호 재설정" @@ -563,6 +572,7 @@ ko: emoji: "Emoji :smile:" add_warning: "공식적인 경고입니다." posting_not_on_topic: "어떤 토픽에 답글을 작성하시겠습니까?" + saving_draft_tip: "저장 중..." saved_draft_tip: "저장 완료" saved_local_draft_tip: "로컬로 저장됩니다." similar_topics: "작성하려는 내용과 비슷한 토픽들..." @@ -579,8 +589,7 @@ ko: reply_here: "여기에 답글을 작성하세요." reply: "답글 전송" cancel: "취소" - create_topic: "토픽 게시" - create_pm: "비공개 메세지" + create_topic: "토픽(글) 쓰기" title: "혹은 Ctrl + Enter 누름" users_placeholder: "사용자 추가" title_placeholder: "이야기 나누고자 하는 내용을 한문장으로 적는다면?" @@ -630,11 +639,9 @@ ko: units: "(# 시간)" examples: '시간에 해당하는 숫자를 입력하세요. (24)' notifications: - title: "@사용자이름 언급, 게시글과 토픽에 대한 언급, 개인 메시지 등에 대한 알림" none: "현재 알림을 불러올 수 없습니다." more: "이전 알림을 볼 수 있습니다." total_flagged: "관심 표시된 총 게시글" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -668,7 +675,6 @@ ko: user: "@{{username}}의 글 검색" category: "\"{{category}}\" 카테고리 검색" topic: "이 토픽을 검색" - private_messages: "비공개 메시지 검색" site_map: "다른 토픽이나 카테고리로 이동" go_back: '돌아가기' not_logged_in_user: 'user page with summary of current activity and preferences' @@ -717,7 +723,6 @@ ko: filter_to: "이 토픽에서 {{username}}님의 {{post_count}}건의 게시물만 보기" create: '새 토픽 만들기' create_long: '새로운 토픽을 개설' - private_message: '개인 메시지를 작성' list: '토픽 목록' new: '새로운 토픽' unread: '읽지 않은' @@ -789,13 +794,11 @@ ko: '0': '당신은 이 토픽에 관한 모든 알림을 무시합니다.' watching_pm: title: "알림 : 주시 중" - description: "개인 메시지의 새로운 게시글은 항상 알림이 동작합니다. 읽지 않은 글의 수는 토픽 옆에 표시됩니다." watching: title: "주시 중" description: "이 토픽의 새로운 게시글은 항상 알림이 동작합니다. 읽지 않은 글의 수는 토픽 옆에 표시됩니다." tracking_pm: title: "알림 : 새 글 표시 중" - description: "읽지 않은 글과 새로운 게시물 수를 볼 수 있습니다. 누군가 당신의 @이름 을 언급했거나 당신의 글에 답글을 작성하면 알림을 받습니다." tracking: title: "새 글 표시 중" description: "읽지 않은 게시글의 수는 토픽 옆에 표시됩니다. 당신의 @이름 을 언급하거나 당신의 게시글에 답글을 작성한 경우에 알림이 작동합니다." @@ -804,10 +807,8 @@ ko: description: "누군가 당신의 @이름 을 언급했거나 당신의 글에 답글이 달릴 때 알림을 받게 됩니다." regular_pm: title: "알림: 일반" - description: "누군가 당신의 @이름을 언급했거나 당신의 글에 답글이 달릴 때만 알림을 받게 됩니다." muted_pm: title: "알림 : 끔" - description: "이 개인 메시지에 대해 어떠한 알림도 받지 않지 않습니다." muted: title: "알림 없음" description: "아무 알림도 없습니다. '읽지 않은 글' 탭에 나타나지 않습니다." @@ -816,18 +817,11 @@ ko: delete: "토픽 삭제" open: "토픽 열기" close: "토픽 닫기" - auto_close: "자동으로 닫기" - make_banner: "배너 토픽" - remove_banner: "배너 토픽 제거" - pin: "토픽 고정" - unpin: "토픽 고정 취소" - pin_globally: "전체 공지글로 설정하기" unarchive: "보관 안된 토픽" archive: "보관된 토픽" invisible: "목록에서 제외하기" visible: "목록에 넣기" reset_read: "값 재설정" - multi_select: "게시글 이동을 위한 다중 선택" reply: title: '답글' help: '이 토픽에 대한 답글 구성 시작' @@ -845,22 +839,15 @@ ko: automatically_add_to_groups_optional: "이 초대는 다음 그룹에 대한 접근 권한을 포함합니다: (선택, 관리자만 가능)" automatically_add_to_groups_required: "이 초대는 다음 그룹에 대한 접근 권한을 포함합니다: (필수, 관리자만 가능)" invite_private: - title: '개인 메시지에 초대' email_or_username: "초대하려는 이메일 또는 아이디" email_or_username_placeholder: "이메일 또는 아이디" action: "초대" - success: "사용자가 개인 메세지에 참여할 수 있도록 초대했습니다." error: "죄송합니다. 해당 사용자를 초대하는 도중 오류가 발생했습니다." group_name: "그룹명" invite_reply: title: '초대하기' - action: '이메일 초대' - help: '한 번의 클릭으로 이 토픽에 답글을 추가할 수 있도록 친구에게 초대장을 보낼 수 있습니다.' - to_topic: "로그인이나 가입 없이 클릭 한번으로 이 토픽에 답글을 달 수 있도록 이메일을 친구에게 전송합니다." to_forum: "친구에게 요약 이메일을 보내고 이 포럼에 가입할 수 있도록 링크를 전송합니다." email_placeholder: '이메일 주소' - success: "{{email}} 메일로 초대장을 발송했습니다. 초대를 수락하면 알려 드리겠습니다. 초대상태를 확인하려면 사용자 페이지에서 '초대장' 탭을 선택하세요." - error: "초대하지 못 하였습니다. 초대된 사람들이 가입하였나요?(초대장 숫자가 제한됨)" login_reply: '로그인하고 답글 쓰기' filters: n_posts: @@ -899,13 +886,10 @@ ko: description: other: {{count}}개의 개시글을 선택하셨어요. post: - reply: "{{replyAvatar}} {{username}}님의 글에 답글 작성" reply_topic: "{{link}}에 답글 작성" quote_reply: "인용한 답글" - edit: "{{replyAvatar}} {{username}}님의 글에 답글 편집" edit_reason: "Reason: " post_number: "{{number}}번째 게시물" - in_reply_to: "답글 to" last_edited_on: "마지막으로 편집:" reply_as_new_topic: "링크된 토픽으로 답글 작성하기" continue_discussion: "{{postLink}}에서 토론을 계속:" @@ -991,8 +975,6 @@ ko: inappropriate: "{{icons}} 부적절하다고 신고했습니다" notify_moderators: "{{icons}}님은 이 게시물을 운영자에게 보고했습니다." notify_moderators_with_url: "{{icons}}님은 이 게시물을 운영자에게 보고했습니다." - notify_user: "{{icons}}님은 작성자에게 개인 메시지를 보냈습니다." - notify_user_with_url: "{{icons}}님은 작성자에게 개인 메세지를 보냈습니다." bookmark: "{{icons}}님이 북마크했습니다." like: "{{icons}}님이 좋아합니다." vote: "{{icons}}님이 투표했습니다." @@ -1001,7 +983,6 @@ ko: spam: "당신은 이 게시물을 스팸으로 신고했습니다." inappropriate: "당신은 이 게시물을 부적절하다고 신고했습니다" notify_moderators: "당신은 이 게시물을 운영자에게 보고했습니다." - notify_user: "당신은 작성자에게 개인 메시지를 보냈습니다." bookmark: "당신은 이 게시물을 북마크했습니다." like: "'좋아요' 했습니다" vote: "당신은 이 게시물을 위해 투표했습니다." @@ -1014,8 +995,6 @@ ko: other: "당신과 {{count}}명의 다른 사람들이 부적절하다고 신고했습니다" notify_moderators: other: "당신과 {{count}}명의 다른 사람들이 적당하다고 표시했습니다." - notify_user: - other: "당신과 {{count}}명의 사용자가 작성자에게 개인 메시지를 보냈습니다." bookmark: other: "당신과 {{count}}명의 다른 사람들이 북마크 했습니다." like: @@ -1031,8 +1010,6 @@ ko: other: "{{count}}명의 사람들이 부적절하다고 신고했습니다" notify_moderators: other: "{{count}}명의 사람들이 이 게시물을 운영자에게 신고했습니다" - notify_user: - other: "{{count}}명이 이 사용자에게 개인 메시지를 보냈습니다." bookmark: other: "{{count}}명의 사용자가 이 게시물을 북마크했습니다." like: @@ -1134,7 +1111,6 @@ ko: private_reminder: '신고는 오직 관리자만 볼 수 있습니다.' action: '게시물 신고하기' take_action: "조치를 취하기" - notify_action: '알림' delete_spammer: "스팸 사용자 삭제" delete_confirm: "당신은 이 사용자의 %{posts}개의 게시글과 %{topics}개의 토픽을 삭제하고 IP주소 %{ip_address}와 이메일 %{email}을 영구 블락 합니다. 이 사용자가 진짜 악성 사용자 입니까? " yes_delete_spammer: "예, 스팸 사용자 삭제." @@ -1156,7 +1132,6 @@ ko: flagging_topic: title: "우리 커뮤니티에 기여해 주셔서 감사합니다." action: "신고된 토픽" - notify_action: "비공개 메시지" topic_map: title: "토픽 요약" links_shown: "show all {{totalLinks}} links..." @@ -1253,14 +1228,6 @@ ko: top: title: "인기" help: "작년 또는 지난 달, 지난 주, 어제에 활발했던 토픽" - yearly: - title: "연간 인기글" - monthly: - title: "월간 인기글" - weekly: - title: "주간 인기글" - daily: - title: "일간 인기글" this_year: "이번 년도" this_month: "이번 달" this_week: "이번 주" @@ -1297,8 +1264,6 @@ ko: admins: '관리자:' blocked: '블락됨:' suspended: '접근금지:' - private_messages_short: "PMs" - private_messages_title: "개인 메시지" space_free: "{{size}} free" uploads: "업로드" backups: "백업" @@ -1330,7 +1295,6 @@ ko: agree_title: "이 신고가 올바르고 타당한지 확인하세요." agree_flag_modal_title: "동의 및 ..." agree_flag_hide_post: "동의 (포스트 숨기기 + 개인 메시지 보내기)" - agree_flag_hide_post_title: "이 게시물을 숨기고 자동으로 해당 사용자에게 이 게시물의 편집을 요청하는 개인 메시지를 보냄" agree_flag_restore_post: "동의하기(게시글 복원)" agree_flag_restore_post_title: "게시글을 복원하기" agree_flag: "신고에 동의함" @@ -1430,18 +1394,15 @@ ko: read_only: enable: title: "읽기 전용 모드 활성화하기" - text: "읽기 전용 모드 활성화하기" confirm: "정말로 읽기 전용 모드를 활성화 하시겠습니까?" disable: title: "읽기 전용 모드 비활성화 하기" - text: "읽기 전용 모드 비활성화 하기" logs: none: "아직 로그가 없어요." columns: filename: "파일명" size: "크기" upload: - text: "업로드" uploading: "업로드 중..." success: "'{{filename}}' 파일이 성공적으로 업로드 되었습니다." error: "'{{filename}}' 파일 업로드중 에러가 발생하였습니다. ({{message}})" @@ -1449,32 +1410,25 @@ ko: is_running: "실행 중입니다." failed: "{{operation}} 작업 실행하지 못했습니다. 로그를 확인해 주세요." cancel: - text: "취소" title: "현제 작업 취소하기" confirm: "정말로 현재 작업을 취소하시겠습니까?" backup: - text: "백업" title: "백업 생성" confirm: "새로운 백업을 시작할까요?" without_uploads: "예 (파일을 포함하지 않음)" download: - text: "다운로드" title: "백업 다운로드" destroy: - text: "삭제" title: "백업 삭제" confirm: "정말 이 백업을 삭제할까요?" restore: is_disabled: "사이트 설정에서 '복구 기능'이 비활성화 되어있습니다." - text: "복구" title: "백업을 이용하여 복구" confirm: "정말 이 백업을 이용하여 복구할까요?" rollback: - text: "롤백" title: "데이터베이스를 이전 workiong state로 되돌리기" confirm: "정말로 이전 작업 상태로 데이터베이스를 롤백하시겠습니까?" export_csv: - success: "내보내기 작업이 시작되었습니다. 완료되면 개인 메시지로 알림을 보내드립니다." failed: "내보내기가 실패했습니다. 로그를 확인해주세요" rate_limit_error: "글은 하루에 한번 다운로드 받을 수 있습니다. 내일 다시 시도해주십시요." button_text: "내보니기" @@ -1908,6 +1862,7 @@ ko: delete: 삭제 delete_confirm: 정말로 이 뱃지를 삭제하시겠습니까? revoke: 회수 + reason: 원인 revoke_confirm: 정말로 이 뱃지를 회수하시겠습니까? edit_badges: 뱃지 수정 grant_badge: 뱃지 부여 diff --git a/config/locales/client.nb_NO.yml b/config/locales/client.nb_NO.yml index 5cde6dda5f..66d8f23d2c 100644 --- a/config/locales/client.nb_NO.yml +++ b/config/locales/client.nb_NO.yml @@ -125,6 +125,7 @@ nb_NO: daily: "daglig" weekly: "ukentlig" every_two_weeks: "annenhver uke" + every_three_days: "hver tredje dag" max_of_count: "maksimum av {{count}}" character_count: one: "{{count}} tegn" @@ -160,6 +161,7 @@ nb_NO: not_bookmarked: "du har lest dette innlegget, trykk for å bokmerke det" last_read: "dette er det siste innlegget du har lest, trykk for å bokmerke det" remove: "Fjern bokmerke" + confirm_clear: "Er du sikker på at du vil fjerne alle bokmerkene fra dette emnet?" topic_count_latest: one: "{{count}} nytt eller oppdatert emne" other: "{{count}} nye eller oppdaterte emner" @@ -204,6 +206,18 @@ nb_NO: posted_by_you: "Postet av deg" sent_by_user: "Sendt av {{user}}" sent_by_you: "Sendt av deg" + directory: + filter_name: "filtrer etter navn" + title: "Brukere" + likes_given: "Gitt" + likes_received: "Mottatt" + time_read: "Tid lest" + topic_count: "Emner" + post_count: "Svar" + no_results: "Ingen treff" + total_rows: + one: "1 bruker" + other: "%{count} brukere" groups: visible: "Gruppen er synlig for alle brukere" title: @@ -223,8 +237,6 @@ nb_NO: '2': "Liker mottatt" '3': "Bokmerker" '4': "Emner" - '5': "Innlegg" - '6': "Svar" '7': "Omtalelser" '9': "Sitater" '10': "Favoritter" @@ -271,8 +283,6 @@ nb_NO: mute: "Demp" edit: "Rediger innstillinger" download_archive: "Last ned mine innlegg" - new_private_message: "Ny Privat Melding" - private_message: "Privat melding" private_messages: "Meldinger" activity_stream: "Aktivitet" preferences: "Innstillinger" @@ -309,6 +319,9 @@ nb_NO: delete_yourself_not_allowed: "Kontoen din kan ikke slettes akkurat nå. Kontakt en administrator til å slette kontoen for deg." unread_message_count: "Meldinger" admin_delete: "Slett" + users: "Brukere" + muted_users: "Dempet" + muted_users_instructions: "Skjul alle varsler fra denne brukeren" staff_counters: flags_given: "nyttige rapporteringer" flagged_posts: "rapporterte innlegg" @@ -347,7 +360,6 @@ nb_NO: uploaded_avatar_empty: "Legg til egendefinert bilde" upload_title: "Last opp bilde" upload_picture: "Last opp bilde" - image_is_not_a_square: "Advarsel: Vi har beskåret bildet ditt, det er ikke kvadratisk." change_profile_background: title: "Profilbakgrunn" instructions: "Profil bakgrunner vil bli sentrert med en standard bredde på 850px" @@ -401,9 +413,9 @@ nb_NO: email_digests: title: "Send meg sammendrag av hva som er nytt på e-post når jeg ikke er ofte innom:" daily: "daglig" + every_three_days: "hver tredje dag" weekly: "ukentlig" - email_direct: "Send meg e-post når noen siteter meg, svarer meg eller nevner mitt @brukernavn" - email_private_messages: "Notta en email når noen sender deg en privat melding" + every_two_weeks: "annenhver uke" email_always: "Ikke stans e-postvarsler mens jeg er aktiv på nettstedet." other_settings: "Annet" categories_settings: "Kategorier" @@ -417,6 +429,7 @@ nb_NO: after_n_weeks: one: "opprettet den siste {{count}} uken" other: "opprettet de siste {{count}} ukene" + auto_track_topics: "Følg automatisk emner jeg åpner" auto_track_options: never: "aldri" always: "alltid" @@ -450,13 +463,13 @@ nb_NO: none: "Du har ikke invitert noen hit enda. Du kan sende individuelle invitasjoner, eller invitere en gruppe folk på en gang ved å laste opp en fil med flere invitasjoner." text: "Masseinvitasjon fra fil" uploading: "Laster opp..." - success: "Fil lastet opp. Du vil bli varslet med en privat melding når prosessen er fullført." error: "En feil oppsto ved opplastingen av '{{filename}}': {{message}}" password: title: "Passord" too_short: "Passordet ditt er for kort" common: "Det passordet er for vanlig." same_as_username: "Ditt passord er det samme som ditt brukernavn." + same_as_email: "Ditt passord er det samme som din e-post." ok: "Passordet ditt ser bra ut" instructions: "Minst %{count} tegn." associated_accounts: "Innloggingsforsøk" @@ -473,7 +486,6 @@ nb_NO: stream: posted_by: "Skrevet av" sent_by: "Sendt av" - private_message: "private meldinger" the_topic: "emnet" loading: "Laster..." errors: @@ -495,7 +507,7 @@ nb_NO: fixed: "Last side" close: "Lukk" assets_changed_confirm: "Dette nettstedet ble nettopp oppdatert. Oppdater nå for nyeste versjon?" - logout: "De ble logget ut." + logout: "Du ble logget ut" refresh: "Refresh" read_only_mode: enabled: "En administrator har aktivert skrivebeskyttet modus. Du kan fortsette å benytte siden, men enkelte operasjoner vil kanskje ikke fungere." @@ -526,9 +538,7 @@ nb_NO: enable: "Skjul slettede innlegg" disable: "Vis slettede innlegg" private_message_info: - title: "Private meldinger" invite: "Inviter andre..." - remove_allowed_user: "Vil du virkelig fjerne {{name}} fra denne private meldingen?" email: 'E-post' username: 'Brukernavn' last_seen: 'Sist sett' @@ -540,7 +550,7 @@ nb_NO: title: "Opprett ny konto" failed: "Noe gikk galt, kanskje denne e-postadressen allerede er registrert. Prøv lenke for glemt passord" forgot_password: - title: "Glemt passord" + title: "Nullstill Passord" action: "Jeg glemte mitt passord" invite: "Skriv inn ditt brukernavn eller din e-postadresse, så sender vi deg en e-post for å nullstille ditt passord." reset: "Nullstill passord" @@ -567,6 +577,7 @@ nb_NO: requires_invite: "Beklager, tilgang til dette forumet er kun ved invitasjon." not_activated: "Du kan ikke logge inn ennå. Vi sendte en e-post for aktivering til deg på {{sentTo}}. Vennligst følg instruksjonene i den e-posten for å aktivere din konto." not_allowed_from_ip_address: "Du kan ikke logge inn fra den IP-adressen." + admin_not_allowed_from_ip_address: "Du kan ikke logge inn som administrator fra den IP-adressen." resend_activation_email: "Klikk her for å sende e-posten for aktivering igjen." sent_activation_email_again: "Vi sendte deg en ny e-post for aktivering på {{currentEmail}}. Det kan ta noen minutter før den kommer fram; sørg for at du sjekker nettsøppel om du ikke finner den." google: @@ -595,6 +606,7 @@ nb_NO: emoji: "Emoji :smile:" add_warning: "Dette er en offisiell advarsel." posting_not_on_topic: "Du svarer på emnet \"{{title}}\", men for øyeblikket ser du på et annet emne." + saving_draft_tip: "lagrer..." saved_draft_tip: "lagret" saved_local_draft_tip: "lagret lokalt" similar_topics: "Emnet ditt har likheter med..." @@ -612,7 +624,6 @@ nb_NO: reply: "Svar" cancel: "Avbryt" create_topic: "Nytt Emne" - create_pm: "Privat Melding" title: "Eller trykk Ctrl+Enter" users_placeholder: "Legg til en bruker" title_placeholder: "Oppsummert i en setning, hva handler denne diskusjonen om?" @@ -662,11 +673,9 @@ nb_NO: units: "(# timer)" examples: 'Før inn antall timer (24).' notifications: - title: "varsler når @brukernavn nevnes, svar til dine innlegg og emner, private meldinger, osv" none: "Notifikasjoner er ikke tilgjengelig for øyeblikket." more: "se gamle varsler" total_flagged: "totalt rapporterte innlegg" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -700,7 +709,6 @@ nb_NO: user: "Søk innleggene av @{{username}}" category: "Søk i kategorien \"{{category}}\"" topic: "Søk i dette emnet" - private_messages: "Søk i private meldinger" site_map: "gå til en annen emneliste eller kategori" go_back: 'gå tilbake' not_logged_in_user: 'brukerside med oppsummering av nylig aktivtet og preferanser.' @@ -720,6 +728,7 @@ nb_NO: close_topics: "Lukk Emner" archive_topics: "Arkiverte emner" notification_level: "Endre varslingsnivå" + choose_new_category: "Velg den nye kategorien for emnene:" selected: one: "Du har valgt 1 emne." other: "Du har valgt {{count}} emner." @@ -750,7 +759,6 @@ nb_NO: filter_to: "{{post_count}} innlegg i dette emnet." create: 'Nytt Emne' create_long: 'Opprett et nytt emne' - private_message: 'Start en privat melding' list: 'Emner' new: 'nytt emne' unread: 'ulest' @@ -828,13 +836,11 @@ nb_NO: '0': 'Du ignorerer alle varsler på dette emnet.' watching_pm: title: "Følger" - description: "Du vil bli varslet om hvert nye innlegg i denne private meldingen. Antallet uleste og nye innlegg vil også vises ved emnets oppføring." watching: title: "Følger" description: "Du vil bli varslet om hvert nye innlegg i dette emnet. Antallet uleste og nye emner vil også vises ved siden av emnets oppføring." tracking_pm: title: "Følger" - description: "En opptelling av uleste og nye poster vil visest ved siden av den private meldingen. Du vil bli varslet om noen nevner ditt @navn eller svarer på din post." tracking: title: "Følger" description: "En opptelling av uleste og nye poster vil visest ved siden av emnet. Du vil bli varslet om noen nevner ditt @navn eller svarer på din post." @@ -843,10 +849,8 @@ nb_NO: description: "Du vil bli varslet om noen nevnet ditt @navn eller svarer på din post." regular_pm: title: "Aktivt medlem" - description: "Du vil bli varslet om noen nevnet ditt @navn eller svarer på din post i den private meldingen." muted_pm: title: "Dempet" - description: "Du vil aldri bli varslet om noe relatert til denne private meldingen." muted: title: "Dempet" description: "du vil ikke bli varslet om noen ting i dette emnet, og det vil ikke visest som ulest." @@ -855,18 +859,11 @@ nb_NO: delete: "slett emne" open: "Åpne Emne" close: "Lukk Emne" - auto_close: "Auto-Lukk" - make_banner: "Banneremne" - remove_banner: "Fjern banneremne" - pin: "Fastsett emne" - unpin: "Løsgjør emne" - pin_globally: "Fastsett emne globalt" unarchive: "Uarkiver Emne" archive: "Arkiver Emne" invisible: "Skjul Emnet" visible: "Vist Emnet" reset_read: "Tilbakestill Lesedata" - multi_select: "Velg for Sammenslåing/Oppdeling" reply: title: 'Svar' help: 'begynn å skrive et svar til dette emnet' @@ -880,25 +877,26 @@ nb_NO: title: 'Rapporter' help: 'rapporter dette innlegget privat eller send et privat varsel om det' success_message: 'Du har rapportert dette emnet' + feature_topic: + pin: "Plasser dette emnet på toppen av {{categoryLink}} kategorien." + confirm_pin: "Du har allerede {{count}} låste emner. For mange låste emner kan være et problem for nye og anonyme brukere. Er du sikker på at du ønsker å låse et til emne i denne kategorien?" + unpin: "Fjern dette emnet fra toppen av {{categoryLink}} kategorien." + pin_note: "Brukere kan låse opp emnet selv." + already_pinned: + zero: "Det er ingen låste emner i {{categoryLink}}." inviting: "Inviterer..." automatically_add_to_groups_optional: "Denne invitasjonen inkluderer også tilgang på disse gruppene: (valgfritt, kun for admin)" automatically_add_to_groups_required: "Denne invitasjonen inkluderer også tilgang til disse gruppene: (påkrevet, kun for admin)" invite_private: - title: 'Inviter til Privat Melding' email_or_username: "Invitertes e-post eller brukernavn." email_or_username_placeholder: "e-postadresse eller brukernavn" action: "Inviter" - success: "Vi har invitert den brukeren til å delta i denne private meldingen." error: "Beklager, det oppstod en feil ved å invitere den brukeren." group_name: "gruppenavn" invite_reply: title: 'Inviter' - action: 'E-postinvitasjon' - help: 'send invitasjoner til venner så de kan svare på dette emnet med et enkelt klikk' - to_topic: "Vi sender en kortfattet e-post som gjør det mulig for en venn å umiddelbart registreres ved å klikke på en lenke og deretter svare på dette emnet. Ingen innlogging er nødvendig." to_forum: "Vi sender en kortfattet e-post som gjør det mulig for en venn å umiddelbart registreres ved å klikke på en lenke. Ingen innlogging er nødvendig." email_placeholder: 'email' - success: "Vi har sendt ut en invitasjon til {{email}}. Vi vil gi deg en varsling når invitasjonen benyttes. Se fanen for invitasjoner på din brukerside for å holde oversikt over dine invitasjoner." login_reply: 'Logg Inn for å svare' filters: n_posts: @@ -942,13 +940,10 @@ nb_NO: one: Du har valgt 1 innlegg. other: Du har valgt {{count}} innlegg. post: - reply: "Svarer på {{link}} av {{replyAvatar}} {{username}}" reply_topic: "Svar til {{link}}" quote_reply: "siter svar" - edit: "Redigerer {{link}} av {{replyAvatar}} {{username}}" edit_reason: "Begrunnelse:" post_number: "post {{number}}" - in_reply_to: "svar til" last_edited_on: "innlegg sist redigert" reply_as_new_topic: "Svar med lenket emne" continue_discussion: "Fortsetter diskusjonen fra {{postLink}}:" @@ -1040,8 +1035,6 @@ nb_NO: inappropriate: "{{icons}} rapporterte dette som upassende" notify_moderators: "{{icons}} varslet moderatorene" notify_moderators_with_url: "{{icons}} varslet moderatorene" - notify_user: "{{icons}} send en private melding" - notify_user_with_url: "{{icons}} sendte en privat melding" bookmark: "{{icons}} bokmerket dette" like: "{{icons}} likte dette" vote: "{{icons}} stemte for dette" @@ -1050,7 +1043,6 @@ nb_NO: spam: "Du rapporterte dette som spam" inappropriate: "Du rapporterte dette som upassende" notify_moderators: "Du rapporterte dette for moderering" - notify_user: "Du sendte en private melding til denne brukeren" bookmark: "Du bokmerket dette innlegget" like: "Du likte dette" vote: "Du stemte for dette innlegget" @@ -1067,9 +1059,6 @@ nb_NO: notify_moderators: one: "Du og 1 annen markerte dette for moderering" other: "Du og {{count}} andre rapporterte dette for moderering" - notify_user: - one: "Du og 1 annen sendte en privat melding til denne brukeren" - other: "Du og {{count}} andre sendte en privat melding til denne brukeren" bookmark: one: "Du og 1 annen bokmerket dette innlegget" other: "Du og {{count}} andre bokmerket dette innlegget" @@ -1092,9 +1081,6 @@ nb_NO: notify_moderators: one: "1 bruker markerte dette for moderering" other: "{{count}} brukere rapporterte dette for moderering" - notify_user: - one: "1 bruker sendte en privat melding til denne brukeren" - other: "{{count}} brukere sendte en privat melding til denne brukeren" bookmark: one: "1 bruker bokmerket dette innlegget" other: "{{count}} brukere bokmerket dette innlegget" @@ -1200,7 +1186,6 @@ nb_NO: private_reminder: 'flagg er private, bare synlige for staben' action: 'Rapporter innlegg' take_action: "Ta Handling" - notify_action: 'Privat melding' delete_spammer: "Slett spammer" delete_confirm: "Du er i ferd med å slette %{posts} innlegg og %{topics} emner av denne brukeren, slette brukerens konto, blokkere registrering fra brukerens IP-adresse %{ip_address}, og legge brukerens e-postadresse %{email} i en permanent svarteliste. Er du sikker på at denne brukeren virkelig er en spammer?" yes_delete_spammer: "Ja, slett spammer" @@ -1222,7 +1207,6 @@ nb_NO: flagging_topic: title: "Takk for at du hjelper med å vedlikeholde god skikk i samfundet vårt!" action: "Rapporter emne" - notify_action: "Privat melding" topic_map: title: "Emneoppsummering" links_shown: "vis alle {{totalLinks}} linker..." @@ -1320,14 +1304,6 @@ nb_NO: top: title: "Aktive" help: "de mest aktive emnene det siste året, den siste måneden, den siste uken eller i dag" - yearly: - title: "Årlig mest aktive" - monthly: - title: "Månedlig mest aktive" - weekly: - title: "Ukentlig mest aktive" - daily: - title: "Daglig mest aktive" this_year: "Dette året" this_month: "Denne måneden" this_week: "Denne uken" @@ -1364,8 +1340,6 @@ nb_NO: admins: 'Adminer:' blocked: 'sperret:' suspended: 'Bannlyst:' - private_messages_short: "PMer" - private_messages_title: "Private Meldinger" space_free: "{{size}} ledig" uploads: "opplastinger" backups: "sikkerhetskopier" @@ -1398,7 +1372,6 @@ nb_NO: agree_title: "Bekreft at denne rapporteringen er gyldig og korrekt" agree_flag_modal_title: "Godta og..." agree_flag_hide_post: "Godta (skjul innlegg + send PM)" - agree_flag_hide_post_title: "Skjul dette innlegget og automatisk send brukeren en privat melding med oppfordring om redigering" agree_flag_restore_post: "Gi medhold (gjenopprett innlegg)" agree_flag_restore_post_title: "Gjenopprett dette innlegget" agree_flag: "Si deg enig med rapportering" @@ -1485,7 +1458,10 @@ nb_NO: all_users: "Alle brukere" note_html: "Hold denne nøkkelen hemmelig. Alle brukere som har den vil kunne opprette vilkårlige innlegg som en hvilken som helst bruker. " plugins: + title: "Plugins" + installed: "Installerte Plugins" name: "Navn" + none_installed: "Du har ikke installert noen plugins." version: "Versjon" change_settings: "Endre instillinger" howto: "Hvordan innstallerer jeg plugins?" @@ -1498,18 +1474,15 @@ nb_NO: read_only: enable: title: "Aktiver skrivebeskyttet modus" - text: "Aktiver skrivebeskyttet modus" confirm: "Er du sikker på at du vil aktivere skrivebeskyttet modus?" disable: title: "Deaktiver skrivebeskyttet modus" - text: "Deaktiver skrivebeskyttet modus" logs: none: "Ingen logger enda..." columns: filename: "Filnavn" size: "Størrelse" upload: - text: "Last Opp" uploading: "Laster opp..." success: "'{{filename}}' har blitt lastet opp." error: "Det oppsto en feil ved opplastingen av '{{filename}}': {{message}}" @@ -1517,28 +1490,22 @@ nb_NO: is_running: "En prosess pågår..." failed: " {{operation}} feilet. Venligst undersøk loggene." cancel: - text: "Avbryt" title: "Avbryt den nåværende handlingen" confirm: "Er du sikker på at du vil avbryte denne operasjonen?" backup: - text: "Sikkerhetskopiering" title: "Opprett en sikkerhetskopiering" confirm: "Vil du starte en ny sikkerhetskopiering?" without_uploads: "Ja (ikke inkluder filer)" download: - text: "Last ned" title: "Last ned sikkerhetskopi" destroy: - text: "Slett" title: "Fjern sikkerhetskopi" confirm: "Er du sikker på at du vil slette denne sikkerhetskopien" restore: is_disabled: "Gjenoppretting er deaktivert i nettstedsinnstillingene." - text: "Gjenopprett" title: "Gjenopprett sikkerhetskopien" confirm: "Er du sikker på at du vil gjenopprette denne sikkerhetskopien?" rollback: - text: "Gjenopprett" title: "Gjenopprett databasen til en tidligere fungerende tilstand" confirm: "Er du sikker på at du vil gjenopprette databasen til en tidligere fungerende tilstand?" export_csv: @@ -1713,6 +1680,7 @@ nb_NO: delete_topic: "slett emne" delete_post: "slett innlegg" impersonate: "overta brukerkonto" + anonymize_user: "anonymiser bruker" screened_emails: title: "Kontrollerte Emails" description: "Når noen forsøker å lage en ny konto, vil de følgende e-postadressene bli sjekket, og registreringen vil bli blokkert, eller en annen handling vil bli utført." @@ -1845,6 +1813,7 @@ nb_NO: approve_success: "Brukeren er godkjent og e-post med aktiveringsinstruksjoner er sendt." approve_bulk_success: "Suksess! Alle valgte brukere har blitt godkjent og varslet." time_read: "Lesetid" + anonymize: "Anonymiser Bruker" delete: "Slett Bruker" delete_forbidden_because_staff: "Administratorer og moderatorer kan ikke slettes." delete_forbidden: @@ -1972,6 +1941,7 @@ nb_NO: uncategorized: 'Annet' backups: "Sikkerhetskopier" login: "Login" + plugins: "Plugins" badges: title: Merker new_badge: Nytt merke @@ -1986,10 +1956,12 @@ nb_NO: modal_title: Merkegrupper granted_by: Tildelt av granted_at: Tildelt + reason_help: (En lenke til et innlegg eller emne) save: Lagre delete: Slett delete_confirm: Er du sikker på at du vil slette dette merket? revoke: Tilbakedra + reason: Grunn revoke_confirm: Er du sikker på at du vil tilbakedra dette merket? edit_badges: Rediger merker grant_badge: Tildel merke @@ -2061,6 +2033,7 @@ nb_NO: back: 'u Tilbake' up_down: 'k/j Flytt markering ↑ ↓' open: 'o or Enter Åpne valgt emne' + next_prev: 'shift+j/shift+k Neste/Forrige' application: title: 'Applikasjon' create: 'c Opprett nytt emne' @@ -2074,6 +2047,8 @@ nb_NO: dismiss_topics: 'x, t Avvis Emner' actions: title: 'Handlinger' + bookmark_topic: 'f Bokmerk emne / Fjern bokmerke' + pin_unpin_topic: 'shift+p Pin/fjern pin fra emne' share_topic: 'shift+s Del emne' share_post: 's Del innlegg' reply_as_new_topic: 't Svar med lenket emne' @@ -2139,6 +2114,7 @@ nb_NO: description: Fylte ut informasjon om brukerprofilen anniversary: name: Jubileum + description: Aktivt medlem i over ett år, postet minst en gang nice_post: name: Fint innlegg description: Fått 10 liker for et innlegg. Dette merket kan bli tildelt flere ganger diff --git a/config/locales/client.nl.yml b/config/locales/client.nl.yml index 50f76840c5..0305e0e53b 100644 --- a/config/locales/client.nl.yml +++ b/config/locales/client.nl.yml @@ -91,6 +91,7 @@ nl: google+: 'deel deze link op Google+' email: 'deel deze link via e-mail' topic_admin_menu: "Adminacties voor topic" + emails_are_disabled: "Alle uitgaande e-mails zijn uitgeschakeld door een beheerder. Geen enkele vorm van e-mail notificatie zal verstuurd worden" edit: 'bewerk de titel en categorie van deze topic' not_implemented: "Die functie is helaas nog niet beschikbaar. Sorry!" no_value: "Nee" @@ -124,6 +125,7 @@ nl: daily: "dagelijks" weekly: "wekelijks" every_two_weeks: "elke twee weken" + every_three_days: "elke drie dagen" max_of_count: "maximaal {{count}}" character_count: one: "{{count}} teken" @@ -146,14 +148,20 @@ nl: user_count: "Nieuwe leden" active_user_count: "Actieve leden" contact: "Neem contact met ons op" + contact_info: "In het geval van een kritieke probleem of dringende vraagstukken in verband met deze site neem contact op met ons op via% {contact_email}." bookmarked: title: "Voeg toe aan favorieten" + clear_bookmarks: "Verwijder favorieten" + help: + bookmark: "Klik om het eerste bericht in dit topic toe te voegen aan je favorierten" + unbookmark: "Klik om alle favorieten in dit topic te verwijderen" bookmarks: not_logged_in: "sorry, je moet ingelogd zijn om berichten aan je favorieten toe te kunnen voegen" created: "je hebt dit bericht aan je favorieten toegevoegd" not_bookmarked: "je hebt dit bericht gelezen; klik om het aan je favorieten toe te voegen" last_read: "dit is het laatste bericht dat je gelezen hebt; klik om het aan je favorieten toe te voegen" remove: "Verwijder favoriet" + confirm_clear: "Weet je zeker dat je alle favorieten in dit topic wilt verwijderen?" topic_count_latest: one: "{{count}} nieuwe of aangepaste discussie." other: "{{count}} nieuwe of bijgewerkte topics." @@ -198,6 +206,26 @@ nl: posted_by_you: "Geplaatst door jou" sent_by_user: "Verzonden door {{user}}" sent_by_you: "Verzonden door jou" + directory: + filter_name: "filter op gebruikersnaam" + title: "Leden" + likes_given: "Gegeven" + likes_received: "Ontvangen" + topics_entered: "Bezocht" + topics_entered_long: "Topics bezocht" + time_read: "Tijd Gelezen" + topic_count: "Topics" + topic_count_long: "Topics gemaakt" + post_count: "Antwoorden" + post_count_long: "Reacties gepost" + no_results: "Geen resultaten gevonden." + days_visited: "Bezoeken" + days_visited_long: "Dagen bezocht" + posts_read: "Gelezen" + posts_read_long: "Berichten gelezen" + total_rows: + one: "1 lid" + other: "%{count} leden" groups: visible: "Groep is zichtbaar voor alle gebruikers" title: @@ -217,7 +245,7 @@ nl: '2': "Likes ontvangen" '3': "Bladwijzers" '4': "Topics" - '5': "Berichten" + '5': "Reacties" '6': "Reacties" '7': "Genoemd" '9': "Citaten" @@ -265,8 +293,8 @@ nl: mute: "Negeer" edit: "Wijzig voorkeuren" download_archive: "Download mijn berichten" - new_private_message: "Nieuw persoonlijk bericht" - private_message: "Privébericht" + new_private_message: "Nieuw Bericht" + private_message: "Bericht" private_messages: "Berichten" activity_stream: "Activiteit" preferences: "Voorkeuren" @@ -303,6 +331,9 @@ nl: delete_yourself_not_allowed: "Je kan je account nu niet verwijderen. Neem contact op met een admin om je account te laten verwijderen." unread_message_count: "Berichten" admin_delete: "Verwijder" + users: "Leden" + muted_users: "Negeren" + muted_users_instructions: "Negeer alle meldingen van deze leden." staff_counters: flags_given: "behulpzame markeringen" flagged_posts: "gemarkeerde berichten" @@ -341,7 +372,6 @@ nl: uploaded_avatar_empty: "Voeg een eigen afbeelding toe" upload_title: "Upload je afbeelding" upload_picture: "Upload afbeelding" - image_is_not_a_square: "Let op: we hebben je afbeelding bijgesneden; het is geen vierkant." change_profile_background: title: "Profielachtergrond" instructions: "Profiel achtergronden worden gecentreerd en hebben een standaard breedte van 850px." @@ -354,6 +384,10 @@ nl: ok: "We sturen een email ter bevestiging" invalid: "Vul een geldig email adres in " authenticated: "Je email is geauthenticeerd door {{provider}}" + frequency: + zero: "We zullen je onmiddelijk e-mailen als je het ding waarover we je e-mailen niet gelezen hebt." + one: "We zullen je alleen maar e-mailen als we je de laatste paar minuten niet gezien hebben." + other: "We zullen je alleen maar e-mailen als we je de laatste {{count}} minuten niet gezien hebben." name: title: "Naam" instructions: "Je volledige naam (optioneel)" @@ -389,14 +423,19 @@ nl: website: "Website" email_settings: "E-mail" email_digests: + title: "Stuur me een mail met de laatste updates wanneer ik de site niet bezoek:" daily: "dagelijks" + every_three_days: "elke drie dagen" weekly: "wekelijks" + every_two_weeks: "elke twee weken" + email_private_messages: "Ontvang een mail wanneer iemand je een bericht heeft gestuurd." email_always: "E-mailnotificaties niet onderdrukken als ik actief ben op de site" other_settings: "Overige" categories_settings: "Categorieën" new_topic_duration: label: "Beschouw topics als nieuw wanneer" not_viewed: "Ik heb ze nog niet bekeken" + last_here: "aangemaakt sinds de laatste keer dat ik hier was" after_n_days: one: "gemaakt gisteren" other: "gemaakt in de afgelopen {{count}} dagen" @@ -437,11 +476,14 @@ nl: none: "Je hebt nog niemand uitgenodigd. Je kan individueel uitnodigen of een groep mensen tegelijk door een groepsuitnodiging-bestand te uploaden" text: "Groepsuitnodiging via bestand" uploading: "Uploaden..." + success: "Het uploaden van het bestand is gelukt, je krijgt een notificatie via een bericht als het proces afgerond is." error: "Het uploaden van '{{filename}}' is niet gelukt: {{message}}" password: title: "Wachtwoord" too_short: "Je wachtwoord is te kort." common: "Dat wachtwoord wordt al te vaak gebruikt." + same_as_username: "Je wachtwoord is hetzelfde als je gebruikersnaam." + same_as_email: "Je wachtwoord is hetzelfde als je email." ok: "Je wachtwoord ziet er goed uit." instructions: "Minimaal %{count} tekens." associated_accounts: "Logins" @@ -458,7 +500,7 @@ nl: stream: posted_by: "Geplaatst door" sent_by: "Verzonden door" - private_message: "privébericht" + private_message: "bericht" the_topic: "de topic" loading: "Laden..." errors: @@ -511,9 +553,9 @@ nl: enable: "Verberg verwijderde berichten" disable: "Toon verwijderde berichten" private_message_info: - title: "Privébericht" + title: "Bericht" invite: "Nodig anderen uit..." - remove_allowed_user: "Weet je zeker dat je {{name}} wil verwijderen uit deze priveconversatie?" + remove_allowed_user: "Weet je zeker dat je {{naam}} wilt verwijderen uit dit bericht?" email: 'E-mail' username: 'Gebruikersnaam' last_seen: 'Gezien' @@ -525,7 +567,7 @@ nl: title: "Maak een nieuw account" failed: "Er ging iets mis, wellicht is het e-mailadres al geregistreerd. Probeer de 'Wachtwoord vergeten'-link." forgot_password: - title: "Wachtwoord vergeten" + title: "Wachtwoord herstellen" action: "Ik ben mijn wachtwoord vergeten" invite: "Vul je gebruikersnaam of e-mailadres in en we sturen je een wachtwoord-herstel-mail." reset: "Herstel wachtwoord" @@ -552,6 +594,7 @@ nl: requires_invite: "Toegang tot dit forum is alleen op uitnodiging." not_activated: "Je kan nog niet inloggen. We hebben je een activatie-mail gestuurd (naar {{sentTo}}). Volg de instructies in die mail om je account te activeren." not_allowed_from_ip_address: "Je kunt niet inloggen vanaf dat IP-adres." + admin_not_allowed_from_ip_address: "Je kan jezelf niet aanmelden vanaf dat IP adres." resend_activation_email: "Klik hier om de activatiemail opnieuw te ontvangen." sent_activation_email_again: "We hebben een nieuwe activatiemail gestuurd naar {{currentEmail}}. Het kan een aantal minuten duren voor deze aan komt. Check ook je spamfolder." google: @@ -575,9 +618,12 @@ nl: apple_international: "Apple/Internationaal" google: "Google" twitter: "Twitter" + emoji_one: "Emoji One" composer: + emoji: "Emoji :smile:" add_warning: "Dit is een officiële waarschuwing." posting_not_on_topic: "In welke topic wil je je antwoord plaatsen?" + saving_draft_tip: "Opslaan..." saved_draft_tip: "opgeslagen" saved_local_draft_tip: "lokaal opgeslagen" similar_topics: "Jouw topic lijkt op..." @@ -594,8 +640,8 @@ nl: reply_here: "Reageer hier" reply: "Reageer" cancel: "Annuleer" - create_topic: "Nieuw topic" - create_pm: "Privé-bericht" + create_topic: "Maak Topic" + create_pm: "Bericht" title: "Of druk op Ctrl-Return" users_placeholder: "Voeg een lid toe" title_placeholder: "Waar gaat de discussie over in één korte zin?" @@ -605,6 +651,7 @@ nl: view_new_post: "Bekijk je nieuwe bericht." saving: "Opslaan..." saved: "Opgeslagen!" + saved_draft: "Bezig met conceptbericht. Selecteer om door te gaan." uploading: "Uploaden..." show_preview: 'toon voorbeeld »' hide_preview: '« verberg voorbeeld' @@ -637,14 +684,18 @@ nl: auto_close: label: "Tijd waarna topic automatisch wordt gesloten:" error: "Vul een geldige waarde in." + based_on_last_post: "Sluit pas als het laatste bericht in het topic op zijn minst zo oud is." + all: + examples: 'Voor het aantal uur (24), absolute tijd (17:30) of timestamp (2013-11-22 14:00) in.' limited: units: "(# aantal uren)" examples: 'Geef aantal uren (24).' notifications: - title: "notificaties van meldingen van @naam, reacties op je berichten en topics, privé-berichten, etc." + title: "notificaties van @naam vermeldingen, reacties op je berichten en topics, berichten, etc." + none: "Notificaties kunnen niet geladen worden." more: "bekijk oudere notificaties" total_flagged: "aantal gemarkeerde berichten" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -678,7 +729,7 @@ nl: user: "Zoek berichten van @{{username}}" category: "Doorzoek de \"{{category}}\" categorie" topic: "Zoek in deze topic" - private_messages: "Zoek priveberichten" + private_messages: "Zoek berichten" site_map: "ga naar een andere topiclijst of categorie" go_back: 'ga terug' not_logged_in_user: 'gebruikerspagina met samenvatting van huidige activiteit en voorkeuren' @@ -698,6 +749,7 @@ nl: close_topics: "Sluit topics" archive_topics: "Archiveer Topics" notification_level: "Wijzig notificatielevel" + choose_new_category: "Kies de nieuwe categorie voor de topics:" selected: one: "Je hebt 1 topic geselecteerd." other: "Je hebt {{count}} topics geselecteerd." @@ -708,6 +760,7 @@ nl: posted: "Je hebt nog niet in een topic gereageerd." latest: "Er zijn geen populaire topics. Dat is jammer." hot: "Er zijn geen polulaire topics." + bookmarks: "Je hebt nog geen topics met bladwijzer." category: "Er zijn geen topics in {{category}}." top: "Er zijn geen top-topics." bottom: @@ -724,7 +777,7 @@ nl: filter_to: "{{post_count}} berichten in topic" create: 'Nieuw topic' create_long: 'Maak een nieuw topic' - private_message: 'Stuur een privébericht' + private_message: 'Stuur een bericht' list: 'Topics' new: 'nieuw topic' unread: 'ongelezen' @@ -795,24 +848,32 @@ nl: '2_4': 'Je ontvangt notificaties omdat je een reactie in dit topic hebt geplaatst.' '2_2': 'Je ontvangt notificaties omdat je dit topic volgt.' '2': 'Je ontvangt notificaties omdat je dit topic hebt gelezen.' + '1_2': 'Je krijgt een notificatie als iemand je @naam noemt of reageert op je bericht.' + '1': 'Je krijgt een notificatie als iemand je @naam noemt of reageert op je bericht.' '0_7': 'Je negeert alle notificaties in deze categorie.' '0_2': 'Je negeert alle notificaties in deze topic.' '0': 'Je negeert alle notificaties in deze topic.' watching_pm: title: "In de gaten houden" + description: "Je krijgt een notificatie voor elk nieuw bericht in deze conversatie. Het aantal ongelezen en nieuwe berichten zal naast de topiclijst verschijnen." watching: title: "In de gaten houden" + description: "Je krijgt een notificatie voor elk nieuw bericht in dit topic. Het aantal ongelezen en nieuwe berichten zal naast de topiclijst verschijnen." tracking_pm: title: "Volgen" + description: "Het aantal ongelezen en nieuwe berichten verschijnt naast het bericht. Je krijgt alleen een notificatie als iemand je @naam noemt of reageert op je bericht." tracking: title: "Volgen" + description: "Het aantal ongelezen en nieuwe berichten wordt getoond naast het topic in het overzicht. Je krijgt enkel een notificatie als iemand je @naam noemt of een bericht van jou beantwoord." regular: title: "Normaal" + description: "Je krijgt een notificatie als iemand je @naam noemt of reageert op je bericht." regular_pm: title: "Normaal" + description: "Je krijgt een notificatie als iemand je @naam noemt of reageert op je bericht." muted_pm: title: "Negeren" - description: "Je zal geen notificaties krijgen voor dit privébericht." + description: "Je zal geen enkele notificatie ontvangen over dit bericht.," muted: title: "Negeren" description: "Je zal geen notificaties krijgen van dit topic en het zal ook niet verschijnen in je lijst ongelezen topics." @@ -821,16 +882,9 @@ nl: delete: "Verwijder topic" open: "Open topic" close: "Sluit topic" - auto_close: "Automatisch sluiten" - make_banner: "Zet topic in als banner" - remove_banner: "Verwijder bannertopic" - pin: "Pin topic vast" - unpin: "Ontpin topic" - pin_globally: "Pin topic globaal vast" unarchive: "De-archiveer topic" archive: "Archiveer topic" reset_read: "Reset leesdata" - multi_select: "Selecteer berichten" reply: title: 'Reageer' help: 'Schrijf een reactie op deze topic' @@ -848,21 +902,16 @@ nl: automatically_add_to_groups_optional: "Deze uitnodiging geeft ook toegang tot de volgende groepen: (optioneel, alleen voor beheerders)" automatically_add_to_groups_required: "Deze uitnodiging geeft ook toegang tot de volgende groepen: (Verplicht, alleen voor beheerders)" invite_private: - title: 'Stuur een privébericht' email_or_username: "E-mail of gebruikersnaam van genodigde" email_or_username_placeholder: "e-mailadres of gebruikersnaam" action: "Uitnodigen" - success: "We hebben die gebruiker uitgenodigd om in deze privé-conversatie deel te nemen" + success: "Deze gebruiker is uitgenodigd om in de conversatie deel te nemen." error: "Sorry, er is iets misgegaan bij het uitnodigen van deze persoon" group_name: "groepsnaam" invite_reply: title: 'Uitnodigen' - action: 'Mail uitnodiging' - help: 'verstuur uitnodigingen naar vrienden zodat zij met één klik kunnen reageren op deze topic' - to_topic: "We zullen je vriend een korte e-mail sturen waardoor hij of zij meteen kan aanmelden en op dit topic kan reageren door op een link te klikken, hij of zij hoeft niet in te loggen." to_forum: "We sturen een kort mailtje waarmee je vriend direct zich kan aanmelden door op een link te klikken, zonder te hoeven inloggen." email_placeholder: 'naam@voorbeeld.nl' - success: "We hebben een uitnodiging verstuurd naar {{email}}. We laten het je weten als de uitnodiging wordt gebruikt. Bekijk de uitnodigingen tab op je profielpagina om je uitnodigingen te volgen." login_reply: 'Log in om te beantwoorden' filters: n_posts: @@ -906,13 +955,10 @@ nl: one: Je hebt één bericht geselecteerd. other: Je hebt {{count}} berichten geselecteerd. post: - reply: "Reageren op {{link}} door {{replyAvatar}} {{username}}" reply_topic: "Reageer op {{link}}" quote_reply: "citeer" - edit: "Bewerken van {{link}} door {{replyAvatar}} {{username}}" edit_reason: "Reden: " post_number: "bericht {{number}}" - in_reply_to: "reageer op" last_edited_on: "bericht gewijzig op" reply_as_new_topic: "Reageer als gelinkt topic" continue_discussion: "Voortzetting van de discussie {{postLink}}:" @@ -937,6 +983,7 @@ nl: upload: "Sorry, er is iets misgegaan bij het uploaden van je bestand. Probeer het nog eens." attachment_too_large: "Sorry, het bestand dat je wil uploaden is te groot (maximum grootte is {{max_size_kb}}kb)." too_many_uploads: "Sorry, je kan maar één afbeelding tegelijk uploaden." + too_many_dragged_and_dropped_files: "Sorry, je kan maar 10 bestanden tegelijk verslepen." upload_not_authorized: "Sorry, je mag dat type bestand niet uploaden (toegestane extensies: {{authorized_extensions}})." image_upload_not_allowed_for_new_user: "Sorry, nieuwe gebruikers mogen nog geen afbeeldingen uploaden." attachment_upload_not_allowed_for_new_user: "Sorry, nieuwe gebruikers mogen nog geen bestanden uploaden." @@ -998,8 +1045,6 @@ nl: inappropriate: "{{icons}} markeerden dit als ongepast" notify_moderators: "{{icons}} lichtte moderators in" notify_moderators_with_url: "{{icons}} lichtte moderators in" - notify_user: "{{icons}} verstuurde een privé-bericht" - notify_user_with_url: "{{icons}} verstuurde een privé-bericht" bookmark: "{{icons}} voegden dit toe aan hun bladwijzers" like: "{{icons}} vinden dit leuk" vote: "{{icons}} hebben hier op gestemd" @@ -1008,7 +1053,6 @@ nl: spam: "Jij markeerde dit als spam" inappropriate: "Jij markeerde dit als ongepast" notify_moderators: "Jij markeerde dit voor moderatie" - notify_user: "Jij stuurde een privé-bericht naar deze persoon" bookmark: "Jij voegde dit bericht toe aan je bladwijzers" like: "Jij vindt dit leuk" vote: "Jij hebt op dit bericht gestemd" @@ -1025,9 +1069,6 @@ nl: notify_moderators: one: "Jij en iemand anders markeerden dit voor moderatie" other: "Jij en {{count}} anderen markeerden dit voor moderatie" - notify_user: - one: "Jij en iemand anders stuurden een privé-bericht naar deze persoon" - other: "Jij en {{count}} anderen stuurden een privé-bericht naar deze persoon" bookmark: one: "Jij en iemand anders voegden dit bericht toe aan de favorieten" other: "Jij en {{count}} anderen voegden dit bericht toe aan hun bladwijzers" @@ -1050,9 +1091,6 @@ nl: notify_moderators: one: "Iemand heeft dit bericht gemarkeerd voor moderatie" other: "{{count}} Mensen hebben dit bericht gemarkeerd voor moderatie" - notify_user: - one: "Iemand stuurde een privé-bericht naar deze persoon" - other: "{{count}} Mensen stuurden een privé-bericht naar deze persoon" bookmark: one: "Iemand heeft dit bericht toegevoegd aan zijn favorieten" other: "{{count}} mensen hebben dit bericht toegevoegd aan hun bladwijzers" @@ -1148,7 +1186,6 @@ nl: flagging: action: 'Meld bericht' take_action: "Onderneem actie" - notify_action: 'Meld' delete_spammer: "Verwijder spammer" delete_confirm: "Je gaat nu %{posts} berichten en %{topics} van deze gebruiker verwijderen, hun account verwijderen, nieuwe aanmeldingen vanaf hun IP-adres %{ip_address} blokkeren en hun e-mailadres %{email} op een permanente blokkeerlijst zetten. Weet je zeker dat dit een spammer is?" yes_delete_spammer: "Ja, verwijder spammer" @@ -1164,7 +1201,6 @@ nl: left: "Nog {{n}}" flagging_topic: action: "Markeer topic" - notify_action: "Notificeer" topic_map: title: "Topicsamenvatting" links_shown: "laat alle {{totalLinks}} links zien..." @@ -1258,14 +1294,6 @@ nl: top: title: "Top" help: "de meest actieve topics van het afgelopen jaar, maand of dag" - yearly: - title: "Jaarlijkse top" - monthly: - title: "Maandlijkse top" - weekly: - title: "Wekelijkse top" - daily: - title: "Dagelijkse top" this_year: "Dit jaar" this_month: "Deze maand" this_week: "Deze week" @@ -1301,8 +1329,6 @@ nl: admins: 'Admins:' blocked: 'Geblokkeerd:' suspended: 'Geschorst:' - private_messages_short: "PBs" - private_messages_title: "Privéberichten" space_free: "{{size}} beschikbaar" uploads: "uploads" backups: "backups" @@ -1331,7 +1357,6 @@ nl: agree_title: "Bevestig dat deze melding geldig en correct is" agree_flag_modal_title: "Akkoord en ... " agree_flag_hide_post: "Akkoord (verberg bericht en stuur privébericht)" - agree_flag_hide_post_title: "Verberg dit bericht en stuur de gebruiker automatisch een privébericht met het verzoek om het bericht aan te passen. " agree_flag_restore_post: "Eens (herstel bericht)" agree_flag_restore_post_title: "Herstel dit bericht" agree_flag: "Akkoord met melding" @@ -1398,9 +1423,14 @@ nl: delete: "Verwijder" delete_confirm: "Verwijder deze groepen?" delete_failed: "Kan groep niet verwijderen. Als dit een automatische groep is, kan deze niet verwijderd worden." + delete_member_confirm: "Verwijder '%{username}' van de '%{group'} groep?" name: "Naam" add: "Voeg toe" add_members: "Voeg leden toe" + custom: "Aangepast" + automatic: "Automatisch" + automatic_membership_email_domains: "Gebruikers welke zich registeren met een email domein dat exact overeenkomt met de domeinen in deze lijst worden automatisch toegevoegd aan deze groep:" + automatic_membership_retroactive: "Pas deze email domein regel toe op reeds geregistreerde gebruikers" api: generate_master: "Genereer Master API Key" none: "Er zijn geen actieve API keys" @@ -1414,10 +1444,12 @@ nl: confirm_revoke: "Weet je zeker dat je die API Key wil intrekken?" info_html: "Met deze API key kun je met behulp van JSON calls topics maken en bewerken." all_users: "Alle gebruikers" + note_html: "Houd deze sleutel geheim, gebruikers die deze sleutel hebben kunnen zich als elke andere gebruiker voordoen op het forum." plugins: title: "Plugins" installed: "Geïnstalleerde plugins" name: "Naam" + none_installed: "Je hebt geen plugins geinstalleerd." version: "Versie" change_settings: "Wijzig instellingen" howto: "Hoe kan ik plugins installeren" @@ -1430,18 +1462,18 @@ nl: read_only: enable: title: "Zet forum in read-only modus" - text: "Schakel read-only modus in" + label: "Schakel read-only modus in" confirm: "Weet je zeker dat je het forum in read-only modus wil zetten?" disable: title: "Schakel read-only modus uit" - text: "Schakel read-only modus uit" + label: "Schakel read-only modus uit" logs: none: "Nog geen logs..." columns: filename: "Bestandsnaam" size: "Grootte" upload: - text: "Upload" + label: "Upload" uploading: "Uploaden..." success: "'{{filename}}' is geupload." error: "Er ging iets fout bij het uploaden van '{{filename}}': {{message}}" @@ -1449,28 +1481,22 @@ nl: is_running: "Er wordt al een actie uitgevoerd..." failed: "De actie {{operation}} is mislukt. Kijk in de logs." cancel: - text: "Annuleer" title: "Annuleer de huidige actie" confirm: "Weet je zeker dat je de huidige actie wil annuleren?" backup: - text: "Backup" title: "Maak een backup" confirm: "Wil je een nieuwe backup starten? " without_uploads: "Ja (bestanden niet invoegen)" download: - text: "Download" title: "Download de backup" destroy: - text: "Verwijder" title: "Verwijder de backup" confirm: "Weet je zeker dat je deze backup wil verwijderen?" restore: is_disabled: "Herstellen is uitgeschakeld in de instellingen." - text: "Herstel" title: "Herstel van deze backup" confirm: "Weet je zeker dat je van deze backup wil herstellen?" rollback: - text: "Rollback" title: "Herstel de database naar de laatst werkende versie" confirm: "Weet je zeker dat je de database wil herstellen naar de laatste versie?" export_csv: @@ -1758,6 +1784,7 @@ nl: time_read: "Leestijd" delete: "Verwijder gebruiker" delete_forbidden_because_staff: "Admins en moderatoren kunnen niet verwijderd worden." + delete_posts_forbidden_because_staff: "Kan niet alle berichten van beheerders en moderatoren verwijderen." delete_forbidden: one: "Gebruikers kunnen niet worden verwijderd als ze berichten geplaatst hebben. Verwijder alle berichten voordat je een gebruiker probeert te verwijderen. (Berichten ouder dan %{count} dag kunnen niet verwijderd worden)" other: "Gebruikers kunnen niet worden verwijderd als ze berichten geplaatst hebben. Verwijder alle berichten voordat je een gebruiker probeert te verwijderen. (Berichten ouder dan %{count} dagen kunnen niet verwijderd worden)" @@ -1988,6 +2015,9 @@ nl: description: Like ontvangen. autobiographer: name: Autobiografist + anniversary: + name: Verjaardag + description: Actief lid voor een jaar, heeft tenminste eenmaal iets gepost nice_post: name: Prima bericht description: 10 likes op een post ontvangen. Deze badge kan meerdere keren worden toegekend. diff --git a/config/locales/client.pl_PL.yml b/config/locales/client.pl_PL.yml index 45b166e18b..1948883b9b 100644 --- a/config/locales/client.pl_PL.yml +++ b/config/locales/client.pl_PL.yml @@ -108,6 +108,7 @@ pl_PL: email: 'wyślij ten odnośnik przez email' topic_admin_menu: "akcje administratora" emails_are_disabled: "Wysyłanie e-maili zostało globalnie wyłączone przez administrację. Powiadomienia e-mail nie będą dostarczane." + s3_deprecation_warning: "UWAGA! Amazon S3 zostanie wkrótce wycofany jako przestrzeń dla obrazków i załączników. Zapoznaj się z instrukcją jak przenieść dane na lokalny dysk." edit: 'edytuj tytuł i kategorię tego tematu' not_implemented: "Bardzo nam przykro, ale ta funkcja nie została jeszcze zaimplementowana." no_value: "Nie" @@ -205,6 +206,8 @@ pl_PL: undo: "Cofnij" revert: "Przywróć" failed: "Niepowodzenie" + switch_to_anon: "Tryb anonimowy" + switch_from_anon: "Zakończ tryb anonimowy" banner: close: "Zamknij ten baner." choose_topic: @@ -227,18 +230,26 @@ pl_PL: sent_by_user: "Wysłano przez {{user}}" sent_by_you: "Wysłano przez Ciebie" directory: - title: "Lista użytkowników" - likes_given: "Przekazane ♥" - likes_received: "Otrzymane ♥" - topics_entered: "Utworzone tematy" + filter_name: "sortuj po nazwie użytkownika" + title: "Użytkownicy" + likes_given: "Oddane" + likes_received: "Otrzymane" + topics_entered: "Odwiedzone" + topics_entered_long: "Odwiedzone tematy" time_read: "Czas" topic_count: "Tematy" + topic_count_long: "Utworzone tematy" post_count: "Odpowiedzi" - no_results: "Nie znaleziono wyników dla wskazanego przedziału czasu." + post_count_long: "Wysłane odpowiedzi" + no_results: "Nie znaleziono wyników." + days_visited: "Odwiedziny" + days_visited_long: "Dni Odwiedzin" + posts_read: "Przeczytane" + posts_read_long: "Przeczytane wpisy" total_rows: - one: "1 znaleziony użytkownik" - few: "%{count} znalezionych użytkowników" - other: "%{count} znalezionych użytkowników" + one: "1 użytkownik" + few: "%{count} użytkownicy" + other: "%{count} użytkowników" groups: visible: "Grupa jest widoczna dla wszystkich użytkowników" title: @@ -259,7 +270,7 @@ pl_PL: '2': "Otrzymane polubienia" '3': "Zakładki" '4': "Tematy" - '5': "Wpisy" + '5': "Odpowiedzi" '6': "Odpowiedzi" '7': "Wzmianki" '9': "Cytaty" @@ -274,7 +285,7 @@ pl_PL: category: "Kategoria" posts: "Wpisy" topics: "Tematy" - latest: "Ostatnie" + latest: "Aktualne" latest_by: "najnowszy wpis: " toggle_ordering: "przełącz kolejność kontroli" subcategories: "Podkategorie" @@ -309,8 +320,8 @@ pl_PL: mute: "Wycisz" edit: "Edytuj ustawienia" download_archive: "Pobierz moje wpisy" - new_private_message: "Nowa Prywatna Wiadomość" - private_message: "Prywatna wiadomość" + new_private_message: "Nowa wiadomość" + private_message: "Wiadomość" private_messages: "Wiadomości" activity_stream: "Aktywność" preferences: "Ustawienia" @@ -347,6 +358,9 @@ pl_PL: delete_yourself_not_allowed: "Nie możesz usunąć swojego konta w tej chwili. Skontaktuj się z administratorem, by usunął Twoje konto za Ciebie." unread_message_count: "Wiadomości" admin_delete: "Usuń" + users: "Użytkownicy" + muted_users: "Uciszeni" + muted_users_instructions: "Wstrzymaj powiadomienia od tych użytkowników." staff_counters: flags_given: "uczynnych oflagowań" flagged_posts: "oflagowane wpisy" @@ -385,7 +399,8 @@ pl_PL: uploaded_avatar_empty: "Dodaj zwyczajny obrazek" upload_title: "Wyślij swoją grafikę" upload_picture: "Wyślij grafikę" - image_is_not_a_square: "Uwaga: przycięliśmy twój obraz ponieważ nie był kwadratem." + image_is_not_a_square: "Uwaga: grafika została przycięta ponieważ jej wysokość i szerokość nie były równe. " + cache_notice: "Twój awatar został pomyślnie zmieniony, ale nowa wersja może pojawić się za jakiś czas z uwagi na cache przeglądarki." change_profile_background: title: "Tło profilu" instructions: "Tła w profilach są wycentrowane i posiadają domyślną szerokość 850px." @@ -405,6 +420,7 @@ pl_PL: name: title: "Pełna nazwa" instructions: "Twoja pełna nazwa (opcjonalna)" + instructions_required: "Twoja pełna nazwa" too_short: "Twoja nazwa jest zbyt krótka" ok: "Twoja nazwa jest ok" username: @@ -442,8 +458,8 @@ pl_PL: every_three_days: "co trzy dni" weekly: "co tydzień" every_two_weeks: "co dwa tygodnie" - email_direct: "Wysyłaj powiadomienia gdy ktoś mnie cytuje, odpowiada na mój wpis lub wywołuje moją @nazwę" - email_private_messages: "Wysyłaj powiadomienia, gdy ktoś wyśle mi prywatną wiadomość" + email_direct: "Wysyłaj e-mail gdy ktoś mnie cytuje, odpowiada na mój wpis, wywołuje moją @nazwę lub zaprasza mnie do tematu." + email_private_messages: "Wyślij e-mail, gdy ktoś napisze mi prywatną wiadomość" email_always: "Wysyłaj powiadomienia email nawet gdy przejawiam aktywność na forum" other_settings: "Inne" categories_settings: "Kategorie" @@ -495,7 +511,7 @@ pl_PL: none: "Jeszcze nikogo nie zaproszono. Możesz wysłać pojedyncze zaproszenie lub zaprosić wiele osób na raz wysyłając odpowiedni plik." text: "Zaproszenia hurtowe z pliku" uploading: "Wysyłanie…" - success: "Plik został przesłany pomyślnie, dostaniesz powiadomienie gdy proces zostanie zakończony." + success: "Plik został przesłany pomyślnie: otrzymasz prywatną wiadomość, gdy proces zostanie zakończony." error: "Podczas przesyłania wystąpił błąd '{{filename}}': {{message}}" password: title: "Hasło" @@ -519,7 +535,7 @@ pl_PL: stream: posted_by: "Wysłane przez" sent_by: "Wysłane przez" - private_message: "prywatna wiadomość" + private_message: "wiadomość" the_topic: "temat" loading: "Wczytuję…" errors: @@ -572,9 +588,9 @@ pl_PL: enable: "Ukryj usunięte wpisy" disable: "Pokaż usunięte wpisy." private_message_info: - title: "Prywatna wiadomość" + title: "Wiadomość" invite: "Zaproś innych" - remove_allowed_user: "Czy naprawdę chcesz usunąć {{name}} z tej prywatnej wiadomości?" + remove_allowed_user: "Czy naprawdę chcesz usunąć {{name}} z tej dyskusji?" email: 'Email' username: 'Nazwa konta' last_seen: 'Ostatnio oglądane' @@ -586,7 +602,7 @@ pl_PL: title: "Utwórz konto" failed: "Coś poszło nie tak, możliwe, że wybrany adres email jest już zarejestrowany, spróbuj użyć odnośnika przypomnienia hasła" forgot_password: - title: "Zapomniane hasło" + title: "Reset hasła" action: "Zapomniałem(-łam) hasła" invite: "Wpisz swoją nazwę użytkownika lub adres email. Wyślemy do ciebie email z linkiem do zresetowania hasła." reset: "Resetuj hasło" @@ -660,7 +676,7 @@ pl_PL: reply: "Odpowiedz" cancel: "Anuluj" create_topic: "Utwórz temat" - create_pm: "Prywatna wiadomość" + create_pm: "Wiadomość" title: "Lub naciśnij Ctrl+Enter" users_placeholder: "Dodaj osobę" title_placeholder: "O czym jest ta dyskusja w jednym zwartym zdaniu. " @@ -710,11 +726,11 @@ pl_PL: units: "(# godzin)" examples: 'Podaj liczbę godzin (24).' notifications: - title: "powiadomienia dla wspomnień przy użyciu @nazwy, odpowiedzi do twoich wpisów i tematów, prywatne wiadomości, itp" + title: "powiadomienia o wywołanej @nazwie, odpowiedzi do twoich wpisów i tematów, prywatne wiadomości, itp" none: "Nie udało się załadować listy powiadomień." more: "pokaż starsze powiadomienia" total_flagged: "wszystkie oflagowane wpisy" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -722,6 +738,7 @@ pl_PL: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} przyjmuje twoje zaproszenie

    " moved_post: "

    {{username}} przenosi {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -748,7 +765,7 @@ pl_PL: user: "Szukaj wpisów @{{username}}" category: "Szukaj w kategorii \"{{category}}\"" topic: "Szukaj w tym temacie" - private_messages: "Wyszukiwanie w prywatnych wiadomościach" + private_messages: "Wyszukiwanie wiadomości" site_map: "przejdź do innej listy tematów lub kategorii" go_back: 'wróć' not_logged_in_user: 'strona użytkownika z podsumowaniem bieżących działań i ustawień' @@ -783,6 +800,7 @@ pl_PL: bookmarks: "Nie posiadasz tematów dodanych do zakładek." category: "Nie ma tematów w kategorii {{category}}." top: "Brak najlepszych tematów." + search: "Brak wyników wyszukiwania." educate: new: '

    Pojawią się tu nowe tematy.

    Domyślnie, tematy są traktowane jako nowe jeśli zostały utworzone w ciągu ostatnich 2 dni.

    Możesz to zmienić w swoich ustawieniach.

    ' unread: '

    Pojawią się tu tematy oznaczone licznikiem 1 nieprzeczytanych wpisów.

    @@ -798,11 +816,12 @@ pl_PL: category: "Nie ma więcej tematów w kategorii {{category}}." top: "Nie ma już więcej najlepszych tematów." bookmarks: "Nie ma więcej zakładek." + search: "Nie znaleziono więcej wyników." topic: filter_to: "{{post_count}} wpisów w temacie" create: 'Nowy temat' create_long: 'Utwórz nowy temat' - private_message: 'Napisz Prywatną Wiadomość' + private_message: 'Napisz wiadomość' list: 'Tematy' new: 'nowy temat' unread: 'nieprzeczytane' @@ -849,7 +868,7 @@ pl_PL: read_more: "Chcesz przeczytać więcej? {{catLink}} lub {{latestLink}}." read_more_MF: "{ UNREAD, plural, =0 {} one { Isnieje 1 nierzeczytany } other { Isnieją # nieprzeczytane } } { NEW, plural, =0 {} one { {BOTH, select, true{oraz } false {jeden } other{}} 1 nowy temat} other { {BOTH, select, true{oraz } false {Istnieją } other{}} # nowe tematy} }, or {CATEGORY, select, true {przeglądaj pozostałe tematy w {catLink}} false {{latestLink}} other {}}." browse_all_categories: Przeglądaj wszystkie kategorie - view_latest_topics: pokaż ostatnie tematy + view_latest_topics: pokaż aktualne tematy suggest_create_topic: Może rozpoczniesz temat? jump_reply_up: przeskocz do wcześniejszej odpowiedzi jump_reply_down: przeskocz do późniejszej odpowiedzi @@ -886,13 +905,13 @@ pl_PL: '0': 'Ignorujesz wszystkie powiadomienia w tym temacie.' watching_pm: title: "Obserwuj wszystko" - description: "Dostaniesz powiadomienie o każdym nowym wpisie w tej prywatnej dyskusji. Liczba nowych i nieprzeczytanych wpisów pojawi się obok jej tytułu." + description: "Otrzymasz powiadomienie o każdym nowym wpisie w tej dyskusji. Liczba nowych i nieprzeczytanych wpisów pojawi się obok jej tytułu na liście wiadomości." watching: title: "Obserwuj wszystko" description: "Dostaniesz powiadomienie o każdym nowym wpisie w tym temacie. Liczba nowych i nieprzeczytanych wpisów pojawi się obok jego tytułu." tracking_pm: title: "Śledzenie" - description: "Licznik nowych i nieprzeczytanych wpisów pojawi się obok prywatnej wiadomości. Dostaniesz powiadomienie jedynie gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." + description: "Licznik nowych i nieprzeczytanych wpisów pojawi się obok wiadomości. Dostaniesz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." tracking: title: "Śledzenie" description: "Licznik nowych i nieprzeczytanych wpisów pojawi się obok tytułu tego tematu. Dostaniesz powiadomienie jedynie gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." @@ -901,10 +920,10 @@ pl_PL: description: "Dostaniesz powiadomienie jedynie gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis." regular_pm: title: "Normalny" - description: "Dostaniesz powiadomienie jedynie gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis w prywatnej wiadomości." + description: "Otrzymasz powiadomienie jedynie, gdy ktoś wspomni twoją @nazwę lub odpowie na twój wpis w tej dyskusji." muted_pm: title: "Wyciszono" - description: "Nie będziesz dostawać jakichkolwiek powiadomień dotyczących tej prywatnej wiadomości." + description: "Nie będziesz otrzymywać powiadomień dotyczących tej dyskusji." muted: title: "Wyciszenie" description: "Nie będzie jakichkolwiek powiadomień dotyczących tego tematu i nie będzie się on pojawiać na karcie nieprzeczytanych." @@ -913,20 +932,21 @@ pl_PL: delete: "Usuń temat" open: "Otwórz temat" close: "Zamknij temat" - auto_close: "Zamknij automatycznie" - feature: "Wyróżnij temat" - remove_feature: "Cofnij wyróżnienie" - make_banner: "Ustaw jako baner" - remove_banner: "Wyłącz ten baner" - pin: "Przypnij temat" - unpin: "Odepnij temat" - pin_globally: "Przypnij temat globalnie" + multi_select: "Wybierz wpisy…" + auto_close: "Zamknij automatycznie…" + pin: "Przypnij temat…" + unpin: "Odepnij temat…" unarchive: "Przywróć z archiwum" archive: "Archiwizuj temat" invisible: "Ustaw jako niewidoczny" visible: "Ustaw jako widoczny" reset_read: "Zresetuj przeczytane dane" - multi_select: "Wybierz wpisy" + feature: + pin: "Przypnij temat" + unpin: "Odepnij temat" + pin_globally: "Przypnij temat globalnie" + make_banner: "Ustaw jako baner" + remove_banner: "Wyłącz baner" reply: title: 'Odpowiedz' help: 'zacznij pisać odpowiedź' @@ -943,47 +963,52 @@ pl_PL: feature_topic: title: "Wyróżnij ten temat" pin: "Wyróżnij ten temat przypinając go na górze w kategorii {{categoryLink}} " - confirm_pin: "Na pewno? Masz już {{count}} przypiętych tematów -- zbyt wiele może obniżyć czytelność innych aktywnych tematów." - unpin: "Usuń wyróżnienie dla tego tematu odpinając go z początku kategorii {{categoryLink}}" + confirm_pin: "Czy na pewno przypiąć ten temat w tej kategorii? Masz już {{count}} przypiętych tematów -- zbyt wiele może obniżyć czytelność innych aktywnych tematów." + unpin: "Odepnij ten temat z początku kategorii {{categoryLink}}." pin_note: "Użytkownicy mogą przypinać tematy dla samych siebie." already_pinned: zero: "Brak przypiętych tematów w {{categoryLink}}." - one: "Przypięte tematy w {{categoryLink}}: 1." - other: "Przypięte tematy w {{categoryLink}}: {{count}}." + one: "Tematy przypięte w {{categoryLink}}: 1." + other: "Tematy przypięte w {{categoryLink}}: {{count}}." pin_globally: "Wyróżnij ten temat przypinając go na górze wszystkich list." - confirm_pin_globally: "Na pewno? Masz już {{count}} przypiętych tematów -- zbyt wiele może obniżyć czytelność innych aktywnych tematów." + confirm_pin_globally: "Czy na pewno chcesz globalnie przypiąć kolejny temat? Masz już {{count}} przypiętych tematów -- zbyt wiele może obniżyć czytelność innych aktywnych tematów." unpin_globally: "Usuń wyróżnienie dla tego tematu odpinając go z początku wszystkich list." global_pin_note: "Użytkownicy mogą przypinać tematy dla samych siebie." already_pinned_globally: zero: "Brak przypiętych globalnie tematów." - one: "Globalnie przypięte tematy: 1." - other: "Globalnie przypięte tematy: {{count}}." + one: "Tematy przypięte globalnie: 1." + other: "Tematy przypięte globalnie: {{count}}." make_banner: "Ustaw ten temat jako baner wyświetlany na górze każdej strony." remove_banner: "Usuń ten temat jako baner wyświetlany na górze każdej strony." banner_note: "Użytkownicy mogą usunąć baner zamykając go przyciskiem. Tylko jeden temat może być banerem w danej chwili." already_banner: zero: "Baner nie jest obecnie ustawiony." - one: "Baner jest ustawiony." + one: "Baner jest ustawiony." inviting: "Zapraszam…" automatically_add_to_groups_optional: "To zaproszenie daje dostęp do tych grup: (opcjonalne, tylko dla admina)" automatically_add_to_groups_required: "To zaproszenie daje dostęp do tych grup: (Wymagane, tylko dla admina)" invite_private: - title: 'Zaproś do pisanie Prywatnej Wiadomości' + title: 'Zaproś do dyskusji' email_or_username: "Adres email lub nazwa użytkownika zapraszanej osoby" email_or_username_placeholder: "adres email lub nazwa użytkownika" action: "Zaproś" - success: "Wskazany użytkownik został zaproszony do udziału w tej prywatnej dyskusji." + success: "Wskazany użytkownik został zaproszony do udziału w tej dyskusji." error: "Przepraszamy, wystąpił błąd w trakcie zapraszania użytkownika(-czki)." group_name: "nazwa grupy" invite_reply: title: 'Zaproś' - action: 'Zaproś przez e-mail' - help: 'wyślij zaproszenia do znajomych by mogli odpowiedzieć na ten temat jednym kliknięciem' - to_topic: "Wyślemy krótki email pozwalający twojemu znajomemu błyskawicznie odpowiedzieć w tym temacie przez kliknięcie w link (bez logowania)." + username_placeholder: "nazwa użytkownika" + action: 'Wyślij zaproszenie' + help: 'zaproś innych do tego tematu e-mailem lub powiadomieniem' to_forum: "Wyślemy krótki email pozwalający twojemu znajomemu błyskawicznie dołączyć przez kliknięcie w link (bez logowania)." + sso_enabled: "Podaj nazwę użytkownika lub e-mail osoby którą chcesz zaprosić do tego tematu." + to_topic_blank: "Podaj nazwę użytkownika lub e-mail osoby którą chcesz zaprosić do tego tematu." + to_topic_email: "Wprowadzony został adres e-mail. Wyślemy tam zaproszenie umożliwiające wskazanej osobie odpowiedź w tym temacie." + to_topic_username: "Wprowadzono nazwę użytkownika. Wskazane konto otrzyma powiadomienie z linkiem do tematu." email_placeholder: 'nazwa@example.com' - success: "Wysłaliśmy zaproszenie do {{email}}. Powiadomimy cię gdy zaproszenie zostanie przyjęte. Status swoich zaproszeń możesz śledzić na dedykowanej zakładce w swoim profilu." - error: "Przepraszamy, nie mogliśmy zaprosić tej osoby. Być może jest już użytkownikiem? (Możliwe też, że zapraszasz zbyt szybko, zbyt wiele osób)" + success_email: "Wysłaliśmy zaproszenie do {{emailOrUsername}}. Otrzymasz powiadomienie, gdy zaproszenie zostanie przyjęte. Sprawdź zakładkę zaproszenia w swoim profilu, aby śledzić status tego i innych zaproszeń." + success_username: "Wskazany użytkownik został zaproszony do udziału w tym temacie." + error: "Przepraszamy, nie udało się zaprosić wskazanej osoby. Być może została już zaproszona? (Lub wysyłasz zbyt wiele zaproszeń)" login_reply: 'Zaloguj się, aby odpowiedzieć' filters: n_posts: @@ -1032,13 +1057,12 @@ pl_PL: few: Wybrano {{count}} wpisy. other: Wybrano {{count}} wpisów. post: - reply: "Odpowiedz na {{link}} napisany przez {{replyAvatar}} {{username}}" + reply: "Odpowiedź na {{link}} {{replyAvatar}} {{username}}" reply_topic: "Odpowiedź na {{link}}" quote_reply: "odpowiedz na ten cytat" - edit: "Edytuj {{link}} napisany przez {{replyAvatar}} {{username}}" + edit: "Edycja {{link}} {{replyAvatar}} {{username}}" edit_reason: "Powód" post_number: "wpis {{number}}" - in_reply_to: "w odpowiedzi na" last_edited_on: "ostatnia edycja wpisu" reply_as_new_topic: "Odpowiedz w nowym temacie" continue_discussion: "Kontynuując dyskusję z {{postLink}}:" @@ -1135,8 +1159,8 @@ pl_PL: inappropriate: "{{icons}} oznaczyli jako niewłaściwe" notify_moderators: "{{icons}} powiadomiło moderatorów" notify_moderators_with_url: "{{icons}} powiadomiło moderatorów" - notify_user: "{{icons}} wysłało prywatną wiadomość" - notify_user_with_url: "{{icons}} wysłało prywatną wiadmość" + notify_user: "{{icons}} wysłana wiadomość" + notify_user_with_url: "{{icons}} wysłana wiadomość" bookmark: "{{icons}} dodało to do zakładek" like: "{{icons}} lubi to" vote: "{{icons}} zagłosowało za tym" @@ -1145,7 +1169,7 @@ pl_PL: spam: "Oflagowano jako spam" inappropriate: "Oznaczono jako niewłaściwe" notify_moderators: "Oflagowano do moderacji" - notify_user: "Wysłałeś(-aś) prywatną wiadomość do użytkownika(-czki)" + notify_user: "Wysłano wiadomość do tego użytkownika" bookmark: "Dodano zakładkę w tym wpisie" like: "Lubisz ten wpis" vote: "Zagłosowano na ten wpis" @@ -1167,9 +1191,9 @@ pl_PL: few: "Ty i {{count}} inne osoby oflagowaliście to do moderacji." other: "Ty i {{count}} innych osób oflagowaliście to do moderacji." notify_user: - one: "Ty i 1 inna osoba wysłaliście prywatne wiadomości do tego użytkownika" - few: "Ty i {{count}} inne osoby wysłaliście prywatne wiadomości do tego użytkownika" - other: "Ty i {{count}} innych osób wysłaliście prywatne wiadomości do tego użytkownika" + one: "Ty i 1 inna osoba wysłaliście wiadomość do tego użytkownika" + few: "Ty i {{count}} inne osoby wysłaliście wiadomość do tego użytkownika" + other: "Ty i {{count}} innych osób wysłaliście wiadomość do tego użytkownika" bookmark: one: "Ty i 1 inna osoba dodaliście ten wpis do zakładek." few: "Ty i {{count}} inne osoby dodaliście ten wpis do zakładek." @@ -1200,9 +1224,9 @@ pl_PL: few: "{{count}} osoby oflagowały to do moderacji" other: "{{count}} osób oflagowało to do moderacji" notify_user: - one: "1 osoba wysłała prywatną wiadomość do tego użytkownika" - few: "{{count}} osoby wysłały prywatne wiadomości do tego użytkownika" - other: "{{count}} osób wysłało prywatne wiadomości do tego użytkownika" + one: "1 osoba wysłała wiadomość do tego użytkownika" + few: "{{count}} osoby wysłały wiadomość do tego użytkownika" + other: "{{count}} osób wysłało wiadomość do tego użytkownika" bookmark: one: "1 osoba dodała ten wpis do zakładek" few: "{{count}} osoby dodały ten wpis do zakładek" @@ -1312,7 +1336,7 @@ pl_PL: private_reminder: 'oflagowania są poufne i widoczne jedynie dla obsługi serwisu' action: 'Oflaguj wpis' take_action: "Podejmij działanie" - notify_action: 'Prywatna wiadomość' + notify_action: 'Wiadomość' delete_spammer: "Usuń spamera" delete_confirm: "Zamierzasz usunąć%{posts} wpisów i %{topics} tematów użytkownika, usunąć jest konto, zablokować możliwość zakładania kont z jego adresu IP %{ip_address} i dodać jego email %{email} do listy trwale zablokowanych. Czy na pewno ten użytkownik jest spamerem?" yes_delete_spammer: "Tak, usuń spamera" @@ -1334,7 +1358,7 @@ pl_PL: flagging_topic: title: "Dziękujemy za pomoc w utrzymaniu porządku w naszej społeczności!" action: "Zgłoś temat" - notify_action: "Wyślij prywatną wiadomość" + notify_action: "Wiadomość" topic_map: title: "Podsumowanie tematu" links_shown: "pokaż wszystkie {{totalLinks}} odnośników…" @@ -1387,7 +1411,7 @@ pl_PL: with_topics: "%{filter} tematy" with_category: "%{filter} tematy w %{category} " latest: - title: "Ostatnie" + title: "Aktualne" help: "tematy z ostatnimi wpisami" hot: title: "Gorące" @@ -1395,6 +1419,9 @@ pl_PL: read: title: "Przeczytane" help: "tematy które przeczytałeś, w kolejności od ostatnio przeczytanych" + search: + title: "Wyszukiwanie" + help: "szukaj we wszystkich tematach" categories: title: "Kategorie" title_in: "Kategoria - {{categoryName}}" @@ -1419,7 +1446,7 @@ pl_PL: other: "Nowe ({{count}})" help: "tematy dodane w ciągu ostatnich kilku dni" posted: - title: "Moje wpisy" + title: "Wysłane" help: "tematy w których pisałeś" bookmarks: title: "Zakładki" @@ -1433,15 +1460,17 @@ pl_PL: top: title: "Popularne" help: "popularne tematy w ubiegłym roku, miesiącu, tygodniu lub dniu" + all: + title: "Cały czas" yearly: - title: "Popularne w tym roku" + title: "Rocznie" monthly: - title: "Popularne w tym miesiącu" + title: "Miesięcznie" weekly: - title: "Popularne w tym tygodniu" + title: "Tygodniowo" daily: - title: "Popularne dzisiaj" - all: "Od zawsze" + title: "Dziennie" + all_time: "Cały czas" this_year: "W tym roku" this_month: "W tym miesiącu" this_week: "W tym tygodniu" @@ -1478,8 +1507,8 @@ pl_PL: admins: 'Adminstratorzy:' blocked: 'Zablokowani:' suspended: 'Zawieszeni:' - private_messages_short: "PM" - private_messages_title: "Prywatne Wiadomości" + private_messages_short: "Wiad." + private_messages_title: "Wiadomości" space_free: "{{size}} wolne" uploads: "załączniki" backups: "kopie zapasowe" @@ -1513,7 +1542,7 @@ pl_PL: agree_title: "Potwierdź to zgłoszenie jako uzasadnione i poprawne" agree_flag_modal_title: "Potwierdź i…" agree_flag_hide_post: "Potwierdź (ukryj post i wyślij PW)" - agree_flag_hide_post_title: "Ukryj ten wpis i automatycznie wyślij użytkownikowi prywatną wiadomość informującą, że wpis wymaga przeredagowania" + agree_flag_hide_post_title: "Ukryj ten wpis i automatycznie wyślij użytkownikowi wiadomość informującą, że wpis wymaga przeredagowania" agree_flag_restore_post: "Zgoda (przywróć wpis)" agree_flag_restore_post_title: "Przywróć ten wpis" agree_flag: "Potwierdź flagę" @@ -1590,12 +1619,8 @@ pl_PL: name: "Nazwa" add: "Dodaj" add_members: "Dodaj członków" - custom: - label: "Niestandardowe" - title: "Grupy niestandardowe " - automatic: - label: "Automatyczne" - title: "Grupy automatyczne" + custom: "Niestandardowe" + automatic: "Automatyczne" automatic_membership_email_domains: "Użytkownicy rejestrujący się przy pomocy adresu z tej listy zostaną automatycznie przypisani do tej grupy." automatic_membership_retroactive: "Zastosuj tę regułę domenową do już istniejących użytkowników." api: @@ -1629,18 +1654,19 @@ pl_PL: read_only: enable: title: "Włącz tryb tylko do odczytu" - text: "Włącz tryb tylko do odczytu" + label: "Włącz tryb tylko do odczytu" confirm: "Czy na pewno chcesz włączyć tryb tylko do odczytu?" disable: title: "Wyłącz tryb tylko do odczytu" - text: "Wyłącz tryb tylko do odczytu" + label: "Wyłącz tryb tylko do odczytu" logs: none: "Póki co brak logów…" columns: filename: "Nazwa pliku" size: "Rozmiar" upload: - text: "Wyślij" + label: "Wyślij" + title: "Wyślij kopię zapasową do tej instancji" uploading: "Wysyłanie…" success: "'{{filename}}' został pomyślnie przesłany." error: "Podczas przesyłania pliku wystąpił błąd '{{filename}}': {{message}}" @@ -1648,33 +1674,32 @@ pl_PL: is_running: "Proces jest w trakcie działania…" failed: "Proces {{operation}} zakończył się niepowodzeniem. Sprawdź logi." cancel: - text: "Anuluj" + label: "Anuluj" title: "Anuluj bieżącą operację" confirm: "Czy na pewno chcesz anulować bieżącą operację?" backup: - text: "Kopia zapasowa" + label: "Kopia zapasowa" title: "Wykonaj kopię zapasową" confirm: "Czy chcesz wykonać kopię zapasową?" without_uploads: "Tak (bez załączników)" download: - text: "Pobierz" + label: "Pobierz" title: "Pobierz kopię zapasową" destroy: - text: "Usuń" title: "Usuń kopię zapasową" confirm: "Czy na pewno chcesz zniszczyć tą kopię zapasową?" restore: is_disabled: "Przywracanie jest zablokowane w ustawieniach." - text: "Przywróć" + label: "Przywróć" title: "Przywróć kopię zapasową" confirm: "Czy na pewno chcesz przywrócić tą kopię zapasową?" rollback: - text: "Wycofaj" + label: "Wycofaj" title: "Wycofaj bazę danych do poprzedniego poprawnego stanu" confirm: "Czy na pewno chcesz przywrócić bazę danych do poprzedniego poprawnego stanu?" export_csv: user_archive_confirm: "Czy na pewno chcesz pobrać swoje wszystkie wpisy?" - success: "Rozpoczęto eksport: dostaniesz powiadomienie gdy proces zostanie zakończony." + success: "Rozpoczęto eksport: otrzymasz wiadomość, gdy proces zostanie zakończony." failed: "Eksport zakończył się niepowodzeniem. Sprawdź logi." rate_limit_error: "Wpisy mogą być pobierane raz dziennie, spróbuj ponownie jutro." button_text: "Eksportuj" @@ -2204,8 +2229,8 @@ pl_PL: title: 'Skróty klawiszowe' jump_to: title: 'Skocz do' - home: 'g, h strona główna (Ostatnie)' - latest: 'g, l Ostatnie' + home: 'g, h strona główna (Aktualne)' + latest: 'g, l Aktualne' new: 'g, n Nowe' unread: 'g, u Nieprzeczytane' categories: 'g, c Kategorie' diff --git a/config/locales/client.pt.yml b/config/locales/client.pt.yml index 1fdb5ff2c7..5c2cdcce08 100644 --- a/config/locales/client.pt.yml +++ b/config/locales/client.pt.yml @@ -222,8 +222,6 @@ pt: '2': "Gostos Recebidos" '3': "Marcadores" '4': "Tópicos" - '5': "Mensagens" - '6': "Respostas" '7': "Menções" '9': "Citações" '10': "Favoritos" @@ -270,8 +268,6 @@ pt: mute: "Silenciar" edit: "Editar Preferências" download_archive: "Descarregar As Minhas Mensagens" - new_private_message: "Nova Mensagem Privada" - private_message: "Mensagem Privada" private_messages: "Mensagens" activity_stream: "Atividade" preferences: "Preferências" @@ -344,7 +340,6 @@ pt: uploaded_avatar_empty: "Adicionar foto personalizada" upload_title: "Carregar a sua foto" upload_picture: "Carregar Imagem" - image_is_not_a_square: "Alerta: cortámos a sua imagem; não é quadrada." change_profile_background: title: "Fundo de Perfil" instructions: "O fundo do perfil será centrado e terá por defeito uma largura de 850px." @@ -440,7 +435,6 @@ pt: none: "Ainda não convidou ninguém. Pode enviar convites individuais, ou convidar um grupo de pessoas de uma única vez carregando um ficheiro com convites em massa." text: "Convite em massa a partir de ficheiro" uploading: "A carregar…" - success: "Ficheiro carregado corretamente, será notificado por mensagem privada quando o processo ficar concluído." error: "Erro de carregamento '{{filename}}': {{message}}" password: title: "Palavra-passe" @@ -460,7 +454,6 @@ pt: stream: posted_by: "Publicado por" sent_by: "Enviado por" - private_message: "mensagem privada" the_topic: "o tópico" loading: "A carregar..." errors: @@ -513,9 +506,7 @@ pt: enable: "Ocultar mensagens eliminadas" disable: "Exibir mensagens eliminadas" private_message_info: - title: "Mensagem Privada" invite: "Convidar Outros..." - remove_allowed_user: "Quer mesmo remover {{name}} desta mensagem privada?" email: 'Email' username: 'Nome de utilizador' last_seen: 'Visto' @@ -527,7 +518,6 @@ pt: title: "Criar Nova Conta" failed: "Ocorreu um erro, talvez este email já esteja registado, tente usar a hiperligação \"Esqueci-me da Palavra-passe\"." forgot_password: - title: "Esqueci a palavra-passe" action: "Esqueci-me da minha palavra-passe" invite: "Insira o seu nome de utilizador ou endereço de email, e enviar-lhe-emos um email para refazer a sua palavra-passe." reset: "Repor Palavra-passe" @@ -598,8 +588,6 @@ pt: reply_here: "Responda Aqui" reply: "Responder" cancel: "Cancelar" - create_topic: "Novo Tópico" - create_pm: "Mensagem Privada" title: "Ou prima Ctrl+Enter" users_placeholder: "Adicionar um utilizador" title_placeholder: "Numa breve frase, de que se trata esta discussão?" @@ -649,10 +637,8 @@ pt: units: "(# de horas)" examples: 'Introduza o número de horas (24).' notifications: - title: "notificações de menção de @nome, respostas às suas mensagens e tópicos, mensagens privadas, etc" more: "ver notificações antigas" total_flagged: "total de mensagens sinalizadas" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -686,7 +672,6 @@ pt: user: "Procurar mensagens de @{{username}}" category: "Procurar na categoria \"{{category}}\"" topic: "Pesquisar este tópico" - private_messages: "Pesquisar mensagens privadas" site_map: "ir para outra lista de tópicos ou categorias" go_back: 'voltar atrás' not_logged_in_user: 'página de utilizador com resumo da atividade atual e preferências ' @@ -734,7 +719,6 @@ pt: filter_to: "{{post_count}} mensagens no tópico" create: 'Novo Tópico' create_long: 'Criar um novo Tópico' - private_message: 'Começar uma mensagem privada' list: 'Tópicos' new: 'novo tópico' unread: 'não lido' @@ -812,13 +796,11 @@ pt: '0': 'Está a ignorar todas as notificações para este tópico.' watching_pm: title: "A vigiar" - description: "Será notificado de todas as novas mensagens nesta mensagem privada. Será também apresentada uma contagem de mensagens novas e não lidas junto do tópico." watching: title: "A vigiar" description: "Será notificado sobre todas as novas mensagens neste tópico. Será também apresentada uma contagem de mensagens novas e não lidas junto do tópico." tracking_pm: title: "Acompanhar" - description: "Será apresentada uma contagem de mensagens novas e não lidas junto da mensagem privada. Será notificado se alguém mencionar o seu @nome ou responder à sua mensagem." tracking: title: "Acompanhar" description: "Será apresentada uma contagem de mensagens novas e não lidas junto do tópico Será notificado se alguém mencionar o seu @nome ou responder à sua mensagem." @@ -827,10 +809,8 @@ pt: description: "Será notificado se alguém mencionar o seu @nome ou responder às suas mensagens." regular_pm: title: "Habitual" - description: "Receberá notificações se alguém mencionar o seu @nome ou responder à sua mensagem na mensagem privada." muted_pm: title: "Silenciado" - description: "Não será notificado de nada que esteja relacionado com esta mensagem privada." muted: title: "Silenciado" description: "Não será notificado de nada que esteja relacionado com este tópico, e este não será apresentado no seu separador de 'não lido'." @@ -839,18 +819,11 @@ pt: delete: "Eliminar Tópico" open: "Abrir Tópico" close: "Fechar Tópico" - auto_close: "Fechar Automaticamente" - make_banner: "Apresentar tópico como Banner" - remove_banner: "Remover apresentação do tópico como banner" - pin: "Destacar Tópico" - unpin: "Remover Destaque do Tópico" - pin_globally: "Destacar Tópico Globalmente" unarchive: "Desarquivar Tópico" archive: "Arquivar Tópico" invisible: "Tornar Não Listado" visible: "Tornar Listado" reset_read: "Repor Data de Leitura" - multi_select: "Selecionar Mensagens" reply: title: 'Responder' help: 'começa a compor uma resposta a este tópico' @@ -868,21 +841,15 @@ pt: automatically_add_to_groups_optional: "Este convite também inclui acesso a estes grupos: (opcional, apenas Administração)" automatically_add_to_groups_required: "Esse convite também inclui acesso a estes grupos: (Obrigatório, apenas Administração)" invite_private: - title: 'Convidar para Mensagem Privada' email_or_username: "Email ou Nome de Utilizador do Convidado" email_or_username_placeholder: "endereço de email ou nome de utilizador" action: "Convidar" - success: "Convidámos esse utilizador para participar nesta mensagem privada" error: "Pedimos desculpa, ocorreu um erro ao convidar esse utilizador." group_name: "nome do grupo" invite_reply: title: 'Convidar' - action: 'Email de Convite' - help: 'envie convites aos seus amigos para que estes possam responder a este tópico com um simples clique do rato.' - to_topic: "Enviaremos um breve email que permitirá ao seu amigo juntar-se imediatamente e responder a este tópico clicando numa hiperligação, não sendo necessário ter sessão iniciada. " to_forum: "Enviaremos um breve email que permitirá ao seu amigo juntar-se imediatamente clicando numa hiperligação, não sendo necessário ter sessão iniciada." email_placeholder: 'nome@exemplo.com' - success: "Enviámos um convite para {{email}}. Será notificado quando o convite for resgatado. Verifique o separador de convites na sua página de utilizador para poder acompanhar os seus convites." login_reply: 'Iniciar sessão para Responder' filters: n_posts: @@ -926,13 +893,10 @@ pt: one: Selecionou 1 mensagem. other: Selecionou {{count}} mensagens. post: - reply: "Em resposta a {{link}} de {{replyAvatar}} {{username}}" reply_topic: "Responder a {{link}}" quote_reply: "citar resposta" - edit: "Editar {{link}} de {{replyAvatar}} {{username}}" edit_reason: "Motivo:" post_number: "mensagem {{number}}" - in_reply_to: "responder a" last_edited_on: "mensagem editada pela última vez em" reply_as_new_topic: "Responder como tópico hiperligado" continue_discussion: "Continuar a discussão desde {{postLink}}:" @@ -1022,8 +986,6 @@ pt: inappropriate: "{{icons}} sinalizou isto como inapropriado" notify_moderators: "{{icons}} moderadores notificados" notify_moderators_with_url: "{{icons}}
    moderadores notificados" - notify_user: "{{icons}} enviou uma mensagem privada" - notify_user_with_url: "{{icons}} enviou uma mensagem privada" bookmark: "{{icons}} adicionaram um marcador a isto" like: "{{icons}} gostaram disto" vote: "{{icons}} votaram nisto" @@ -1032,7 +994,6 @@ pt: spam: "Sinalizou isto como spam" inappropriate: "Sinalizou isto como inapropriado" notify_moderators: "Sinalizou isto para moderação" - notify_user: "Enviou uma mensagem privada a este utilizador" bookmark: "Adicionou um marcador a esta mensagem" like: "Gostou disto" vote: "Votou nesta mensagem" @@ -1049,9 +1010,6 @@ pt: notify_moderators: one: "Para além de si, 1 pessoa sinalizaram isto para moderação" other: "Para além de si, {{count}} pessoas sinalizaram isto para moderação" - notify_user: - one: "Para além de si, 1 pessoa enviou mensagens privadas a este utilizador" - other: "Para além de si, {{count}} pessoas enviaram mensagens privadas a este utilizador" bookmark: one: "Para além de si, 1 pessoa adicionou um marcador a esta mensagem" other: "Para além de si, {{count}} adicionaram um marcador a esta mensagem" @@ -1074,9 +1032,6 @@ pt: notify_moderators: one: "1 pessoa sinalizou isto para moderação" other: "{{count}} pessoas sinalizaram isto para moderação" - notify_user: - one: "1 pessoa enviou uma mensagem privada a este utilizador" - other: "{{count}} enviaram mensagens privadas a este utilizador" bookmark: one: "1 pessoa adicionou um marcador a esta mensagem" other: "{{count}} pessoas adicionaram um marcador a esta mensagem" @@ -1182,7 +1137,6 @@ pt: private_reminder: 'as sinalizações são privadas, visíveis apenas para o pessoal' action: 'Sinalizar Mensagem' take_action: "Acionar" - notify_action: 'Mensagem privada' delete_spammer: "Eliminar Spammer" delete_confirm: "Está prestes a apagar %{posts} mensagens e %{topics} tópicos deste utilizador, remover a sua conta, bloquear acessos do seu endereço IP %{ip_address}, e adicionar o seu endereço de email %{email} a uma lista negra. Tem a certeza que este utilizador é de facto um spammer?" yes_delete_spammer: "Sim, Eliminar Spammer" @@ -1204,7 +1158,6 @@ pt: flagging_topic: title: "Obrigado por ajudar a manter a nossa comunidade cívica!" action: "Sinalizar Tópico" - notify_action: "Mensagem privada" topic_map: title: "Sumário do Tópico" links_shown: "mostrar todas as {{totalLinks}} hiperligações..." @@ -1297,14 +1250,6 @@ pt: top: title: "Os Melhores" help: "os tópicos mais ativos no último ano, mês, semana ou dia" - yearly: - title: "Os Melhores do Ano" - monthly: - title: "Os Melhores do Mês" - weekly: - title: "Os Melhores da Semana" - daily: - title: "Os Melhores do Dia" this_year: "Este ano" this_month: "Este mês" this_week: "Esta semana" @@ -1341,8 +1286,6 @@ pt: admins: 'Administradores:' blocked: 'Bloqueado:' suspended: 'Suspenso: ' - private_messages_short: "MPs" - private_messages_title: "Mensagens Privadas" reports: today: "Hoje" yesterday: "Ontem" @@ -1368,7 +1311,6 @@ pt: agree_title: "Confirmar esta sinalização como válida e correta" agree_flag_modal_title: "Aceitar e..." agree_flag_hide_post: "Aceitar (esconder mensagem + enviar MP)" - agree_flag_hide_post_title: "Esconder esta mensagem e enviar automaticamente uma mensagem privada ao utilizador solicitando a edição da mensagem com urgência" agree_flag_restore_post: "Concordar (restaurar mensagem)" agree_flag_restore_post_title: "Restaurar esta mensagem" agree_flag: "Concordar com a sinalização" @@ -1463,18 +1405,15 @@ pt: read_only: enable: title: "Ativar o modo só de leitura" - text: "Ativar modo só de leitura" confirm: "Tem a certeza que quer ativar o modo só de leitura?" disable: title: "Desativar o modo só de leitura" - text: "Desativar o modo só de leitura" logs: none: "Nenhuns logs ainda..." columns: filename: "Nome do ficheiro" size: "Tamanho" upload: - text: "Carregar" uploading: "A carregar…" success: "'{{filename}}' foi carregado com sucesso." error: "Verificou-se um erro no carregamento de '{{filename}}': {{message}}" @@ -1482,32 +1421,25 @@ pt: is_running: "Existe atualmente uma operação em execução..." failed: "A {{operation}} falhou. Por favor verifique o registo dos logs." cancel: - text: "Cancelar" title: "Cancelar a operação atual" confirm: "Tem a certeza que deseja cancelar a operação atual?" backup: - text: "Cópia de Segurança" title: "Criar uma cópia de segurança" confirm: "Deseja criar uma nova cópia de segurança?" without_uploads: "Sim (não incluir ficheiros)" download: - text: "Descarregar" title: "Descarregar a cópia de segurança" destroy: - text: "Eliminar" title: "Remover a cópia de segurança" confirm: "Tem a certeza que deseja destruir esta cópia de segurança?" restore: is_disabled: "A opção de restauro encontra-se desativada nas configurações do sítio." - text: "Restaurar" title: "Restaurar a cópia de segurança" confirm: "Tem a certeza que deseja restaurar esta cópia de segurança?" rollback: - text: "Reverter" title: "Reverter a base de dados para um estado anterior operacional" confirm: "Tem a certeza que deseja reverter a base de dados para um estado anterior operacional?" export_csv: - success: "Exportação iniciada, será notificado através de mensagem privada quando o processo ficar concluído." failed: "A exportação falhou. Por favor verifique os registos dos logs." rate_limit_error: "As mensagens podem ser descarregadas uma vez por dia. Por favor, tente novamente amanhã." button_text: "Exportar" diff --git a/config/locales/client.pt_BR.yml b/config/locales/client.pt_BR.yml index 80552991ea..c13ed9f1be 100644 --- a/config/locales/client.pt_BR.yml +++ b/config/locales/client.pt_BR.yml @@ -92,6 +92,7 @@ pt_BR: email: 'enviar esse link para um email' topic_admin_menu: "ações administrativas do tópico" emails_are_disabled: "Todo o envio de email foi globalmente desabilitado por algum administrador. Nenhum email de notificações de qualquer tipo será enviado." + s3_deprecation_warning: "AVISO! O servço Amazon S3 será em breve descontinuado para armazenamento de imagens e anexos. Por favor, acesse as instruções para migrar para armazenamento local." edit: 'edite o título e a categoria deste tópico' not_implemented: "Esse recurso ainda não foi implementado, desculpe!" no_value: "Não" @@ -125,6 +126,7 @@ pt_BR: daily: "diário" weekly: "semanal" every_two_weeks: "a cada duas semanas" + every_three_days: "a cada três dias" max_of_count: "max de {{count}}" character_count: one: "{{count}} caracter" @@ -160,6 +162,7 @@ pt_BR: not_bookmarked: "você já leu esta mensagem; clique para favoritar." last_read: "este é a última resposta que você leu; clique para favoritar." remove: "Remover favorito" + confirm_clear: "Tem certeza que deseja apagar todos os atalhos deste tópico?" topic_count_latest: one: "{{count}} tópico novo ou atualizado." other: "{{count}} tópicos novos ou atualizados." @@ -183,6 +186,8 @@ pt_BR: undo: "Desfazer" revert: "Reverter" failed: "Falhou" + switch_to_anon: "Modo Anônimo" + switch_from_anon: "Sair Modo Anônimo" banner: close: "Ignorar este banner." choose_topic: @@ -204,6 +209,26 @@ pt_BR: posted_by_you: "Enviado por você" sent_by_user: "Enviado por {{user}}" sent_by_you: "Enviado por você" + directory: + filter_name: "filtrar por nome de usuário" + title: "Usuários" + likes_given: "Dados" + likes_received: "Recebidos" + topics_entered: "Registrados" + topics_entered_long: "Tópicos Registrados" + time_read: "Tempo Lido" + topic_count: "Tópicos" + topic_count_long: "Tópicos Criados" + post_count: "Respostas" + post_count_long: "Respostas Postadas" + no_results: "Nenhum resultado foi encontrado." + days_visited: "Visitas" + days_visited_long: "Dias Visitados" + posts_read: "Lidos" + posts_read_long: "Postagens Lidas" + total_rows: + one: "1 usuário" + other: "%{count} usuários" groups: visible: "Grupo é visível para todos os usuários" title: @@ -223,7 +248,7 @@ pt_BR: '2': "Curtidas recebidas" '3': "Favoritos" '4': "Tópicos" - '5': "Mensagens" + '5': "Respostas" '6': "Respostas" '7': "Menções" '9': "Citações" @@ -271,8 +296,8 @@ pt_BR: mute: "Silenciar" edit: "Editar Preferências" download_archive: "Fazer Download dos Meus Posts" - new_private_message: "Nova mensagem privada" - private_message: "Mensagem Privada" + new_private_message: "Nova Mensagem" + private_message: "Mensagem" private_messages: "Mensagens" activity_stream: "Atividade" preferences: "Preferências" @@ -309,6 +334,9 @@ pt_BR: delete_yourself_not_allowed: "Você não pode excluir a sua conta agora. Contate um administrador para apagar a sua conta para você." unread_message_count: "Mensagens Privadas" admin_delete: "Apagar" + users: "Usuários" + muted_users: "Silenciado" + muted_users_instructions: "Suprimir todas as notificações destes usuários." staff_counters: flags_given: "sinalizadas úteis" flagged_posts: "posts marcados" @@ -347,7 +375,8 @@ pt_BR: uploaded_avatar_empty: "Adicionar foto pessoal" upload_title: "Enviar sua foto" upload_picture: "Enviar imagem" - image_is_not_a_square: "Atenção: nos cortamos sua imagem; não é quadrada." + image_is_not_a_square: "Aviso: nós cortamos sua imagem; largura e altura não eram iguais." + cache_notice: "Seu avatar foi alterado com sucesso mas pode levar algum tempo para aparecer devido ao cache do navegador." change_profile_background: title: "Fundo do perfil" instructions: "Fundos do perfil será centralizado e tera uma largura padrão de 850px." @@ -367,6 +396,7 @@ pt_BR: name: title: "Nome" instructions: "Seu nome completo (opcional)" + instructions_required: "Seu nome completo" too_short: "Seu nome é muito curto" ok: "Seu nome parece bom" username: @@ -401,8 +431,10 @@ pt_BR: email_digests: title: "Quando eu não visitar aqui, envie um resumo via email do que há de novo:" daily: "diariamente" + every_three_days: "a cada três dias" weekly: "semanalmente" - email_direct: "Me envie um email quando alguém me citar, responder ao meu post, ou mencionar meu @nomedeusuário" + every_two_weeks: "a cada duas semanas" + email_direct: "Me envie um email quando alguém me citar, responder minhas mensagens, mencionar meu @usuário, ou me convidar para um tópico" email_private_messages: "Me envie um email quando alguém me enviar mensagem particular" email_always: "Não suprimir notificações de email quando eu estiver ativo no site" other_settings: "Outros" @@ -451,7 +483,7 @@ pt_BR: 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" uploading: "Subindo..." - success: "Arquivo enviado com sucesso, você será notificado por mensagem particular quando o processo estiver completo." + success: "Arquivo enviado com sucesso, você será notificado por mensagem quando o processo estiver completo." error: "Houve um erro ao enviar '{{filename}}': {{message}}" password: title: "Senha" @@ -475,7 +507,7 @@ pt_BR: stream: posted_by: "Postado por" sent_by: "Enviado por" - private_message: "mensagem privada" + private_message: "mensagem" the_topic: "o tópico" loading: "Carregando..." errors: @@ -528,9 +560,9 @@ pt_BR: enable: "Esconder respostas apagadas" disable: "Mostrar Posts Deletados" private_message_info: - title: "Mensagem privada" + title: "Mensagem" invite: "Convidar outros..." - remove_allowed_user: "Tem a certeza que deseja remover {{name}} desta mensagem privada?" + remove_allowed_user: "Tem a certeza que deseja remover {{name}} desta mensagem?" email: 'Email' username: 'Nome de Usuário' last_seen: 'Visto' @@ -542,7 +574,7 @@ pt_BR: title: "Criar nova conta" failed: "Alguma coisa deu errado, talvez este email já esteja registrado, tente usar o Esqueci a Senha." forgot_password: - title: "Esqueci a senha" + title: "Redefinir Senha" action: "Esqueci minha senha" invite: "Coloque seu Nome de Usuário ou endereço de email, e nós lhe enviaremos um email para refazer sua senha." reset: "Recuperar senha" @@ -598,6 +630,7 @@ pt_BR: emoji: "Emoji :smile:" add_warning: "Este é um aviso oficial." posting_not_on_topic: "Qual tópico você gostaria de responder?" + saving_draft_tip: "gravando..." saved_draft_tip: "salvo" saved_local_draft_tip: "salvo localmente" similar_topics: "Seu tópico é parecido com..." @@ -614,8 +647,8 @@ pt_BR: reply_here: "Responda aqui" reply: "Responder" cancel: "Cancelar" - create_topic: "Novo tópico" - create_pm: "Mensagem privada" + create_topic: "Criar Tópico" + create_pm: "Mensagem" title: "Ou pressione Ctrl+Enter" users_placeholder: "Adicionar um usuário" title_placeholder: "Sobre o que é esta discussão em uma pequena frase?" @@ -665,11 +698,11 @@ pt_BR: units: "(núm. de horas)" examples: 'Insira o número de horas (24).' notifications: - title: "notificações de menção de @nome, respostas às suas mensagens e tópicos, mensagens privadas, etc" + title: "notificações de menção de @name, respostas às suas postagens, tópicos, mensagens, etc" none: "Não foi possível carregar notificações no momento." more: "ver notificações antigas" total_flagged: "total de mensagens sinalizadas" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -677,6 +710,7 @@ pt_BR: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} accepted your invitation

    " moved_post: "

    {{username}} moved {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -703,7 +737,7 @@ pt_BR: user: "Procurar respostas de @{{username}}" category: "Procurar a categoria \"{{category}}\"" topic: "Procurar nesse tópico" - private_messages: "Procurar mensagens privadas" + private_messages: "Procurar mensagens" site_map: "ir para outra lista de tópicos ou categorias" go_back: 'voltar' not_logged_in_user: 'página do usuário com resumo de atividades correntes e preferencias' @@ -723,6 +757,7 @@ pt_BR: close_topics: "Fechar Tópicos" archive_topics: "Arquivar Tópicos" notification_level: "Modificar Nível de Notificação" + choose_new_category: "Escolha a nova categoria para os tópicos:" selected: one: "Você selecionou 1 tópico." other: "Você selecionou {{count}} tópicos." @@ -736,6 +771,7 @@ pt_BR: bookmarks: "Você ainda não tem tópicos nos favoritos." category: "Não há tópicos na categoria {{category}}." top: "Não há tópicos em alta." + search: "Não foram encontrados resultados." educate: new: '

    Seus novos tópicos aparecerão aqui.

    Por padrão, tópicos são considerados novos e irão mostrar um indicador novo se eles foram criados nos últimos 2 dias.

    Você pode mudar isto nas suas preferências.

    ' unread: '

    Seus tópicos não lidos aparecerão aqui.

    Por padrão, tópicos são considerados não lidos e irão mostrar contadores 1 se você:

    • Criou o tópico
    • Respondeu para o tópico
    • Leu o tópico por mais de 4 minutos

    Ou se você explicitamente marcou o tópico para Acompanhar ou Assistir via o controle de notificação na parte de baixo de cada tópico.

    Você pode mudar isto nas suas preferências.

    ' @@ -749,11 +785,12 @@ pt_BR: category: "Não há mais tópicos na categoria {{category}}." top: "Não há mais tópicos em alta." bookmarks: "Não há mais tópicos nos favoritos." + search: "Não existem mais resultados." topic: filter_to: "{{post_count}} mensagens no tópico" create: 'Novo tópico' create_long: 'Criar um novo tópico' - private_message: 'Começar uma nova conversa privada' + private_message: 'Iniciar uma mensagem' list: 'Tópicos' new: 'novo tópico' unread: 'não lido' @@ -831,7 +868,7 @@ pt_BR: '0': 'Você está ignorando todas as notificações deste tópico.' watching_pm: title: "Acompanhando" - description: "Você será notificado de cada post novo nesta mensagem privada. Um contador de posts novos e não lidos também aparecerá próximo ao tópico." + description: "Você será notificado de cada nova postagem nesta mensagem. Um contador de posts novos e não lidos também aparecerá próximo ao tópico." watching: title: "Observar" description: "Você será notificado de cada post novo neste tópico. Um contador de posts novos e não lidos também aparecerá próximo ao tópico." @@ -858,18 +895,21 @@ pt_BR: delete: "Apagar tópico" open: "Abrir tópico" close: "Fechar tópico" - auto_close: "Fechar automaticamente" - make_banner: "Banner do Tópico" - remove_banner: "Remover Banner do Tópico" - pin: "Destacar tópico" - unpin: "Remover destaque do tópico" - pin_globally: "Fixar Tópico Globalmente" + multi_select: "Selecionar Mensagens..." + auto_close: "Fechar automaticamente..." + pin: "Fixar Tópico..." + unpin: "Desafixar Tópico..." unarchive: "Desarquivar tópico" archive: "Arquivar tópico" invisible: "Tornar Invisível" visible: "Tornar Visível" reset_read: "Repor data de leitura" - multi_select: "Selecionar mensagens" + feature: + pin: "Fixar Tópico" + unpin: "Desafixar Tópico" + pin_globally: "Fixar Tópico Globalmente" + make_banner: "Banner Tópico" + remove_banner: "Remover Banner Tópico" reply: title: 'Responder' help: 'comece a compor uma resposta a este tópico' @@ -883,6 +923,30 @@ pt_BR: title: 'Sinalizar' help: 'sinaliza privativamente este tópico para chamar atenção ou notificar privativamente sobre isso' success_message: 'Você sinalizou com sucesso este tópico.' + feature_topic: + title: "Destacar este tópico" + pin: "Fazer este tópico aparecer no inicio da {{categoryLink}} categoria." + 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." + pin_note: "Usuários podem desafixar o tópico individualmente para si." + 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 este tópico aparecer no inicio de todas as listas de tópicos, até um membro da equipe desafixar ele. " + 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." + global_pin_note: "Usuários podem desafixar o tópico individualmente para si." + already_pinned_globally: + zero: "Não existem tópicos fixados globalmente." + one: "Tópicos atualmente fixados globalmente: 1." + other: "Tópicos atualmente fixados globalmente: {{count}}." + make_banner: "Tornar este tópico em um banner que apareça no inicio de todas as páginas." + remove_banner: "Remover o banner que aparece no inicio de todas as páginas." + banner_note: "Usuários podem dispensar o banner fechando-o. Apenas um tópico pode ser colocado como banner a cada momento." + already_banner: + zero: "Não existe tópico banner." + one: "Existe atualmente um tópico banner." inviting: "Convidando..." automatically_add_to_groups_optional: "Esse convite também inclui o acesso a esses grupos: (Opacional, admins apenas)" automatically_add_to_groups_required: "Esse convite também inclui o acesso a esses grupos: (Necessário, admins apenas)" @@ -896,12 +960,17 @@ pt_BR: group_name: "nome do grupo" invite_reply: title: 'Convite' - action: 'Email de convite' - help: 'envie convites aos seus amigos para que eles possam responder a este tópico com um único clique.' - to_topic: "Nós vamos mandar um email curto permitindo seu amigo a entrar e responder a esse tópico clicando em um link, sem necessidade de entrar." + username_placeholder: "nome de usuário" + action: 'Enviar Convites' + help: 'Convidar outros para este tópico por email ou notificação' to_forum: "Nós vamos mandar um email curto permitindo seu amigo a entrar e responder a esse tópico clicando em um link, sem necessidade de entrar." + sso_enabled: "Entrar o nome de usuário da pessoa que você gostaria de convidar para este tópico." + to_topic_blank: "Entrar o nome de usuário ou endereço de email da pessoa que você gostaria de convidar para este tópico." + to_topic_email: "Você digitou um endereço de email. Nós enviaremos um convite por email que permite seu amigo responder imediatamente a este tópico." + to_topic_username: "Você entrou um nome de usuário. Nós enviaremos uma notificação para esse usuário com um link convidando-o a esse tópico." email_placeholder: 'nome@exemplo.com' - success: "Enviamos um convite para {{email}}. Você saberá quando eles utilizarem o convite. Você pode ir até a seção de Convites na sua página de usuário para saber quem você já convidou." + success_email: "Enviamos um convite para {{emailOrUsername}}. Nós notificaremos você quando este convite for resgatado. Verifique a aba de convites na página de seu usuário para acompanhar seus convites." + success_username: "Nós convidamos o usuário para participar neste tópico." error: "Desculpe, nós não pudemos convidar esta pessoa. Talvez já seja usuário? (convites têm taxa limitada)" login_reply: 'Logar para Responder' filters: @@ -949,10 +1018,9 @@ pt_BR: reply: "Em resposta a {{link}} por {{replyAvatar}} {{username}}" reply_topic: "Responder a {{link}}" quote_reply: "citar resposta" - edit: "Editando {{link}} por {{replyAvatar}} {{username}}" + edit: "Em resposta a {{link}} por {{replyAvatar}} {{username}}" edit_reason: "Motivo:" post_number: "resposta {{number}}" - in_reply_to: "responder para" last_edited_on: "resposta editada pela última vez em" reply_as_new_topic: "Responder como um Tópico linkado" continue_discussion: "Continuando a discussão do {{postLink}}:" @@ -1044,8 +1112,8 @@ pt_BR: inappropriate: "{{icons}} marcado como inapropriado" notify_moderators: "{{icons}} notificaram os moderadores" notify_moderators_with_url: "{{icons}} notificaram os moderadores" - notify_user: "{{icons}} enviou uma mensagem privada" - notify_user_with_url: "{{icons}} enviou uma mensagem privada" + notify_user: "{{icons}} enviou uma mensagem particular" + notify_user_with_url: "{{icons}} enviou uma mensagem particular" bookmark: "{{icons}} favoritaram isto" like: "{{icons}} curtiram isto" vote: "{{icons}} votaram nisto" @@ -1054,7 +1122,7 @@ pt_BR: spam: "Você sinalizou isto como spam" inappropriate: "Você sinalizou isto como inapropriado" notify_moderators: "Você sinalizou isto para a moderação" - notify_user: "Você enviou uma mensagem privada para este usuário" + notify_user: "Você enviou uma mensagem particular para este usuário" bookmark: "Você favoritou esta resposta" like: "Você curtiu" vote: "Você votou nesta resposta" @@ -1072,8 +1140,8 @@ pt_BR: one: "Você e mais 1 pessoa sinalizaram isto para moderação" other: "Você e mais {{count}} pessoas sinalizaram isto para moderação" notify_user: - one: "Você e mais 1 pessoa enviaram mensagens privadas para este usuário" - other: "Você e mais {{count}} pessoas enviaram mensagens privadas para este usuário" + one: "Você e 1 outro usuário enviaram mensagens particulares para este usuário" + other: "Você e mais {{count}} usuários enviaram mensagens particulares para este usuário" bookmark: one: "Você e mais 1 pessoa favoritaram esta resposta" other: "Você e mais {{count}} favoritaram esta resposta" @@ -1097,8 +1165,8 @@ pt_BR: one: "1 pessoa sinalizou isto para moderação" other: "{{count}} pessoas sinalizaram isto para moderação" notify_user: - one: "1 pessoa enviou uma mensagem privada para este usuário" - other: "{{count}} enviaram mensagem privada para este usuário" + one: "1 usuário enviou mensagem particular para este usuário" + other: "{{count}} enviaram mensagem particular para este usuário" bookmark: one: "1 pessoa favoritou esta resposta" other: "{{count}} pessoas favoritaram esta resposta" @@ -1204,7 +1272,7 @@ pt_BR: private_reminder: 'sinalizações são privadas, apenas ficam visíveis a moderação' action: 'Sinalizar resposta' take_action: "Tomar Atitude" - notify_action: 'Mensagem privada' + notify_action: 'Mensagem' delete_spammer: "Apagar Spammer" delete_confirm: "Você está prestes a excluir %{posts} mensagens e %{topics} tópicos deste usuário, removendo a conta, bloqueando cadastro a partir do endereço IP %{ip_address} e adicionando o e-mail dele %{email} em uma lista de bloqueio permanente. Você tem certeza que este usuário é realmente um spammer?" yes_delete_spammer: "Sim, Apagar Spammer" @@ -1226,7 +1294,7 @@ pt_BR: flagging_topic: title: "Obrigado por ajudar a manter a civilidade da nossa comunidade!" action: "Sinalizar Tópico" - notify_action: "Mensagem privada" + notify_action: "Mensagem" topic_map: title: "Resumo do Tópico" links_shown: "exibir todos os {{totalLinks}} links..." @@ -1256,6 +1324,12 @@ pt_BR: posts: "Mensagens" posts_lowercase: "posts" posts_long: "há {{number}} mensagens neste tópico" + posts_likes_MF: | + Este tópico tem {count, plural, one {1 post} other {# posts}} {ratio, select, + baixo {with a high post to like ratio} + médio {with a very high post to like ratio} + alto {with an extremely high post to like ratio} + outro {}} original_post: "Resposta original" views: "Visualizações" views_lowercase: "visualizações" @@ -1286,6 +1360,9 @@ pt_BR: read: title: "Lido" help: "tópicos que você leu" + search: + title: "Pesquisar" + help: "procurar todos tópicos" categories: title: "Categorias" title_in: "Categoria - {{categoryName}}" @@ -1324,15 +1401,17 @@ pt_BR: top: title: "Melhores" help: "os tópicos mais ativos no último ano, mês, semana ou dia" + all: + title: "Tempo Todo" yearly: - title: "Melhores do Ano" + title: "Anualmente" monthly: - title: "Melhores do Mes" + title: "Mensalmente" weekly: - title: "Melhores da Semana" + title: "Semanalmente" daily: - title: "Melhores do Dia" - all: "Todo Tempo" + title: "Diariamente" + all_time: "Tempo Todo" this_year: "Neste ano" this_month: "Neste mes" this_week: "Nesta semana" @@ -1369,14 +1448,15 @@ pt_BR: admins: 'Admins:' blocked: 'Bloqueado:' suspended: 'Suspenso:' - private_messages_short: "MPs" - private_messages_title: "Mensagens Particulares" + private_messages_short: "Msgs" + private_messages_title: "Mensagens" space_free: "{{size}} livre" uploads: "uploads" backups: "backups" traffic_short: "Tráfego" traffic: "Solicitações do aplicativo pela web" page_views: "Solicitações de API" + page_views_short: "Solicitações de API" show_traffic_report: "Mostrar Relatório de Tráfego Detalhado" reports: today: "Hoje" @@ -1475,6 +1555,8 @@ pt_BR: name: "Nome" add: "Adicionar" add_members: "Adicionar membros" + custom: "Definidos" + automatic: "Automático" automatic_membership_email_domains: "Usuários que se registram com um domínio de email que confere precisamente com algum desta lista serão automaticamente adicionados a este grupo:" automatic_membership_retroactive: "Aplicar a mesma regra de domínio de email para adicionar usuários registrados" api: @@ -1508,18 +1590,19 @@ pt_BR: read_only: enable: title: "Habilitar o modo \"somente leitura\"" - text: "Habilitar modo \"somente leitura\"" + label: "Habilita modo \"somente leitura\"" confirm: "Você está certo em querer habilitar o modo \"somente leitura\"?" disable: title: "Desabilitar o modo \"somente leitura\"" - text: "Desabilita modo \"somente leitura\"" + label: "Desabilita modo \"somente leitura\"" logs: none: "Nenhum registro ainda..." columns: filename: "Nome do arquivo" size: "Tamanho" upload: - text: "Subir" + label: "Enviar" + title: "Carregar um backup para esta instância" uploading: "Subindo..." success: "'{{filename}}' foi carregado com sucesso." error: "Houve um erro ao carregar '{{filename}}': {{message}}" @@ -1527,28 +1610,27 @@ pt_BR: is_running: "Uma operação está sendo executada..." failed: "A {{operation}} falhou. Por favor, cheque os registros." cancel: - text: "Cancelar" + label: "Cancelar" title: "Cancelar a operação atual" confirm: "Tem certeza de que deseja cancelar a operação atual?" backup: - text: "Backup" + label: "Backup" title: "Cria um backup" confirm: "Você quer iniciar um novo backup?" without_uploads: "Sim (não inclua arquivos)" download: - text: "Download" + label: "Download" title: "Download do backup" destroy: - text: "Excluir" title: "Remove o backup" confirm: "Tem certeza de que quer destruir este backup?" restore: is_disabled: "Restaurar está desativado nas configurações do site." - text: "Restaurar" + label: "Restaurar" title: "Restaurar o backup" confirm: "Tem certeza de que quer restaurar este backup?" rollback: - text: "Reverter" + label: "Reverter" title: "Reverter o banco de dados para seu estado anterior" confirm: "Tem certeza de que quer reverter o banco de dados para o estado anterior?" export_csv: @@ -1726,6 +1808,7 @@ pt_BR: delete_topic: "apagar tópico" delete_post: "apagar mensagem" impersonate: "personificar" + anonymize_user: "tornar usuário anônimo" screened_emails: title: "Emails Filtrados" description: "Quando alguém tenta cria uma nova conta, os seguintes endereços de email serão verificados e o registro será bloqueado, ou outra ação será executada." @@ -1859,8 +1942,13 @@ pt_BR: approve_success: "Usuário aprovado e email enviado com instruções de ativação." approve_bulk_success: "Sucesso! Todos os usuários selecionados foram aprovados e notificados." time_read: "Tempo de leitura" + anonymize: "Tornar usuário anônimo" + anonymize_confirm: "Você TEM CERTEZA que gostaria de tornar esta conta anônima? Esta mudança irá alterar o nome de usuário e email, e resetar todas informações do perfil." + anonymize_yes: "Sim, tornar esta conta anônima" + anonymize_failed: "Ocorreu um problema ao tornar a conta anônima." delete: "Apagar Usuário" delete_forbidden_because_staff: "Administradores e moderadores não podem ser excluidos." + delete_posts_forbidden_because_staff: "Não posso deletar todas as mensagens de administradores e moderadores." delete_forbidden: one: "Usuários não podem ser excluídos se eles têm mensagens. Excluir todas as mensagens antes de tentar excluir um usuário. (Mensagens mais antigas que %{count} dia não podem ser excluídas.)" other: "Usuários não podem ser excluídos se eles têm mensagens. Remova todas as mensagens antes de tentar excluir um usuário. (Mensagens mais antigas que %{count} dias não podem ser excluídas.)" @@ -2003,11 +2091,13 @@ pt_BR: modal_title: Agrupamentos de emblemas granted_by: Concedido Por granted_at: Concedido Em + reason_help: (Um link para um post ou tópico) save: Salvar delete: Remover delete_confirm: Tem certeza de que deseja remover este emblema? revoke: Revogar reason: Motivo + expand: Expandir … revoke_confirm: Tem certeza de que deseja revogar este emblema? edit_badges: Editar Emblemas grant_badge: Conceder Emblema @@ -2094,6 +2184,7 @@ pt_BR: dismiss_topics: 'x, t Descartar Tópicos' actions: title: 'Ações' + bookmark_topic: 'f Adicionar tópico aos favoritos' pin_unpin_topic: 'shift+p Fixar/Desfixar tópico' share_topic: 'shift+s Compartilhar tópico' share_post: 's Compartilhar mensagem' @@ -2159,6 +2250,7 @@ pt_BR: name: Autobiógrafo description: Preencher informações do perfil anniversary: + name: Aniversário description: Membro ativo por um ano, postou ao menos uma vez nice_post: name: Post Legal diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 5684e77538..4a3935430f 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -108,6 +108,7 @@ ru: email: 'поделиться ссылкой по почте' topic_admin_menu: "действия администратора над темой" emails_are_disabled: "Все исходящие письма были глобально отключены администратором. Уведомления любого вида не будут отправляться на почту." + s3_deprecation_warning: "ВНИМАНИЕ! Поддержка Amazon S3 для хранения изображений и вложений скоро будет отключена. Пожалуйста, следуйте инструкциям для миграции на локальное хранилище." edit: 'отредактировать название и раздел темы' not_implemented: "Извините, эта функция еще не реализована!" no_value: "Нет" @@ -165,6 +166,7 @@ ru: user_count: "Новые пользователи" active_user_count: "Активные пользователи" contact: "Контакты" + contact_info: "В случае возникновения критической ошибки или срочного дела, касающегося этого сайта, свяжитесь с нами по адресу %{contact_info}." bookmarked: title: "Избранное" clear_bookmarks: "Очистить закладки" @@ -177,6 +179,7 @@ ru: not_bookmarked: "вы прочитали это сообщение; нажмите, чтобы добавить его в закладки" last_read: "это последнее прочитанное вами сообщение; нажмите, чтобы добавить его в закладки" remove: "Удалить закладку" + confirm_clear: "Вы уверены, что хотите удалить все эти темы из Избранного?" topic_count_latest: one: "1 новая или обновленная тема." few: "{{count}} новые или обновленные темы." @@ -203,6 +206,8 @@ ru: undo: "Отменить" revert: "Вернуть" failed: "Проблема" + switch_to_anon: "Анонимный режим" + switch_from_anon: "Выйти из анонимного режима" banner: close: "Больше не показывать это объявление." choose_topic: @@ -225,17 +230,26 @@ ru: sent_by_user: "Отправлено пользователем {{user}}" sent_by_you: "Отправлено Вами" directory: - likes_given: "Выразил симпатий" - likes_received: "Получил симпатий" + filter_name: "фильтр по имени пользователя" + title: "Пользователи" + likes_given: "Отправлено" + likes_received: "Получено" topics_entered: "Посещено тем" + topics_entered_long: "Посещено тем" time_read: "Время чтения" topic_count: "Тем" + topic_count_long: "Тем создано" post_count: "Ответов" - no_results: "Нет результатов за этот временной промежуток." + post_count_long: "Ответов написано" + no_results: "Ничего не найдено." + days_visited: "Посещений" + days_visited_long: "Дней посещения" + posts_read: "Прочитано сообщений" + posts_read_long: "Прочитано сообщений" total_rows: - one: "Найден 1 пользователь" - few: "Найдено %{count} пользователя" - other: "Найдено %{count} пользователей" + one: "1 пользователь" + few: "%{count} пользователя" + other: "%{count} пользователей" groups: visible: "Группа видима всем пользователям" title: @@ -306,8 +320,8 @@ ru: mute: "Отключить" edit: "Настройки" download_archive: "Скачать архив сообщений" - new_private_message: "Новое Личное Сообщение" - private_message: "Личное сообщение" + new_private_message: "Новое сообщение" + private_message: "Сообщение" private_messages: "Личные сообщения" activity_stream: "Активность" preferences: "Настройки" @@ -344,6 +358,9 @@ ru: delete_yourself_not_allowed: "Вы не можете сейчас удалить свою учётную запись. Попросите администратора удалить вашу учётную запись." unread_message_count: "Сообщения" admin_delete: "Удалить" + users: "Пользователи" + muted_users: "Выключено" + muted_users_instructions: "Не отображать уведомления от этих пользователей." staff_counters: flags_given: "полезные жалобы" flagged_posts: "сообщения с жалобами" @@ -382,7 +399,8 @@ ru: uploaded_avatar_empty: "Добавить собственный аватар" upload_title: "Загрузка собственного аватара" upload_picture: "Загрузить изображение" - image_is_not_a_square: "Внимание: мы обрезали ваше изображение; оно не квадратное" + image_is_not_a_square: "Внимание: мы обрезали ваше изображение; ширина и высота не равны друг другу." + cache_notice: "Вы успешно изменили свой аватар, но для его отображения может потребоваться некоторое время из-за кеширования в браузере." change_profile_background: title: "Фон профиля" instructions: "Картинки фона профилей будут отцентрированы и по-умолчанию имеют ширину 850 пикселей." @@ -398,9 +416,11 @@ ru: frequency: zero: "Получать уведомления о новых непрочитанных сообщениях незамедлительно." one: "Мы отправим вам письмо только если не видели вас онлайн в последние несколько минут." + other: "Мы отправим вам письмо только если вы не были в онлайне последние {{count}} мин." name: title: "Имя" instructions: "Ваше полное имя (опционально)" + instructions_required: "Ваше полное имя" too_short: "Ваше имя слишком короткое" ok: "Допустимое имя" username: @@ -438,8 +458,8 @@ ru: every_three_days: "каждые 3 дня" weekly: "еженедельно" every_two_weeks: "каждые 2 недели" - email_direct: "Присылать почтовое уведомление, когда кто-то цитирует меня, отвечает на мой пост или упоминает мой @псевдоним" - email_private_messages: "Присылать почтовое уведомление, когда кто-то оставляет мне личное сообщение" + email_direct: "Присылать почтовое уведомление, когда кто-то цитирует меня, отвечает на мой пост, упоминает мой @псевдоним или приглашает меня в тему" + email_private_messages: "Присылать почтовое уведомление, когда кто-то оставляет мне сообщение" email_always: "Отправлять оповещения по e-mail даже когда я нахожусь на сайте." other_settings: "Прочее" categories_settings: "Разделы" @@ -491,7 +511,7 @@ ru: none: "Вы еще никого не приглашали сюда. Вы можете отправить индивидуальные приглашения или пригласить группу людей сразу загрузив групповой файл приглашений." text: "Групповое приглашение из файла" uploading: "Загрузка..." - success: "Файл успешно загружен, вы получите уведомление через личные сообщения, когда процесс будет завершен." + success: "Файл успешно загружен, вы получите сообщение, когда процесс будет завершен." error: "В процессе загрузки файла '{{filename}}' произошла ошибка: {{message}}" password: title: "Пароль" @@ -507,7 +527,7 @@ ru: registration_ip_address: title: "IP адрес регистрации" avatar: - title: "Фон профиля" + title: "Аватар" title: title: "Заголовок" filters: @@ -515,7 +535,7 @@ ru: stream: posted_by: "Опубликовано" sent_by: "Отправлено" - private_message: "личное сообщение" + private_message: "сообщение" the_topic: "тема" loading: "Загрузка..." errors: @@ -568,9 +588,9 @@ ru: enable: "Скрыть удаленные сообщения" disable: "Показать удаленные сообщения" private_message_info: - title: "Личное сообщение" + title: "Сообщение" invite: "Пригласить других..." - remove_allowed_user: "Вы действительно хотите удалить {{name}} из данной личной беседы?" + remove_allowed_user: "Вы действительно хотите удалить {{name}} из данного сообщения?" email: 'Email' username: 'Псевдоним' last_seen: 'Был' @@ -582,7 +602,7 @@ ru: title: "Зарегистрироваться" failed: "Произошла ошибка. Возможно, этот Email уже используется. Попробуйте восстановить пароль" forgot_password: - title: "Забыли пароль?" + title: "Сброс пароля" action: "Я забыл свой пароль" invite: "Введите ваш псевдоним или адрес электронной почты, и мы отправим вам ссылку для сброса пароля." reset: "Сброс пароля" @@ -655,8 +675,8 @@ ru: reply_here: "Ответить в текущей теме" reply: "Ответить" cancel: "Отменить" - create_topic: "Новая тема" - create_pm: "Личное сообщение" + create_topic: "Создать тему" + create_pm: "Сообщение" title: "Или нажмите Ctrl+Enter" users_placeholder: "Добавить пользователя" title_placeholder: "Название: суть обсуждения коротким предложением" @@ -706,11 +726,11 @@ ru: units: "(кол-во часов)" examples: 'Введите количество часов (24).' notifications: - title: "уведомления: новые личные сообщения, ответы в темах, упоминания по @псевдониму и т.д." + title: "уведомления об упоминании @псевдонима, ответах на ваши посты и темы, сообщения и т.д." none: "Уведомления не могут быть загружены." more: "посмотреть более ранние уведомления" total_flagged: "всего сообщений с жалобами" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -718,6 +738,7 @@ ru: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} принял(а) ваше приглашение

    " moved_post: "

    {{username}} переместил(а) {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -744,7 +765,7 @@ ru: user: "Искать сообщения от @{{username}}" category: "Искать в разделе \"{{category}}\"" topic: "Искать в этой теме" - private_messages: "Поиск в личных сообщениях" + private_messages: "Поиск в сообщениях" site_map: "перейти к другому списку тем или другому разделу" go_back: 'вернуться' not_logged_in_user: 'страница пользователя с историей его последней активности и настроек' @@ -779,6 +800,7 @@ ru: bookmarks: "У вас нет избранных тем." category: "В разделе {{category}} отсутствуют темы." top: "Нет обсуждаемых тем." + search: "Ничего не найдено." educate: new: '

    Это список новых тем.

    По-умолчанию, тема считается новой и отображается с индикатором новое, если она была создана в течении последних 2-х дней.

    Это можно изменить в своих настройках.

    ' unread: '

    Это ваш список непрочитанных тем.

    По-умолчанию, темы считаются непрочитанными и напротив них отображается счетчик непрочитанных сообщений 1, если вы:

    • создали тему;
    • ответили в теме;
    • читали тему более 4-х минут.

    Или же если вы намеренно выбрали Следить или Наблюдать в настройках уведомлений в самом низу темы.

    Эту функциональность можно дополнительно отрегулировать в ваших настройках.

    ' @@ -792,11 +814,12 @@ ru: category: "В разделе {{category}} больше нет тем." top: "Больше нет обсуждаемых тем." bookmarks: "Больше нет избранных тем." + search: "Больше ничего не найдено." topic: filter_to: "{{post_count}} сообщений в теме" create: 'Создать Тему' create_long: 'Создать новую тему' - private_message: 'Написать личное сообщение' + private_message: 'Написать сообщение' list: 'Темы' new: 'новая тема' unread: 'непрочитанно' @@ -880,13 +903,13 @@ ru: '0': 'Не получать уведомлений по этой теме.' watching_pm: title: "Наблюдать" - description: "Уведомлять о каждом новом сообщении в этой личной беседе и показывать счетчик непрочитанных и новых сообщений напротив названия темы." + description: "Уведомлять о каждом новом сообщении в этой беседе и показывать счетчик непрочитанных и новых сообщений напротив названия темы." watching: title: "Наблюдать" description: "Уведомлять о каждом новом сообщении в этой теме и показывать счетчик непрочитанных и новых сообщений напротив названия темы." tracking_pm: title: "Следить" - description: "Количество непрочитанных и новых сообщений появится рядом с темой личной переписки. Вам придёт уведомление, только если кто-нибудь упомянет ваш @псевдоним или ответит на ваше сообщение." + description: "Количество непрочитанных и новых сообщений появится рядом с беседой. Вам придет уведомление, если кто-нибудь упомянет ваше @имя или ответит на ваше сообщение." tracking: title: "Следить" description: "Количество непрочитанных сообщений появится рядом с названием темы. Вам придёт уведомление, только если кто-нибудь упомянет ваш @псевдоним или ответит на ваше сообщение." @@ -895,10 +918,10 @@ ru: description: "Вам придет уведомление, только когда вас упоминают по @псевдониму или ответят на ваше сообщенияе" regular_pm: title: "Уведомлять" - description: "Вам придет уведомление, только когда вас упомянут по @псевдониму или ответят на ваше сообщение в этой личной переписке." + description: "Вам придет уведомление, если кто-нибудь упомянет ваше @имя или ответит на ваше сообщение приватно." muted_pm: title: "Без уведомлений" - description: "Никогда не получать уведомлений, связанных с этим личным сообщением." + description: "Вы не будете получать уведомлений, связанных с этой беседой." muted: title: "Без уведомлений" description: "Никогда не получать уведомлений, связанных с этой темой, и не показывать ее во вкладке «Непрочитанные»." @@ -907,24 +930,27 @@ ru: delete: "Удалить тему" open: "Открыть тему" close: "Закрыть тему" - auto_close: "Автоматическое закрытие" - make_banner: "Сделать объявлением" - remove_banner: "Больше не показывать объявлением" - pin: "Прилепить тему" - unpin: "Отлепить тему" - pin_globally: "Прилепить тему глобально" + multi_select: "Выбрать сообщения..." + auto_close: "Автоматическое закрытие..." + pin: "Закрепить тему..." + unpin: "Открепить тему..." unarchive: "Разархивировать тему" archive: "Архивировать тему" invisible: "Исключить из списков" visible: "Включить в списки" reset_read: "Сбросить счетчики" - multi_select: "Выбрать сообщения" + feature: + pin: "Закрепить тему" + unpin: "Открепить тему" + pin_globally: "Закрепить тему глобально" + make_banner: "Создать объявление" + remove_banner: "Удалить объявление" reply: title: 'Ответить' help: 'ответить в теме' clear_pin: - title: "Отлепить" - help: "Отлепить тему, чтобы она более не показывалась в самом начале списка тем" + title: "Открепить" + help: "Открепить тему, чтобы она более не показывалась в самом начале списка тем" share: title: 'Поделиться' help: 'Поделиться ссылкой на тему' @@ -933,29 +959,54 @@ ru: help: 'пожаловаться на сообщение' success_message: 'Вы пожаловались на тему.' feature_topic: + title: "Выделить эту тему" + pin: "Закрепить эту тему вверху раздела {{categoryLink}}." + confirm_pin: "У вас уже есть {{count}} закрепленных тем. Слишком большое количество закрепленных тем может стать препятствием для новых и анонимных пользователей. Вы уверены, что хотите закрепить еще одну тему в этом разделе?" + unpin: "Убрать эту тему из верха раздела {{categoryLink}}." + pin_note: "Пользователи могут открепить тему для себя." + already_pinned: + zero: "В разделе {{categoryLink}} нет закрепленных тем." + one: "Закрепленные темы в разделе {{categoryLink}}: 1." + other: "Закрепленные темы в разделе {{categoryLink}}: {{count}}." + pin_globally: "Закрепить эту тему вверху всех списков тем, пока кто-нибудь из персонала не открепит ее." + confirm_pin_globally: "У вас уже есть {{count}} глобально закрепленных тем. Слишком большое количество закрепленных тем может стать препятствием для новых и анонимных пользователей. Вы уверены, что хотите глобально закрепить еще одну тему?" + unpin_globally: "Убарть эту тему из верха всех списков тем." + global_pin_note: "Пользователи могут открепить тему для себя." + already_pinned_globally: + zero: "Нет глобально закрепленных тем." + one: "Глобально закрепленные темы: 1." + other: "Глобально закрепленные темы: {{count}}." + make_banner: "Превратить эту тему в объявление, которое будет отображаться вверху всех страниц." + remove_banner: "Убрать объявление, которое отображается вверху всех страниц." + banner_note: "Пользователи могут отклонить объявление, закрыв его. Только одну тему можно сделать текущим объявлением." already_banner: - zero: "Нет активных тем-объявлений." - one: "Есть активная тема-объявление." + zero: "Нет текущих объявлений." + one: "Есть текущее объявление." inviting: "Высылаю приглашение..." automatically_add_to_groups_optional: "Это приглашение также включает в себя доступ к следующим группам: (опционально, только для администратора)" automatically_add_to_groups_required: "Это приглашение также включает в себя доступ к следующим группам: (Обязательно, только для администратора)" invite_private: - title: 'Отправить личное сообщение' + title: 'Пригласить в беседу' email_or_username: "Адрес электронной почты или псевдоним того, кого вы хотите пригласить" email_or_username_placeholder: "e-mail или псевдоним" action: "Пригласить" - success: "Личное сообщение было отправлено." + success: "Мы пригласили этого пользователя принять участие в беседе." error: "К сожалению, в процессе приглашения пользователя произошла ошибка." group_name: "название группы" invite_reply: title: 'Пригласить' - action: 'Выслать приглашение по электронной почте' - help: 'отправьте приглашения своим друзьям, чтобы они тоже смогли поучаствовать в обсуждении темы' - to_topic: "Будет отправлено короткое письмо, которое позволит вашему другу присоединиться и ответить в этой теме просто кликнув по ссылке без необходимости входа на сайт." + username_placeholder: "имя пользователя" + action: 'Отправить приглашение' + help: 'пригласить других в эту тему с помощью email или уведомлений' to_forum: "Будет отправлено короткое письмо, которое позволит вашему другу присоединиться просто кликнув по ссылке без необходимости входа на сайт." + sso_enabled: "Введите псевдоним пользователя, которого вы хотите пригласить в эту тему." + to_topic_blank: "Введите псевдоним или email пользователя, которого вы хотите пригласить в эту тему." + to_topic_email: "Вы указали адрес электронной почты. Мы отправим приглашение, которое позволит вашему другу немедленно ответить в этой теме." + to_topic_username: "Вы указали псевдоним пользователя. Мы отправим ему уведомление со ссылкой, приглашающей его в эту тему." email_placeholder: 'name@example.com' - success: "Приглашение отправлено по адресу {{email}}. Мы уведомим Вас, когда этим приглашением воспользуются. Проверьте вкладку Приглашения на вашей странице пользователя, чтобы узнать состояние всех ваших приглашений." - error: "К сожалению, мы не смогли пригласить этого человека. Возможно, он уже пользователь форума? (Приглашения ограничены рейтингом)" + success_email: "Приглашение отправлено по адресу {{emailOrUsername}}. Мы уведомим Вас, когда этим приглашением воспользуются. Проверьте вкладку Приглашения на вашей странице пользователя, чтобы узнать состояние всех ваших приглашений." + success_username: "Мы пригласили этого пользователя принять участие в теме." + error: "К сожалению, мы не смогли пригласить этого человека. Возможно, он уже был приглашен? (Приглашения ограничены рейтингом)" login_reply: 'Войти и ответить' filters: n_posts: @@ -1004,13 +1055,12 @@ ru: few: Вы выбрали {{count}} сообщения. other: Вы выбрали {{count}} сообщений. post: - reply: "Ответить на {{link}} от {{replyAvatar}} {{username}}" + reply: "Ответить на {{link}} {{replyAvatar}} {{username}}" reply_topic: "Ответить на {{link}}" quote_reply: "ответить цитированием" - edit: "Изменить {{link}} от {{replyAvatar}} {{username}}" + edit: "Изменить {{link}} {{replyAvatar}} {{username}}" edit_reason: "Причина:" post_number: "сообщение {{number}}" - in_reply_to: "Ответить" last_edited_on: "последний раз сообщение редактировалось" reply_as_new_topic: "Ответить в новой связанной теме" continue_discussion: "Продолжить обсуждение из {{postLink}}:" @@ -1107,8 +1157,8 @@ ru: inappropriate: "{{icons}} отметили как неуместное" notify_moderators: "{{icons}} пожаловались модераторам" notify_moderators_with_url: "{{icons}} пожаловались модераторам" - notify_user: "{{icons}} отправил(и) личное сообщение" - notify_user_with_url: "{{icons}} отправил(и) личное сообщение" + notify_user: "{{icons}} отправил(и) сообщение" + notify_user_with_url: "{{icons}} отправил(и) сообщение" bookmark: "{{icons}} добавили в закладки" like: "{{icons}} выразили симпатию" vote: "{{icons}} проголосовали за" @@ -1117,7 +1167,7 @@ ru: spam: "Помечена вами как спам" inappropriate: "Помечена вами как неуместное" notify_moderators: "Вы отправили жалобу модератору" - notify_user: "Вы отправили автору личное сообщение" + notify_user: "Вы отправили сообщение этому пользователю" bookmark: "Вы добавили сообщение в закладки" like: "Вам нравится" vote: "Вы проголосовали за данное сообщение" @@ -1139,9 +1189,9 @@ ru: few: "Вы и еще {{count}} человека отметили это как требующее модерации" other: "Вы и еще {{count}} человек отметили это как требующее модерации" notify_user: - one: "Вы и еще 1 человек отправили личное сообщение этому пользователю" - few: "Вы и еще {{count}} человека отправили личное сообщение этому пользователю" - other: "Вы и еще {{count}} человек отправили личное сообщение этому пользователю" + one: "Вы и еще 1 человек отправили сообщение этому пользователю" + few: "Вы и еще {{count}} человека отправили сообщение этому пользователю" + other: "Вы и еще {{count}} человек отправили сообщение этому пользователю" bookmark: one: "Вы и еще 1 человек добавили это сообщение в закладки" few: "Вы и еще {{count}} человека добавили это сообщение в закладки" @@ -1172,9 +1222,9 @@ ru: few: "{{count}} человека отметили это как требующее модерации" other: "{{count}} человек отметили это как требующее модерации" notify_user: - one: "1 человек отправил личное сообщение этому пользователю" - few: "{{count}} человека отправили личное сообщение этому пользователю" - other: "{{count}} человек отправили личное сообщение этому пользователю" + one: "1 человек отправил сообщение этому пользователю" + few: "{{count}} человека отправили сообщение этому пользователю" + other: "{{count}} человек отправили сообщение этому пользователю" bookmark: one: "1 человек добавил это сообщение в закладки" few: "{{count}} человека добавили это сообщение в закладки" @@ -1284,7 +1334,7 @@ ru: private_reminder: 'жалобы анонимны и видны только персоналу' action: 'Пожаловаться' take_action: "Принять меры" - notify_action: 'Личное сообщение' + notify_action: 'Сообщение' delete_spammer: "Удалить спамера" delete_confirm: "Вы собираетесь удалить %{posts} сообщений и %{topics} тем этого пользователя, а так же удалить его учетную запись, добавить его IP адрес %{ip_address} и его почтовый адрес %{email} в черный список. Вы действительно уверены, что ваши помыслы чисты и действия не продиктованы гневом?" yes_delete_spammer: "Да, удалить спамера" @@ -1306,7 +1356,7 @@ ru: flagging_topic: title: "Спасибо за вашу помощь!" action: "Пометить тему" - notify_action: "Личное сообщение" + notify_action: "Сообщение" topic_map: title: "Сводка по теме" links_shown: "показать все {{totalLinks}} ссылок..." @@ -1323,7 +1373,7 @@ ru: help: "Тема закрыта; в ней больше нельзя отвечать" unpinned: title: "Откреплена" - help: "Эта тема не прилеплена; она будет отображаться в обычном порядке" + help: "Эта тема не закреплена; она будет отображаться в обычном порядке" pinned_globally: title: "Закреплена глобально" help: "Эта тема закреплена глобально и будет отображаться в начале всех списков" @@ -1337,6 +1387,12 @@ ru: posts: "Сообщ." posts_lowercase: "сообщения" posts_long: "{{number}} сообщений в теме" + posts_likes_MF: | + В этой теме {count, plural, one {1 сообщение} other {# сообщений}} {ratio, select, + low {с высоким рейтингом симпатий} + med {с очень высоким рейтингом симпатий} + high {с чрезвычайно высоким рейтингом симпатий} + other {}} original_post: "Начальное сообщение" views: "Просм." views_lowercase: "просм." @@ -1367,6 +1423,9 @@ ru: read: title: "Прочитанные" help: "темы, которые вас заинтересовали (в обратном хронологическом порядке)" + search: + title: "Поиск" + help: "искать во всех темах" categories: title: "Разделы" title_in: "Раздел - {{categoryName}}" @@ -1405,15 +1464,17 @@ ru: top: title: "Обсуждаемые" help: "наиболее активные темы за прошлый год, месяц, неделю или день" + all: + title: "За все время" yearly: - title: "Обсуждаемые за год" + title: "За год" monthly: - title: "Обсуждаемые за месяц" + title: "За месяц" weekly: - title: "Обсуждаемые за неделю" + title: "За неделю" daily: - title: "Обсуждаемые за день" - all: "За всё время" + title: "За день" + all_time: "За все время" this_year: "За год" this_month: "За месяц" this_week: "За неделю" @@ -1450,8 +1511,8 @@ ru: admins: 'Администраторы:' blocked: 'Заблокированы:' suspended: 'Заморожены:' - private_messages_short: "ЛС" - private_messages_title: "Личные сообщения" + private_messages_short: "Сообщ." + private_messages_title: "Сообщений" space_free: "{{size}} свободно" uploads: "загрузки" backups: "резервные копии" @@ -1485,7 +1546,7 @@ ru: agree_title: "Подтвердить корректность жалобы" agree_flag_modal_title: "Принять и..." agree_flag_hide_post: "Принять (скрыть сообщение и послать личное сообщение)" - agree_flag_hide_post_title: "Скрыть это сообщение и автоматически отправить пользователю личное сообщение с просьбой отредактировать его" + agree_flag_hide_post_title: "Скрыть сообщение и автоматически отправить пользователю сообщение с просьбой исправить его" agree_flag_restore_post: "Согласиться (восстановить сообщение)" agree_flag_restore_post_title: "Восстановить это сообщение" agree_flag: "Принять жалобу" @@ -1562,6 +1623,10 @@ ru: name: "Имя" add: "Добавить" add_members: "Добавить участников" + custom: "Настраиваемые" + automatic: "Автоматические" + automatic_membership_email_domains: "Пользователи, которые регистрируются с доменом электронной почты, включенным в этот список, будут автоматически добавлены в эту группу:" + automatic_membership_retroactive: "Применить тот же домен электронной почты чтобы добавить существующих зарегистрированных пользователей" api: generate_master: "Сгенерировать ключ API" none: "Отсутствует ключ API." @@ -1593,18 +1658,19 @@ ru: read_only: enable: title: "Включить режим \"только для чтения\"" - text: "Включить режим \"только для чтения\"" + label: "Включить режим \"только для чтения\"" confirm: "Вы уверены, что хотите включить режим \"только для чтения\"?" disable: title: "Выключить режим \"только для чтения\"" - text: "Выключить режим \"только для чтения\"" + label: "Выключить режим \"только для чтения\"" logs: none: "Пока нет сообщений в журнале регистрации..." columns: filename: "Имя файла" size: "Размер" upload: - text: "Загрузить" + label: "Загрузить" + title: "Загрузить копию на сервер" uploading: "Загрузка..." success: "'{{filename}}' был успешно загружен." error: "При загрузке '{{filename}}' произошла ошибка: {{message}}" @@ -1612,32 +1678,32 @@ ru: is_running: "Операция в данный момент исполняется..." failed: "{{operation}} провалилась. Пожалуйста, проверьте журнал регистрации." cancel: - text: "Отменить" + label: "Отменить" title: "Отменить текущую операцию" confirm: "Вы уверены, что хотите отменить текущую операцию?" backup: - text: "Резервная копия" + label: "Резервная копия" title: "Создать резервную копию" confirm: "Запустить резервное копирование?" without_uploads: "Да (исключить файлы)" download: - text: "Скачать" + label: "Скачать" title: "Скачать резервную копию" destroy: - text: "Удалить" title: "Удалить резервную копию" confirm: "Вы уверены, что хотите уничтожить резервную копию?" restore: is_disabled: "Восстановление отключено в настройках сайта." - text: "Восстановить" + label: "Восстановить" title: "Восстановить резервную копию" confirm: "Вы уверенны, что желаете восстановить эту резервную копию?" rollback: - text: "Откатить" + label: "Откатить" title: "Откатить базу данных к предыдущему рабочему состоянию" confirm: "Вы уверены, что хотите откатить базу данных к предыдущему рабочему состоянию?" export_csv: - success: "Процедура экспорта начата, вы получите уведомление через личные сообщения, когда процесс будет завершен." + user_archive_confirm: "Вы уверены, то хотите скачать все ваши сообщения?" + success: "Процедура экспорта начата, мы отправим вам сообщение, когда процесс будет завершен." failed: "Экспорт не удался. Пожалуйста, проверьте логи." rate_limit_error: "Записи могут быть загружены один раз в день, пожалуйста, попробуйте еще раз завтра." button_text: "Экспорт" @@ -1810,6 +1876,7 @@ ru: delete_topic: "удаление темы" delete_post: "удаление сообщения" impersonate: "выдать себя за" + anonymize_user: "анонимизировать пользователя" screened_emails: title: "Почтовые адреса" description: "Когда кто-то создает новую учетную запись, проверяется данный почтовый адрес и регистрация блокируется или производятся другие дополнительные действия." @@ -1947,6 +2014,10 @@ ru: approve_success: "Пользователь одобрен и на электронную почту отправлено письмо с инструкцией по активации." approve_bulk_success: "Успех! Все выбранные пользователи были одобрены и уведомлены." time_read: "Время чтения" + anonymize: "Анонимизировать пользователя" + anonymize_confirm: "Вы точно УВЕРЕНЫ, что хотите анонимизировать эту учетную запись? Это приведет к изменению псевдонима и адреса электронной почты и очистит всю информацию профиля." + anonymize_yes: "Да, анонимизировать эту учетную запись" + anonymize_failed: "Не удалось анонимизировать учетную запись." delete: "Удалить пользователя" delete_forbidden_because_staff: "Администраторы и модераторы не могут быть удалены" delete_posts_forbidden_because_staff: "Нельзя удалить все сообщения администраторов и модераторов." diff --git a/config/locales/client.sq.yml b/config/locales/client.sq.yml index 04ff6d5327..31d54c540e 100644 --- a/config/locales/client.sq.yml +++ b/config/locales/client.sq.yml @@ -143,6 +143,8 @@ sq: topic_count: "Tema" post_count: "Postime" contact: "Kontaktoni" + bookmarked: + title: "Të Preferuarat" bookmarks: not_logged_in: "ju duhet të jeni të identifikuar për të ruajtur temën." created: "ju ruajtët këtë temë" @@ -215,8 +217,6 @@ sq: '2': "Pëlqime të marra" '3': "Të Preferuarat" '4': "Tema" - '5': "Postime" - '6': "Përgjigje" '7': "Përmendje" '9': "Citim" '10': "Shënuar" @@ -257,7 +257,6 @@ sq: profile: "Profili" mute: "Mute" edit: "Ndrysho Preferencat" - private_message: "Mesazhet Private" private_messages: "Mesazhet" activity_stream: "Aktiviteti" preferences: "Preferencat" @@ -328,7 +327,6 @@ sq: uploaded_avatar_empty: "Shto një foto të personalizuar" upload_title: "Ngarni foton tuaj" upload_picture: "Ngarko Foto" - image_is_not_a_square: "Vini Re: imazhi është përshtatur, pasi nuk ishte foto katrore." change_profile_background: title: "Sfondi Profilit" instructions: "Sfondi profilit do të vendoset në qendër dhe do të ketë një gjerësi prej 850px." @@ -425,7 +423,6 @@ sq: stream: posted_by: "Postuar nga" sent_by: "Dërgura nga" - private_message: "mesazhet private" the_topic: "tema" loading: "Duke ngarkuar..." errors: @@ -476,9 +473,7 @@ sq: enable: "Hide Deleted Posts" disable: "Show Deleted Posts" private_message_info: - title: "Mesazhet Private" invite: "Fto të tjerët..." - remove_allowed_user: "Do you really want to remove {{name}} from this private message?" email: 'Email' username: 'Username' last_seen: 'Parë' @@ -490,7 +485,6 @@ sq: title: "Krijo një Llogari të Re" failed: "Something went wrong, perhaps this email is already registered, try the forgot password link" forgot_password: - title: "Harruat Fjalëkalimin" action: "Kam harruar fjalëkalimin" invite: "Enter your username or email address, and we'll send you a password reset email." reset: "Rivendos Fjalëkalimin" @@ -557,8 +551,6 @@ sq: reply_here: "Përgjigju Këtu" reply: "Përgjigju" cancel: "Anulo" - create_topic: "Temë e Re" - create_pm: "Mesazh Privat" title: "Or press Ctrl+Enter" users_placeholder: "Add a user" title_placeholder: "What is this discussion about in one brief sentence?" @@ -608,10 +600,8 @@ sq: units: "(# i orëve)" examples: 'Enter number of hours (24).' notifications: - title: "notifications of @name mentions, replies to your posts and topics, private messages, etc" more: "shiko njoftimet e kaluara" total_flagged: "totali postimeve të sinjalizuar" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -692,7 +682,6 @@ sq: filter_to: "{{post_count}} posts in topic" create: 'Temë e Re' create_long: 'Fillo një Diskutim të Ri' - private_message: 'Fillo një mesazh privat' list: 'Tema' new: 'temë e re' unread: 'unread' @@ -770,13 +759,11 @@ sq: '0': 'You are ignoring all notifications on this topic.' watching_pm: title: "Watching" - description: "You will be notified of every new post in this private message. A count of unread and new posts will also appear next to the topic." watching: title: "Në vëzhgim" description: "You will be notified of every new post in this topic. A count of unread and new posts will also appear next to the topic." tracking_pm: title: "Tracking" - description: "A count of unread and new posts will appear next to the private message. You will be notified if someone mentions your @name or replies to your post." tracking: title: "Tracking" description: "A count of unread and new posts will appear next to the topic. You will be notified if someone mentions your @name or replies to your post. " @@ -785,10 +772,8 @@ sq: description: "You will be notified if someone mentions your @name or replies to your post." regular_pm: title: "Regular" - description: "You will be notified if someone mentions your @name or replies to your post in the private message." muted_pm: title: "Muted" - description: "You will never be notified of anything about this private message." muted: title: "Muted" description: "You will never be notified of anything about this topic, and it will not appear on your unread tab." @@ -797,18 +782,11 @@ sq: delete: "Fshi Diskutimin" open: "Fillo Diskutim" close: "Mbyll Diskutimin" - auto_close: "Mbyllje Automatike" - make_banner: "Banner Topic" - remove_banner: "Remove Banner Topic" - pin: "Pin Topic" - unpin: "Un-Pin Topic" - pin_globally: "Pin Topic Globally" unarchive: "Unarchive Topic" archive: "Archive Topic" invisible: "Make Unlisted" visible: "Make Listed" reset_read: "Reset Read Data" - multi_select: "Select Posts" reply: title: 'Përgjigju' help: 'begin composing a reply to this topic' @@ -826,21 +804,15 @@ sq: automatically_add_to_groups_optional: "This invite also includes access to these groups: (optional, admin only)" automatically_add_to_groups_required: "This invite also includes access to these groups: (Required, admin only)" invite_private: - title: 'Invite to Private Message' email_or_username: "Invitee's Email or Username" email_or_username_placeholder: "email address or username" action: "Fto" - success: "We've invited that user to participate in this private message." error: "Sorry, there was an error inviting that user." group_name: "group name" invite_reply: title: 'Invite' - action: 'Email Invite' - help: 'send invitations to friends so they can reply to this topic with a single click' - to_topic: "We'll send a brief email allowing your friend to immediately join and reply to this topic by clicking a link, no login required." to_forum: "We'll send a brief email allowing your friend to immediately join by clicking a link, no login required." email_placeholder: 'name@example.com' - success: "We mailed out an invitation to {{email}}. We'll notify you when the invitation is redeemed. Check the invitations tab on your user page to keep track of your invites." login_reply: 'Përgjigju tek Diskutimi' filters: n_posts: @@ -884,13 +856,10 @@ sq: one: You have selected 1 post. other: You have selected {{count}} posts. post: - reply: "Replying to {{link}} by {{replyAvatar}} {{username}}" reply_topic: "Përgjigju tek {{link}}" quote_reply: "cito përgjigjen" - edit: "Editing {{link}} by {{replyAvatar}} {{username}}" edit_reason: "Arsyeja:" post_number: "postimi {{number}}" - in_reply_to: "përgjigju tek" last_edited_on: "redaktimi fundit u krye me" reply_as_new_topic: "Reply as linked Topic" continue_discussion: "Continuing the discussion from {{postLink}}:" @@ -980,8 +949,6 @@ sq: inappropriate: "{{icons}} flagged this as inappropriate" notify_moderators: "{{icons}} notified moderators" notify_moderators_with_url: "{{icons}} notified moderators" - notify_user: "{{icons}} sent a private message" - notify_user_with_url: "{{icons}} sent a private message" bookmark: "{{icons}} bookmarked this" like: "{{icons}} liked this" vote: "{{icons}} voted for this" @@ -990,7 +957,6 @@ sq: spam: "You flagged this as spam" inappropriate: "You flagged this as inappropriate" notify_moderators: "You flagged this for moderation" - notify_user: "You sent a private message to this user" bookmark: "You bookmarked this post" like: "You liked this" vote: "You voted for this post" @@ -1007,9 +973,6 @@ sq: notify_moderators: one: "You and 1 other flagged this for moderation" other: "You and {{count}} other people flagged this for moderation" - notify_user: - one: "You and 1 other sent a private message to this user" - other: "You and {{count}} other people sent a private message to this user" bookmark: one: "You and 1 other bookmarked this post" other: "You and {{count}} other people bookmarked this post" @@ -1032,9 +995,6 @@ sq: notify_moderators: one: "1 person flagged this for moderation" other: "{{count}} people flagged this for moderation" - notify_user: - one: "1 person sent a private message to this user" - other: "{{count}} sent a private message to this user" bookmark: one: "1 person bookmarked this post" other: "{{count}} people bookmarked this post" @@ -1138,7 +1098,6 @@ sq: private_reminder: 'flags are private, only visible to staff' action: 'Flag Post' take_action: "Take Action" - notify_action: 'Private message' delete_spammer: "Delete Spammer" delete_confirm: "You are about to delete %{posts} posts and %{topics} topics from this user, remove their account, block signups from their IP address %{ip_address}, and add their email address %{email} to a permanent block list. Are you sure this user is really a spammer?" yes_delete_spammer: "Yes, Delete Spammer" @@ -1160,7 +1119,6 @@ sq: flagging_topic: title: "Faleminderit për ndihmën që i jepni këtij komuniteti!" action: "Raporto Temën" - notify_action: "Mesazhet Private" topic_map: title: "Përmbledhja e Temës" links_shown: "show all {{totalLinks}} links..." @@ -1251,14 +1209,6 @@ sq: top: title: "Kryesoret" help: "the most active topics in the last year, month, week or day" - yearly: - title: "Top Vjetore" - monthly: - title: "Top Mujore" - weekly: - title: "Top Weekly" - daily: - title: "Top Daily" this_year: "Këtë vit" this_month: "Këtë muaj" this_week: "Këtë javë" @@ -1295,8 +1245,6 @@ sq: admins: 'Administratorët:' blocked: 'Bllokuar:' suspended: 'Përjashtuar:' - private_messages_short: "MP" - private_messages_title: "Mesazhet Private" reports: today: "Sot" yesterday: "Dje" @@ -1322,7 +1270,6 @@ sq: agree_title: "Confirm this flag as valid and correct" agree_flag_modal_title: "Agree and..." agree_flag_hide_post: "Agree (hide post + send PM)" - agree_flag_hide_post_title: "Hide this post and automatically send the user a private message urging them to edit it" agree_flag_restore_post: "Agree (restore post)" agree_flag_restore_post_title: "Restore this post" agree_flag: "Agree with flag" @@ -1412,18 +1359,15 @@ sq: read_only: enable: title: "Enable the read-only mode" - text: "Enable read-only mode" confirm: "Are you sure you want to enable the read-only mode?" disable: title: "Disable the read-only mode" - text: "Disable read-only mode" logs: none: "No logs yet..." columns: filename: "Filename" size: "Size" upload: - text: "Ngarko" uploading: "Duke ngarkuar..." success: "'{{filename}}' has successfully been uploaded." error: "There has been an error while uploading '{{filename}}': {{message}}" @@ -1431,28 +1375,22 @@ sq: is_running: "An operation is currently running..." failed: "The {{operation}} failed. Please check the logs." cancel: - text: "Anulo" title: "Cancel the current operation" confirm: "Are you sure you want to cancel the current operation?" backup: - text: "Backup" title: "Create a backup" confirm: "Do you want to start a new backup?" without_uploads: "Yes (do not include files)" download: - text: "Shkarko" title: "Download the backup" destroy: - text: "Fshij" title: "Remove the backup" confirm: "Are you sure you want to destroy this backup?" restore: is_disabled: "Restore is disabled in the site settings." - text: "Rikthe" title: "Restore the backup" confirm: "Are your sure you want to restore this backup?" rollback: - text: "Rollback" title: "Rollback the database to previous working state" confirm: "Are your sure you want to rollback the database to the previous working state?" export_csv: diff --git a/config/locales/client.sv.yml b/config/locales/client.sv.yml index 76f87f8030..0427d0ac32 100644 --- a/config/locales/client.sv.yml +++ b/config/locales/client.sv.yml @@ -124,6 +124,7 @@ sv: daily: "dagligen" weekly: "veckovis" every_two_weeks: "varannan vecka" + every_three_days: "var tredje dag" max_of_count: "max av {{count}}" character_count: one: "{{count}} tecken" @@ -148,12 +149,17 @@ sv: contact: "Kontakta Oss" bookmarked: title: "Bokmärke" + clear_bookmarks: "Töm bokmärken" + help: + bookmark: "Klicka för att bokmärka första posten i ämnet " + unbookmark: "Klicka för att radera alla bokmärken i ämnet" bookmarks: not_logged_in: "tyvärr, du måste vara inloggad för att kunna bokmärka inlägg" created: "du har bokmärkt detta inlägg" not_bookmarked: "du har läst detta inlägg, klicka för att bokmärka det" last_read: "detta är det senaste inlägg som du läst, klicka för att bokmärka" remove: "Ta bort bokmärke" + confirm_clear: "Är du säker på att du vill radera alla bokmärken från ämnet?" topic_count_latest: one: "{{count}} ny eller uppdaterad diskussion" other: "{{count}} nya eller uppdaterade diskussioner" @@ -198,6 +204,18 @@ sv: posted_by_you: "Postat av dig" sent_by_user: "Skickat av {{user}}" sent_by_you: "Skickat av dig" + directory: + filter_name: "Filtrera på användarnamn" + title: "Användare" + likes_given: "Tilldelade" + likes_received: "Mottagna" + topics_entered: "Registrerade" + topics_entered_long: "Registrerade ämnen" + time_read: "Lästid" + topic_count: "Ämnen" + days_visited: "Besök" + posts_read: "Läst" + posts_read_long: "Lästa trådar" groups: visible: "Gruppen är synlig för alla användare" title: @@ -217,7 +235,7 @@ sv: '2': "Gillningar mottagna" '3': "Bokmärken" '4': "Trådar" - '5': "Inlägg" + '5': "Svar" '6': "Svar" '7': "Omnämnanden" '9': "Citat" @@ -265,8 +283,8 @@ sv: mute: "Dämpa" edit: "Redigera inställningar" download_archive: "Ladda ner Mina Bilder" - new_private_message: "Nytt Privat Meddelande" - private_message: "Privat meddelande" + new_private_message: "Nytt meddelande" + private_message: "Meddelande" private_messages: "Meddelanden" activity_stream: "Aktivitet" preferences: "Inställningar" @@ -298,7 +316,7 @@ sv: muted_categories_instructions: "Du kommer inte att få notifieringar om nya trådar inom dessa kategorier, och de kommer inte att visas under din \"oläst\"-tab." delete_account: "Radera mitt konto" delete_account_confirm: "Är du säker på att du vill ta bort ditt konto permanent? Denna åtgärd kan inte ångras!" - deleted_yourself: "Ditt konto har framgångsrikt tagits bort." + deleted_yourself: "Ditt konto har tagits bort." delete_yourself_not_allowed: "Du kan inte ta bort ditt konto just nu. Kontakta en admin och be om att få ditt konto borttaget." unread_message_count: "Meddelanden" admin_delete: "Radera" @@ -339,7 +357,6 @@ sv: uploaded_avatar_empty: "Lägg till en anpassad bild" upload_title: "Ladda upp din bild" upload_picture: "Ladda upp bild" - image_is_not_a_square: "Varning: vi har beskurit din bild; den är inte kvadratisk." change_profile_background: title: "Profilbakgrund" instructions: "Bakgrunderna är centrerade och har en förinställd bredd på 850px" @@ -391,8 +408,6 @@ sv: email_digests: daily: "dagligen" weekly: "veckovis" - email_direct: "Skicka ett e-postmeddelande när någon citerar mig, svarar på mitt inlägg, eller nämner mitt @användarnamn" - email_private_messages: "Skicka ett e-postmeddelande till mig när någon skickar mig ett privatmeddelande." email_always: "Ta emot notifieringar via mail även om jag är aktiv på forumet" other_settings: "Övrigt" categories_settings: "Kategorier" @@ -460,7 +475,6 @@ sv: stream: posted_by: "Postat av" sent_by: "Skickat av" - private_message: "privat meddelande" the_topic: "tråden" loading: "Laddar..." errors: @@ -513,9 +527,7 @@ sv: enable: "Dölj raderade inlägg" disable: "Visa raderade inlägg" private_message_info: - title: "Privat Konversation" invite: "Bjud In Andra..." - remove_allowed_user: "Är du säker på att du vill ta bort {{name}} från det här privata meddelandet?" email: 'E-post' username: 'Användarnamn' last_seen: 'Sedd' @@ -527,7 +539,6 @@ sv: title: "Registrera nytt konto" failed: "Något gick fel, kanske är denna e-post redan registrerad, försök glömt lösenordslänken" forgot_password: - title: "Glömt Lösenord" action: "Jag har glömt mitt lösenord" invite: "Skriv in ditt användarnamn eller e-postadress, så vi skickar dig ett mail om lösenordsåterställning." reset: "Återställ Lösenord" @@ -596,8 +607,6 @@ sv: reply_here: "Svara Här" reply: "Svara" cancel: "Avbryt" - create_topic: "Nytt ämne" - create_pm: "Privat Meddelande" title: "eller tryck Ctrl+Enter" users_placeholder: "Lägg till en användare" title_placeholder: "Vad handlar denna diskussion om i en kort mening?" @@ -647,10 +656,8 @@ sv: units: "(# antal timmar)" examples: 'Ange antal timmar (24).' notifications: - title: "notifikationer med omnämnanden av @namn, svar på dina inlägg och trådar, privata meddelanden, etc" more: "visa äldre notifikationer" total_flagged: "totalt antal flaggade inlägg" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -684,7 +691,6 @@ sv: user: "Sök inlägg av @{{username}}" category: "Sök i kategorin \"{{category}}\"" topic: "Sök i denna diskussion" - private_messages: "Sök privata meddelanden" site_map: "gå till en annan trådlista eller kategori" go_back: 'gå tillbaka' not_logged_in_user: 'användarsida med sammanställning av aktuell aktivitet och inställningar' @@ -733,7 +739,6 @@ sv: filter_to: "{{post_count}} inlägg i tråd" create: 'Ny tråd' create_long: 'Skapa en ny tråd' - private_message: 'Starta en privat konversation' list: 'Trådar' new: 'ny tråd' unread: 'oläst' @@ -811,13 +816,11 @@ sv: '0': 'Du ignorerar alla notifikationer för denna tråd.' watching_pm: title: "följda" - description: "Du kommer att bli notifierad om varje nytt inlägg i det här privata meddelandet. En räknare över antalet olästa och nya inlägg kommer också att dyka upp brevid ämnesraden." watching: title: "Kollar" description: "Du kommer att notifieras om varje nytt inlägg i det här ämnet. En räknare över olästa och nya inlägg kommer också att visas brevid ämnet." tracking_pm: title: "bevakade" - description: "En räknare över olästa och nya poster kommer att visas brevid privata meddelanden. Du kommer att notifieras om någon nämner ditt @namn eller svarar på ditt inlägg." tracking: title: "Följer" description: "En räknare över olästa och nya inlägg kommer att visas brevid ämnet. Du kommer att notifieras om någon nämner ditt @namn eller svarar på ditt inlägg." @@ -826,10 +829,8 @@ sv: description: "Du kommer att notifieras om någon nämner ditt @namn eller svarar på ditt inlägg." regular_pm: title: "Vanlig(t)" - description: "Du kommer att notifieras om någon nämner ditt @namn eller svarar på ditt inlägg i det privata meddelandet." muted_pm: title: "tystade" - description: "Du kommer aldrig att få notifieringar om något angående detta privatmeddelande." muted: title: "Dämpad" description: "Du kommer aldrig meddelas om denna tråd alls, och den kommer inte visas i din flik med olästa." @@ -838,18 +839,11 @@ sv: delete: "Radera Tråd" open: "Öppna Tråd" close: "Stäng Tråd" - auto_close: "Stäng Automatiskt" - make_banner: "Banderollämne" - remove_banner: "Radera Banderollämne" - pin: "Nåla Tråd" - unpin: "Avnåla Tråd" - pin_globally: "Nåla diskussionen globalt" unarchive: "Dearkivera Tråd" archive: "Arkivera Tråd" invisible: "Markera Olistad" visible: "Markera Listad" reset_read: "Återställ Läsdata" - multi_select: "Markera inlägg" reply: title: 'Svara' help: 'börja komponera ett svar till denna tråd' @@ -867,21 +861,15 @@ sv: automatically_add_to_groups_optional: "Denna inbjudan inkluderar även tillgång till dessa grupper: (valfritt, enbart för administratörer)" automatically_add_to_groups_required: "Denna inbjudan inkluderar även tillgång till dessa grupper: (Krävs, enbart för admninistörer)" invite_private: - title: 'Bjud in till Privat Konversation' email_or_username: "Den Inbjudnas E-post eller Användarnamn" email_or_username_placeholder: "e-postadress eller användarnamn" action: "Bjud In" - success: "Vi har bjudit in den användaren att delta i det här privata meddelandet." error: "Tyvärr det uppstod ett fel under inbjudandet av den användaren." group_name: "gruppnamn" invite_reply: title: 'Bjud in' - action: 'Email-inbjudan' - help: 'skicka inbjudningar till vänner så de kan svara i den här tråden med ett enda klick' - to_topic: "Vi skickar ett kort e-postmeddelande som tillåter din vän att omedelbart delta och svara på den här diskussionen genom att klicka på en länka utan att logga in." to_forum: "Vi skickar ett kort e-postmeddelande som tillåter din vän att omedelbart delta genom att klicka på en länk, ingen inloggning krävs." email_placeholder: 'namn@exampel.se' - success: "Vi har mailat ut ett inbjudan till {{email}}. Vi låter dig veta när de löst in sin inbjudan. Kolla in fliken med Inbjudningar på din användarsida för att hålla koll på vem du har bjudit in." login_reply: 'Logga in för att svara' filters: n_posts: @@ -925,13 +913,10 @@ sv: one: Du har markerat 1 inlägg. other: Du har markerat {{count}} inlägg. post: - reply: "Svarar på {{link}} av {{replyAvatar}} {{username}}" reply_topic: "Svar på {{link}}" quote_reply: "citatsvar" - edit: "Ändra {{link}} av {{replyAvatar}} {{username}}" edit_reason: "Anledning:" post_number: "inlägg {{number}}" - in_reply_to: "svara till" last_edited_on: "inlägg senast ändrat den" reply_as_new_topic: "Svara i ny tråd" continue_discussion: "Fortsätter diskussionen från {{postLink}}:" @@ -1021,8 +1006,6 @@ sv: inappropriate: "{{icons}} flaggade det här som olämpligt" notify_moderators: "{{icons}} notifierade moderatorer" notify_moderators_with_url: "{{icons}} notifierade moderatorer" - notify_user: "{{icons}} skicka ett privat meddelande" - notify_user_with_url: "{{icons}} skickade ett privat meddelande" bookmark: "{{icons}} bokmärkte detta" like: "{{icons}} gillade detta" vote: "{{icons}} röstade för detta" @@ -1031,7 +1014,6 @@ sv: spam: "Du flaggade detta som spam" inappropriate: "Du flaggade detta som olämpligt" notify_moderators: "Du flaggade det för moderation." - notify_user: "Du skickade ett privat meddelande till den här användaren." bookmark: "Du bokmärkte detta inlägg" like: "Du gillade detta" vote: "Du röstade för detta inlägg" @@ -1048,9 +1030,6 @@ sv: notify_moderators: one: "Du och 1 annan person har flaggat detta för moderation" other: "Du och {{count}} andra personer har flaggat detta för moderation" - notify_user: - one: "Du och 1 annan person har skickat ett privat meddelande till den här användaren" - other: "Du och {{count}} andra personer har skickat ett privat meddelande till den här användaren" bookmark: one: "Du och 1 annan bokmärkte detta inlägg" other: "Du och {{count}} andra personer bokmärkte detta inlägg" @@ -1073,9 +1052,6 @@ sv: notify_moderators: one: "1 person flaggade detta för granskning" other: "{{count}} personer flaggade detta för granskning" - notify_user: - one: "1 person skickade ett privat meddelande till den här användaren" - other: "{{count}} skickade ett privat meddelande till den här användaren" bookmark: one: "1 person bokmärkte detta inlägg" other: "{{count}} personer bokmärkte detta inlägg" @@ -1179,7 +1155,6 @@ sv: private_reminder: 'flaggor är privata, endast synliga för funktionärer' action: 'Flagga Inlägg' take_action: "Åtgärda" - notify_action: 'Privat meddelande' delete_spammer: "Radera spammare" delete_confirm: "Du håller på att radera %{posts} inlägg och %{topics} trådar från den här användaren, radera hans/hennes konto, blockera IP-adressen %{ip_address}, och lägga till email-adressen %{email} till en permanent blockeringslista. Är du säker på att den här användaren verkligen är en spammare?" yes_delete_spammer: "Ja, radera spammare" @@ -1201,7 +1176,6 @@ sv: flagging_topic: title: "Tack för att du hjälper oss hålla gemenskapen civiliserad!" action: "Flagga tråd" - notify_action: "Privatmeddelande" topic_map: title: "Sammanfattning av tråd" links_shown: "visa alla {{totalLinks}} länkar..." @@ -1297,14 +1271,6 @@ sv: top: title: "Topp" help: "de mest aktiva ämnena det senaste året, månaden, veckan och dagen" - yearly: - title: "Topp i år" - monthly: - title: "Topp denna månad" - weekly: - title: "Topp denna vecka" - daily: - title: "Topp idag" this_year: "I år" this_month: "Den här månaden" this_week: "Den här veckan" @@ -1341,8 +1307,6 @@ sv: admins: 'Administratörer:' blocked: 'Blockerad:' suspended: 'Avstängd:' - private_messages_short: "PMs" - private_messages_title: "Privata meddelanden" space_free: "{{size}} ledigt" uploads: "uppladningar" backups: "säkerhetskopior" @@ -1373,7 +1337,6 @@ sv: agree_title: "Bekräfta att den här flaggan är giltig och korrekt" agree_flag_modal_title: "Bekräfta och..." agree_flag_hide_post: "Godkänn (dölj inlägg + skicka PM)" - agree_flag_hide_post_title: "Dölj detta inlägg och skicka automatiskt ett privat meddelande som ber användaren att redigera det" agree_flag_restore_post: "Godkänn (återställ inlägg)" agree_flag_restore_post_title: "Återställ detta inlägg" agree_flag: "Godkänn flaggning" @@ -1470,18 +1433,15 @@ sv: read_only: enable: title: "Aktivera skrivskyddat läget" - text: "Aktivera skrivskyddat läge" confirm: "Är du säker på att du vill aktivera skrivskyddat läge?" disable: title: "Avaktivera skrivskyddat läget" - text: "Avaktivera skrivskyddat läge" logs: none: "Inga loggar ännu..." columns: filename: "filnamn" size: "storlek" upload: - text: "Ladda upp" uploading: "Laddar upp..." success: "'{{filename}}' har laddats upp." error: "Ett fel har uppstått vid uppladdning av '{{filename}}': {{message}}" @@ -1489,32 +1449,25 @@ sv: is_running: "En operation körs just nu..." failed: " {{operation}} misslyckades. Kontrollera loggarna." cancel: - text: "avbryt" title: "Avbryt den pågående operationen" confirm: "Är du säker på att du vill avbryta den pågående operationen?" backup: - text: "säkerhetskopia" title: "skapa en säkerhetskopia" confirm: "Vill du skapa en ny säkerhetskopiering?" without_uploads: "Ja (inkluder inte filer)" download: - text: "ladda ned" title: "ladda ned säkerhetskopian" destroy: - text: "radera" title: "Ta bort säkerhetskopian" confirm: "Är du säker på att du vill förstöra denna säkerhetskopia?" restore: is_disabled: "Återställ är inaktiverat i sidans inställningar." - text: "återställ" title: "återställ säkerhetskopian" confirm: "Är du säker på att du vill återställa denna säkerhetskopia?" rollback: - text: "rollback" title: "Gör rollback på databasen till ett tidigare fungerande tillstånd." confirm: "Är du säker på att du vill göra rollback på databasen till det tidigare fungerande tillståndet?" export_csv: - success: "Exportering startad, du kommer att få ett medelande när processen är färdig." failed: "Exporteringen misslyckades. Kontrollera loggarna." rate_limit_error: "Inlägg kan bara laddas ner en gång per dag, var vänlig och försök imorgon istället." button_text: "Exportera" @@ -1958,12 +1911,21 @@ sv: badges: title: Utmärkelser badge: + basic_user: + name: Grundläggande + member: + name: Medlem + leader: + name: Ledare welcome: name: Välkommen description: Fick en gilla autobiographer: name: Självbiograf description: Fyllde ut sin profilinformation + anniversary: + name: Årsdag + description: Aktiv medlem ett år, har skrivit minst en gång nice_post: name: Bra inlägg description: Fick 10 gilla på ett inlägg. Denna utmärkelse kan utfärdas flera gånger. diff --git a/config/locales/client.te.yml b/config/locales/client.te.yml index 73d3c02053..ba419a6017 100644 --- a/config/locales/client.te.yml +++ b/config/locales/client.te.yml @@ -224,8 +224,6 @@ te: '2': "వచ్చిన ఇష్టాలు" '3': "పేజీకలు" '4': "విషయాలు" - '5': "టపాలు" - '6': "జవాబులు" '7': "ప్రస్తావనలు" '9': "కోట్ లు" '10': "నక్షత్రపు" @@ -272,8 +270,6 @@ te: mute: "నిశ్శబ్దం" edit: "అభిరుచులు సవరించు" download_archive: "నా టపాలు దిగుమతించు" - new_private_message: "కొత్త ప్రైవేటు సందేశం" - private_message: "ప్రైవేటు సందేశం" private_messages: "సందేశాలు" activity_stream: "కలాపం" preferences: "అభిరుచులు" @@ -348,7 +344,6 @@ te: uploaded_avatar_empty: "అనురూప బొమ్మను కలపండి" upload_title: "మీ బొమ్మను కలపండి" upload_picture: "బొమ్మను ఎగుమతించండి" - image_is_not_a_square: "హెచ్చరిక: మీ బొమ్మను కత్తిరించాము; అది చతురస్రం కాదు." change_profile_background: title: "ప్రవర వెనుతలం" instructions: "ప్రవర వెనుతలాలు కేంద్రీకరించబడతాయి మరియు అప్రమేయ వెడల్పు 850 పిక్సెలు ఉంటాయి." @@ -405,8 +400,6 @@ te: every_three_days: "ప్రతి మూడు రోజులకీ" weekly: "ప్రతీవారం" every_two_weeks: "ప్రతి రెండు వారాలకీ" - email_direct: "ఎవరన్నా నన్ను కోట్ చేసినా, నా టపాలకు జవాబిచ్చినా, నా @పేరు ప్రస్తావిస్తే నాకు ఈమెయిల్ పంపండి" - email_private_messages: "ఎవరన్నా ప్రైవేటు సందేశం పంపితే నాకు ఈమెయిల్ పంపండి." email_always: "నేను ఈసైటుపై క్రియాశీలంగా ఉన్నా నాకు ఈమెయిల్ పంపుట ఆపవద్దు" other_settings: "ఇతర" categories_settings: "వర్గాలు" @@ -454,7 +447,6 @@ te: none: "మీరు ఇంకా ఎవరినీ ఆహ్వానించలేదు. మీరు వ్యక్తిగత ఆహ్వానాలు పంపవచ్చు, లేదా కొంతమందికి ఒకేసారి ఆహ్వాన దస్త్రం ఎగుమతించుట ద్వారా పంపవచ్చు." text: "దస్త్రం నుండి బహుళ ఆహ్వానాలు" uploading: "ఎగుమతవుతోంది..." - success: "దస్త్రం విజయవంతంగా ఎగుమతయింది. కలాపం ముగిసాక మీకు ప్రైవేటు సందేశం ద్వారా ప్రకటన వస్తుంది. " error: "'{{filename}}' ఎగుమతించుటలో దోషం: {{message}}" password: title: "సంకేతపదం" @@ -478,7 +470,6 @@ te: stream: posted_by: "టపా రాసినవారు" sent_by: "పంపినవారు" - private_message: "ప్రైవేటు సందేశం" the_topic: "విషయం" loading: "లోడవుతోంది..." errors: @@ -531,9 +522,7 @@ te: enable: "తొలగించిన టపాలు దాయు" disable: "తొలగించిన టపాలు చూపు" private_message_info: - title: "ప్రైవేటు సందేశం" invite: "ఇతరులను ఆహ్వానించు" - remove_allowed_user: "మీరు నిజ్జంగానే {{name}} ను ఈ ప్రైవేటు సందేశం నుండి తొలగించాలనుకుంటున్నారా? " email: 'ఈమెయిల్' username: 'సభ్యనామం' last_seen: 'చూసిన' @@ -545,7 +534,6 @@ te: title: "కొత్త ఖాతా సృష్టించు" failed: "ఏదో తేడా జరిగింది. బహుశా ఈమెయిల్ ఇప్పటికే ఈసైటులో రిజిస్టరు అయి ఉందేమో, సంకేతపదం మర్చిపోయా లంకె ప్రయత్నించు." forgot_password: - title: "సంకేతపదం మర్చిపోయా" action: "నేను నా సంకేతపదాన్ని మర్చిపోయాను" invite: "మీ సభ్యనామం లేదా ఈమెయిల్ చిరునామా రాయండి, మేము మీ సంకేతపదం మార్చే విధం మీకు ఈమెయిల్ చేస్తాము." reset: "రీసెట్ సంకేతపదం" @@ -617,8 +605,6 @@ te: reply_here: "ఇక్కడ జవాబివ్వు" reply: "జవాబు" cancel: "రద్దు" - create_topic: "కొత్త విషయం" - create_pm: "ప్రైవేటు సందేశం" title: "లేదా కంట్రోల్ + ఎంటర్ నొక్కు" users_placeholder: "ఒక సభ్యుడిని కలుపు" title_placeholder: "ఈ చర్చ దేనిగురించో ఒక లైనులో చెప్పండి?" @@ -668,11 +654,9 @@ te: units: "(# గంటలు)" examples: 'గంటల సంఖ్య(24)ను రాయండి.' notifications: - title: "మీ @పేరు ప్రస్తావనలు, మీ టపాలు మరియు విషయాలకు జవాబులు, ప్రైవేటు సందేశాలు మొన్నగున్నవి" none: "ఈ సమయంలో ప్రకటనలు చూపలేకున్నాము." more: "పాత ప్రకటనలు చూడు" total_flagged: "మొత్తం కేతనించిన టపాలు" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -706,7 +690,6 @@ te: user: "@{{username}} యొక్క విషయాలు వెతుకు" category: "\"{{category}}\" వర్గంలో వెతుకు" topic: "ఈ విషయంలో వెతుకు" - private_messages: "ప్రైవేటు సందేశాలలో వెతుకు" site_map: "మరో విషయాల జాబితాకు లేదా వర్గానికి వెళ్లు" go_back: 'వెనక్కు మరలు' not_logged_in_user: 'సభ్యుని ప్రస్తుత కలాపాల మరియు అభిరూపాల సారాంశ పుట' @@ -757,7 +740,6 @@ te: filter_to: "విషయంలో {{post_count}} టపాలున్నాయి" create: 'కొత్త విషయం' create_long: 'కొత్త విషయం సృష్టించు' - private_message: 'ప్రైవేటు సందేశం మొదలుపెట్టు' list: 'విషయాలు' new: 'కొత్త విషయం' unread: 'చదవని' @@ -834,13 +816,11 @@ te: '0': 'ఈ విషయంలోని అన్ని ప్రకటనలనూ మీరు విస్మరిస్తున్నారు.' watching_pm: title: "కన్నేసారు" - description: "ఈ ప్రైవేటు సందేశంలోని ప్రతి కొత్త టపాకు మీకు ప్రకటన వస్తుంది. ఇంకా చదవని మరియు కొత్త టపాల సంఖ్య కూడా విషయం పక్కన వస్తుంది." watching: title: "కన్నేసారు" description: "ఈ విషయంలోని ప్రతి కొత్త టపాకు మీకు ప్రకటన వస్తుంది. ఇంకా చదవని మరియు కొత్త టపాల సంఖ్య విషయం పక్కన వస్తుంది." tracking_pm: title: "గమనిస్తున్నారు" - description: "ప్రైవేటు సందేశం పక్కన కొత్త మరియు చదవని టపాల సంఖ్య వస్తుంది. ఎవరన్నా మీకు జవాబిచ్చినా లేదా @మీ పేరు ప్రస్తావించినా మీకు ప్రకటన వస్తుంది. " tracking: title: "గమనిస్తున్నారు" description: "ప్రైవేటు సందేశం పక్కన కొత్త మరియు చదవని టపాల సంఖ్య వస్తుంది. ఎవరన్నా మీకు జవాబిచ్చినా లేదా @మీ పేరు ప్రస్తావించినా మీకు ప్రకటన వస్తుంది. " @@ -849,10 +829,8 @@ te: description: "ఎవరన్నా మీ @పేరు ప్రస్తావించినా లేదా జవాబిచ్చినా మీకు ప్రకటన వస్తుంది" regular_pm: title: "రెగ్యులరు" - description: "ఈ ప్రైవేటు సందేశంలో ఎవరన్నా మీ @పేరు ప్రస్తావించినా లేదా జవాబిచ్చినా మీకు ప్రకటన వస్తుంది." muted_pm: title: "నిశ్శబ్దం" - description: "ఈ ప్రైవేటు సందేశం నుండి మీకు అస్సలు ప్రకటనలు రావు." muted: title: "నిశ్శబ్దం" description: "ఈ ప్రైవేటు సందేశం నుండి మీకు అస్సలు ప్రకటనలు రావు. ఇంకా చదవని సంఖ్య కనిపించదు." @@ -861,18 +839,11 @@ te: delete: "విషయం తొలగించు" open: "విషయం తెరువు" close: "విషయం మూయు" - auto_close: "స్వీయ మూయు" - make_banner: "బ్యానరు విషయం" - remove_banner: "బ్యానరు విషయం తొలగించు" - pin: "విషయం గుచ్చు" - unpin: "విషయం అగ్గుచ్చు" - pin_globally: "సార్వత్రికంగా విషయాన్ని గుచ్చు" unarchive: "విషయాన్ని కట్టవిప్పు" archive: "విషయాన్ని కట్టకట్టు" invisible: "అజ్జాబితాగా గుర్తించు" visible: "జాబితాగా గుర్తించు" reset_read: "చదివిన గణాంకాలను రీసెట్ చేయి" - multi_select: "టపాలు ఎంచుకో" reply: title: 'జవాబు' help: 'ఈ విషయానికి జవాబివ్వుట ప్రారంభించు' @@ -890,22 +861,15 @@ te: automatically_add_to_groups_optional: "ఈ ఆహ్వానం ఈ గుంపులకు అనుమతిని కూడా కలిగి ఉంది:(ఐచ్చికం, అధికారులు మాత్రమే)" automatically_add_to_groups_required: "ఈ ఆహ్వానం ఈ గుంపులకు అనుమతిని కూడా కలిగి ఉంది:(తప్పనిసరి, అధికారులు మాత్రమే)" invite_private: - title: 'ప్రైవేటు సందేశానికి ఆహ్వానించు' email_or_username: "ఆహ్వానితుని ఈమెయిల్ లేదా సభ్యనామం" email_or_username_placeholder: "ఈమెయిల్ చిరునామా లేదా సభ్యనామం" action: "ఆహ్వానించు" - success: "ఈ ప్రైవేటు సందేశంలో పాల్గోనడానికి ఆ సభ్యుడిని ఆహ్వానించాము." error: "క్షమించాలి. ఆ సభ్యుడిని ఆహ్వానించుటలో దోషం." group_name: "గుంపు పేరు" invite_reply: title: 'ఆహ్వానించు' - action: 'ఈమెయిల్ ఆహ్వానం' - help: 'స్నేహితులకు ఆహ్వానం పంపు, తద్వారా వారు ఈ విషయానికి ఒక క్లిక్కుతో జవాబివ్వవచ్చు.' - to_topic: "మేము మీ స్నేహితునికి ఒక ఈమెయిల్ పంపుతాము. అందులోని లంకె ద్వారా వారు లాగిన్ అవసరం లేకుండానే నేరుగా ఈ చర్చలో పాల్గొనవచ్చు, జవాబివ్వవచ్చు." to_forum: "మేము మీ స్నేహితునికి ఒక ఈమెయిల్ పంపుతాము. అందులోని లంకె ద్వారా వారు లాగిన్ అవసరం లేకుండానే నేరుగా ఈ చర్చలో పాల్గొనవచ్చు, జవాబివ్వవచ్చు." email_placeholder: 'name@example.com' - success: "{{email}} కు మీ ఆహ్వానం పంపాము. ఆహ్వానం మన్నిచగానే మీకు ప్రకటిస్తాము. మీరు పంపిన ఆహ్వానాలు గమనించుటకు మీ సభ్యపుటలో ఆహ్వానం ట్యాబు పరికించండి. " - error: "క్షమించాలి. ఆ వ్యక్తిని మేము ఆహ్వానిచలేము. బహుశా వారు ఈసరికే సభ్యులేమో?(invites are rate limited)" login_reply: 'జవాబివ్వడానికి లాగిన్ అవ్వండి' filters: n_posts: @@ -949,13 +913,10 @@ te: one: మీరు 1 టపా ఎంచుకున్నారు other: మీరు {{count}} టపాలు ఎంచుకున్నారు post: - reply: "{{replyAvatar}} {{username}}, {{link}} కు జవాబిస్తున్నారు" reply_topic: " {{link}} కు జవాబివ్వు" quote_reply: "కోట్ జవాబు" - edit: "{{replyAvatar}} {{username}}, {{link}} ను సవరిస్తున్నారు" edit_reason: "కారణం:" post_number: "టపా {{number}}" - in_reply_to: "దీనికి జవాబు" last_edited_on: "టపా చివర సవరించిన కాలం" reply_as_new_topic: "లంకె విషయంగా జవాబివ్వు" continue_discussion: "{{postLink}} నుండి చర్చ కొనసాగుతుంది;" @@ -1047,8 +1008,6 @@ te: inappropriate: "{{icons}} దీన్ని అసమంజసంగా కేతనించాయి" notify_moderators: "{{icons}} దీన్ని నిర్వాహకుల దృష్టికి తెచ్చాయి" notify_moderators_with_url: "{{icons}} నిర్వాహకుల దృష్టికి తెచ్చారు" - notify_user: "{{icons}} ప్రైవేటు సందేశం పంపారు" - notify_user_with_url: "{{icons}} లు ప్రైవేటు సందేశం పంపారు" bookmark: "{{icons}} పేజీక ఉంచారు" like: "{{icons}} ఇష్టపడ్డారు" vote: "{{icons}} దీనికి ఓటు వేసారు" @@ -1057,7 +1016,6 @@ te: spam: "మీరు దీన్ని స్పాముగా కేతనించారు" inappropriate: "మీరు దీన్ని అసమంజసంగా కేతనించారు" notify_moderators: "మీరు దీన్ని నిర్వాహకుల దృష్టికి తెచ్చారు" - notify_user: "మీరు ఈ సభ్యుడికి ప్రైవేటు సందేశం పంపారు" bookmark: "మీరు దీనికి పేజీక ఉంచారు" like: "మీరు దీన్ని ఇష్టపడ్డారు" vote: "మీరు ఈ టపాకు ఓటు వేశారు" @@ -1074,9 +1032,6 @@ te: notify_moderators: one: "మీరు మరియు ఇంకొకరు దీన్ని నిర్వాహకుల దృష్టికి తెచ్చారు." other: "మీరు మరియు [[count]] ఇతర జనులు దీన్ని నిర్వాహకుల దృష్టికి తెచ్చారు." - notify_user: - one: "మీరు మరియు ఇంకొకరు సభ్యునికి ప్రైవేటు సందేశం పంపారు" - other: "మీరు మరియు [[count]] ఇతర జనులు సభ్యునికి ప్రైవేటు సందేశం పంపారు" bookmark: one: "మీరు మరియు ఇంకొకరు దీనికి పేజీక ఉంచారు." other: "మీరు మరియు {{count}} ఇతరులు దీనికి పేజీక ఉంచారు." @@ -1099,9 +1054,6 @@ te: notify_moderators: one: "ఒకరు దీన్ని నిర్వాహకుల దృష్టికి తెచ్చారు" other: "{{count}} గురు దీన్ని నిర్వాహకుల దృష్టికి తెచ్చారు" - notify_user: - one: "ఒకరు ఈ సభ్యునికి ప్రైవేటు సందేశం పంపారు" - other: "{{count}} గురు ఈ సభ్యునికి ప్రైవేటు సందేశం పంపారు" bookmark: one: "ఒకరు ఈ టపాకు పేజీక ఉంచారు" other: "{{count}} గురు ఈ విషయానికి పేజీక ఉంచారు" @@ -1207,7 +1159,6 @@ te: private_reminder: 'కేతనాలు ప్రైవేటు. కేవలం సిబ్బందికి మాత్రమే కనిపిస్తాయి' action: 'టపాను కేతనించు' take_action: "చర్య తీసుకో" - notify_action: 'ప్రైవేటు సందేశం' delete_spammer: "స్పామరును తొలగించు" delete_confirm: "మీరు ఈ వినియోగదారుని %{టపాలు} టపాలు మరియు %{విషయాలు} విషయాలు తొలగించబోతున్నారు, వారి ఖాతా తొలగించి,వారి IP అడ్రస్ నుండి సైన్‌అప్‌లు మూసివేయండి%{ip_అడ్రస్}, మరియు శాశ్వత మూసివేత జాబితాకి వారి ఈ-మెయిల్ అడ్రస్ %{ఈ-మెయిల్} ని కలపండి.మీరు నిజంగా ఈ వినియోగదారుని స్పామర్ గా భావిస్తున్నారా ?" yes_delete_spammer: "అవులు, స్పామరును తొలగించు" @@ -1229,7 +1180,6 @@ te: flagging_topic: title: "మా కమ్యునిటీని నాగరికంగా ఉంచుటలో సహాయానికి ధన్యవాదములు!" action: "విషయాన్ని కేతనించు" - notify_action: "ప్రైవేటు సందేశం" topic_map: title: "విషయ సారం" links_shown: "అన్ని {{totalLinks}} లంకెలూ చూపు..." @@ -1327,15 +1277,6 @@ te: top: title: "అగ్ర" help: "గత సంవత్సరం, నెల, వారం లేదా రోజులోని అత్యంత క్రియాశీల విషయాలు" - yearly: - title: "సంవత్సరంలోని అగ్ర" - monthly: - title: "నెలలోని అగ్ర" - weekly: - title: "వారంలోని అగ్ర" - daily: - title: "రోజులోని అగ్ర" - all: "మొత్తం సమయం" this_year: "ఈ సంవత్సరం" this_month: "ఈ నెల" this_week: "ఈ వారం" @@ -1372,8 +1313,6 @@ te: admins: 'అధికారులు:' blocked: 'నిలిపిన:' suspended: 'సస్పెండయిన:' - private_messages_short: "PMs" - private_messages_title: "ప్రైవేటు సందేశాలు" space_free: "{{size}} ఖాలీ" uploads: "ఎగుమతులు" backups: "బ్యాకప్లు" @@ -1407,7 +1346,6 @@ te: agree_title: "ఈ కేతనం సరైనదిగా చెప్పండి" agree_flag_modal_title: "ఒప్పుకొను మరియు" agree_flag_hide_post: "ఒప్పుకొని (టపా దాచు మరియు ప్రైవేటు సందేశం పంపు)" - agree_flag_hide_post_title: "ఈ టపాను ఆటోమేటిగ్గా దాచిపెట్టి. సభ్యుడిని సవరించమని మనవిచేస్తూ ఒక ప్రైవేటు సందేశం పంపు. " agree_flag_restore_post: "ఒప్పుకొను (టపా పునస్తాపించు)" agree_flag_restore_post_title: "ఈ టపా పునస్తాపించు" agree_flag: "కేతనంతో ఒప్పుకో" @@ -1512,18 +1450,15 @@ te: read_only: enable: title: "కేవలం చదివే రీతే చేతనం చేయి" - text: "కేవలం చదివే రీతి చేతనించు" confirm: "మీరు నిజంగా కేవలం చదివే రీతి చేతనంచేయాలనుకుంటున్నారా?" disable: title: "కేవలం చదివే రీతి అచేతనం చేయి" - text: "కేవలం చదివే రీతి అచేతనం చేయి" logs: none: "ఇంకా లాగులు లేవు..." columns: filename: "దస్త్రం పేరు" size: "పరిమాణం" upload: - text: "ఎగుమతి" uploading: "ఎగుమతవుతోంది..." success: "'{{filename}}' విజయవంతంగా ఎగుమతయింది." error: "'{{filename}}' ఎగుమతించుటలో దోషం: {{message}}" @@ -1531,33 +1466,26 @@ te: is_running: "ఒక కార్యం ప్రస్తుతం నడుస్తోంది..." failed: "కార్యం విఫలమైంది. దయచేసి లాగులు చూడండి." cancel: - text: "రద్దు" title: "ప్రస్తుత కార్యం రద్దుచేయి" confirm: "మీరు నిజంగానే ప్రస్తుత కార్యం రద్దుచేయాలనుకుంటున్నారా?" backup: - text: "బ్యాకప్" title: "బ్యాకప్ సృష్టించు" confirm: "మీరు కొత్త బ్యాకప్ మొదలుపెట్టాలనుకుంటున్నారా?" without_uploads: "అవులు (దస్త్రాలు కాకుండా)" download: - text: "దిగుమతి" title: "బ్యాకప్ దిగుమతించు" destroy: - text: "తొలగించు" title: "బ్యాకప్ తొలగించు" confirm: "మీరు నిజంగానే బ్యాకప్ ను నాశనం చేయాలనుకుంటున్నారా?" restore: is_disabled: "సైటు అమరికల్లో రీస్టోరు అచేతనమైంది. " - text: "రీస్టోరు" title: "బ్యాకప్ ను రీస్టోరు చేయి" confirm: "మీరు నిజంగానే ఈ బ్యాకప్ ను రీస్టోరు చేయాలనుకుంటున్నారా?" rollback: - text: "రోల్ బ్యాక్" title: "డాటాబేసును గత పనిచేసే స్థితికి రోల్ బ్యాక్ చేయి" confirm: "మీరు నిజంగానే డాటాబేసును గత పనిచేసే స్థితికి రోల్ బ్యాక్ చేయాలనుకుంటున్నారా?" export_csv: user_archive_confirm: "మీరు నిజంగా మీ టపాల దిగుమతి కోరుకుంటున్నారా ?" - success: "ఎగుమతి మొదలైంది. పూర్తయ్యాక మీకు ప్రైవేటు సందేశం ద్వారా ప్రకటన వస్తుంది. " failed: "ఎగుమతి విఫలమైంది. దయచేసి లాగులు చూడంది. " rate_limit_error: "టపాలు కేవలం రోజుకు ఒకసారి మాత్రమే దిగుమతించుకోగలరు. దయచేసి రేపు ప్రయత్నించండి." button_text: "ఎగుమతి" diff --git a/config/locales/client.tr_TR.yml b/config/locales/client.tr_TR.yml index e039e1f34c..63c6a21432 100644 --- a/config/locales/client.tr_TR.yml +++ b/config/locales/client.tr_TR.yml @@ -186,13 +186,12 @@ tr_TR: sent_by_user: "{{user}} tarafından yollandı" sent_by_you: "Sizin tarafınızdan yollandı" directory: - title: "Kullanıcı Dizini" - likes_given: "Beğendikleriniz" - likes_received: "Beğenilenleriniz" + title: "Kullanıcılar" + likes_given: "Verilen" + likes_received: "Alınan" time_read: "Okuma Zamanı" topic_count: "Konular" post_count: "Cevaplar" - no_results: "Bu zaman aralığı için sonuç bulunamadı." groups: visible: "Grup tüm kullanıcılar tarafından görüntülenebiliyor" title: @@ -211,8 +210,6 @@ tr_TR: '2': "Alınan Beğeniler" '3': "İşaretlenenler" '4': "Konular" - '5': "Gönderiler" - '6': "Cevaplar" '7': "Bahsedenler" '9': "Alıntılar" '10': "Yıldızlılar" @@ -257,8 +254,6 @@ tr_TR: mute: "Sustur" edit: "Ayarları Düzenle" download_archive: "Gönderilerimi İndir" - new_private_message: "Yeni Özel Mesaj" - private_message: "Özel Mesaj" private_messages: "Mesajlar" activity_stream: "Aktivite" preferences: "Ayarlar" @@ -295,6 +290,8 @@ tr_TR: delete_yourself_not_allowed: "Hesabınızı şu an silemezsiniz. Hesabınızı silmesi için bir admin ile iletişime geçin." unread_message_count: "Mesajlar" admin_delete: "Sil" + users: "Kullanıcılar" + muted_users: "Susturuldu" staff_counters: flags_given: "yararlı bayraklar" flagged_posts: "bayraklanan gönderiler" @@ -333,7 +330,6 @@ tr_TR: uploaded_avatar_empty: "Özel resim ekleyin" upload_title: "Resminizi yükleyin" upload_picture: "Resim Yükle" - image_is_not_a_square: "Uyarı: resminizi kırptık; kare şeklinde değildi. " change_profile_background: title: "Profil Arkaplanı" instructions: "Profil arkaplanları ortalanacak ve genişlikleri 850px olacak. " @@ -390,8 +386,6 @@ tr_TR: every_three_days: "her üç gün" weekly: "haftalık" every_two_weeks: "her iki hafta" - email_direct: "Birisi gönderime cevap verdiğinde, benden alıntı yaptığında ya da benden @username bahsettiğinde bana bir email at" - email_private_messages: "Biri bana özel mesaj yazdığında bana bir email at" email_always: "Sayfada etkin olduğum anlarda da e-posta bildirimleri yollamaya devam et" other_settings: "Diğer" categories_settings: "Kategoriler" @@ -435,7 +429,6 @@ tr_TR: none: "Henüz kimseyi buraya davet etmediniz. Tek tek davetiye gönderebilirsiniz, ya da toplu bir davetiye dosyası yükleyerek birçok kişiyi aynı anda davet edebilirsiniz. " text: "Dosyadan Toplu Davet Gönder" uploading: "Yükleniyor..." - success: "Dosya başarıyla yüklendi, işlem tamamlandığında özel mesajla bilgilendirileceksiniz." error: "'{{filename}}' yüklenirken bir hata oluştu: {{message}}" password: title: "Parola" @@ -459,7 +452,6 @@ tr_TR: stream: posted_by: "Gönderen" sent_by: "Yollayan" - private_message: "özel mesaj" the_topic: "konu" loading: "Yükleniyor..." errors: @@ -512,9 +504,7 @@ tr_TR: enable: "Silinen Gönderileri Gizle" disable: "Silinen Gönderileri Göster" private_message_info: - title: "Özel Mesaj" invite: "Diğerlerini Davet Et..." - remove_allowed_user: "Bu özel mesajdan {{name}} isimli kullanıcıyı çıkarmak istediğinize emin misiniz?" email: 'E-posta' username: 'Kullanıcı Adı' last_seen: 'Görülmüş' @@ -526,7 +516,7 @@ tr_TR: title: "Yeni Hesap Oluştur" failed: "Bir şeyler ters gitti. Bu e-posta adına daha önce bir kayıt oluşturulmuş olabilir, parolamı unuttum bağlantısını dene." forgot_password: - title: "Parolamı Unuttum" + title: "Parola Sıfırla" action: "Parolamı unuttum" invite: "Kullanıcı adınızı ya da e-posta adresinizi girin, size parola sıfırlama e-postası yollayalım." reset: "Parola Sıfırla" @@ -599,8 +589,7 @@ tr_TR: reply_here: "Buradan Cevapla" reply: "Cevapla" cancel: "İptal et" - create_topic: "Yeni Konu" - create_pm: "Özel Mesaj" + create_topic: "Konu Oluştur" title: "Ya da Ctrl+Enter'a bas" users_placeholder: "Kullanıcı ekle" title_placeholder: "Kısa bir cümlede açılamak gerekirse bu tartışmanın konusu nedir?" @@ -650,11 +639,9 @@ tr_TR: units: "(saat sayısı)" examples: 'Saat sayısını giriniz (24).' notifications: - title: "@isim bahsedilişleri, gönderileriniz ve konularınıza atılan cevaplar, özel mesajlarla vb. ilgili bildiriler" none: "Şu an için bildirimler yüklenemiyor." more: "daha eski bildirimleri görüntüle" total_flagged: "tüm bayraklı gönderiler" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -688,7 +675,6 @@ tr_TR: user: "@{{username}} kullancısına ait gönderiler arasında ara" category: "\"{{category}}\" kategorisinde ara" topic: "Bu konuda ara" - private_messages: "Özel mesajlarda ara" site_map: "başka bir konu listesine veya kategoriye git" go_back: 'geri dön' not_logged_in_user: 'güncel aktivitelerin ve ayarların özetinin bulunduğu kullanıcı sayfası' @@ -738,7 +724,6 @@ tr_TR: filter_to: "Bu konuda {{post_count}} gönderi" create: 'Yeni Konu' create_long: 'Yeni bir konu oluştur' - private_message: 'Özel mesajlaşma başlat' list: 'Konular' new: 'yeni konu' unread: 'okunmamış' @@ -810,13 +795,11 @@ tr_TR: '0': 'Bu konuya ait tüm bildirimleri görmezden geliyorsunuz.' watching_pm: title: "Gözleniyor" - description: "Bu özel mesajlaşmadaki her yeni gönderi için bir bildirim alacaksınız. Okunmamış ve yeni gönderilerin sayısı konunun yanında belirecek." watching: title: "Gözleniyor" description: "Bu konudaki her yeni gönderi için bir bildirim alacaksınız. Okunmamış ve yeni gönderilerin sayısı konunun yanında belirecek." tracking_pm: title: "Takip Ediliyor" - description: "Okunmamış ve yeni gönderi sayısı özel mesaj bölümünün yanında belirecek. Biri @isim şeklinde sizden bahsederse ya da gönderinize cevap verirse bildirim alacaksınız." tracking: title: "Takip Ediliyor" description: "Okunmamış ve yeni gönderi sayısı başlığın yanında belirecek. Biri @isim şeklinde sizden bahsederse ya da gönderinize cevap verirse bildirim alacaksınız." @@ -825,10 +808,8 @@ tr_TR: description: "Biri @isim şeklinde sizden bahsederse ya da gönderinize cevap verirse bildirim alacaksınız." regular_pm: title: "Standart" - description: "Biri @isim şeklinde sizden bahsederse ya da gönderinize özel mesajdan cevap verirse bildirim alacaksınız." muted_pm: title: "Susturuldu" - description: "Bu özel mesajlaşmayla ilgili hiç bir bildirim almayacaksınız." muted: title: "Susturuldu" description: "Bu konu okunmamışlar sekmenizde belirmeyecek, ve hakkında hiç bir bildirim almayacaksınız." @@ -837,18 +818,11 @@ tr_TR: delete: "Konuyu Sil" open: "Konuyu Aç" close: "Konuyu Kapat" - auto_close: "Otomatik Kapatma" - make_banner: "Manşet Konusu Yap" - remove_banner: "Manşet Konusunu Kaldır" - pin: "Konuyu Başa Tuttur" - unpin: "Konuyu Başa Tutturma" - pin_globally: "Konuyu Her Yerde Başa Tuttur" unarchive: "Konuyu Arşivden Kaldır" archive: "Konuyu Arşivle" invisible: "Listelenmemiş Yap" visible: "Listelenmiş Yap" reset_read: "Görüntüleme Verilerini Sıfırla" - multi_select: "Gönderileri Seç" reply: title: 'Cevapla' help: 'bu konuya bir cevap oluşturmaya başlayın' @@ -866,22 +840,15 @@ tr_TR: automatically_add_to_groups_optional: "Bu davet şu gruplara erişimi de içerir: (opsiyonel, sadece adminler için)" automatically_add_to_groups_required: "Bu davet şu gruplara erişimi de içerir: (Gerekli, sadece adminler için)" invite_private: - title: 'Özel Mesajlaşmaya Davet Et' email_or_username: "Davet edilenin E-postası veya Kullanıcı Adı" email_or_username_placeholder: "e-posta veya kullanıcı adı" action: "Davet et" - success: "O kullanıcıyı bu özel mesajlaşmaya katılması için davet ettik. " error: "Üzgünüz, kullanıcı davet edilirken bir hata oluştu." group_name: "grup adı" invite_reply: title: 'Davet et' - action: 'E-posta ile davet et' - help: 'arkadaşlarınıza davet gönderin ki tek bir tık ile bu konuyu cevaplayabilsinler' - to_topic: "Arkadaşınıza, giriş yapması gerekmeden, bir linke tıklayarak hemen konuya katılıp cevap yazabilmesi için kısa bir e-posta göndereceğiz." to_forum: "Arkadaşınıza, giriş yapması gerekmeden, bir linke tıklayarak katılabilmesi için kısa bir e-posta göndereceğiz. " email_placeholder: 'isim@örnek.com' - success: " {{email}} adresine bir davet emaili attık. Davetiniz kabul edildiğinde size bir bildirim göndereceğiz. Kullanıcı sayfanızdaki davetiyeler sekmesinden davetlerinizi takip edebilirsiniz." - error: "Üzgünüz, o kişiyi davet edemedik. Zaten kullanıcı olabilir mi? (Davetler oran sınırlarına tabiidir.)" login_reply: 'Cevaplamak için Giriş Yap' filters: n_posts: @@ -920,13 +887,10 @@ tr_TR: description: other: {{count}} gönderi seçtiniz. post: - reply: "{{replyAvatar}} {{username}} kullanıcısına ait {{link}} cevaplanıyor" reply_topic: "Cevapla {{link}}" quote_reply: "alıntıyla cevapla" - edit: "{{replyAvatar}} {{username}} ait {{link}} düzenleniyor" edit_reason: "Neden: " post_number: "gönderi {{number}}" - in_reply_to: "cevapla" last_edited_on: "gönderinin en son düzenlenme tarihi" reply_as_new_topic: "Bağlantılı Konu Oluşturarak Cevapla" continue_discussion: "{{postLink}} Gönderisinden tartışmaya devam ediliyor:" @@ -1013,8 +977,6 @@ tr_TR: inappropriate: "{{icons}} uygunsuz olarak bayraklandı" notify_moderators: "{{icons}} bildirim gönderilen moderatörler" notify_moderators_with_url: "{{icons}} bildirim gönderilen moderatörler" - notify_user: "{{icons}} özel mesaj gönderdi" - notify_user_with_url: "{{icons}} özel mesaj gönderdi" bookmark: "{{icons}} bunu işaretledi" like: "{{icons}} bunu beğendi" vote: "{{icons}} bunun için oyladı" @@ -1023,7 +985,6 @@ tr_TR: spam: "Bunu spam olarak bayrakladınız" inappropriate: "Bunu uygunsuz olarak bayrakladınız" notify_moderators: "Bunu moderasyon için bayrakladınız" - notify_user: "Bu kullanıcıya özel mesaj gönderdiniz" bookmark: "Bu gönderiyi işaretlediniz" like: "Bunu beğendiniz" vote: "Bu gönderiyi oyladınız" @@ -1036,8 +997,6 @@ tr_TR: other: "Siz ve {{count}} diğer kişi bunu uygunsuz olarak bayrakladı" notify_moderators: other: "Siz ve {{count}} diğer kişi bunu denetlenmesi için bayrakladı" - notify_user: - other: "Siz ve {{count}} diğer kişi bu kullanıcıya özel mesaj gönderdi" bookmark: other: "Siz ve {{count}} diğer kişi bu gönderiyi işaretledi" like: @@ -1053,8 +1012,6 @@ tr_TR: other: "{{count}} kişi bunu uygunsuz olarak bayrakladı" notify_moderators: other: "{{count}} kişi bunu moderasyon için bayrakladı" - notify_user: - other: "{{count}} kişi bu kullanıcıya özel mesaj gönderdi" bookmark: other: "{{count}} kişi bu gönderiyi işaretledi" like: @@ -1156,7 +1113,6 @@ tr_TR: private_reminder: 'bayraklar özeldir, sadece görevlilere gözükür' action: 'Gönderiyi Bayrakla' take_action: "Aksiyon Al" - notify_action: 'Özel mesaj' delete_spammer: "Spamciyi Sil" delete_confirm: "Bu kullanıcının %{posts} gönderisini ve %{topics} konusunu silmek, hesabını kapatmak, kullandığı IP Adresi %{ip_address} üzerinden hesap açılmasını engellemek, ve %{email} e-posta adresini kalıcı engellenenler listesine eklemek üzeresiniz. Bu kullanıcının gerçekten spamci olduğuna emin misiniz?" yes_delete_spammer: "Evet, Spamciyi Sil" @@ -1178,7 +1134,6 @@ tr_TR: flagging_topic: title: "Topluluğumuzun medeni kalmasına yardımcı olduğunuz için teşekkürler!" action: "Konuyu Bayrakla" - notify_action: "Özel mesaj" topic_map: title: "Konu Özeti" links_shown: "tüm {{totalLinks}} bağlantıları göster..." @@ -1275,15 +1230,6 @@ tr_TR: top: title: "En Popüler" help: "geçtiğimiz yıl, ay, hafta veya gündeki en etkin başlıklar" - yearly: - title: "Yılın En Popülerleri" - monthly: - title: "Ayın En Popülerleri" - weekly: - title: "Haftanın En Popülerleri" - daily: - title: "Günün En Popülerleri" - all: "Tüm Zamanlar" this_year: "Bu yıl" this_month: "Bu ay" this_week: "Bu hafta" @@ -1320,8 +1266,6 @@ tr_TR: admins: 'Adminler:' blocked: 'Engellenmiş:' suspended: 'Uzaklaştırılmışlar:' - private_messages_short: "Özel Mesajlar" - private_messages_title: "Özel Mesajlar" space_free: "{{size}} serbest" uploads: "yüklemeler" backups: "yedeklemeler" @@ -1355,7 +1299,6 @@ tr_TR: agree_title: "Bu bayrağı geçerli ve doğru olarak onayla" agree_flag_modal_title: "Onayla ve..." agree_flag_hide_post: "Onayla (gönderiyi gizle + özel mesaj yolla)" - agree_flag_hide_post_title: "Bu gönderiyi gizle ve kullanıcıya acilen düzenleme yapmasını belirten otomatik özel mesaj gönder" agree_flag_restore_post: "Kabul ediyorum (gönderiyi geri al)" agree_flag_restore_post_title: "Gönderiyi geri al" agree_flag: "Bayrağı onayla" @@ -1422,9 +1365,6 @@ tr_TR: name: "Ad" add: "Ekle" add_members: "Üye ekle" - automatic: - label: "Otomatik" - title: "Otomatik Gruplar" automatic_membership_email_domains: "Bu listedeki bir email alan adıyla kaydolan kullanıcılar otomatik olarak bu gruba eklenecekler:" automatic_membership_retroactive: "Varolan kayıtlı kullanıcıları eklemek için aynı email alan adı kuralını uygula" api: @@ -1458,18 +1398,15 @@ tr_TR: read_only: enable: title: "Salt-okunur modunu etkinleştir" - text: "Salt-okunur modunu etkinleştir" confirm: "Salt-okunur modunu etkinleştirmek istediğinize emin misiniz?" disable: title: "Salt-okunur modunu devre dışı bırak" - text: "Salt-okunur modunu devre dışı bırak" logs: none: "Henüz kayıt bulunmuyor..." columns: filename: "Dosya adı" size: "Boyut" upload: - text: "Yükle" uploading: "Yükleniyor..." success: "'{{filename}}' başarıyla yüklendi." error: "'{{filename}}': {{message}} yüklenirken bir hata oluştu" @@ -1477,33 +1414,26 @@ tr_TR: is_running: "İşlem devam ediyor..." failed: "{{operation}} gerçekleşemedi. Lütfen kayıtları kontrol edin." cancel: - text: "İptal et" title: "Devam eden işlemi iptal et" confirm: "Devam eden işlemi iptal etmek istediğinize emin misiniz?" backup: - text: "Yedek" title: "Yedek oluştur" confirm: "Yeni bir yedekleme başlatmak istiyor musunuz?" without_uploads: "Evet (dosya eklemeyin)" download: - text: "İndir" title: "Yedeği indir" destroy: - text: "Sil" title: "Yedeği kaldır" confirm: "Bu yedeği yok etmek istediğinize emin misiniz?" restore: is_disabled: "Geri getirme site ayarlarında devredışı bırakılmış." - text: "Geri Getir" title: "Yedeği geri getir" confirm: "Yedeği geri getirmek istediğinize emin misiniz?" rollback: - text: "Geri Çağır" title: "Veritabanını calışan son haline geri al." confirm: "Veri tabanını çalışan bir önceki versyonuna geri almak istediğinizden emin misiniz?" export_csv: user_archive_confirm: "Gönderilerinizi indirmek istediğinize emin misiniz ?" - success: "Dışarı aktarma başlatıldı, işlem tamamlandığında özel mesajla bilgilendirileceksiniz." failed: "Dışa aktarırken hata oluştu. Lütfen kayıtları kontrol edin." rate_limit_error: "Gönderiler günde bir kez indirilebilir, lütfen yarın tekrar deneyin." button_text: "Dışa aktar" diff --git a/config/locales/client.uk.yml b/config/locales/client.uk.yml index d3b62329d8..67deb7aa0a 100644 --- a/config/locales/client.uk.yml +++ b/config/locales/client.uk.yml @@ -176,8 +176,6 @@ uk: '2': "Отримані вподобання" '3': "Закладки" '4': "Теми" - '5': "Дописи" - '6': "Відповіді" '7': "Згадки" '9': "Цитати" '10': "Позначені зірочкою" @@ -217,8 +215,6 @@ uk: mute: "Mute" edit: "Редагувати налаштування" download_archive: "Завантажити мої дописи" - new_private_message: "Нове приватне повідомлення" - private_message: "Приватне повідомлення" private_messages: "Повідомлення" activity_stream: "Активність" preferences: "Налаштування" @@ -291,7 +287,6 @@ uk: uploaded_avatar_empty: "Додати інше зображення" upload_title: "Завантажити своє зображення" upload_picture: "Завантажити зображення" - image_is_not_a_square: "Попередження: ми обрізали Ваше зображення, оскільки воно не квадратне." change_profile_background: title: "Фон профіля" instructions: "Фон профіля буде відцентровано, його ширина 850 пікселів (за замовчуванням)." @@ -370,7 +365,6 @@ uk: stream: posted_by: "Опубліковано" sent_by: "Надіслано" - private_message: "приватне повідомлення" the_topic: "тема" loading: "Завантаження..." errors: @@ -409,9 +403,7 @@ uk: disabled_description: "Видалені дописи в цій темі показано." enable: "Сховати Видалені Дописи" private_message_info: - title: "Приватне повідомлення" invite: "Запросити інших..." - remove_allowed_user: "Ви точно хочете видалити {{name}} з цього приватного повідомлення?" email: 'Електронна пошта' username: 'Ім''я користувача' last_seen: 'Помічено востаннє' @@ -422,7 +414,6 @@ uk: title: "Створити Новий Обліковий Запис" failed: "Щось пішло не так; скоріше за все, цю електронну пошту вже зареєстровано, спробуйте посилання Забув пароль" forgot_password: - title: "Забув(ла) пароль" action: "Я забув(ла) свій пароль" invite: "Введіть своє ім'я користувача або адресу електронної скриньки, і ми надішлемо Вам лист для скинення пароля." reset: "Скинути пароль" @@ -478,8 +469,6 @@ uk: reply_here: "Відповісти тут" reply: "Відповісти" cancel: "Скасувати" - create_topic: "Нова тема" - create_pm: "Приватне повідомлення" title: "Or press Ctrl+Enter" users_placeholder: "Додати користувача" title_placeholder: "Про що це обговорення, у одному короткому реченні?" @@ -518,10 +507,8 @@ uk: toggler: "показати або сховати панель редагування" admin_options_title: "Необов'язкові налаштування персоналу для цієї теми" notifications: - title: "Сповіщення про згадку Вашого @імені, відповіді на Ваші дописи та теми, приватні повідомлення, тощо" more: "переглянути старіші сповіщення" total_flagged: "всього дописів, на які поскаржилися" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " upload_selector: @@ -573,7 +560,6 @@ uk: filter_to: "Показати {{post_count}} дописів в темі" create: 'Нова тема' create_long: 'Створити нову тему' - private_message: 'Надіслати приватне повідомлення' list: 'Теми' new: 'нова тема' title: 'Тема' @@ -635,7 +621,6 @@ uk: title: "Звичайно" muted_pm: title: "Ігнорувати" - description: "Ви ніколи не будете отримувати жодних сповіщень з цієї приватної переписки." muted: title: "Ігнорувати" description: "Ви ніколи не будете отримувати жодних сповіщень з цієї теми, і вона не буде відображатися у Вашій вкладці \"Непрочитані\"." @@ -644,13 +629,9 @@ uk: delete: "Видалити тему" open: "Відкрити тему" close: "Закрити тему" - auto_close: "Автоматичне закриття" - pin: "Закріпити тему" - unpin: "Відкріпити тему" unarchive: "Розархівувати тему" archive: "Заархівувати тему" reset_read: "Скинути дані про прочитаність" - multi_select: "Перемістити дописи" reply: title: 'Відповісти' help: 'почати складати відповідь на цю тему' @@ -666,15 +647,12 @@ uk: success_message: 'You successfully flagged this topic.' inviting: "Запрошуємо..." invite_private: - title: 'Запросити до приватного повідомлення' email_or_username: "Електронна скринька або ім'я запрошуваного користувача" email_or_username_placeholder: "електронна скринька або ім'я користувача" action: "Запросити" error: "Даруйте, під час запрошення цього користувача сталася помилка." invite_reply: title: 'Запрошення' - action: 'Надіслати запрошення' - help: 'надіслати запрошення друзям, щоб вони могли відповісти на цю тему в один клац' email_placeholder: 'електронна скринька' split_topic: title: "Перенесення до нової теми" @@ -709,13 +687,10 @@ uk: few: 'Ви обрали дописів: {{count}}.' other: 'Ви обрали дописів: {{count}}.' post: - reply: "У відповідь на {{link}} користувача {{replyAvatar}} {{username}}" reply_topic: "Відповідь на {{link}}" quote_reply: "відповісти на цитату" - edit: "Редагування {{link}} користувача {{replyAvatar}} {{username}}" edit_reason: "Причина: " post_number: "допис {{number}}" - in_reply_to: "Відповісти" last_edited_on: "допис востаннє редаговано" continue_discussion: "В продовження дискусії {{postLink}}:" follow_quote: "перейти до цитованого допису" @@ -781,8 +756,6 @@ uk: people: notify_moderators: "Звернули увагу модераторів: {{icons}}" notify_moderators_with_url: "Звернули увагу модераторів: {{icons}}" - notify_user: "Надіслали приватне повідомлення: {{icons}}" - notify_user_with_url: "Надіслали приватне повідомлення: {{icons}}" bookmark: "Лишили тут закладку: {{icons}}" like: "Вподобали це: {{icons}}" vote: "Проголосували за це: {{icons}}" @@ -791,7 +764,6 @@ uk: spam: "Ви поскаржилися на це як на спам" inappropriate: "Ви поскаржилися на це як на неприпустиме" notify_moderators: "Ви позначили допис для модерації" - notify_user: "Ви надіслали приватне повідомлення цьому користувачу" bookmark: "Ви лишили тут закладку" like: "Ви це вподобали" vote: "Ви проголосували за цей допис" @@ -869,7 +841,6 @@ uk: flagging: action: 'Поскаржитися на допис' take_action: "Вжити заходів" - notify_action: 'Сповістити' delete_spammer: "Видалити спамера" delete_confirm: "Ви збираєтеся видалити %{posts} дописів і %{topics} тем цього користувача, видалити його обліковий запис, заблокувати реєстрації з його IP-адреси %{ip_address} та додати його електронну скриньку %{email} до чорного списку заблокованих адрес. Ви впевнені, що цей користувач дійсно спамер?" yes_delete_spammer: "Так, видалити спамера" @@ -880,7 +851,6 @@ uk: left: "залишилось {{n}}" flagging_topic: action: "Flag Topic" - notify_action: "Notify" topic_map: title: "Підсумок теми" links_shown: "показати всі {{totalLinks}} посилання..." @@ -944,14 +914,6 @@ uk: help: "Останні теми в категорії {{categoryName}}" top: title: "Top" - yearly: - title: "Top Yearly" - monthly: - title: "Top Monthly" - weekly: - title: "Top Weekly" - daily: - title: "Top Daily" this_year: "This year" this_month: "This month" this_week: "This week" @@ -987,8 +949,6 @@ uk: admins: 'Адміни:' blocked: 'Заблоковані:' suspended: 'Призупинені:' - private_messages_short: "ПП" - private_messages_title: "Приватні повідомлення" reports: today: "Сьогодні" yesterday: "Вчора" @@ -1066,11 +1026,9 @@ uk: read_only: enable: title: "Enable the read-only mode" - text: "Enable read-only mode" confirm: "Are you sure you want to enable the read-only mode?" disable: title: "Disable the read-only mode" - text: "Disable read-only mode" logs: none: "No logs yet..." columns: @@ -1083,26 +1041,20 @@ uk: is_running: "An operation is currently running..." failed: "The {{operation}} failed. Please check the logs." cancel: - text: "Cancel" title: "Cancel the current operation" confirm: "Are you sure you want to cancel the current operation?" backup: - text: "Backup" title: "Create a backup" download: - text: "Download" title: "Download the backup" destroy: - text: "Delete" title: "Remove the backup" confirm: "Are you sure you want to destroy this backup?" restore: is_disabled: "Restore is disabled in the site settings." - text: "Restore" title: "Restore the backup" confirm: "Are your sure you want to restore this backup?" rollback: - text: "Rollback" title: "Rollback the database to previous working state" confirm: "Are your sure you want to rollback the database to the previous working state?" customize: diff --git a/config/locales/client.zh_CN.yml b/config/locales/client.zh_CN.yml index 1816ff64aa..9558084000 100644 --- a/config/locales/client.zh_CN.yml +++ b/config/locales/client.zh_CN.yml @@ -76,6 +76,7 @@ zh_CN: email: '用电子邮件发送这个链接' topic_admin_menu: "主题管理操作" emails_are_disabled: "所有的出站邮件已经被管理员全局禁用。将不发送任何邮件提醒。" + s3_deprecation_warning: "警告!Amazon S3 将不再能作为图片/附件存储区了。请按照指引迁移至本地存储。" edit: '编辑本主题的标题和分类' not_implemented: "非常抱歉,此功能暂时尚未实现!" no_value: "否" @@ -150,7 +151,7 @@ zh_CN: topic_count_unread: other: "{{count}} 未读主题。" topic_count_new: - other: "{{count}} 个新主题。" + other: "近期有 {{count}} 个主题。" click_to_show: "点此显示。" preview: "预览" cancel: "取消" @@ -165,6 +166,8 @@ zh_CN: undo: "重做" revert: "撤销" failed: "失败" + switch_to_anon: "匿名模式" + switch_from_anon: "退出匿名模式" banner: close: "隐藏横幅。" choose_topic: @@ -187,16 +190,24 @@ zh_CN: sent_by_user: "发送人 {{user}}" sent_by_you: "发送人 " directory: - title: "用户目录" + filter_name: "按用户名过滤" + title: "用户" likes_given: "赞" likes_received: "被赞" - topics_entered: "参与的主题" + topics_entered: "浏览" + topics_entered_long: "浏览过的主题" time_read: "阅读时间" topic_count: "主题" + topic_count_long: "创建的主题" post_count: "回复" - no_results: "该时间段内没有找到结果" + post_count_long: "回复帖子数量" + no_results: "没有找到结果。" + days_visited: "访问" + days_visited_long: "访问天数" + posts_read: "阅读" + posts_read_long: "阅读过的帖子" total_rows: - other: "找到 %{count} 个用户" + other: "%{count} 位用户" groups: visible: "群组对所有用户可见" title: @@ -215,8 +226,8 @@ zh_CN: '2': "被赞" '3': "书签" '4': "主题" - '5': "帖子" - '6': "回复" + '5': "回复" + '6': "回应" '7': "提到" '9': "引用" '10': "星标" @@ -229,14 +240,14 @@ zh_CN: no_subcategory: "无" category: "分类" posts: "新帖子" - topics: "新主题" + topics: "近期" latest: "最新" latest_by: "最新发表:" toggle_ordering: "排序控制" subcategories: "子分类" - topic_stats: "新主题的数量。" + topic_stats: "近期主题的数量。" topic_stat_sentence: - other: "在过去的 %{unit} 中有 %{count} 个新主题" + other: "在过去的 %{unit} 中有 %{count} 个主题" post_stats: "新帖子的数量。" post_stat_sentence: other: "在过去的 %{unit} 中有 %{count} 个新帖子" @@ -261,8 +272,8 @@ zh_CN: mute: "防打扰" edit: "修改设置" download_archive: "下载我的帖子" - new_private_message: "新私信" - private_message: "私信" + new_private_message: "新消息" + private_message: "消息" private_messages: "消息" activity_stream: "活动" preferences: "设置" @@ -289,7 +300,7 @@ zh_CN: mailing_list_mode: "每有一个新帖就发送一封邮件给我(除非我屏蔽了主题或者分类)" watched_categories: "已关注" watched_categories_instructions: "你将自动关注这些分类的所有新主题。你将收到新的帖子和主题的通知,并且会在靠近话题列表的地方增加一个关于未读和新帖子的数字。" - tracked_categories: "已跟踪" + tracked_categories: "已追踪" tracked_categories_instructions: "你将会自动追踪这些分类中的所有新主题。未读和新帖子数量将出现在每个主题后。" muted_categories: "已屏蔽" muted_categories_instructions: "你不会收到这些分类的新主题的任何通知,他们也不会出现在你的未读标签中。" @@ -299,8 +310,11 @@ zh_CN: delete_yourself_not_allowed: "你目前不能删除自己的帐号。联系管理员帮助你删除帐号。" unread_message_count: "消息" admin_delete: "删除" + users: "用户" + muted_users: "忽略" + muted_users_instructions: "禁止任何关于这些用户的通知。" staff_counters: - flags_given: "有用的标记" + flags_given: "有效标记" flagged_posts: "被报告的帖子" deleted_posts: "删除的帖子" suspensions: "禁用的" @@ -338,6 +352,7 @@ zh_CN: upload_title: "上传图片" upload_picture: "上传图片" image_is_not_a_square: "注意:我们已经裁剪了你的图片;它不是正方形的。" + cache_notice: "你已经成功地修改了头像,但是由于浏览器缓存,你可能要等待新头像生效。" change_profile_background: title: "个人资料背景" instructions: "个人资料背景将被居中,且默认宽度为 850px。" @@ -353,10 +368,11 @@ zh_CN: frequency: zero: "如果你没有阅读过我们想寄给你的内容,我们会立即发送电子邮件给你。" one: "如果你很久都没有出现了,我们才会发送电子邮件给你。" - other: "我们只会在您最近 {{count}} 分钟内没有访问时才会发送电子邮件给你。" + other: "我们只会在你最近 {{count}} 分钟内没有访问时才会发送电子邮件给你。" name: title: "名字" instructions: "你的全名(可选)" + instructions_required: "你的全名" too_short: "你设置的名字太短了" ok: "你的名字符合要求" username: @@ -394,13 +410,13 @@ zh_CN: every_three_days: "每三天" weekly: "每周" every_two_weeks: "每两周" - email_direct: "当有人引用我、回复我的帖子或提及@你时发送一封邮件给我" - email_private_messages: "当有人给发私信给我时发送一封邮件给我" + email_direct: "当有人引用我、回复我的帖子,@提及你或邀请你至主题时发送一封邮件给我" + email_private_messages: "当有人给发消息给我时发送一封邮件给我" email_always: "即使在论坛中活跃时也接收电子邮件提醒" other_settings: "其它" categories_settings: "分类" new_topic_duration: - label: "认为主题是新主题的条件:" + label: "近期主题的条件:" not_viewed: "我还没有浏览它们" last_here: "在你最近一次访问之后创建的" after_n_days: @@ -439,7 +455,7 @@ zh_CN: none: "你没有邀请过任何人。你可以发送个人邀请,或者上传一个批量邀请文件一次性邀请一批人。" text: "通过文件批量邀请" uploading: "上传中……" - success: "文件成功上传,当操作完成后你将被私信通知。" + success: "文件成功上传,当操作完成后你将收到消息通知。" error: "在上传 '{{filename}}' 时出现错误:{{message}}" password: title: "密码" @@ -463,7 +479,7 @@ zh_CN: stream: posted_by: "发送人" sent_by: "发送时间" - private_message: "私信" + private_message: "消息" the_topic: "本主题" loading: "载入中..." errors: @@ -516,9 +532,9 @@ zh_CN: enable: "隐藏已删除的帖子" disable: "显示已删除的帖子" private_message_info: - title: "私下交流" + title: "消息" invite: "邀请其他..." - remove_allowed_user: "是否将 {{name}} 从本条私信中移除?" + remove_allowed_user: "是否将{{name}}从本条消息中移除?" email: '电子邮箱' username: '用户名' last_seen: '最后一次活动时间' @@ -530,7 +546,7 @@ zh_CN: title: "创建新帐号" failed: "出问题了,有可能这个电子邮箱已经被注册了。试试忘记密码链接?" forgot_password: - title: "忘记密码" + title: "重置密码" action: "我忘记了我的密码" invite: "输入你的用户名和电子邮箱地址,我们会发送密码重置邮件给你。" reset: "重置密码" @@ -557,6 +573,7 @@ zh_CN: requires_invite: "抱歉,本论坛仅接受邀请注册。" not_activated: "你还不能登录。我们之前在 {{sentTo}} 发送了一封激活邮件给你。请按照邮件中的介绍来激活你的帐号。" not_allowed_from_ip_address: "你不能从该 IP 地址登录。" + admin_not_allowed_from_ip_address: "你不能从这个 IP 地址以管理员身份登录。" resend_activation_email: "点击此处重新发送激活邮件。" sent_activation_email_again: "我们在 {{currentEmail}} 又发送了一封激活邮件给你,邮件送达可能需要几分钟;请检查一下你邮箱的垃圾邮件文件夹。" google: @@ -602,8 +619,8 @@ zh_CN: reply_here: "在此回复" reply: "回复" cancel: "取消" - create_topic: "新主题" - create_pm: "私信" + create_topic: "创建主题" + create_pm: "消息" title: "或者按下 Ctrl + 回车" users_placeholder: "添加一个用户" title_placeholder: "简述此讨论内容是关于什么?" @@ -653,11 +670,11 @@ zh_CN: units: "(# 小时数)" examples: '输入小时数(24)。' notifications: - title: "使用 @用户名称 提及到你,回复你的帖子和主题,私信等等的通知消息" + title: "使用@名字提及到你,回复你的帖子和主题,消息等等的通知消息" none: "现在无法载入通知" more: "浏览以前的通知" total_flagged: "被报告帖子的总数" - mentioned: "@

    {{username}} {{description}}

    " + mentioned: "

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -665,6 +682,7 @@ zh_CN: liked: "

    {{username}} {{description}}

    " private_message: "

    {{username}} {{description}}

    " invited_to_private_message: "

    {{username}} {{description}}

    " + invited_to_topic: "

    {{username}} {{description}}

    " invitee_accepted: "

    {{username}} 已接受你的邀请

    " moved_post: "

    {{username}} 移动了 {{description}}

    " linked: "

    {{username}} {{description}}

    " @@ -691,7 +709,7 @@ zh_CN: user: "搜索 @{{username}} 的帖子" category: "搜索“{{category}}”分类" topic: "只搜索本主题" - private_messages: "搜索私信" + private_messages: "搜索消息" site_map: "去另一个主题列表或分类" go_back: '返回' not_logged_in_user: '显示当前活动和设置的用户页面' @@ -711,6 +729,7 @@ zh_CN: close_topics: "关闭话题" archive_topics: "存档主题" notification_level: "更改提示等级" + choose_new_category: "为主题选择新分类:" selected: other: "你已经选择了 {{count}}个主题" none: @@ -723,8 +742,9 @@ zh_CN: bookmarks: "你没有书签任何主题。" category: "没有{{category}}分类的主题。" top: "没有最佳主题。" + search: "没有搜索结果。" educate: - new: '

    这里是你的新主题。

    默认情况下,最近两天创建的主题是新主题,并会显示一个 的标识。

    你可以在你的 设置中改变这一行为。

    ' + new: '

    你讲发表新的主题。

    默认情况下,近两天创建的主题是近期主题,并会显示一个 的标识。

    你可以在你的 设置中改变这一行为。

    ' unread: '

    这里是你的未读主题。

    默认情况下,下述主题将被认为是未读的,并会显示未读数目: 1 如果你:

    • 创建了该主题
    • 回复了该主题
    • 阅读该主题超过 4 分钟

    或者你在主题底部的通知控制中选择了追踪或监视。

    你可以改变你的用户设置.

    ' bottom: latest: "没有更多主题可看了。" @@ -736,11 +756,12 @@ zh_CN: category: "没有更多{{category}}分类的主题了。" top: "没有更多最佳主题了。" bookmarks: "没有更多书签主题了。" + search: "没有更多搜索结果。" topic: filter_to: "只显示本主题中的 {{post_count}} 个帖子" create: '新主题' create_long: '创建一个新主题' - private_message: '开启一段私下交流' + private_message: '发送消息' list: '主题' new: '新主题' unread: '未读' @@ -801,7 +822,7 @@ zh_CN: '3_2': '因为你在关注此主题,所以你将收到相关通知。' '3_1': '因为你创建了此主题,所以你将收到相关通知。' '3': '因为你在关注此主题,所以你将收到相关通知。' - '2_8': '因为你在跟踪此分类,所以你将收到相关通知。' + '2_8': '因为你在追踪此分类,所以你将收到相关通知。' '2_4': '因为你在此主题内发表了回复,所以你将收到相关通知。' '2_2': '因为你在追踪此主题,所以你将收到相关通知。' '2': '因为你阅读了此主题,所以你将收到相关通知。' @@ -812,13 +833,13 @@ zh_CN: '0': '你将忽略关于此主题的所有通知。' watching_pm: title: "关注" - description: "一旦私信中有新消息,你都会收到通知。未读和新帖子的数量将显示在主题列表的每个主题后。" + description: "一旦消息中有新消息,你都会收到通知。未读和新帖子的数量将显示在主题列表的每个主题后。" watching: title: "关注" description: "一旦有关于这个主题的新帖子发表,你都会收到通知。未读贴的数量将出现在主题列表中每个主题的标题后。" tracking_pm: title: "追踪" - description: "未读和新帖子的数量将出现在私信旁。你只会在别人@你或回复你的主题时才会被提醒。" + description: "未读和新帖子的数量将出现在消息旁。你只会在别人@你或回复你的主题时才会被提醒。" tracking: title: "追踪" description: "未读贴和新帖的数量将出现在主题列表中每个主题的标题后。你只会在别人@你或有人回复了你的帖子时才会收到通知。" @@ -827,10 +848,10 @@ zh_CN: description: "当有人@你或者回复你的帖子时,你才会收到通知。" regular_pm: title: "常规" - description: "当有人@你或者回复你的私信时,你才会收到通知。" + description: "当有人@你或者回复你的消息时,你才会收到通知。" muted_pm: title: "防打扰" - description: "你不会收到关于此私信的任何通知。" + description: "你不会收到关于此消息的任何通知。" muted: title: "防打扰" description: "你不会收到关于此主题的任何通知,也不会在你的未阅选项卡中显示。" @@ -839,18 +860,21 @@ zh_CN: delete: "删除主题" open: "打开主题" close: "关闭主题" - auto_close: "自动关闭" - make_banner: "横幅主题" - remove_banner: "移除横幅主题" - pin: "置顶主题" - unpin: "解除主题置顶" - pin_globally: "全局置顶主题" + multi_select: "选择帖子..." + auto_close: "自动关闭..." + pin: "置顶主题..." + unpin: "解除主题置顶..." unarchive: "解除主题存档" archive: "存档主题" invisible: "使其不列于主题列表" visible: "使其列于主题列表" reset_read: "重置阅读数据" - multi_select: "选择帖子" + feature: + pin: "置顶主题" + unpin: "解除主题置顶" + pin_globally: "全局置顶主题" + make_banner: "横幅主题" + remove_banner: "移除横幅主题" reply: title: '回复' help: '开始给本主题撰写回复' @@ -864,26 +888,55 @@ zh_CN: title: '报告' help: '私下报告本帖以引起注意或者发送一条匿名通知' success_message: '你已成功报告本帖。' + feature_topic: + title: "设为精华主题" + pin: "将主题置于{{categoryLink}}分类最上方。" + confirm_pin: "你已经有了{{count}}个置顶主题。太多的置顶主题可能会困扰新用户和访客。你确定想要在该分类再置顶一个主题么?" + unpin: "从{{categoryLink}}分类最上方移除主题。" + pin_note: "用户可以给自己解除置顶主题。" + already_pinned: + zero: "{{categoryLink}}没有置顶主题。" + one: "现在置顶在{{categoryLink}}分类的主题:1。" + other: "现在置顶在{{categoryLink}}分类的主题:{{count}}。" + pin_globally: "将主题置顶在所有主题列表的最上方,直到职员解除置顶。" + confirm_pin_globally: "你已经有了{{count}}个全局置顶主题。太多的置顶主题可能会困扰新用户和访客。你确定想要再全局置顶一个主题么?" + unpin_globally: "将主题从所有主题列表的最上方移除。" + global_pin_note: "用户可以自己解除主题状态。" + already_pinned_globally: + zero: "没有全局置顶的主题。" + one: "现在全局置顶的主题:1。" + other: "现在全局置顶的主题:{{count}}。" + make_banner: "将主题置为所有页面顶端的横幅主题。" + remove_banner: "移除所有页面顶端的横幅主题。" + banner_note: "用户能点击关闭隐藏横幅。一次只能有一个横幅主题。" + already_banner: + zero: "没有横幅主题。" + one: "当前有一个横幅主题。" inviting: "邀请中..." automatically_add_to_groups_optional: "这个邀请也包括了这些群组的权限:(可选,仅管理员)" automatically_add_to_groups_required: "这个邀请也包括了访问这些群组的权限:(可选,仅管理员)" invite_private: - title: '邀请进行私下交流' + title: '邀请消息交流' email_or_username: "受邀人的电子邮箱或用户名" email_or_username_placeholder: "电子邮箱地址或用户名" action: "邀请" - success: "我们已经邀请用户加入这个私聊。" + success: "我们已经邀请了该用户加入这个消息交流。" error: "抱歉,在邀请该用户时发生了错误。" group_name: "群组名" invite_reply: title: ' 邀请' - action: '邮件邀请' - help: '向你的朋友发送邀请,他们只需要一个点击就能回复这个主题' - to_topic: "我们将发送一封简洁的邮件。你的朋友可以立即加入并通过点击一个链接回复这个主题,不需要登录。" + username_placeholder: "用户名" + action: '发送邀请' + help: '邮件或通知邀请其他人至主题' to_forum: "我们将发送一封简洁的邮件让你的朋友通过点击一个链接参与讨论,不需要登录。" + sso_enabled: "输入你想邀请的用户的用户名至该主题。" + to_topic_blank: "输入你想邀请的用户的用户名或邮箱地址至该主题" + to_topic_email: "你已经输入了邮箱地址。我们将发送一封邮件邀请让你的朋友可直接回复该主题。" + to_topic_username: "你已经输入了用户名。我们将发送提醒至该用户,其中将包含一个邀请他们至该主题的链接。" email_placeholder: '电子邮箱地址' - success: "我们发了一封邀请邮件给 {{email}}。我们将在邀请被接受后通知你。检查你的用户中的邀请标签页来追踪你的邀请。" - error: "抱歉,我们不能邀请这个人。可能他已经是个用户了?(邀请还有频率限制)" + success_email: "我们发了一封邀请邮件给 {{emailOrUsername}}。我们将在邀请被接受后通知你。检查你的用户中的邀请标签页来追踪你的邀请。" + success_username: "我们已经邀请了该用户参与该主题。" + error: "抱歉,我们不能邀请这个人。可能他已经被邀请了?(邀请还有频率限制)" login_reply: '登录后回复' filters: n_posts: @@ -925,10 +978,9 @@ zh_CN: reply: "回复 {{replyAvatar}} {{username}} 发表的 {{link}}" reply_topic: "回复 {{link}}" quote_reply: "引用回复" - edit: "编辑 {{link}}" + edit: "编辑 {{replyAvatar}} {{username}} 发表的 {{link}}" edit_reason: "理由:" post_number: "帖子 {{number}}" - in_reply_to: "回复给" last_edited_on: "最后修改于" reply_as_new_topic: "回复为联结主题" continue_discussion: "从 {{postLink}} 继续讨论:" @@ -1015,8 +1067,8 @@ zh_CN: inappropriate: "{{icons}} 标记此为不当内容" notify_moderators: "{{icons}} 向版主报告它" notify_moderators_with_url: "{{icons}} 通知了版主" - notify_user: "{{icons}} 发起了一个私下交流" - notify_user_with_url: "{{icons}} 发送了一条私有消息" + notify_user: "{{icons}} 发送了一个消息" + notify_user_with_url: "{{icons}} 发送了一个消息" bookmark: "{{icons}} 对它做了书签" like: "{{icons}} 赞了它" vote: "{{icons}} 对它投票" @@ -1025,7 +1077,7 @@ zh_CN: spam: "你报告它为垃圾信息" inappropriate: "你报告它为不当内容" notify_moderators: "你向版主报告了它" - notify_user: "你对该用户发起了一个私下交流" + notify_user: "你已经发了一个消息给该用户" bookmark: "你对该帖做了书签" like: "你赞了它" vote: "你对该帖投票支持" @@ -1039,7 +1091,7 @@ zh_CN: notify_moderators: other: "你和其他 {{count}} 人报告它需要审核" notify_user: - other: "你和其他 {{count}} 人发送了一条私信给这个用户" + other: "你和 {{count}} 个其他用户发了一个消息给该用户" bookmark: other: "你和其他 {{count}} 人收藏了这个帖子" like: @@ -1056,7 +1108,7 @@ zh_CN: notify_moderators: other: "{{count}} 人报告它需要修改" notify_user: - other: "{{count}} 人给这个用户发送了私信" + other: "{{count}} 人给这个用户发送了消息" bookmark: other: "{{count}} 人收藏了这个帖子" like: @@ -1158,7 +1210,7 @@ zh_CN: private_reminder: '标记是不公开的,只有职员才可以见到' action: '报告帖子' take_action: "立即执行" - notify_action: '通知' + notify_action: '消息' delete_spammer: "删除垃圾发布者" delete_confirm: "你将删除该用户的 %{posts} 个帖子和 %{topics} 个主题,删除该账户,阻止其IP地址 %{ip_address} 再次注册,并将其邮件地址 %{email} 加入黑名单。确定吗?" yes_delete_spammer: "确定" @@ -1180,7 +1232,7 @@ zh_CN: flagging_topic: title: "感谢帮助社群远离邪恶!" action: "报告帖子" - notify_action: "私信" + notify_action: "消息" topic_map: title: "主题概要" links_shown: "显示所有 {{totalLinks}} 个链接..." @@ -1209,6 +1261,12 @@ zh_CN: posts: "帖子" posts_lowercase: "帖子" posts_long: "本主题有 {{number}} 个帖子" + posts_likes_MF: | + 这个主题有 {count, plural, other {# 个帖子}}{ratio, select, + low {,有很多人赞了该帖} + med {,有非常多人赞了该帖} + high {,大多数人赞了该帖} + other {}} original_post: "原始帖" views: "浏览" views_lowercase: "浏览" @@ -1239,6 +1297,9 @@ zh_CN: read: title: "已阅" help: "你已经阅读过的主题" + search: + title: "搜索" + help: "搜索所有主题" categories: title: "分类" title_in: "分类 - {{categoryName}}" @@ -1254,13 +1315,13 @@ zh_CN: other: "{{count}} 条未读" new: lower_title_with_count: - one: "1 个新主题" - other: "{{count}} 个新主题" - lower_title: "新主题" + one: "1 个近期主题" + other: "{{count}} 个近期主题" + lower_title: "近期主题" title: - zero: "新主题" - one: "新主题(1)" - other: "新主题({{count}})" + zero: "近期主题" + one: "近期主题(1)" + other: "近期主题({{count}})" help: "最近几天创建的主题" posted: title: "我的帖子" @@ -1277,14 +1338,17 @@ zh_CN: top: title: "热门" help: "最近一年、一月、一周或一天的最活跃主题" + all: + title: "不限时间" yearly: - title: "年度热门" + title: "年度" monthly: - title: "月度热门" + title: "月度" weekly: - title: "每周热门" + title: "每周" daily: - title: "每日热门" + title: "每天" + all_time: "不限时间" this_year: "今年" this_month: "本月" this_week: "本周" @@ -1321,8 +1385,8 @@ zh_CN: admins: '管理员:' blocked: '禁止参与讨论:' suspended: '禁止登录' - private_messages_short: "私信" - private_messages_title: "私密信息" + private_messages_short: "消息" + private_messages_title: "消息" space_free: "{{size}} 空闲" uploads: "上传" backups: "备份" @@ -1356,7 +1420,7 @@ zh_CN: agree_title: "确认这个标记有效且正确" agree_flag_modal_title: "批准并..." agree_flag_hide_post: "批准(隐藏并发送私信)" - agree_flag_hide_post_title: "隐藏帖子并自动发送私信要求作者修改" + agree_flag_hide_post_title: "隐藏帖子并自动发送消息要求用户修改" agree_flag_restore_post: "同意 (还原帖子)" agree_flag_restore_post_title: "还原这篇帖子" agree_flag: "批准这个标记" @@ -1423,12 +1487,8 @@ zh_CN: name: "名字" add: "添加" add_members: "添加成员" - custom: - label: "定制" - title: "定制分组" - automatic: - label: "自动" - title: "自动分组" + custom: "定制" + automatic: "自动" automatic_membership_email_domains: "用户注册时邮箱域名若与列表完全匹配则自动添加至这个群组:" automatic_membership_retroactive: "应用同样的邮件域名规则添加已经注册的用户" api: @@ -1462,18 +1522,19 @@ zh_CN: read_only: enable: title: "启用只读模式" - text: "打开只读模式" + label: "启用只读模式" confirm: "你确定要打开只读模式吗?" disable: title: "禁用只读模式" - text: "关闭只读模式" + label: "关闭只读模式" logs: none: "暂无日志" columns: filename: "文件名" size: "大小" upload: - text: "上传" + label: "上传" + title: "上传备份至实例" uploading: "上传中……" success: "'{{filename}}'已成功上传。" error: "在上传的'{{filename}}'过程中出现错误:({{message}})" @@ -1481,33 +1542,32 @@ zh_CN: is_running: "已有操作正在执行" failed: "执行{{operation}}失败。请检查日志。" cancel: - text: "取消" + label: "取消" title: "取消当前操作" confirm: "你确定要取消当前操作吗?" backup: - text: "备份" + label: "备份" title: "建立一个备份" confirm: "你确定要开始建立一个备份吗?" without_uploads: "是(不包括文件)" download: - text: "下载" + label: "下载" title: "下载该备份" destroy: - text: "删除" title: "删除备份" confirm: "你确定要删除该备份吗?" restore: is_disabled: "站点设置中禁用了恢复功能。" - text: "恢复" + label: "恢复" title: "恢复该备份" confirm: "你确定要重置该备份吗?" rollback: - text: "回滚" + label: "回滚" title: "将数据库回滚到之前的工作状态" confirm: "你确定要将数据库回滚到之前的工作状态吗?" export_csv: user_archive_confirm: "你确定要下载你的帖子吗?" - success: "导出开始,当操作完成后你将被私信通知。" + success: "导出开始,完成后你将被通过消息通知。" failed: "导出失败。请检查日志。" rate_limit_error: "帖子只能每天下载一次,请明天再重试。" button_text: "导出" @@ -1811,8 +1871,12 @@ zh_CN: approve_bulk_success: "成功!所有选定的用户已批准并通知。" time_read: "阅读次数" anonymize: "匿名用户" + anonymize_confirm: "你确定要匿名化该账户信息吗?这将改变用户名和邮件地址,并且重置所有个人主页信息。" + anonymize_yes: "是的,匿名化该账户" + anonymize_failed: "在匿名化该账户时遇到问题。" delete: "删除用户" delete_forbidden_because_staff: "不能删除管理员和版主。" + delete_posts_forbidden_because_staff: "不能删除管理员和版主的所以帖子。" delete_forbidden: other: "用户如果有帖子将不能删除。在试图尝试删除一个用户前删除所有的帖子(%{count} 天前的帖子不能被删除)" cant_delete_all_posts: @@ -2021,7 +2085,7 @@ zh_CN: title: '跳转' home: 'g 然后 h 首页(最新内容)' latest: 'g 然后 l 最新内容' - new: 'g 然后 n 新主题' + new: 'g 然后 n 近期主题' unread: 'g 然后 u 未读主题' categories: 'g 然后 c 分类列表' top: 'g, t 顶部' diff --git a/config/locales/client.zh_TW.yml b/config/locales/client.zh_TW.yml index 1f8542218b..0309aefb9b 100644 --- a/config/locales/client.zh_TW.yml +++ b/config/locales/client.zh_TW.yml @@ -187,16 +187,16 @@ zh_TW: sent_by_user: "寄件者為 {{user}}" sent_by_you: "寄件者為 " directory: - title: "用戶目錄" - likes_given: "給予喜愛" - likes_received: "接受喜愛" - topics_entered: "進入話題" + filter_name: "通過用戶名過濾" + title: "用戶" + likes_given: "送出的" + likes_received: "收到的" time_read: "閱讀多少次" topic_count: "話題" post_count: "回覆" - no_results: "該時間段內沒有找到結果。" + no_results: "未找到任何結果。" total_rows: - other: "找到 %{count} 個用戶" + other: "%{count} 用戶" groups: visible: "群組可被所有用戶看到" title: @@ -215,8 +215,6 @@ zh_TW: '2': "已收到的讚" '3': "書籤" '4': "討論話題" - '5': "文章" - '6': "回覆" '7': "提到" '9': "引用" '10': "收藏" @@ -261,8 +259,6 @@ zh_TW: mute: "靜音" edit: "編輯喜好設定" download_archive: "下載我的文章" - new_private_message: "新私人訊息" - private_message: "私人訊息" private_messages: "訊息" activity_stream: "活動" preferences: "偏好設定" @@ -299,6 +295,9 @@ zh_TW: delete_yourself_not_allowed: "帳號不能刪除。請聯絡管理人。" unread_message_count: "訊息" admin_delete: "刪除" + users: "用戶" + muted_users: "靜音" + muted_users_instructions: "禁止來自這些用戶的所有通知。" staff_counters: flags_given: "有幫助的投訴" flagged_posts: "已投訴的文章" @@ -337,7 +336,6 @@ zh_TW: uploaded_avatar_empty: "新增一張自訂圖片" upload_title: "上傳你的圖片" upload_picture: "上傳圖片" - image_is_not_a_square: "警告:我們裁切了你的圖片,因為該圖片不是正方形的。" change_profile_background: title: "基本資料背景圖案" instructions: "個人資料背景會被置中,且默認寬度為850px。" @@ -394,8 +392,6 @@ zh_TW: every_three_days: "每三天" weekly: "每週" every_two_weeks: "每兩星期" - email_direct: "當有人引用、回覆我的發文,或以 @用戶名稱 提到我時,請以電子郵件通知我。" - email_private_messages: "當有人寄給我私人訊息時,以電子郵件通知我。" email_always: "不要因為我在網站上活動而不寄信通知。" other_settings: "其它" categories_settings: "分類" @@ -439,7 +435,6 @@ zh_TW: none: "你尚未邀請任何人。你可以發送個別邀請,或者透過上傳邀請名單一次邀請一群人。" text: "從檔案大量邀請" uploading: "正在上傳..." - success: "檔案已上傳成功,處理完畢後將以私人訊息通知你。" error: "上傳 '{{filename}}' 時發生問題:{{message}}" password: title: "密碼" @@ -463,7 +458,6 @@ zh_TW: stream: posted_by: "發表者" sent_by: "寄件者" - private_message: "私人訊息" the_topic: "討論話題" loading: "正在載入" errors: @@ -516,9 +510,7 @@ zh_TW: enable: "隱藏已刪除的文章" disable: "顯示已刪除的文章" private_message_info: - title: "私人訊息" invite: "邀請其他人..." - remove_allowed_user: "您想要從此私人訊息移除 {{name}} 嗎?" email: '電子郵件' username: '用戶名稱' last_seen: '出現時間' @@ -530,7 +522,7 @@ zh_TW: title: "建立新帳號" failed: "發生了某些錯誤,可能此電子郵件地址已經註冊過,請試試看忘記密碼連結" forgot_password: - title: "忘記密碼" + title: "寄出密碼" action: "我忘了我的密碼" invite: "請輸入用戶名稱或電子郵件地址,我們將寄給你重設密碼的郵件。" reset: "重設密碼" @@ -603,8 +595,7 @@ zh_TW: reply_here: "在此回覆" reply: "回覆" cancel: "取消" - create_topic: "發表話題" - create_pm: "私人訊息" + create_topic: "建立討論話題" title: "或者按 Ctrl+Enter" users_placeholder: "新增用戶" title_placeholder: "用一個簡短的句子來描述想討論的內容。" @@ -654,11 +645,9 @@ zh_TW: units: "(# 小時數)" examples: '輸入小時數(24)' notifications: - title: "以 @用戶名稱 提到、回覆您的文章與討論話題、私人訊息... 的通知。" none: "目前無法載入通知訊息。" more: "檢視較舊的通知" total_flagged: "所有被投訴的文章" - mentioned: "@

    {{username}} {{description}}

    " quoted: "

    {{username}} {{description}}

    " replied: "

    {{username}} {{description}}

    " posted: "

    {{username}} {{description}}

    " @@ -692,7 +681,6 @@ zh_TW: user: "搜尋 @{{username}} 的文章" category: "搜尋 \"{{category}}\" 分類" topic: "搜尋此討論話題" - private_messages: "查詢私人訊息" site_map: "到另一個討論話題列表或分類" go_back: '返回' not_logged_in_user: '用戶頁面包含目前活動及喜好的總結' @@ -712,6 +700,7 @@ zh_TW: close_topics: "關閉討論話題" archive_topics: "已封存的討論話題" notification_level: "改變通知等級" + choose_new_category: "為主題選擇新類別:" selected: other: "你已選擇了 {{count}} 個討論話題。" none: @@ -741,7 +730,6 @@ zh_TW: filter_to: "在討論話題裡顯示 {{post_count}} 文章" create: '新討論話題' create_long: '建立新討論話題' - private_message: '建立私人訊息' list: '討論話題' new: '新討論話題' unread: '未讀' @@ -813,13 +801,11 @@ zh_TW: '0': '你正忽略此討論話題的所有通知。' watching_pm: title: "關注中" - description: "當此私人信息有新回覆時會通知你,討論話題旁將會顯示未讀及新文章數。" watching: title: "關注" description: "當此討論話題有新回覆時會通知你,討論話題旁將會顯示未讀及新文章數。" tracking_pm: title: "追蹤" - description: "未讀和新文章的數量將會出現在私訊旁。你只會在別人標記您 @name 或回覆您的主題時才會被提醒。" tracking: title: "追蹤" description: "未讀和新文章的數量將出現在討論話題旁。您只會在別人@您或回覆您的主題時才會收到通知。" @@ -828,10 +814,8 @@ zh_TW: description: "只有當有人@您或者回覆您的文章時,您才會收到通知。" regular_pm: title: "一般" - description: "只有當有人@您或者用私人訊息回覆您的文章時,您才會收到通知。" muted_pm: title: "靜音" - description: "你將不會收到任何關於此私人訊息的通知,此討論話題也不會出現在你的未讀清單裡。" muted: title: "靜音" description: "你將不會收到任何關於此討論話題的通知,此討論話題也不會出現在你的未讀分頁裡。" @@ -840,18 +824,11 @@ zh_TW: delete: "刪除討論話題" open: "開放討論話題" close: "關閉討論話題" - auto_close: "自動關閉" - make_banner: "橫幅討論話題" - remove_banner: "移除橫幅討論話題" - pin: "置頂討論話題" - unpin: "復原已置頂的討論話題" - pin_globally: "全區置頂討論話題" unarchive: "復原已封存的討論話題" archive: "封存討論話題" invisible: "不出現在列表上" visible: "出現在列表上" reset_read: "重置讀取資料" - multi_select: "選取要移動的文章" reply: title: '回覆' help: '回覆此討論話題' @@ -865,26 +842,23 @@ zh_TW: title: '投訴' help: '投訴此討論話題,或以私訊通知管理員' success_message: '已投訴此討論話題。' + feature_topic: + title: "擁有這個話題" + already_banner: + zero: "沒有頂置的話題。" inviting: "正在邀請..." automatically_add_to_groups_optional: "邀請時同時加入以下群組: (選填, 此為管理員設定)" automatically_add_to_groups_required: "邀請時同時加入以下群組: (必填, 此為管理員設定)" invite_private: - title: '邀請參與私人訊息' email_or_username: "受邀請者的電子郵件地址或用戶名稱" email_or_username_placeholder: "電子郵件地址或用戶名稱" action: "邀請" - success: "我們已經向該用戶發出邀請,請他參與此私人訊息的討論。" error: "抱歉,向此用戶發出邀請時發生錯誤。" group_name: "群組名稱" invite_reply: title: '邀請' - action: '送出邀請' - help: '送出邀請給朋友,他們可以按信裡的連結直接回覆' - to_topic: "我們將向你的朋友發出一封電子郵件,他不必登入,只要按電子郵件裡的連結就可以快速回覆此討論話題。" to_forum: "我們將向你的朋友發出一封電子郵件,他不必登入,他只要按電子郵件裡的連結就可以加入此論壇。" email_placeholder: '電子郵件地址' - success: "我們已將邀請寄至 {{email}},當受邀者接受邀請時我們會再通知你,你也可以在你的用戶頁面的邀請清單查看邀請狀態。" - error: "抱歉,我們無法邀請此人,他可能已經是此論壇的用戶? (送出兩次邀請之間需要等待一段時間。)" login_reply: '登入以發表回應' filters: n_posts: @@ -923,13 +897,10 @@ zh_TW: description: other: 你已選擇了 {{count}} 篇文章。 post: - reply: "回覆由 {{replyAvatar}} {{username}} 發表的 {{link}}" reply_topic: "回覆至 {{link}}" quote_reply: "引用回覆" - edit: "編輯由 {{replyAvatar}} {{username}} 發表的 {{link}}" edit_reason: "原因: " post_number: "文章 {{number}}" - in_reply_to: "回覆" last_edited_on: "文章最近編輯的時間" reply_as_new_topic: "回覆為關連的討論話題" continue_discussion: "繼續 {{postLink}} 的討論:" @@ -1016,8 +987,6 @@ zh_TW: inappropriate: "{{icons}} 標示為不適內容" notify_moderators: "{{icons}} 已通知板主" notify_moderators_with_url: "{{icons}} 已通知板主" - notify_user: "{{icons}} 已送出私人訊息" - notify_user_with_url: "{{icons}} 已送出私人訊息" bookmark: "{{icons}} 已加上書籤" like: "{{icons}} 已按讚" vote: "{{icons}} 已投票支持" @@ -1026,7 +995,6 @@ zh_TW: spam: "你已投訴此文章為垃圾" inappropriate: "你已投訴此文章內容不妥" notify_moderators: "你已通知版主此文章" - notify_user: "你已送出私人訊息給這位用戶" bookmark: "你已將此文章加上書籤" like: "你已在此文章按讚" vote: "你已在此文章投票支持" @@ -1039,8 +1007,6 @@ zh_TW: other: "你與其他 {{count}} 人已投訴此文章為不當內容" notify_moderators: other: "你與其他 {{count}} 人已投訴此文章請板主處理" - notify_user: - other: "你與其他 {{count}} 人傳送了私人訊息給此用戶" bookmark: other: "你與 {{count}} 個人將此文章加上書籤" like: @@ -1056,8 +1022,6 @@ zh_TW: other: "{{count}} 人已投訴此文章為不當內容" notify_moderators: other: "{{count}} 人已投訴此文章請板主處理" - notify_user: - other: "{{count}} 人傳送了私人訊息給此用戶" bookmark: other: "{{count}} 個人將此文章加上書籤" like: @@ -1159,7 +1123,6 @@ zh_TW: private_reminder: '標記是不公開的,只有 工作人員才可看到' action: '投訴文章' take_action: "執行動作" - notify_action: '通知' delete_spammer: "刪除垃圾文章發送者" delete_confirm: "您將刪除此用戶的 %{posts} 則文章與 %{topics} 個討論話題、移除他的帳號、封鎖從他使用的 IP %{ip_address} 登入、將他的電子郵件地址 %{email} 加入永久封鎖名稱,你確定此人真的發送垃圾文章嗎?" yes_delete_spammer: "是的,刪除垃圾文章發送者" @@ -1181,7 +1144,6 @@ zh_TW: flagging_topic: title: "感謝幫助社群遠離邪惡!" action: "投訴討論話題" - notify_action: "Notify" topic_map: title: "討論話題摘要" links_shown: "顯示所有 {{totalLinks}} 個連結..." @@ -1278,15 +1240,6 @@ zh_TW: top: title: "精選" help: "在本年、月、週或日最熱門的討論話題" - yearly: - title: "本年精選" - monthly: - title: "本月精選" - weekly: - title: "本週精選" - daily: - title: "本日精選" - all: "所有時間" this_year: "本年" this_month: "本月" this_week: "本週" @@ -1323,8 +1276,6 @@ zh_TW: admins: '管理員:' blocked: '已封鎖:' suspended: '已停權:' - private_messages_short: "私訊" - private_messages_title: "私人訊息" space_free: "{{size}} 可用空間" uploads: "上傳" backups: "備份檔" @@ -1358,7 +1309,6 @@ zh_TW: agree_title: "確認此投訴為有效且正確" agree_flag_modal_title: "批准並且 ..." agree_flag_hide_post: "批准 (隱藏文章 + 送出私人訊息)" - agree_flag_hide_post_title: "隱藏此文章,並自動向此用戶送出私人訊息,要求盡快修改它" agree_flag_restore_post: "同意(還原文章)" agree_flag_restore_post_title: "回復此文章" agree_flag: "同意投訴" @@ -1425,12 +1375,6 @@ zh_TW: name: "名稱" add: "加入" add_members: "新增成員" - custom: - label: "自訂" - title: "自訂群組" - automatic: - label: "自動" - title: "自動群組" automatic_membership_email_domains: "註冊的用戶的電子郵件地址網域,完全符合列表裡某項時,會自動加進這個群組裡:" automatic_membership_retroactive: "套用相同的電子郵件網域規則到已經註冊的用戶上:" api: @@ -1464,18 +1408,15 @@ zh_TW: read_only: enable: title: "啟動唯讀模式" - text: "啟動唯讀模式" confirm: "你確定要啟動唯讀模式?" disable: title: "關閉啟動唯讀模式" - text: "關閉啟動唯讀模式" logs: none: "尚無紀錄..." columns: filename: "文件名稱" size: "大小" upload: - text: "上傳" uploading: "上傳中..." success: "'{{filename}}' 已成功被上載" error: "上載時發生問題: '{{filename}}': {{message}}" @@ -1483,33 +1424,26 @@ zh_TW: is_running: "指令執行中..." failed: "{{operation}} 執行失敗。請觀看紀錄。" cancel: - text: "取消" title: "取消現行指令" confirm: "你確定要消取現行指令嗎?" backup: - text: "備份" title: "新增備份" confirm: "你確定要新增備份嗎?" without_uploads: "是 ( 不包含檔案 )" download: - text: "下載" title: "下載備份" destroy: - text: "刪除" title: "刪除備份" confirm: "你確定要刪除備份嗎?" restore: is_disabled: "此站設定已關閉復原" - text: "復原" title: "復原備份" confirm: "你確定要復原備份嗎?" rollback: - text: "回溯" title: "回溯資料庫到以前的工作階段" confirm: "你確定要回溯資料庫到以前的工作階段?" export_csv: user_archive_confirm: "你確定要下載你的文章嗎?" - success: "開始匯出,處理完畢後將以私人訊息通知你。" failed: "匯出失敗。請觀看紀錄。" rate_limit_error: "文章每天只能下載一次,請明天再試。" button_text: "匯出" diff --git a/config/locales/plurals.rb b/config/locales/plurals.rb index 6a2e21f25a..8a13eda06e 100644 --- a/config/locales/plurals.rb +++ b/config/locales/plurals.rb @@ -24,7 +24,7 @@ :es => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, :et => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, :eu => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, - :fa => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, + :fa_IR => { :i18n => { :plural => { :keys => [:other], :rule => lambda { |n| :other } } } }, :fi => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, :fil => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| [0, 1].include?(n) ? :one : :other } } } }, :fo => { :i18n => { :plural => { :keys => [:one, :other], :rule => lambda { |n| n == 1 ? :one : :other } } } }, diff --git a/config/locales/server.cs.yml b/config/locales/server.cs.yml index fb6efd12b5..f76a467687 100644 --- a/config/locales/server.cs.yml +++ b/config/locales/server.cs.yml @@ -88,7 +88,6 @@ cs: num_posts: "Příspěvky:" num_participants: "Účastníci:" read_full_topic: "Číst celé téma" - private_message_abbrev: "SZ" rss_description: latest: "Poslední témata" hot: "Populární témata" @@ -463,23 +462,18 @@ cs: user_to_user_private_messages: title: "Uživatelské soukromé zprávy" xaxis: "Den" - yaxis: "Počet soukromých zpráv" system_private_messages: title: "Systémové soukromé zprávy" xaxis: "Den" - yaxis: "Počet soukromých zpráv" moderator_warning_private_messages: title: "Moderátorská varování" xaxis: "Den" - yaxis: "Počet soukromých zpráv" notify_moderators_private_messages: title: "Moderátorská upozornění" xaxis: "Den" - yaxis: "Počet soukromých zpráv" notify_user_private_messages: title: "Uživatelská upozornění" xaxis: "Den" - yaxis: "Počet soukromých zpráv" top_referrers: title: "Odkazovatelé" xaxis: "Uživatel" @@ -522,10 +516,8 @@ cs: title: "Příručka pro nové uživatele" welcome_user: title: "Uvítání: Nový uživatel" - description: "Soukromá zpráva, která je automaticky zaslaná novým uživatelům, když se zaregistrují." welcome_invite: title: "Uvítání: Pozvaný uživatel" - description: "Soukromá zpráva, která je automaticky zaslaná novým pozvaným uživatelům, když přijmou pozvánku." login_required_welcome_message: title: "Vyžadováno přihlášení: Uvítací zpráva" description: "Uvítací zpráva, která je zobrazena nepřihlášeným uživatelům, je-li zapnuto nastavení 'vyžadovat přihlášení'." @@ -578,7 +570,6 @@ cs: sso_url: "URL pro single sign on" sso_overrides_email: "Přepisuje místní email tím z dat SSO (VAROVÁNÍ: v důsledku normalizování lokálních emailů může dojít k nesrovnalostem)" sso_overrides_username: "Přepisuje místní uživatelské jméno tím z dat SSO (VAROVÁNÍ: kvůli rozdílnostem v požadavcích na uživatelské jméno může dojít k nesrovnalostem)" - sso_overrides_name: "Přepisuje místní jméno tím z dat SSO (VAROVÁNÍ: kvůli normalizování místního jména může dojít k nesrovnalostem)" enable_yahoo_logins: "Povolit přihlašování přes Yahoo" google_oauth2_client_id: "Client ID vaší Google aplikace." google_oauth2_client_secret: "Client secret vaší Google aplikace." @@ -598,7 +589,6 @@ cs: max_flags_per_day: "Maximální počet nahlášení, která smí uživatel za den poslat." max_edits_per_day: "Maximální počet úprav, které smí uživatel za den udělat." max_topics_per_day: "Maximální počet témat, který smí uživatel za den vytvořit." - max_private_messages_per_day: "Maximální počet soukromých zpráv, které smí uživatel za den poslat." clean_orphan_uploads_grace_period_hours: "Grace period (in hours) before an orphan upload is removed." purge_deleted_uploads_grace_period_days: "Grace period (in days) before a deleted upload is erased." min_trust_to_create_topic: "The minimum trust level required to create a new topic." @@ -629,8 +619,6 @@ cs: edited: "%{display_username} upravil váš příspěvek v %{link}" posted: "%{display_username} zaslal příspěvek do %{link}" moved_post: "%{display_username} přesunul váš příspěvek do %{link}" - private_message: "%{display_username} vám zaslal soukromou zprávu: %{link}" - invited_to_private_message: "%{display_username} vás pozval k soukromé zprávě: %{link}" invitee_accepted: "%{display_username} přijal vaši pozvánku" search: types: @@ -735,12 +723,6 @@ cs: reply_by_email: "Pro odpověd stačí odepsat na tento email, nebo navštivte %{base_url}%{url} ve vašem prohlížeči." visit_link_to_respond: "Pro odpověď navštive %{base_url}%{url} ve vašem prohlížeči." posted_by: "Zaslal uživatel %{username} dne %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} invited you to a private message '%{topic_title}'" - text_body_template: | - %{username} invited you to a private message '%{topic_title}' on %{site_name}: - - Please visit this link to view the topic: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{username} vás citoval v '%{topic_title}'" text_body_template: | diff --git a/config/locales/server.da.yml b/config/locales/server.da.yml index c099918101..b2e0fcd3fb 100644 --- a/config/locales/server.da.yml +++ b/config/locales/server.da.yml @@ -112,7 +112,6 @@ da: num_posts: "Indlæg:" num_participants: "Deltagere:" read_full_topic: "Læs hele emnet" - private_message_abbrev: "PM" rss_description: latest: "Seneste emner" hot: "Populære emner" @@ -395,8 +394,6 @@ da: notify_moderators: email_title: 'Emnet "%{title}" kræver moderator-opmærksomhed' email_body: "%{link}\n\n%{message}" - flagging: - you_must_edit: '

    Dit indlæg er blevet flaget for mange gange. Se venligst dine private beskeder.

    ' archetypes: regular: title: "Almindeligt emne" @@ -459,23 +456,18 @@ da: user_to_user_private_messages: title: "Bruger-til-bruger" xaxis: "Dag" - yaxis: "Antal private beskeder" system_private_messages: title: "System" xaxis: "Dag" - yaxis: "Antal private beskeder" moderator_warning_private_messages: title: "Moderatoradvarsler" xaxis: "Dag" - yaxis: "Antal private beskeder" notify_moderators_private_messages: title: "Underret moderatorer" xaxis: "Dag" - yaxis: "Antal private beskeder" notify_user_private_messages: title: "Underret bruger" xaxis: "Dag" - yaxis: "Antal private beskeder" top_referrers: title: "Top henvisere" xaxis: "bruger" @@ -532,10 +524,8 @@ da: description: "Vejledning og vigtig information til nye brugere." welcome_user: title: "Velkomst: Ny bruger" - description: "En privat besked som automatisk sendes til nye brugere når de tilmelder sig." welcome_invite: title: "Velkomst: Inviteret bruger" - description: "En privat besked som automatisk sendes til alle nye inviterede brugere når de accepterer en anden brugers invitation." login_required_welcome_message: title: "Log ind påkrævet: Velkomstbesked" description: "Velkomstbesked som vises til anonyme brugere når indstillingen 'log ind påkrævet' er aktiveret." @@ -553,11 +543,9 @@ da: site_settings: default_locale: "Standardsproget for denne Discourse-instans (ISO 639-1 kode)." min_post_length: "Minimumlængde tilladt for indlæg i tegn" - min_private_message_post_length: "Minimumlængde tilladt for private beskeder i tegn" max_post_length: "Maksimal længde af indlæg i tegn" min_topic_title_length: "Minimumslængde af emnetitel i tegn." max_topic_title_length: "Maksimumslængde af emnetitel i tegn." - min_private_message_title_length: "Minimumslængde af titel på privat besked i tegn" allow_uncategorized_topics: "Tillad emner at blive oprettet uden en kategori." unique_posts_mins: "Hvor mange minutter der skal gå før en bruger kan skrive et indlæg med det samme indhold igen." queue_jobs: "KUN FOR UDVIKLERE! ADVARSEL! Brug sidekiq som jobkø. Hvis dette slås fra går dit site i stykker." @@ -623,8 +611,6 @@ da: edited: "%{display_username} redigerede dit indlæg i %{link}" posted: "%{display_username} skrev et indlæg i %{link}" moved_post: "%{display_username} flyttede dit indlæg til %{link}" - private_message: "%{display_username} sendte dig en privat besked: %{link}" - invited_to_private_message: "%{display_username} inviterede dig til en privat samtale: %{link}" invitee_accepted: "%{display_username} accepterede din invitation" search: types: @@ -687,16 +673,6 @@ da: subject_template: "Indlæg skjult på grund af feedback fra brugerne" welcome_user: subject_template: "Velkommen til %{site_name}!" - text_body_template: | - Tak fordi du oprettede dig på %{site_name} - og velkommen! - - %{new_user_tips} - - Vi tror på [civiliseret opførsel](%{base_url}/guidelines) til alle tider. - - Nyd dit ophold! - - (Hvis du har brug for at kommunikere privat med [staben](%{base_url}/about) som en ny bruger, kan du bare svare på denne private besked.) welcome_invite: subject_template: "Velkommen til %{site_name}!" too_many_spam_flags: @@ -728,12 +704,6 @@ da: reply_by_email: "For at svare kan du svare på denne e-mail eller gå til %{base_url}%{url} i din browser." visit_link_to_respond: "For at svare kan du gå til %{base_url}%{url} i din browser." posted_by: "Oprettet af %{username} den %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} inviterede dig til en privat besked '%{topic_title}'" - text_body_template: | - %{username} inviterede dig til en privat besked '%{topic_title}' på %{site_name} - - Besøg dette link for at se emnet: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{username} svarede på dit indlæg i emnet '%{topic_title}'" text_body_template: | @@ -781,7 +751,6 @@ da: %{respond_instructions} digest: why: "Et kort resume af %{site_link} siden dit sidste besøg %{last_seen_at}" - subject_template: "[%{site_name}] Uddrag for %{date}" new_activity: "Ny aktivitet på dine emner og indlæg:" top_topics: "Populære emner" other_new_topics: "Populære emner" diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index 2233fa54ce..49bc2f04dc 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -20,6 +20,7 @@ de: is_reserved: "ist reserviert" purge_reason: "Stillgelegtes, nicht aktives Konto wurde automatisch gelöscht." disable_remote_images_download_reason: "Der Download von Bildern wurde deaktiviert, weil nicht mehr genug Plattenplatz vorhanden war." + anonymous: "Anonym" errors: format: '%{attribute} %{message}' messages: @@ -127,7 +128,6 @@ de: num_posts: "Beiträge:" num_participants: "Teilnehmer:" read_full_topic: "Lese das vollständige Thema" - private_message_abbrev: "PN" rss_description: latest: "Aktuelle Themen" hot: "Beliebte Themen" @@ -376,7 +376,7 @@ de: activation: action: "Aktiviere dein Benutzerkonto" already_done: "Entschuldige, dieser Link zur Aktivierung des Benutzerkontos ist nicht mehr gültig. Ist dein Konto schon aktiviert?" - please_continue: "Dein neuer Account ist jetzt bestätigt; du wirst auf die Startseite weitergeleitet." + please_continue: "Dein neues Konto ist jetzt bestätigt; du wirst auf die Startseite weitergeleitet." continue_button: "Weiter zu %{site_name}" welcome_to: "Willkommen bei %{site_name}!" approval_required: "Bevor du auf das Forum zugreifen kannst, muss dein neues Konto noch von einem Moderator genehmigt werden. Du erhältst eine E-Mail, sobald dies geschehen ist!" @@ -396,9 +396,9 @@ de: description: 'Dieser Beitrag enthält Inhalte, die eine vernünftige Person als anstößig, beleidigend oder unsere Richtlinien verletzend auffassen würde.' long_form: 'dies als unangemessen gemeldet' notify_user: - title: 'Private Nachricht an {{username}}' + title: 'Nachricht an {{username}}' description: 'Dieser Beitrag enthält etwas, worüber ich mit dem Autor direkt und persönlich reden möchte. Wird nicht gemeldet.' - long_form: 'privat angeschriebener Benutzer' + long_form: 'angeschriebener Benutzer' email_title: 'Dein Beitrag in „%{title}“' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -435,7 +435,6 @@ de: email_title: 'Das Thema "%{title}" benötigt die Aufmerksamkeit eines Moderators' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Dein Beitrag wurde von der Community als Verstoß gemeldet. Bitte beachte deine privaten Nachrichten.

    ' user_must_edit: '

    Dieser Beitrag wurde von der Community gemeldet und ist vorübergehend ausgeblendet.

    ' archetypes: regular: @@ -464,19 +463,19 @@ de: signups: title: "Neue Benutzer" xaxis: "Tag" - yaxis: "Zahl neuer Nutzer" + yaxis: "Anzahl neuer Nutzer" topics: title: "Themen" xaxis: "Day" - yaxis: "Zahl neuer Themen" + yaxis: "Anzahl neuer Themen" posts: title: "Beiträge" xaxis: "Tag" - yaxis: "Zahl neuer Beiträge" + yaxis: "Anzahl neuer Beiträge" likes: title: "„Gefällt mir“" xaxis: "Tag" - yaxis: "Zahl neuer „Gefällt mir“" + yaxis: "Anzahl neuer „Gefällt mir“" flags: title: "Meldungen" xaxis: "Tag" @@ -500,23 +499,23 @@ de: user_to_user_private_messages: title: "Benutzer-zu-Benutzer" xaxis: "Tag" - yaxis: "Anzahl privater Nachrichten" + yaxis: "Anzahl der Nachrichten" system_private_messages: title: "System" xaxis: "Tag" - yaxis: "Anzahl privater Nachrichten" + yaxis: "Anzahl der Nachrichten" moderator_warning_private_messages: title: "Warnungen von Moderatoren" xaxis: "Tag" - yaxis: "Anzahl privater Nachrichten" + yaxis: "Anzahl der Nachrichten" notify_moderators_private_messages: title: "Meldungen an Moderatoren" xaxis: "Tag" - yaxis: "Anzahl privater Nachrichten" + yaxis: "Anzahl der Nachrichten" notify_user_private_messages: title: "Meldungen an Benutzer" xaxis: "Tag" - yaxis: "Anzahl privater Nachrichten" + yaxis: "Anzahl der Nachrichten" top_referrers: title: "Top Referrers" xaxis: "Benutzer" @@ -596,7 +595,6 @@ de: title_nag: "Gib einen Namen für deine Website ein. Aktualisiere dazu den „title“ in den Einstellungen." site_description_missing: "Gib eine kurze Beschreibung deiner Website ein, die in Suchergebnissen angezeigt werden soll. Aktualisiere dazu die „site_description“ in den Einstellungen." consumer_email_warning: "Deine Seite verwendet Gmail (oder einen anderen für Endkunden gedachten Mailserver) um E-Mails zu versenden. Gmail hat eine Schranke bezüglich des Sendens von E-Mails. Um die E-Mail-Zustellung zu gewährleisten, solltest du die Verwendung eines anderen E-Mail-Diensts in Erwägung ziehen." - site_contact_username_warning: "Gib den Benutzernamen eines Mitarbeiters an, in dessen Namen wichtige, automatisch erzeugte private Nachrichten gesendet werden sollen. Ändere site_contact_username in den Einstellungen." notification_email_warning: "Benachrichtigungs-E-Mails werden nicht von einer gültigen, zu deiner Domain gehörenden E-Mail-Adresse versandt; der E-Mail-Versand wird unberechenbar und unzuverlässig sein. Bitte trage in den Einstellungen unter notification_email eine gültige lokale E-Mail-Adresse ein." content_types: education_new_reply: @@ -610,10 +608,9 @@ de: description: "Leitfaden und wichtige Informationen für neue Benutzer" welcome_user: title: "Willkommen: Neuer Benutzer" - description: "Eine private Nachricht welche automatisch an alle Benutzer gesendet wird welche sich anmelden." + description: "Eine Nachricht, welche automatisch an alle Benutzer gesendet wird welche sich anmelden." welcome_invite: title: "Willkommen: Eingeladener Benutzer" - description: "Eine private Nachricht welche automatisch an alle eingeladenen Benutzer gesendet wird, wenn diese die Einladung annehmen." login_required_welcome_message: title: "Anmeldung erforderlich: Willkommensnachricht" description: "Willkommensnachricht welche angezeigt wird wenn der Benutzer nicht angemeldet ist und die Einstellung 'login required' aktiviert ist." @@ -635,11 +632,10 @@ de: default_locale: "Die Standardsprache dieser Discourse-Instanz (kodiert in ISO 639-1)." allow_user_locale: "Erlaube Benutzern ihre eigene Interfacesprache zu wählen" min_post_length: "Minimal zulässige Beitragslänge in Zeichen." - min_private_message_post_length: "Minimale zulässige Beitragslänge in Zeichen für private Nachrichten" + min_first_post_length: "Minimal zulässige Länge des ersten Beitrags (eines Themas) in Zeichen" max_post_length: "Maximale zulässige Beitragslänge in Zeichen." min_topic_title_length: "Minimale zulässige Titellänge von Themen in Zeichen." max_topic_title_length: "Maximale zulässige Titellänge von Themen in Zeichen." - min_private_message_title_length: "Minimale zulässige Titellänge von privaten Nachrichten in Zeichen." min_search_term_length: "Minimale zulässige Länge der Suche in Zeichen." allow_uncategorized_topics: "Erlaube Themen ohne Kategorie" uncategorized_description: "Beschreibung der Kategorie für unkategorisierte Themen. Leer lassen, wenn keine Beschreibung erwünscht ist." @@ -673,7 +669,6 @@ de: digest_logo_url: "Alternatives Logo, das oben in E-Mail-Zusammenfassungen verwendet wird. Wenn leer wird `logo_url` verwendet. Zum Beispiel: http://example.com/logo.png " logo_small_url: "Kleine Logo-Grafik oben links auf der Seite, die beim Herunterscrollen angezeigt wird. Falls leer wird ein \"Home\" Zeichen angezeigt." favicon_url: "Das Favicon deiner Website, siehe http://de.wikipedia.org/wiki/Favicon" - mobile_logo_url: "Die statische Logo-Grafik oben links auf deiner Seite für mobile Geräte. Falls leer wird der Name der Seite angezeigt." 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" @@ -684,7 +679,6 @@ de: summary_likes_required: "Mindestanzahl an \"Gefällt mir\" Wertungen in einem Thema, bevor die \"Thema zusammenfassen\" Funktion aktiviert wird." summary_percent_filter: "Zeige die besten (n)% der Beiträge eines Themas in der \"Thema zusammenfassen\" Ansicht." summary_max_results: "Maximale Anzahl der sichtbaren Beiträge beim Zusammenfassen von Themen" - enable_private_messages: "Erlaube Benutzern der Vertrauensstufe 1 das Erstellen von privaten Nachrichten und das Antworten auf private Nachrichten." enable_long_polling: "Nachrichtenbus für Benachrichtigungen kann Long-Polling nutzen." long_polling_base_url: "Basis-URL für Long Polling (wenn zum Ausliefern von dynamischen Inhalten ein CDN verwendet wird, setze es auf Origin Pull), z. B. http://origin.site.com" long_polling_interval: "Wartezeit, bevor der Server auf Clients reagiert, wenn keine Daten gesendet werden müssen (nur für angemeldete Benutzer)" @@ -717,8 +711,6 @@ de: post_menu_hidden_items: "Die Einträge im Menü eines Beitrags, die standardmäßig hinter einer erweiterbaren Ellipse versteckt werden sollen." share_links: "Bestimme, welche Dienste in welcher Reihenfolge im Teilen-Dialog auftauchen." track_external_right_clicks: "Verfolge, welche externen Links per Rechtsklick geöffnet werden (zum Beispiel in einem neuen Browser-Tab). Standardmäßig deaktiviert, da dies URL-Rewrites erfordert." - site_contact_username: "Benutzername eines Mitarbeiters, in dessen Namen alle automatisch erzeugten privaten Nachrichten versendet werden sollen. Falls leer wird das Standardkonto \"system\" verwendet." - send_welcome_message: "Sende allen neuen Nutzern eine private Willkommensnachricht mit Hinweisen zur Benutzung des Forums." suppress_reply_directly_below: "Zeige die erweiterbare Anzahl der Antworten auf einen Beitrag nicht, falls die einzige Antwort direkt darunter folgt." suppress_reply_directly_above: "Verstecke das erweiterbare „Antwort auf“-Feld in einem Beitrag, wenn der beantwortete Beitrag direkt darüber angezeigt wird." suppress_reply_when_quoting: "Verstecke das erweiterbare „Antwort auf“-Feld in einem Beitrag, wenn der Beitrag den beantworteten Beitrag zitiert." @@ -754,7 +746,6 @@ de: 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 mit externer E-Mail-Adresse aus den SSO Daten (WARNUNG: es können dennoch Unterschiede auf Grund von Normalisierung lokaler E-Mail-Adressen auftreten)" sso_overrides_username: "Überschreibt lokale Benutzernamen mit externen Seiten-Usernamen von SSO Daten (WARNUNG: Diskrepanzen können aufgrund von Unterschieden in Benutzernamenlängen/-anforderungen, auftreten)" - sso_overrides_name: "Überschreibt lokalen Namen mit Namen der externen Seite aus SSO Daten (WARNUNG: Diskrepanzen können aufgrund von Normalisierung von lokalen Namen auftreten)" sso_overrides_avatar: "Überschreibt den Avatar des Benutzers mit dem Avatar aus der SSO Payload. Wenn aktiv, dann sollte allow_uploaded_avatars deaktiviert werden." 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." @@ -789,7 +780,6 @@ de: max_bookmarks_per_day: "Maximale Anzahl der Lesezeichen pro Nutzer pro Tag." max_edits_per_day: "Maximale Anzahl der Bearbeitungen pro Nutzer pro Tag." max_topics_per_day: "Maximale Anzahl der Themen, die ein Nutzer pro Tag erstellen kann." - max_private_messages_per_day: "Maximale Zahl privater Nachrichten, die ein Nutzer pro Tag verschicken kann." max_invites_per_day: "Maximale Zahl an Einladungen, die ein Nutzer pro Tag verschicken kann." suggested_topics: "Anzahl der empfohlenen Themen am Ende eines Themas." limit_suggested_to_category: "Zeige nur Themen der aktuellen Kategorie in vorgeschlagenen Themen." @@ -839,7 +829,6 @@ de: email_time_window_mins: "Warte (n) Minuten, bevor Nutzern eine Hinweis-E-Mail geschickt wird, um ihnen Gelegenheit zu geben, ihre Beiträge abschließend bearbeiten zu können." email_posts_context: "Anzahl der Antworten welche als Konext einer Notifikations-Mail hinzugefügt werden." flush_timings_secs: "Sekunden, nach denen Zeiteinstellungen auf den Server übertragen werden." - max_word_length: "Maximale Wortlänge in Zeichen in Thementiteln." title_min_entropy: "Für Titel neuer Themen minimal erforderliche Entropie (einzigartige Zeichen)." body_min_entropy: "Für den Text neuer Beiträge minimal erforderliche Entropie (einzigartige Zeichen)." title_fancy_entities: "Konvertiere HTML-Entitys in Thementiteln." @@ -879,7 +868,7 @@ de: 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." reply_by_email_enabled: "Aktviere das Antworten auf Themen via E-Mail." - reply_by_email_address: "Vorgabe der Antwort-Mail Adresse in der Form von: %{reply_key}@reply.myforum.com" + 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" strip_images_from_short_emails: "Entferne Bilder aus E-Mails kleiner als 2800 Bytes." short_email_length: "Kurze E-Mail-Länge in Bytes" @@ -971,8 +960,7 @@ de: edited: "%{display_username} hat deinen Beitrag in %{link} bearbeitet." posted: "%{display_username} hat einen Beitrag in %{link} erstellt." moved_post: "%{display_username} hat deinen Beitrag nach %{link} verschoben." - private_message: "%{display_username} hat Dir eine private Nachricht geschickt: %{link}" - invited_to_private_message: "%{display_username} hat Dich zu einem privaten Gespräch eingeladen: %{link}" + private_message: "%{display_username} hat Dir eine Nachricht geschickt: %{link}" invitee_accepted: "%{display_username} hat deine Einladung angenommen." linked: "%{display_username} hat dich auf %{link} verlinkt" granted_badge: "Sie haben %{link} verdient" @@ -983,8 +971,8 @@ de: topic: 'Ergebnisse' user: 'Benutzer' sso: - not_found: "Account kann nicht gefunden oder erstellt werden, kontaktiere den Administrator." - account_not_approved: "Der Account wartet auf seine Überprüfung. Du bekommst eine E-Mail Benachrichtigung wenn er überprüft wurde." + not_found: "Konto kann nicht gefunden oder erstellt werden, kontaktiere den Administrator." + account_not_approved: "Das Konto wartet auf seine Überprüfung. Du bekommst eine E-Mail Benachrichtigung, wenn es überprüft wurde." unknown_error: "Die Informationen konnten nicht aktualisiert werden, kontaktiere den Administrator." timeout_expired: "Zeitüberschreitung beim Login. Bitte versuche dich erneut einzuloggen." original_poster: "Autor des ersten Beitrags" @@ -1186,16 +1174,6 @@ de: Weitere Hilfestellung findest du in unseren [Community Richtlinien](%{base_url}/guidelines). welcome_user: subject_template: "Willkommen bei %{site_name}!" - text_body_template: | - Danke fürs Anmelden bei %{site_name}, sei willkommen! - - %{new_user_tips} - - Wir wünschen uns ein stets [zivilisiertes Verhalten in unserer Community](%{base_url}/guidelines). - - Viel Spaß! - - (Wenn du als neuer Benutzer unter vier Augen mit einem unserer [Mitarbeiter](%{base_url}/about) reden möchtest, antworte einfach auf diese private Nachricht.) welcome_invite: subject_template: "Willkommen bei %{site_name}!" backup_succeeded: @@ -1249,19 +1227,19 @@ de: subject_template: "Datenexport fehlgeschlagen" text_body_template: "Entschuldigung, beim Exportieren deiner Daten trat ein Fehler auf. Bitte kontaktiere einen Mitarbeiter oder sieh in die Logs." email_reject_trust_level: - subject_template: "E-Mail Problem -- Vertrauensstufe nicht ausreichend" + subject_template: "[%{site_name}] E-Mail-Problem -- Ungenügende Vertrauensstufe" text_body_template: | Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (titled %{former_title}) hat nicht funktioniert. Du hast nicht die notwendige Vertrauensstufe, um neue Themen über diese E-Mail-Adresse zu erstellen. Wenn du glaubst, dass das ein Irrtum ist, dann kontaktiere einen Mitarbeiter. email_reject_no_account: - subject_template: "E-Mail Problem -- Nutzerkonto unbekannt" + subject_template: "[%{site_name}] E-Mail-Problem -- Unbekanntes Konto" text_body_template: | Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (titled %{former_title}) konnte nicht verarbeitet werden! - Es ist kein Account mit dieser E-Mail-Adresse bekannt. Versuche die Nachricht von einer anderen, m Forum registrierten E-Mail-Adresse zu verschicken oder kontaktiere einen Mitarbeiter. + Es ist kein Konto mit dieser E-Mail-Adresse bekannt. Versuche die Nachricht von einer anderen, m Forum registrierten E-Mail-Adresse zu verschicken oder kontaktiere einen Mitarbeiter. email_reject_empty: - subject_template: "E-Mail Problem -- kein Inhalt" + subject_template: "[%{site_name}] E-Mail-Problem -- Kein Inhalt" text_body_template: | Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (mit dem Titel %{former_title}) gab es ein Problem. @@ -1269,19 +1247,19 @@ de: Wenn du diese Fehlermeldung erhälst obwohl die E-Mail einen gültigen Inhalt hatte, versuche es bitte noch einmal und sende die E-Mail dabei als HTML (nicht als "Nur Text"). email_reject_parsing: - subject_template: "E-Mail Problem -- Inhalt nicht erkennbar" + subject_template: "[%{site_name}] E-Mail-Problem -- Inhalt nicht erkannt" text_body_template: | Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (mit dem Titel %{former_title}) gab es ein Problem. Wir konnten in der eingesandten E-Mail deine Antwort nicht finden. **Bitte stelle sicher, dass deine gesamte Antwort zu Beginn der E-Mail steht** -- Inline-Antworten können wir leider nicht verarbeiten. email_reject_post_error: - subject_template: "E-Mail Problem -- Fehler beim Posten" + subject_template: "[%{site_name}] E-Mail-Problem -- Fehler beim Posten" text_body_template: | Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) hat nicht funktioniert. Mögliche Gründe sind: komplexe Formatierung, Nachricht zu lang oder zu kurz. Bitte versuche es erneut oder erstelle deinen Beitrag auf der Website, wenn der Fehler weiterhin auftritt. email_reject_post_error_specified: - subject_template: "E-Mail Problem -- Fehler beim Posten" + subject_template: "[%{site_name}] E-Mail-Problem -- Fehler beim Posten" text_body_template: | Es tut uns leid, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) hat nicht funktioniert. @@ -1291,36 +1269,36 @@ de: Bitte versuch es erneut, wenn du das Problem beheben kannst. email_reject_reply_key: - subject_template: "E-Mail Problem -- Antwort-Schlüssel unbekannt" + subject_template: "[%{site_name}] E-Mail-Problem -- Unbekannter Antwort-Schlüssel" text_body_template: | Es tut uns leid, aber die E-Mail-Nachricht an %{destination} (Titel: „%{former_title}“) hat nicht geklappt. Der angegebene Antwort-Schlüssel ist ungültig oder unbekannt. Wir wissen daher nicht auf welchen Beitrag diese E-Mail antwortet. Kontaktiere einen Mitarbeiter. email_reject_destination: - subject_template: "E-Mail Problem -- To: Adresse unbekannt" + subject_template: "[%{site_name}] E-Mail Problem -- Unbekannte An:-Adresse" text_body_template: | Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (mit dem Title %{former_title}) gab es ein Problem. 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: "E-Mail Problem -- Thema nicht gefunden" + subject_template: "[%{site_name}] E-Mail Problem -- Thema nicht gefunden" text_body_template: | Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (mit dem Title %{former_title}) gab es ein Problem. Das Thema ist uns nicht bekannt oder es wurde gelöscht. Wenn du glaubst, dass dies ein Irrtum ist, nimm bitte Kontakt mit einem unserer Mitarbeiter auf. email_reject_topic_closed: - subject_template: "E-Mail Problem -- Thema geschlossen" + subject_template: "[%{site_name}] E-Mail Problem -- Thema geschlossen" text_body_template: | Entschuldigung, aber mit deiner E-Mail-Nachricht an %{destination} (mit dem Title %{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_reject_auto_generated: - subject_template: "E-Mail Problem -- automatisch erzeugte Antwort" + subject_template: "[%{site_name}] E-Mail Problem -- Automatisch erzeugte Antwort" text_body_template: | Entschuldigung, aber deine E-Mail-Nachricht an %{destination} (Titel: %{former_title}) hat nicht funktioniert. Wir nehmen keine automatisch generierten Antworten an. Wenn du glaubst dass dies ein Irrtum ist, dann kontaktiere bitte einen unserer Mitarbeiter. email_error_notification: - subject_template: "E-Mail Problem -- Fehler bei POP-Authentifizierung" + subject_template: "[%{site_name}] E-Mail-Problem -- POP-Authentifizierungsfehler" text_body_template: | Es gab einen Authentifizierungsfehler beim Abrufen von Mails vom POP-Server. @@ -1393,12 +1371,6 @@ de: reply_by_email: "Um zu Antworten, antworte auf diese Email oder besuche %{base_url}%{url} in deinem Browser." visit_link_to_respond: "Um zu Antworten, besuche %{base_url}%{url} in deinem Browser." posted_by: "Erstellt von %{username} am %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} hat dich zu einer privaten Nachricht eingeladen '%{topic_title}'" - text_body_template: | - %{username} hat dich zu einer privaten Nachricht '%{topic_title}' auf %{site_name} eingeladen: - - Bitte besuche diesen Link zum Thema: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{username} hat auf deinen Beitrag '%{topic_title}' geantwortet" text_body_template: | @@ -1446,7 +1418,7 @@ de: %{respond_instructions} digest: why: "Eine kurze Zusammenfassung von %{site_link} seit deinem letzten Besuch am %{last_seen_at}" - subject_template: "[%{site_name}] Kurzfassung für %{date}" + subject_template: "[%{site_name}] Übersicht" new_activity: "Neues in deinen Themen und Beiträgen:" top_topics: "Beliebte Beiträge" other_new_topics: "Beliebte Themen" @@ -1471,18 +1443,18 @@ de: set_password: subject_template: "[%{site_name}] Setze Passwort" text_body_template: | - Jemand hat ein Passwort für deinen Account auf [%{site_name}](%{base_url}) beantragt. Alternativ kannst du dich mit einem unterstützen Online-Service (Google, Facebook, etc), das mit dieser validierten Emailadresse verknüpft ist, anmelden. + Jemand hat ein Passwort für dein Konto auf [%{site_name}](%{base_url}) beantragt. Alternativ kannst du dich mit einem unterstützen Online-Service (Google, Facebook, etc), das mit dieser validierten E-Mail-Adresse verknüpft ist, anmelden. Wenn diese Anfrage nicht von dir kam, kannst du diese E-Mail einfach ignorieren. - Klicke auf den folgenden Link um ein Passwort auszuwählen: + Klicke auf den folgenden Link, um ein Passwort auszuwählen: %{base_url}/users/password-reset/%{email_token} account_created: subject_template: "[%{site_name}] Dein neues Konto" text_body_template: | - Ein neuer Account wurde für dich auf %{site_name} erstellt. + Ein neues Konto wurde für dich auf %{site_name} erstellt. - Klicke auf den folgenden Link um ein Passwort für deinen neuen Account zu setzen: + Klicke auf den folgenden Link, um ein Passwort für dein neues Konto festzulegen: %{base_url}/users/password-reset/%{email_token} authorize_email: subject_template: "[%{site_name}] Bestätige deine neue Mailadresse" @@ -1492,23 +1464,6 @@ de: %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "You've been approved on %{site_name}!" - text_body_template: | - Willkommen bei %{site_name}! - - Ein Mitarbeiter von %{site_name} hat die Registrierung deines Nutzerkontos genehmigt. - - Klicke auf den folgenden Link, um dein neues Konto zu bestätigen und zu aktivieren: - %{base_url}/users/activate-account/%{email_token} - - Wenn der obige Link nicht klickbar ist, kopiere ihn in die Adresszeile deines Web-Browsers. - - %{new_user_tips} - - Wir wünschen uns ein stets [zivilisiertes Verhalten in unserer Community](%{base_url}/guidelines). - - Viel Spaß! - - (Wenn du als neuer Benutzer unter vier Augen mit einem unserer [Mitarbeiter](%{base_url}/about) reden möchtest, antworte einfach auf diese private Nachricht.) signup: subject_template: "[%{site_name}] Aktiviere deinen neues Konto" text_body_template: | @@ -1550,7 +1505,7 @@ de: spam_hosts: "Dieser Benutzer hat versucht mehrere Antworten mit Links zur selben Domain zu posten. Beachte die newuser_spam_host_threshold Einstellung." email_log: no_user: "Kann Benutzer mit ID %{user_id} nicht finden " - suspended_not_pm: "Benutzer ist gesperrt; keine private Nachricht" + suspended_not_pm: "Benutzer ist gesperrt, keine Nachricht" seen_recently: "Benutzer war kürzlich online" post_not_found: "Kann Beitrag mit ID %{post_id} nicht finden" notification_already_read: "Die Benachrichtigung dieser Mail wurde bereits gelesen" @@ -1579,3 +1534,74 @@ de: title: "Nutzungsbedingungen" privacy_topic: title: "Datenschutzrichtlinie" + badges: + long_descriptions: + autobiographer: | + Blah blah blah + Blah blah blah + first_like: | + Blah blah blah + Blah blah blah + first_link: | + Blah blah blah + Blah blah blah + first_quote: | + Blah blah blah + Blah blah blah + first_share: | + Blah blah blah + Blah blah blah + read_guidelines: | + Blah blah blah + Blah blah blah + reader: | + Blah blah blah + Blah blah blah + editor: | + Blah blah blah + Blah blah blah + nice_share: | + Blah blah blah + Blah blah blah + welcome: | + Blah blah blah + Blah blah blah + anniversary: | + Blah blah blah + Blah blah blah + good_share: | + Blah blah blah + Blah blah blah + great_share: | + Blah blah blah + Blah blah blah + nice_post: | + Blah blah blah + Blah blah blah + nice_topic: | + Blah blah blah + Blah blah blah + good_post: | + Blah blah blah + Blah blah blah + good_topic: | + Blah blah blah + Blah blah blah + great_post: | + Blah blah blah + Blah blah blah + great_topic: | + Blah blah blah + Blah blah blah + basic: | + Blah blah blah + Blah blah blah + member: | + Blah blah blah + Blah blah blah + regular: | + Blah blah blah + Blah blah blah + leader: | + Blah blah blah + Blah blah blah diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index c9624a6cb4..ee0ec4e0e5 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -44,6 +44,7 @@ en: purge_reason: "Automatically deleted as abandoned, unactivated account" disable_remote_images_download_reason: "Remote images download was disabled because there wasn't enough disk space available." + anonymous: "Anonymous" errors: &errors format: ! '%{attribute} %{message}' @@ -160,6 +161,7 @@ en: next_page: "next page →" prev_page: "← previous page" page_num: "Page %{num}" + home_title: "Home" topics_in_category: "Topics in the '%{category}' category" rss_posts_in_topic: "RSS feed of '%{topic}'" rss_topics_in_category: "RSS feed of topics in the '%{category}' category" @@ -167,7 +169,7 @@ en: num_posts: "Posts:" num_participants: "Participants:" read_full_topic: "Read full topic" - private_message_abbrev: "PM" + private_message_abbrev: "Msg" rss_description: latest: "Latest topics" hot: "Hot topics" @@ -485,9 +487,9 @@ en: description: 'This post contains content that a reasonable person would consider offensive, abusive, or a violation of our community guidelines.' long_form: 'flagged this as inappropriate' notify_user: - title: 'Private Message @{{username}}' + title: 'Message @{{username}}' description: 'This post contains something I want to talk to this person directly and privately about. Does not cast a flag.' - long_form: 'private messaged user' + long_form: 'messaged user' email_title: 'Your post in "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -526,7 +528,7 @@ en: email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Your post was flagged by the community. Please see your private messages.

    ' + you_must_edit: '

    Your post was flagged by the community. Please see your messages.

    ' user_must_edit: '

    This post was flagged by the community and is temporarily hidden.

    ' archetypes: @@ -595,23 +597,23 @@ en: user_to_user_private_messages: title: "User-to-User" xaxis: "Day" - yaxis: "Number of private messages" + yaxis: "Number of messages" system_private_messages: title: "System" xaxis: "Day" - yaxis: "Number of private messages" + yaxis: "Number of messages" moderator_warning_private_messages: title: "Moderator Warning" xaxis: "Day" - yaxis: "Number of private messages" + yaxis: "Number of messages" notify_moderators_private_messages: title: "Notify Moderators" xaxis: "Day" - yaxis: "Number of private messages" + yaxis: "Number of messages" notify_user_private_messages: title: "Notify User" xaxis: "Day" - yaxis: "Number of private messages" + yaxis: "Number of messages" top_referrers: title: "Top Referrers" xaxis: "User" @@ -692,8 +694,9 @@ en: title_nag: "Enter the name of your site. Update title in Site Settings." site_description_missing: "Enter a one sentence description of your site that will appear in search results. Update site_description in Site Settings." consumer_email_warning: "Your site is configured to use Gmail (or another consumer email service) to send email. Gmail limits how many emails you can send. Consider using an email service provider like mandrill.com to ensure email deliverability." - site_contact_username_warning: "Enter the name of a friendly staff user account to send important automated private messages from. Update site_contact_username in Site Settings." + site_contact_username_warning: "Enter the name of a friendly staff user account to send important automated messages from. Update site_contact_username in Site Settings." notification_email_warning: "Notification emails are not being sent from a valid email address on your domain; email delivery will be erratic and unreliable. Please set notification_email to a valid local email address in Site Settings." + s3_deprecation_warning: "WARNING! Amazon S3 will soon be deprecated for image/attachment storage. Please, follow the instructions to migrate to local storage." content_types: education_new_reply: @@ -707,10 +710,10 @@ en: description: "Guidance and essential information for new users." welcome_user: title: "Welcome: New User" - description: "A private message automatically sent to all new users when they sign up." + description: "A message automatically sent to all new users when they sign up." welcome_invite: title: "Welcome: Invited User" - description: "A private message automatically sent to all new invited users when they accept the invitation from another user to participate." + description: "A message automatically sent to all new invited users when they accept the invitation from another user to participate." login_required_welcome_message: title: "Login Required: Welcome Message" description: "Welcome message that is displayed to logged out users when the 'login required' setting is enabled." @@ -734,11 +737,11 @@ en: allow_user_locale: "Allow users to choose their own language interface preference" min_post_length: "Minimum allowed post length in characters" min_first_post_length: "Minimum allowed first post (topic body) length in characters" - min_private_message_post_length: "Minimum allowed post length in characters for private messages" + min_private_message_post_length: "Minimum allowed post length in characters for messages" max_post_length: "Maximum allowed post length in characters" min_topic_title_length: "Minimum allowed topic title length in characters" max_topic_title_length: "Maximum allowed topic title length in characters" - min_private_message_title_length: "Minimum allowed title length for a private message in characters" + min_private_message_title_length: "Minimum allowed title length for a message in characters" min_search_term_length: "Minimum valid search term length in characters" allow_uncategorized_topics: "Allow topics to be created without a category." uncategorized_description: "The description of the uncategorized category. Leave blank for no description." @@ -774,7 +777,7 @@ en: digest_logo_url: "The alternate logo used at the top of your site's email digest. If left blank `logo_url` will be used. eg: http://example.com/logo.png" logo_small_url: "The small logo image at the top left of your site, seen when scrolling down. If left blank, a home glyph will be shown." favicon_url: "A favicon for your site, see http://en.wikipedia.org/wiki/Favicon" - mobile_logo_url: "The fixed position logo image used at the top left of your mobile site. If left blank, the site title text will be used." + mobile_logo_url: "The fixed position logo image used at the top left of your mobile site. If left blank `logo_url` will be used." apple_touch_icon_url: "Icon used for Apple touch devices. Recommended size is 144px by 144px." notification_email: "The from: email address used when sending all essential system emails. The domain specified here must have SPF, DKIM and reverse PTR records set correctly for email to arrive." @@ -787,7 +790,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 private messages and reply to private messages" + enable_private_messages: "Allow trust level 1 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" @@ -826,8 +829,8 @@ en: post_menu_hidden_items: "The menu items to hide by default in the post menu unless an expansion ellipsis is clicked on." share_links: "Determine which items appear on the share dialog, and in what order." track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs" - site_contact_username: "A valid staff username to send all automated private messages from. If left blank the default System account will be used." - send_welcome_message: "Send all new users a welcome private message with a quick start guide." + site_contact_username: "A valid staff username to send all automated messages from. If left blank the default System account will be used." + send_welcome_message: "Send all new users a welcome message with a quick start guide." suppress_reply_directly_below: "Don't show the expandable reply count on a post when there is only a single reply directly below this post." suppress_reply_directly_above: "Don't show the expandable in-reply-to on a post when there is only a single reply directly above this post." suppress_reply_when_quoting: "Don't show the expandable in-reply-to on a post when post quotes reply." @@ -877,7 +880,7 @@ en: sso_secret: "Secret string used to cryptographically authenticate SSO information, be sure it is 10 characters or longer" sso_overrides_email: "Overrides local email with external site email from SSO payload (WARNING: discrepancies can occur due to normalization of local emails)" sso_overrides_username: "Overrides local username with external site username from SSO payload (WARNING: discrepancies can occur due to differences in username length/requirements)" - sso_overrides_name: "Overrides local name with external site name from SSO payload (WARNING: discrepancies can occur due to normalization of local names)" + sso_overrides_name: "Overrides local full name with external site full name from SSO payload" sso_overrides_avatar: "Overrides user avatar with external site avatar from SSO payload. If enabled, disabling allow_uploaded_avatars is highly recommended" enable_local_logins: "Enable local username and password login based accounts. (Note: this must be enabled for invites to work)" @@ -921,7 +924,7 @@ en: max_bookmarks_per_day: "Maximum number of bookmarks per user per day." max_edits_per_day: "Maximum number of edits per user per day." max_topics_per_day: "Maximum number of topics a user can create per day." - max_private_messages_per_day: "Maximum number of private messages users can create per day." + max_private_messages_per_day: "Maximum number of messages users can create per day." max_invites_per_day: "Maximum number of invites a user can send per day." suggested_topics: "Number of suggested topics shown at the bottom of a topic." @@ -983,7 +986,7 @@ en: email_time_window_mins: "Wait (n) minutes before sending any notification emails, to give users a chance to edit and finalize their posts." email_posts_context: "How many prior replies to include as context in notification emails." flush_timings_secs: "How frequently we flush timing data to the server, in seconds." - max_word_length: "The maximum allowed word length, in characters, in a topic title." + title_max_word_length: "The maximum allowed word length, in characters, in a topic title." title_min_entropy: "The minimum entropy (unique characters, non-english count for more) required for a topic title." body_min_entropy: "The minimum entropy (unique characters, non-english count for more) required for a post body." @@ -1085,6 +1088,10 @@ en: max_daily_gravatar_crawls: "Maximum number of times Discourse will check Gravatar for custom avatars in a day" public_user_custom_fields: "A whitelist of custom fields for a user that can be shown publicly." staff_user_custom_fields: "A whitelist of custom fields for a user that can be shown to staff." + enable_user_directory: "Provide a directory of users for browsing" + allow_anonymous_posting: "Allow users to switch to anonymous mode" + anonymous_posting_min_trust_level: "Minimum trust level required to enable anonymous posting" + anonymous_account_duration_minutes: "To protect anonymity create a new anonymous account every N minutes for each user. Example: if set to 600, as soon as 600 minutes elapse from last post AND user switches to anon, a new anonymous account is created." allow_profile_backgrounds: "Allow users to upload profile backgrounds." @@ -1099,6 +1106,7 @@ en: disable_edit_notifications: "Disables edit notifications by the system user when 'download_remote_images_to_local' is active." + full_name_required: "Full name is a required field of a user's profile." enable_names: "Show the user's full name on their profile, user card, and emails. Disable to hide full name everywhere." display_name_on_posts: "Show a user's full name on their posts in addition to their @username." invites_per_page: "Default invites shown on the user page." @@ -1153,8 +1161,9 @@ en: edited: "%{display_username} edited your post in %{link}" posted: "%{display_username} posted in %{link}" moved_post: "%{display_username} moved your post to %{link}" - private_message: "%{display_username} sent you a private message: %{link}" - invited_to_private_message: "%{display_username} invited you to a private message: %{link}" + private_message: "%{display_username} sent you a message: %{link}" + invited_to_private_message: "%{display_username} invited you to a message: %{link}" + invited_to_topic: "%{display_username} invited you to a topic: %{link}" invitee_accepted: "%{display_username} accepted your invitation" linked: "%{display_username} linked you in %{link}" granted_badge: "You earned %{link}" @@ -1429,7 +1438,7 @@ en: usage_tips: text_body_template: | - This private message has a few quick tips to get you started. + A few quick tips to get you started: ## Keep scrolling @@ -1481,7 +1490,7 @@ en: - Don't worry about missing a reply – you'll be emailed direct replies (and private messages) if you aren't online when they arrive. + Don't worry about missing a reply – you'll be emailed replies (and messages) if you aren't online when they arrive. ## When are conversations new? @@ -1508,7 +1517,7 @@ en: Enjoy your stay! - (If you need to privately communicate with [staff members](%{base_url}/about) as a new user, just reply to this private message.) + (If you need to communicate with [staff members](%{base_url}/about) as a new user, just reply to this message.) welcome_invite: subject_template: "Welcome to %{site_name}!" @@ -1529,7 +1538,7 @@ en: Enjoy your stay! - (If you need to privately communicate with [staff members](%{base_url}/about) as a new user, just reply to this private message.) + (If you need to communicate with [staff members](%{base_url}/about) as a new user, just reply to this message.) [prefs]: %{user_preferences_url} @@ -1594,21 +1603,21 @@ en: text_body_template: "We're sorry, but your data export failed. Please check the logs or contact a staff member." email_reject_trust_level: - subject_template: "Email issue -- Insufficient Trust Level" + subject_template: "[%{site_name}] Email issue -- Insufficient Trust Level" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. Your account does not have the required trust level to post new topics to this email address. If you believe this is in error, contact a staff member. email_reject_no_account: - subject_template: "Email issue -- Unknown Account" + subject_template: "[%{site_name}] Email issue -- Unknown Account" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. There is no known user account with this email address. Try sending from a different email address, or contact a staff member. email_reject_empty: - subject_template: "Email issue -- No Content" + subject_template: "[%{site_name}] Email issue -- No Content" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. @@ -1617,21 +1626,28 @@ en: If you're getting this and you _did_ include content, try again with HTML content included in your email (not just plain text only). email_reject_parsing: - subject_template: "Email issue -- Content unrecognized" + subject_template: "[%{site_name}] Email issue -- Content unrecognized" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. We couldn't find your reply in the provided email. **Make sure your reply is at the top of the email** -- we can't process inline replies. + email_reject_invalid_access: + subject_template: "[%{site_name}] Email issue -- Invalid Access" + text_body_template: | + We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. + + Your account does not have the privileges to post new topics in that category. If you believe this is in error, contact a staff member. + email_reject_post_error: - subject_template: "Email issue -- Posting error" + subject_template: "[%{site_name}] Email issue -- Posting error" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. Some possible causes are: complex formatting, message too large, message too small. Please try again, or post via the website if this continues. email_reject_post_error_specified: - subject_template: "Email issue -- Posting error" + subject_template: "[%{site_name}] Email issue -- Posting error" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. @@ -1642,42 +1658,42 @@ en: If you can correct the problem, please try again. email_reject_reply_key: - subject_template: "Email issue -- Unknown Reply Key" + subject_template: "[%{site_name}] Email issue -- Unknown Reply Key" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. The provided reply key is invalid or unknown, so we don't know what this email is in reply to. Contact a staff member. email_reject_destination: - subject_template: "Email issue -- Unknown To: Address" + subject_template: "[%{site_name}] Email issue -- Unknown To: Address" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. None of the destination addresses are recognized. Please make sure that the site address is in the To: line (not Cc: or Bcc:), and that you are sending to the correct email address provided by staff. email_reject_topic_not_found: - subject_template: "Email issue -- Topic Not Found" + subject_template: "[%{site_name}] Email issue -- Topic Not Found" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. The topic is not found, it may have been deleted. If you believe this is in error, contact a staff member. email_reject_topic_closed: - subject_template: "Email issue -- Topic Closed" + subject_template: "[%{site_name}] Email issue -- Topic Closed" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. The topic is closed. If you believe this is in error, contact a staff member. email_reject_auto_generated: - subject_template: "Email issue -- Auto Generated Reply" + subject_template: "[%{site_name}] Email issue -- Auto Generated Reply" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. Your email reply was auto generated, which we don't accept. If you believe this is in error, contact a staff member. email_error_notification: - subject_template: "Email issue -- POP authentication error" + subject_template: "[%{site_name}] Email issue -- POP authentication error" text_body_template: | There has been an authentication error while polling mails from the POP server. @@ -1764,11 +1780,36 @@ en: posted_by: "Posted by %{username} on %{post_date}" user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} invited you to a private message '%{topic_title}'" + subject_template: "[%{site_name}] %{username} invited you to a message '%{topic_title}'" text_body_template: | - %{username} invited you to a private message '%{topic_title}' on %{site_name}: - Please visit this link to view the topic: %{base_url}%{url} + %{username} invited you to a message + + > **%{topic_title}** + > + > %{topic_excerpt} + + at + + > %{site_title} -- %{site_description} + + Please visit this link to view the message: %{base_url}%{url} + + user_invited_to_topic: + subject_template: "[%{site_name}] %{username} invited you to a topic '%{topic_title}'" + text_body_template: | + + %{username} invited you to a discussion + + > **%{topic_title}** + > + > %{topic_excerpt} + + at + + > %{site_title} -- %{site_description} + + Please visit this link to view the message: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" @@ -1822,7 +1863,7 @@ en: digest: why: "A brief summary of %{site_link} since your last visit on %{last_seen_at}" - subject_template: "[%{site_name}] Digest for %{date}" + subject_template: "[%{site_name}] Digest" new_activity: "New activity on your topics and posts:" top_topics: "Popular posts" other_new_topics: "Popular topics" @@ -1890,7 +1931,7 @@ en: Enjoy your stay! - (If you need to privately communicate with [staff members](%{base_url}/about) as a new user, just reply to this private message.) + (If you need to communicate with [staff members](%{base_url}/about) as a new user, just reply to this message.) signup: subject_template: "[%{site_name}] Activate your new account" @@ -1940,7 +1981,7 @@ en: email_log: no_user: "Can't find user with id %{user_id}" - suspended_not_pm: "User is suspended, not a private message" + suspended_not_pm: "User is suspended, not a message" seen_recently: "User was seen recently" post_not_found: "Can't find a post with id %{post_id}" notification_already_read: "The notification this email is about has already been read" @@ -2320,7 +2361,76 @@ en: badges: long_descriptions: + autobiographer: | + Blah blah blah + Blah blah blah + first_like: | + Blah blah blah + Blah blah blah + first_link: | + Blah blah blah + Blah blah blah + first_quote: | + Blah blah blah + Blah blah blah + first_share: | + Blah blah blah + Blah blah blah + read_guidelines: | + Blah blah blah + Blah blah blah + reader: | + Blah blah blah + Blah blah blah + editor: | + Blah blah blah + Blah blah blah first_flag: | Flagging is critical to the health of your community. If you notice any posts that require moderator attention please - do not hesitate to flag. You may also use the flagging dialog to send private messages to users once you reach + do not hesitate to flag. You may also use the flagging dialog to send messages to users once you reach trust level 1. + nice_share: | + Blah blah blah + Blah blah blah + welcome: | + Blah blah blah + Blah blah blah + anniversary: | + Blah blah blah + Blah blah blah + good_share: | + Blah blah blah + Blah blah blah + great_share: | + Blah blah blah + Blah blah blah + nice_post: | + Blah blah blah + Blah blah blah + nice_topic: | + Blah blah blah + Blah blah blah + good_post: | + Blah blah blah + Blah blah blah + good_topic: | + Blah blah blah + Blah blah blah + great_post: | + Blah blah blah + Blah blah blah + great_topic: | + Blah blah blah + Blah blah blah + basic: | + Blah blah blah + Blah blah blah + member: | + Blah blah blah + Blah blah blah + regular: | + Blah blah blah + Blah blah blah + leader: | + Blah blah blah + Blah blah blah diff --git a/config/locales/server.es.yml b/config/locales/server.es.yml index f3b53226db..2391479593 100644 --- a/config/locales/server.es.yml +++ b/config/locales/server.es.yml @@ -20,6 +20,7 @@ es: is_reserved: "está reservado" purge_reason: "Eliminada automáticamente como cuenta abandonada, sin activar" disable_remote_images_download_reason: "La descarga de imágenes remotas se desactivó porque no había suficiente espacio disponible en disco." + anonymous: "Anónimos" errors: format: '%{attribute} %{message}' messages: @@ -120,6 +121,7 @@ es: next_page: "siguiente página →" prev_page: "← página anterior" page_num: "Página %{num}" + home_title: "Inicio" topics_in_category: "Temas en la categoría '%{category}'" rss_posts_in_topic: "Feed RSS de '%{topic}'" rss_topics_in_category: "Feed RSS de los temas en la categoría '%{category}'" @@ -127,7 +129,7 @@ es: num_posts: "Posts:" num_participants: "Participantes:" read_full_topic: "Leer todo el tema" - private_message_abbrev: "Mensaje Privado" + private_message_abbrev: "Msj" rss_description: latest: "Temas recientes" hot: "Temas calientes" @@ -416,9 +418,9 @@ es: description: 'Este post contiene contenido que una persona sensata podría considerar ofensivo, abusivo o que viola nuestras directrices de comunidad.' long_form: 'reportado como inapropiado' notify_user: - title: 'Notificar por privado a @{{username}}' + title: 'Notificar por mensaje a @{{username}}' description: 'Este post contiene algo que yo quiero hablar con esta persona directa y privadamente. No se marca como bandera.' - long_form: 'usuario notificado por privado' + long_form: 'usuario notificado vía mensaje' email_title: 'Tu publicación en "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -455,7 +457,7 @@ es: email_title: 'El tema "%{title}" requiere la atención de un moderador' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Tu post ha sido reportado por la comunidad. Por favor mira tus mensajes privados.

    ' + you_must_edit: '

    Tu post ha sido reportado por la comunidad. Por favor mira tus mensajes.

    ' user_must_edit: '

    Este post fue reportado por la comunidad y está oculto temporalmente.

    ' archetypes: regular: @@ -520,23 +522,23 @@ es: user_to_user_private_messages: title: "Usuario a usuario" xaxis: "Día" - yaxis: "Número de mensajes privados" + yaxis: "Número de mensajes" system_private_messages: title: "Sistema" xaxis: "Día" - yaxis: "Número de mensajes privados" + yaxis: "Número de mensajes" moderator_warning_private_messages: title: "Advertencias al moderador" xaxis: "Día" - yaxis: "Número de mensajes privados" + yaxis: "Número de mensajes" notify_moderators_private_messages: title: "Notificaciones a moderadores" xaxis: "Día" - yaxis: "Número de mensajes privados" + yaxis: "Número de mensajes" notify_user_private_messages: title: "Notificaciones a usuarios" xaxis: "Día" - yaxis: "Número de mensajes privados" + yaxis: "Número de mensajes" top_referrers: title: "Los que más recomiendan" xaxis: "Usuario" @@ -616,8 +618,9 @@ es: title_nag: "Introduce un nombre de tu sitio. Actualiza el nombre en Configuración del Sitio." site_description_missing: "Introduce una breve descripción sobre tu sitio que aparecerá en los resultados de búsqueda. Actualiza site_description en Ajustes del sitio." consumer_email_warning: "Tu sitio está configurado para Utilizar Gmail (u otro servicio de email de consumidor) para enviar email. Gmail limita la cantidad de emails que puedes enviar. Considera usar un proveedor de servicio email como mandrill.com para asegurarte la entrega de los emails." - site_contact_username_warning: "Introduce el nombre de un usuario administrador o moderador simpático desde donde se enviarán importantes mensajes privados automáticos. Actualiza site_contact_username en Ajustes del sitio." + site_contact_username_warning: "Introduce el nombre de un administrador o moderador simpático desde el cual se enviarán mensajes automáticos importantes. Actualiza site_contact_username en Ajustes del sitio." notification_email_warning: "Las notificaciones por email no están siendo enviadas desde una dirección de correo electrónico válida en tu dominio; la entrega de emails será errática y poco fiable. Por favor, establece para notification_email una dirección de correo electrónico local válida en Ajustes del sitio." + s3_deprecation_warning: "¡AVISO! El almacenamiento para archivos adjuntos e imágenes en Amazon S3 quedará obsoleto. Por favor, sigue las instrucciones para trasladarlo a almacenamiento local." content_types: education_new_reply: title: "Educación de nuevo usuario: primeras respuestas" @@ -630,10 +633,10 @@ es: description: "Guía e información esencial para los nuevos usarios." welcome_user: title: "Bienvenido: nuevo usuario" - description: "Un mensaje privado enviado automáticamente a todos los nuevos usuarios cuando se registren." + description: "Un mensaje que se enviará automáticamente a todos los nuevos usuarios cuando se registren." welcome_invite: title: "Bienvenido: usuario invitado" - description: "Un mensaje privado enviado automáticamente a todos los usuarios invitados cuando se acepten la invitación de otro usuario para participar." + description: "Un mensaje que se enviará automáticamente a todos los nuevos usuarios invitados cuando acepten la invitación de otro usuario." login_required_welcome_message: title: "Registro requerido: mensaje de bienvenida" description: "El mensaje de bienvenida que se muestra a los usuarios que han salido cuando la configuración de 'login required' está activada." @@ -655,11 +658,12 @@ es: default_locale: "El idioma por defecto de Discourse (ISO 639-1 Code)" allow_user_locale: "Permitir que los usuarios escojan su propio idioma para la interfaz" min_post_length: "Extensión mínima de los posts, en número de caracteres" - min_private_message_post_length: "Extensión mínima de los posts en los mensajes privados, en número de caracteres" + min_first_post_length: "Extensión mínima permitida en el primer mensaje (cuerpo del tema) en caracteres" + min_private_message_post_length: "Extensión mínima de los posts en los mensajes, en número de caracteres" max_post_length: "Extensión máxima de los posts, en número de caracteres" min_topic_title_length: "Extensión mínima del título de los temas, en número de caracteres" max_topic_title_length: "Extensión máxima del título de los temas, en número de caracteres" - min_private_message_title_length: "Extensión mínima del título de los temas en mensajes privados, en número de caracteres" + min_private_message_title_length: "Extensión mínima del título de los temas en mensajes, en número de caracteres" min_search_term_length: "Extensión mínima de una búsqueda válida, en número de caracteres" allow_uncategorized_topics: "Permitir que se creen temas sin categoría." uncategorized_description: "La descripción de la categoría Sin categoría. Déjalo en blanco para no añadir descripción." @@ -693,7 +697,7 @@ es: digest_logo_url: "El logo alternativo que irá arriba en los emails de resumen de tu sitio. Si se deja en blanco, se utilizará `logo_url`. Ejemplo: http://example.com/logo.png" logo_small_url: "El logo pequeño situado en la esquina superior izquierda del sitio, mostrado cuando se hace scroll hacia abajo. Si se deja en blanco, se mostrará un glifo de una casita." favicon_url: "Un favicon para tu sitio, mira http://es.wikipedia.org/wiki/Favicon" - mobile_logo_url: "El logo con posición fijada utilizado en la esquina superior izquierda de la versión móvil de tu sitio. Si se deja en blanco, se mostrará el texto del título del sitio." + mobile_logo_url: "El logo con posición fija utilizado en la esquina superior izquierda de la versión móvil de tu sitio. Si se deja en blanco, se mostrará el campo introducido en `logo_url`." apple_touch_icon_url: "Icono para los dispositivos táctiles de Apple. Se recomienda un tamaño de 144px por 144px." notification_email: "La dirección de correo electrónico \"remitente\", utilizada al enviar todos los emails esenciales de sistema. El dominio especificado debe tener correctamente configurados los registros SPF, DKIM y PTR inversos para que los emails se reciban correctamente." email_custom_headers: "Lista de emails separados por una barra" @@ -704,7 +708,7 @@ es: summary_likes_required: "Mínimo de \"me gusta\" en un tema para habilitar 'Resumen de este tema'" summary_percent_filter: "Cuando un usuario hace clic en 'Resumen de este tema', se muestra el n % mejores posts" summary_max_results: "Máximo de posts devueltos en \"Resumen de este tema\"" - enable_private_messages: "Permitir a los usuarios de nivel de confianza 1 crear y responder mensajes privados" + enable_private_messages: "Permitir a los usuarios de nivel de confianza 1 crear y responder mensajes" enable_long_polling: "Los mensajes usados para notificaciones pueden usar el long polling" long_polling_base_url: "URL base usada para el 'long polling' (cuando un CDN esta sirviendo contenido dinámico, asegúrate de ajustar esto al 'pull' de origen) ejemplo: http://origin.site.com" long_polling_interval: "Cantidad de tiempo que el servidor debe de esperar antes de responder a los clientes que no hay datos enviados (solamente usuarios con sesión iniciada)." @@ -737,8 +741,8 @@ es: post_menu_hidden_items: "Los elementos del menú a ocultar por defecto en el menú de cada post a menos que se haga clic en el botón para expandir las opciones." share_links: "Determina qué elementos aparecen en el cuadro de compartir y en qué orden" track_external_right_clicks: "Hacer seguimiento de los enlaces externos en los que se ha hecho clic con el botón derecho (ej: abrir en nueva pestaña) desactivado por defecto porque reescribe URLs" - site_contact_username: "Nombre de usuario de moderador o administrador desde donde se enviarán mensajes privados automáticos. Si se deja en blanco, se utilizará la cuenta de sistema por defecto." - send_welcome_message: "Enviar a todos los nuevos usuarios un mensaje privado de bienvenida con una guía rápida para comenzar." + site_contact_username: "Nombre de usuario de moderador o administrador desde donde se enviarán mensajes automáticos. Si se deja en blanco, se utilizará la cuenta system por defecto." + send_welcome_message: "Enviar a todos los nuevos usuarios un mensaje de bienvenida con una guía rápida para comenzar." suppress_reply_directly_below: "No mostrar el contador de respuestas desplegable en un post si solo hay una única respuesta y está justamente debajo del post en cuestión." suppress_reply_directly_above: "No mostrar el en-respuesta-a desplegable en un post cuando solo hay una sola respuesta justo encima del post." suppress_reply_when_quoting: "No mostrar el desplegable en-respuesta-a en un post cuando el post cite la respuesta." @@ -774,7 +778,7 @@ es: sso_secret: "Cadena secreta utilizada para autenticar criptográficamente la información del SSO, asegúrate de que es de 10 caracteres o más" sso_overrides_email: "Reemplaza el email local con el email del sitio externo desde el payload del SSO (AVISO: pueden ocurrir discrepancias debido a la normalización de los correos electrónicos locales)" sso_overrides_username: "Reemplaza el nombre de usuario local con el nombre de usuario del sitio externo desde el payload del SSO (AVISO: pueden ocurrir discrepancias debido a las diferencias de requirimientos/longitud en los nombres de usuario)" - sso_overrides_name: "Reemplaza el nombre local con el nombre del sitio externo desde el payload del SSO (AVISO: pueden ocurrir discrepancias debido a la normalización de los nombres locales)" + sso_overrides_name: "Reemplaza el nombre completo local con el nombre completo desde el sitio externo especificado en el payload del SSO" sso_overrides_avatar: "Sustituye el avatar de usuario con el avatar proveniente del sitio externo configurado para el SSO. Si se activa esta opción, se recomienda encarecidamente deshabilitar allow_uploaded_avatars" enable_local_logins: "Habilitar las cuentas con nombre de usuario y contraseña de forma local. (Nota: esto debe estar habilitado para que funcionen las invitaciones)" allow_new_registrations: "Permitir el registro de nuevos usuarios. Desactiva esta opción para prevenir que nadie pueda crear una nueva cuenta." @@ -809,7 +813,7 @@ es: max_bookmarks_per_day: "Máximo número de marcadores por usuario y día." max_edits_per_day: "Máximo número de ediciones por usuario y día." max_topics_per_day: "Máximo número de temas que un usuario puede crear al día." - max_private_messages_per_day: "Máximo número de mensajes privados por usuario y día." + max_private_messages_per_day: "Máximo número de mensajes por usuario y día." max_invites_per_day: "Máximo número de invitaciones que un usuario puede enviar al día." suggested_topics: "Número de temas sugeridos mostrados al pie del tema." limit_suggested_to_category: "Solo mostrar temas de la categoría actual en los temas sugeridos." @@ -859,7 +863,7 @@ es: email_time_window_mins: "Esperar (n) minutos antes de enviar cualquier email de notificación, para dar a los usuarios margen con el que editar y finalizar sus posts." email_posts_context: "Cuántas respuestas previas se incluirán como contexto en los emails de notificación." flush_timings_secs: "Cuán frecuente, en segundos, se alinean los datos de sincronización con el servidor." - max_word_length: "La extensión máxima que una palabra puede tener, en caracteres, en el título de un tema." + title_max_word_length: "La longitud máxima permitida de una palabra, en caracteres, en el título del tema." title_min_entropy: "La mínima entropía permitida (caracteres únicos) requerida para el título de un tema." body_min_entropy: "La mínima entropía permitida (caracteres únicos) requerida para el cuerpo de un post." title_fancy_entities: "Convertir caracteres ASCII comunes en entidades HTML de adorno en el título de los temas, como SmartyPants http://daringfireball.net/projects/smartypants/" @@ -937,6 +941,7 @@ es: max_daily_gravatar_crawls: "Máximo número de veces que Discourse comprobará Gravatar en busca de avatares personalizados en un día" public_user_custom_fields: "Una lista con campos personalizados para el usuario que pueden ser mostrados públicamente." staff_user_custom_fields: "Una lista con campos personalizados para el usuario que pueden ser mostrados a los moderadores o admin." + enable_user_directory: "Proporcionar un directorio de usuarios" allow_profile_backgrounds: "Permitir a los usuarios subir sus propios fondos de perfil personalizados." sequential_replies_threshold: "Número de posts consecutivos que un usuario publicará en un mismo tema hasta mostrarle un recordatorio sobre demasiadas repuestas seguidas." enable_mobile_theme: "Los dispositivos móviles utilizan un tema adaptado, con la habilidad de cambiar al estilo de sitio completo. Deshabilita esta opción si quieres utilizar una plantilla personalizada que sea completamente adaptable." @@ -944,6 +949,7 @@ es: suppress_uncategorized_badge: "No mostrar la etiqueta de los temas sin categoría en la lista de temas." global_notice: "Mostrar una noticia de URGENCIA o EMERGENCIA para todos los visitantes, deja este campo en blanco para ocultarla (se puede utilizar código HTML)" disable_edit_notifications: "Inhabilitar editar notificaciones por el usuario system cuando 'download_remote_images_to_local' este activo." + full_name_required: "Su nombre completo es un campo obligatorio de un perfil de usuario." enable_names: "Mostrar el nombre completo del usuario en su perfil, tarjeta de usuario y emails. Desactiva esta opción para ocultar el nombre completo en todas partes." display_name_on_posts: "Mostrar el nombre completo de un usuario en sus posts, además de su @usuario." invites_per_page: "Número de invitaciones por defecto mostradas en la página de perfil del usuario." @@ -992,8 +998,9 @@ es: edited: "%{display_username} ha editado tu post en %{link}" posted: "%{display_username} publicó en %{link}" moved_post: "%{display_username} ha movido tu post a %{link}" - private_message: "%{display_username} te ha enviado un mensaje privado: %{link}" - invited_to_private_message: "%{display_username} te ha invitado a un mensaje privado: %{link}" + private_message: "%{display_username} te ha enviado un mensaje: %{link}" + invited_to_private_message: "%{display_username} te ha invitado a un hilo de mensajes: %{link}" + invited_to_topic: "%{display_username} te ha invitado a un tema: %{link}" invitee_accepted: "%{display_username} ha aceptado tu invitación" linked: "%{display_username} te enlazó en %{link}" granted_badge: "Obtuviste %{link}" @@ -1123,6 +1130,43 @@ es: %{base_url}/users/password-reset/%{email_token} test_mailer: subject_template: "[%{site_name}] Prueba de envío de email" + text_body_template: | + Este es un correo electrónico de prueba de + + [**%{base_url}**][0] + + La entrega de correo electrónico es complicada. Aquí hay unas cuantas cosas importantes que deberías comprobar primero: + + - *Asegúrate* de ajustar la dirección `notification email` desde: correctamente en los ajustes de tu sitio. **El dominio especificado en la dirección "from" de los emails que envíes es el dominio contra el que se validará tu email**. + + - Entérate de como ver el código fuente del email desde tu cliente de correo, para que así puedas examinar las cabeceras para ver pistas importantes. En Gmail está la opción "mostrar original" en el menú de lista desplegable en la parte superior derecha de cada email. + + - **IMPORTANTE:** ¿Tu ISP tiene registros de DNS inversa para asociar los nombres de dominio y las direcciones IP desde donde envías los correos? [Comprueba tu registro PTR Inverso][2] aquí. Si tu ISP no introduce el puntero de registro DNS inverso adecuado, es muy improbable que cualquiera de tus correos pueda ser entregado. + + - ¿Es el [registro SPF][8] de tu dominio correcto? [Comprueba tu registro SPF][1] aquí. Ten en cuenta que TXT es el tipo de registro oficial correcto para SPF. + + - ¿Es el [registro DKIM][3] de tu dominio correcto? Esto puede mejorar significativamente la entregabilidad de correos. [Comprueba tu registro DKIM][7] aquí. + + - Si estás corriendo tu propio servidor de correo, asegúrate de que las IPs de tu servidor de correo [no están en ninguna lista negra de correos][4]. También verifica que definitivamente se está enviando un nombre de huésped "hostname" completamente cualificado que resuelva en DNS en su mensaje HELO. Si no es así, esto causará que tu correo sea denegado por muchos servicios de correo. + + (La forma *fácil* es crear una cuenta gratuíta en [Mandrill][md] o [Mailgun][mg] o [Mailjet][mj], que proveen generosamente planes de mailing gratuítos y serán adecuados para pequeñas comunidades. ¡De todas formas todavía tendrás que configurar los registros SPF y DKIM en tus DNS!) + + ¡Esperamos que recibas esta prueba de entregabilidad de correo electrónico correctamente! + + Buena suerte, + + Tus amigos de [Discourse](http://www.discourse.org) + + [0]: %{base_url} + [1]: http://www.kitterman.com/spf/validate.html + [2]: http://mxtoolbox.com/ReverseLookup.aspx + [3]: http://www.dkim.org/ + [4]: http://whatismyipaddress.com/blacklist-check + [7]: http://dkimcore.org/tools/dkimrecordcheck.html + [8]: http://www.openspf.org/SPF_Record_Syntax + [md]: http://mandrill.com + [mg]: http://www.mailgun.com/ + [mj]: https://www.mailjet.com/pricing new_version_mailer: subject_template: "[%{site_name}] Nueva versión de Discourse, actualización disponible" text_body_template: | @@ -1198,8 +1242,38 @@ es: Para más información, por favor consulta nuestras [reglas de comunidad](%{base_url}/guidelines). welcome_user: subject_template: "¡Bienvenido a %{site_name}!" + text_body_template: | + ¡Gracias por unirte a %{site_name}! ¡Te damos la bienvenida! + + %{new_user_tips} + + Creemos en una comunidad con un [comportamiento civilizado](%{base_url}/guidelines). + + ¡Disfruta de tu estancia! + + (Si necesitas comunicarte con [algún miembro del staff](%{base_url}/about) como nuevo usuario, puedes responder a este mensaje.) welcome_invite: subject_template: "¡Bienvenido a %{site_name}!" + text_body_template: | + Gracias por aceptar tu invitación a %{site_name} -- ¡Te damos la bienvenida! + + Hemos creado automáticamente una nueva cuenta para ti: **%{username}**. Puedes cambiar tu nombre de usuario en cualquier momento visitando [tu perfil][prefs]. + + Para iniciar sesión en adelante: + + 1. Usa siempre la **misma dirección de correo** en la que recibiste tu invitación original. ¡De otra manera no seremos capaces de reconocer que eres tú! + + 2. Crea una contraseña unica para [tu perfil de usuario][prefs], y úsala para iniciar sesión. + + %{new_user_tips} + + Creemos en una comunidad con un [comportamiento civilizado](%{base_url}/guidelines). + + ¡Disfruta de tu estancia! + + (Si necesitas comunicarte por privado con [algún miembro del staff](%{base_url}/about) como nuevo usuario, puedes responder a este mensaje.) + + [prefs]: %{user_preferences_url} backup_succeeded: subject_template: "La copia de seguridad se completo exitosamente" text_body_template: "La copia de seguridad fue exitosa.\nVisita la [sección admin > copia de seguridad](/admin/backups) para descargar tu nueva copia de seguridad." @@ -1241,38 +1315,44 @@ es: ``` csv_export_succeeded: subject_template: "Exportación de datos completada" + text_body_template: | + ¡Tu exportación de datos ha sido exitosa! :dvd: + + %{file_name} (%{file_size}) + + Este enlace de descarga será válido durante 48 horas. csv_export_failed: subject_template: "La exportación de datos falló" text_body_template: "Lo sentimos, pero la exportación de datos falló. Por favor, verifica los registros o contacta a un miembro del staff." email_reject_trust_level: - subject_template: "Error con el email -- insuficiente nivel de confianza" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Nivel de Confianza Insuficiente" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado. Tu cuenta no tiene el nivel de confianza suficiente para publicar nuevos temas a esta dirección de correo electrónico. Si crees que esto es un error, contacta con algún miembro del Staff. email_reject_no_account: - subject_template: "Problema con el e-mail -- Cuenta Desconocida" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Cuenta Desconocida" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado. No hay una cuenta de usuario asociada con esta dirección de email. Intenta enviarlo con otra dirección de email o contacta con algún miembro del Staff. email_reject_empty: - subject_template: "Error con el email -- No hay contenido" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Sin Contenido" text_body_template: "Lo sentimos, pero tu email para %{destination} (titled %{former_title}) no funcionó.\n\nNo pudimos encontrar contenido en este e-mail. Asegúrate de que hayas escrito algo al inicio del e-mail - no podemos analizar respuestas en una sola línea.\n\nSi estás teniendo este problema y _sí_ incluiste contenido, intenta otra vez con contenido HTML incluido en tu e-mail (no solo texto plano). \n" email_reject_parsing: - subject_template: "Error con el email -- Contenido desconocido" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Contenido desconocido" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no funcionó. No hemos encontrado tu respuesta en el email. **Asegúrate de escribir tu entera respuesta al principio del email** - no podemos analizar respuestas entre líneas. email_reject_post_error: - subject_template: "Error con el email -- Error de publicación" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Error de publicación" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado. Posibles causas: formato complejo, mensaje demasiado extenso o demasiado breve. Por favor, inténtalo de nuevo. email_reject_post_error_specified: - subject_template: "Error con el email -- Error de publicación" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Error de publicación" text_body_template: | Lo sentimos, pero tu mensaje e-mail para %{destination} (titulado %{former_title}) no funciono. @@ -1282,31 +1362,37 @@ es: Si puedes corregir el problema, por favor intenta de nuevo. email_reject_reply_key: - subject_template: "Problema con el e-mail -- Llave de Respuesta Desconocida" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Clave de Respuesta Desconocida" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) se ha rechazado. La clave de respuesta proporcionada no es válida o es desconocida, por lo que no sabemos a qué responde este email. Contacta con algún miembro del staff. email_reject_destination: - subject_template: "Problema con el e-mail -- Desconocido Para: Dirección" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Desconocido Para: Dirección" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no funcionó. No se ha podido reconocer ninguna de las direcciones destino. Por favor, asegúrate de que la dirección del sitio está en Para: (no CC ni BCC), y que lo estás enviando a la dirección de e-mail proporcionada por los administradores. email_reject_topic_not_found: - subject_template: "Problema con el email -- Tema No Encontrado" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Tema no encontrado" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no funcionó. No hemos encontrado el tema, debe haber sido eliminado. Si crees que esto es un error, contacta a un administrador. email_reject_topic_closed: - subject_template: "Problema con el email -- Tema Cerrado" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Tema cerrado" text_body_template: | Lo sentimos, pero tu email para %{destination} (titulado %{former_title}) no funcionó. El tema está cerrado a respuestas. Si crees que esto es un error, contacta a un administrador. + email_reject_auto_generated: + subject_template: "[%{site_name}] Problema con el correo electrónico -- Respuesta Auto Generada" + text_body_template: | + Lo sentimos, pero tu mensaje de correo electrónico para %{destination} y (titulado %{former_title}) no funcionó. + + Tu respuesta de correo fue auto generada y no aceptamos esto. Si crees que se trata de un error contacta con un miembro del equipo. email_error_notification: - subject_template: "Error con el email -- Autenticación POP errónea" + subject_template: "[%{site_name}] Problema con el correo electrónico -- Error de autenticación POP" text_body_template: | Ha habido un error de autenticación mientras se ejecutaba el polling de los emails desde el servidor POP. @@ -1373,11 +1459,9 @@ es: visit_link_to_respond: "Para responder, visita %{base_url}%{url} en tu navegador." posted_by: "Publicado por %{username} el %{post_date}" user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} te invitó a una conversación privada '%{topic_title}'" - text_body_template: | - %{username} te invitó a una conversación privada '%{topic_title}' en %{site_name}: - - Por favor visita este enlace para ver el tema: %{base_url}%{url} + subject_template: "[%{site_name}] %{username} te ha invitado a un hilo de mensajes '%{topic_title}'" + user_invited_to_topic: + subject_template: "[%{site_name}] %{username} te ha invitado a un tema '%{topic_title}'" user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1426,7 +1510,7 @@ es: %{respond_instructions} digest: why: "Un breve resumen de %{site_link} desde tu última visita el %{last_seen_at}" - subject_template: "[%{site_name}] Resumen del %{date}" + subject_template: "Resumen de [%{site_name}]" new_activity: "Actividad nueva en tus temas y posts:" top_topics: "Posts populares" other_new_topics: "Temas populares" @@ -1472,6 +1556,23 @@ es: %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "Tú solicitud ha sido aprobada en %{site_name}!" + text_body_template: | + ¡Te damos la bienvenida a %{site_name}! + + Un miembro del staff aprobó tu cuenta en %{site_name}. + + Haz clic en el siguiente enlace para confirmar y activar tu nueva cuenta: + %{base_url}/users/activate-account/%{email_token} + + Si no puedes hacer clic en el enlace, intenta copiándolo y pegándolo en la barra de direcciones de tu navegador. + + %{new_user_tips} + + Creemos en una comunidad con un [comportamiento civilizado](%{base_url}/faq). + + ¡Disfruta de tu estancia! + + (Si necesitas comunicarte por privado con [algún miembro del staff](%{base_url}/about) como nuevo usuario, puedes responder a este mensaje.) signup: subject_template: "[%{site_name}] Activa tu nueva cuenta" text_body_template: | @@ -1513,7 +1614,7 @@ es: spam_hosts: "Este nuevo usuario intentó crear varios posts con enlaces al mismo dominio. Mira la opción newuser_spam_host_threshold." email_log: no_user: "No se puede encontrar al usuario con id %{user_id}" - suspended_not_pm: "El usuario esta suspendido, no mensajes privados." + suspended_not_pm: "El usuario está suspendido, no mensaje" seen_recently: "El usuario fue visto hace poco" post_not_found: "No se puede encontrar un post con id %{post_id}" notification_already_read: "La notificación de la que informaba este email ya ha sido leída" @@ -1542,3 +1643,97 @@ es: title: "Términos de Servicio" privacy_topic: title: "Políticas de Privacidad" + static: + search_help: | +

    Consejos

    +

    +

      +
    • Las coincidencias de título están priorizadas, por lo que si tienes dudas, busca por títulos.
    • +
    • Las palabras únicas o poco comunes siempre producirán los mejores resultados.
    • +
    • Siempre que puedas, reduce el ámbito de tu búsqueda a una categoría en particular, usuario o tema
    • +
    +

    +

    Opciones

    +

    + + + + + + +
    order:viewsorder:latest
    status:openstatus:closedstatus:archivedstatus:norepliesstatus:singleuser
    category:foouser:foo
    in:likesin:postedin:watchingin:trackingin:private
    in:bookmarks
    +

    +

    + arcoiris category:parks status:open order:latest buscará temas que contengan la palabra "rainbows" en la categoría "parks" que no estén cerrados o archivados, y se ordenarán por la fecha del último mensaje.

    + badges: + long_descriptions: + autobiographer: | + Blah blah blah + Blah blah blah + first_like: | + Blah blah blah + Blah blah blah + first_link: | + Blah blah blah + Blah blah blah + first_quote: | + Blah blah blah + Blah blah blah + first_share: | + Blah blah blah + Blah blah blah + read_guidelines: | + Blah blah blah + Blah blah blah + reader: | + Blah blah blah + Blah blah blah + editor: | + Blah blah blah + Blah blah blah + first_flag: "Los reportes son críticos para mantener saludable tu comunidad. Si detectas que alguna publicación pueda necesitar la atención de un moderador por favor \nno dudes en reportarlo. Tambien puedes usar el diálogo de reporte para enviar mensajes a los usuarios una vez alcances \nel nivel de confianza 1.\n" + nice_share: | + Blah blah blah + Blah blah blah + welcome: | + Blah blah blah + Blah blah blah + anniversary: | + Blah blah blah + Blah blah blah + good_share: | + Blah blah blah + Blah blah blah + great_share: | + Blah blah blah + Blah blah blah + nice_post: | + Blah blah blah + Blah blah blah + nice_topic: | + Blah blah blah + Blah blah blah + good_post: | + Blah blah blah + Blah blah blah + good_topic: | + Blah blah blah + Blah blah blah + great_post: | + Blah blah blah + Blah blah blah + great_topic: | + Blah blah blah + Blah blah blah + basic: | + Blah blah blah + Blah blah blah + member: | + Blah blah blah + Blah blah blah + regular: | + Blah blah blah + Blah blah blah + leader: | + Blah blah blah + Blah blah blah diff --git a/config/locales/server.fa_IR.yml b/config/locales/server.fa_IR.yml new file mode 100644 index 0000000000..6383fd29d4 --- /dev/null +++ b/config/locales/server.fa_IR.yml @@ -0,0 +1,1269 @@ +# encoding: utf-8 +# +# Never edit this file. It will be overwritten when translations are pulled from Transifex. +# +# To work with us on translations, join this project: +# https://www.transifex.com/projects/p/discourse-org/ + +fa_IR: + dates: + short_date_no_year: "D MMM" + short_date: "D MMM, YYYY" + long_date: "MMMM D, YYYY h:mma" + title: "گفتمان" + 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: نمی تواند خالی باشد + equal_to: باید برابر %{count} باشد + even: باید زوج باشد + exclusion: محفوظ است + greater_than: باید بیشتر از %{count} باشد + greater_than_or_equal_to: باید بیشتر و یا مساوی %{count} باشد + inclusion: در لیست وجود ندارد + invalid: صحیح نیست + less_than: باید کمتر از %{count} باشد + less_than_or_equal_to: باید کمتر و یا مساوی %{count} باشد + not_a_number: یک عدد نمی باشد + not_an_integer: باید یک عدد صحیح باشد + odd: باید یک عدد فرد باشد + record_invalid: 'عملیات با خطا مواجه شد : %{errors}' + restrict_dependent_destroy: + one: "نمی توان سابقه را پاک کرد زیرا یک %{record} وابسته وجود دارد." + many: "نمی توان سابقه را پاک کرد زیرا یک %{record} وابسته وجود دارد." + too_long: + other: آیا خیلی طولانی است ( حداکثر %{count} کاراکتر است) + too_short: + other: آیا خیلی کوتاه است (حداقل%{count} کاراکتر است) + wrong_length: + other: آیا طولش اشتباه است (باید %{count} کاراکتر باشد) + other_than: "باید غیر از {count}% باشد" + template: + body: 'مشکلاتی با زمینه های دنبال شده وجود دارد:' + embed: + load_from_remote: "خطایی در بارگذاری آن پست رخ داده است." + bulk_invite: + file_should_be_csv: "قالب پرونده‌ی بارگذاری شده باید csv و یا txt باشد." + backup: + operation_already_running: "یک عملیات در حال اجراست. کار جدیدی نمی توان شروع کرد." + backup_file_should_be_tar_gz: "پرونده‌ی پشتیبان باید یک فایل فشرده با پسوند tar.gz. باشد." + not_enough_space_on_disk: "فضای کافی برای بارگذاری این پشتیبان وجود ندارد." + not_logged_in: "برای اینکار شما باید وارد شوید." + not_found: "URL یا منبع درخواست شده یافت نشد." + invalid_access: "شما اجازه مشاهده منبع درخواست شده را ندارید." + read_only_mode_enabled: "سایت در حالت فقط خواندنی است. تداخلات غیرفعال هستند." + too_many_replies: + other: "متأسفیم، ولی کاربران جدید موقتا محدود به {count}% پاسخ در برخی از تاپیک ها هستند." + embed: + start_discussion: "مبحث جدید" + continue: "ادامه این بحث" + more_replies: + other: "%{count} پاسخ دیگر" + loading: "بارگزاری مبحث ..." + permalink: " پیوند یکتا" + in_reply_to: "▶ %{username}" + replies: + other: "%{count} پاسخ" + too_many_mentions: + zero: "متأسفیم، شما نمی‌توانید به کاربران دیگر اشاره کنید." + one: "متأسفیم، شما در هر دیدگاه تنها می‌توانید به یک کاربر اشاره کنید." + other: "متأسفیم، شما در هر دیدگاه تنها می‌توانید به %{count} کاربر اشاره کنید." + too_many_mentions_newuser: + zero: "متأسفیم، کاربران تازه نمی‌توانند به کاربران دیگر اشاره کنند." + one: "متأسفیم، کاربران تازه در هر دیدگاه تنها می‌توانید به یک کاربر دیگر اشاره کنند." + other: "متأسفیم، کاربران تازه در هر دیدگاه تنها می‌توانید به %{count} کاربر دیگر اشاره کنند." + too_many_images: + zero: "متأسفیم، کاربران تازه نمی‌توانند در دیدگاه‌ها تصویر بگذارند." + one: "متأسفیم، کاربران تازه تنها می‌توانند یک تصویر در هر دیدگاه بگذارند" + other: "متأسفیم، کاربران تازه تنها می‌توانند %{count} تصویر در هر دیدگاه بگذارند" + too_many_attachments: + zero: "متأسفیم، کاربران تازه امکان اضافه کردن فایل به ارسال هایشان را ندارند." + one: "متأسفیم ، کاربران تازه فقط امکان اتصال تنها یک فایل به ارسال هایشان را دارند." + other: "متأسفیم ، کاربران تازه تنها اجازه اتصال %{count} فایل به ارسالی شان را دارند." + too_many_links: + zero: "متأسفیم، کاربران تازه نمی‌توانند در دیدگاه‌ها پیوند بگذارند." + one: "متأسفیم، کاربران تازه تنها می‌توانند در هر دیدگاه یک پیوند بگذارند." + other: "متأسفیم، کاربران تازه تنها می‌توانند در هر دیدگاه %{count} پیوند بگذارند." + spamming_host: "متأسفانه شما نمی‌توانید پیوندی با آن نشانی را بفرستید." + user_is_suspended: "کاربر تعلیق شده نمی‌تواند نوشته ای بگذارد." + topic_not_found: "یک مشکلی وجود دارد. شاید این جستار بسته شده یا پاک شده همزمان که داشتی نگاهش می کردی ؟" + just_posted_that: "به آن‌چه که به‌تازگی فرستادید بسیار نزدیک است" + has_already_been_used: "پیش‌تر استفاده شده است" + invalid_characters: "نویسه‌های نامعتبر در بر دارد." + is_invalid: "نامعتبر است. تلاش کنید که کمی بیش‌ترتوضیح بگذارید." + next_page: "صفحه بعد ←" + prev_page: "→ صفحه قبل" + page_num: "صفحه %{num}" + home_title: "خانه" + topics_in_category: "جستارهای دستهٔ‌ «%{category}»" + rss_posts_in_topic: "خوراک «%{topic}»" + rss_topics_in_category: "خوارک جستارهای دستهٔ «%{category}»" + author_wrote: "%{author} نوشت:" + num_posts: "ارسال ها:" + num_participants: "اشتراک در :" + read_full_topic: "مشاهده متن کامل" + private_message_abbrev: "پیام" + rss_description: + latest: "آخرین ارسال ها" + hot: "جستارهای داغ" + too_late_to_edit: "ارسالی مورد نظر مربوط به زمان بسیار گذشته می باشد. امکان ویرایش و حذف آن وجود ندارد." + excerpt_image: "تصویر" + groups: + errors: + can_not_modify_automatic: "شما امکان تغییر یک گروه خودکار را ندارید." + default_names: + everyone: "همه" + admins: "مدیران" + moderators: "ناظمان" + staff: "کارمند" + trust_level_0: "کاربر سطح 0" + trust_level_1: "کاربر سطح 1" + trust_level_2: "کاربر سطح 2" + trust_level_3: "کاربر سطح 3" + trust_level_4: "کاربر سطح 4" + education: + until_posts: + other: "%{count} ارسال" + new-topic: | + Welcome to %{site_name} — **thanks for starting a new conversation!** + + - Does the title accurately describe your topic? Does it sound interesting? + + - What is this about? Who would be interested in it? Why does it matter? What kind of responses are you hoping for from the community? + + - Include good search words in your topic so others can *find* it. To group your topic with related topics, select a category. + + For more, [see our community guidelines](/guidelines). This panel will only appear for your first %{education_posts_text}. + new-reply: | + Welcome to %{site_name} — **thanks for contributing!** + + - Does your reply improve the conversation in some way? + + - Be kind to your fellow community members. + + - Constructive criticism is welcome, but criticize *ideas*, not people. + + For more, [see our community guidelines](/guidelines). This panel will only appear for your first %{education_posts_text}. + avatar: | + ### How about a new picture for your account? + + You've posted a few topics and replies, but your avatar isn't as unique as you are -- it's the same default avatar all new users have. + + Have you considered **[visiting your user profile](%{profile_path})** and uploading a custom image that represents you? + + It's easier to follow community discussions and find interesting people in conversations when everyone has a unique avatar! + sequential_replies: | + ### Consider replying to several posts at once + + Rather than many sequential replies to a topic, please consider a single reply that includes quotes from previous posts or @name references. + + You can edit your previous reply to add a quote by highlighting text and selecting the quote reply button that appears. + + It's easier for everyone to read topics that have fewer in-depth replies versus lots of small, individual replies. + dominating_topic: | + ### Let others join the conversation + + This topic is clearly important to you – you've posted more than %{percent}% of the replies here. + + Are you sure you're providing adequate time for other people to share their points of view, too? + too_many_replies: | + ### You have reached the reply limit for this topic + + We're sorry, but new users are temporarily limited to %{newuser_max_replies_per_topic} replies in the same topic. + + Instead of adding another reply, please consider editing your previous replies, or visiting other topics. + reviving_old_topic: | + ### Revive this topic? + + The last reply to this topic is now over %{days} days old. Your reply will bump the topic to the top of its list and notify anyone previously involved in the conversation. + + Are you sure you want to continue this old conversation? + activerecord: + attributes: + category: + name: "نام دسته" + post: + raw: "متن" + user_profile: + bio_raw: "درباره من" + errors: + messages: + is_invalid: "نامعتبر است. تلاش کنید که کمی بیش‌تر توضیح بگذارید." + has_already_been_used: "موجود می باشد" + models: + topic: + attributes: + base: + warning_requires_pm: "شما فقط قادر به ضمیمه کردن اخطارها در پیام های خصوصی هستید." + too_many_users: "شما در هر بار می توانید به یک کاربر اخطار ها را ارسال نمایید." + cant_send_pm: "متأسفانه ، شما نمیتوانید به این کاربر پیام خصوصی بفرستید." + no_user_selected: "باید یک کاربر درست را انتخاب کنید" + user: + attributes: + password: + common: "این یکی از 10000 رمز عبور مرسوم است. لطفا از رمز عبور امن تری استفاده کنید. " + same_as_username: "همانند نام کاربری شما است. لطفا از رمز عبور امن تری استفاده نمایید." + same_as_email: "همانند ایمیل شما است. لطفا از رمز عبور امن تری استفاده نمایید." + ip_address: + signup_not_allowed: "ثبت نام از این حساب ممنوع می باشد." + color_scheme_color: + attributes: + hex: + invalid: "این یک رنگ معتبر نیست" + vip_category_name: "زبان" + vip_category_description: "دسته مخصوص برای اعضا با سطح اعتماد 3 و بالاتر." + meta_category_name: "متا" + meta_category_description: "گفتگو در مورد سایت٬ این سازمان٬ چگونه کار می کنه٬ و چطور می توانیم آن را بهبود ببخشیم. " + staff_category_name: "کارکنان" + staff_category_description: "بخش خصوصی برای گفتگوی مدیران. جستارها فقط برای مدیران و گردانندگان قابل رویت است." + assets_topic_body: "This is a permanent topic, visible only to staff, for storing images and files used in the site design. Don't delete it!\n\n\nHere's how:\n\n\n1. Reply to this topic.\n2. Upload all the images you wish to use for logos, favicons, and so forth here. (Use the upload toolbar icon in the post editor, or drag-and-drop or paste images.)\n3. Submit your reply to post it.\n4. Right click the images in your new post to get the path to the uploaded images, or click the edit icon to edit your post and retrieve the path to the images. Copy the image paths.\n5. Paste those image paths into [basic settings](/admin/site_settings/category/required).\n\n\nIf you need to enable different file type uploads, edit `authorized_extensions` in the [file settings](/admin/site_settings/category/files)." + lounge_welcome: + title: "به انجمن خوش آمدید" + body: |2 + + Congratulations! :confetti_ball: + + If you can see this topic, you were recently promoted to **regular** (trust level 3). + + You can now … + + * Edit the title of any topic + * Change the category of any topic + * Have all your links followed ([automatic nofollow](http://en.wikipedia.org/wiki/Nofollow) is removed) + * Access a private Lounge category only visible to users at trust level 3 and higher + * Hide spam with a single flag + + Here's the [current list of fellow regulars](/badges/3/regular). Be sure to say hi. + + Thanks for being an important part of this community! + + (For more information on trust levels, [see this topic][trust]. Please note that only members who continue to meet the requirements over time will remain regulars.) + + [trust]: https://meta.discourse.org/t/what-do-user-trust-levels-do/4924 + category: + topic_prefix: "در رابطه با دسته بندی {category}% " + 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" + errors: + uncategorized_parent: "بدون دسته بندی نمی تواند طبقه خانواده داشته باشد" + cannot_delete: + uncategorized: "بدون دسته بندی را نمی توان حذف کرد" + has_subcategories: "این دسته بندی به دلیل داشتن زیردسته قابل پاک شدن نیست." + topic_exists: + other: "این دسته بندی باید پاک شود زیرا این جستار دارای %{count} است. قدیمی ترین جستار %{topic_link}." + topic_exists_no_oldest: "این دسته را نمی توان پاک کرد زیرا تعداد جستار %{count} است " + trust_levels: + newuser: + title: "کاربر جدید" + basic: + title: "کاربر پایه" + regular: + title: "عضو" + leader: + title: "عمومی" + elder: + title: "رهبر" + rate_limiter: + slow_down: "شما این عمل را بیش از حد انجام داده اید، بعدا دوباره تلاش کنید" + too_many_requests: "ما روزانه محدودیت زمانی داریم برای اینکه این اقدام چند بار انجام شود. لطفا صبر کنید %{time_left} قبل ازاینکه دوباره تلاش کنید. " + hours: + other: "%{count} ساعت" + minutes: + other: "%{count} دقیقه" + seconds: + other: "%{count} ثانیه" + datetime: + distance_in_words: + half_a_minute: "< 1دقیقه" + less_than_x_seconds: + other: "< %{count}ثانیه" + x_seconds: + other: "%{count}ثانیه" + less_than_x_minutes: + other: "< %{count}دقیقه" + x_minutes: + other: "%{count}دقیقه" + about_x_hours: + other: "%{count}ساعت" + x_days: + other: "%{count}روز" + about_x_months: + other: "%{count}ماه" + x_months: + other: "%{count}ماه" + about_x_years: + other: "%{count}سال" + over_x_years: + other: "> %{count}سال" + almost_x_years: + other: "%{count}سال" + distance_in_words_verbose: + half_a_minute: "هم اکنون" + less_than_x_seconds: + other: "هم اکنون" + x_seconds: + other: "%{count} ثانیه قبل" + less_than_x_minutes: + other: "کمتر از %{count} دقیقه قبل" + x_minutes: + other: "%{count} دقیقه قبل" + about_x_hours: + other: "%{count} ساعت قبل" + x_days: + other: "%{count} روز قبل" + about_x_months: + other: "حدودا %{count} ماه قبل" + x_months: + other: "%{count} ماه قبل" + about_x_years: + other: "حدودا %{count} سال قبل" + over_x_years: + other: "بیش از %{count} سال قبل" + almost_x_years: + other: "حداقل %{count} سال قبل" + password_reset: + choose_new: "لطفا یک رمز عبور جدید وارد کنید" + choose: "لطفا یک رمز عبور وارد کنید" + update: 'به‌روز کردن گذرواژه' + save: 'تنظیم رمز عبور' + title: 'بازیابی گذرواژه' + success: "شما با موفقیت رمز عبورتان را تغییر دادید و الان وارد سیستم هستید. " + success_unapproved: "شما با موفقیت رمز عبورتان را تغییر دادید." + continue: "برو به %{site_name}" + change_email: + confirmed: "ایمیل شما به روز شد." + please_continue: "برو به %{site_name}" + error: "در تغییر ایمیلتان خطایی روی داد. شاید آن نشانی از پیش در حال استفاده است؟" + activation: + action: "حساب کاربریتان را فعال کنید" + already_done: "متاسفیم٬‌ این پیوند تاییدیه حساب کاربری دیگر معتبر نیست. شاید حساب کاربری شما در حال حاضر فعال است." + please_continue: "حساب کاربری جدید شما تایید شد; شما به صفحه اصلی هدایت می شوید. " + continue_button: "برو به %{site_name}" + welcome_to: "به %{site_name} خوش آمدید!" + approval_required: "مدیر باید حساب کاربری را بصورت دستی تایید کند برای دسترسی به این انجمن. شما ایمیلی مبنی به تایید حساب کاربریتان دریافت می کنید. " + post_action_types: + off_topic: + title: 'جستار های قدیمی' + long_form: 'ابن جستار قدیمی را پرچم بزن' + spam: + title: 'هرزنامه' + description: 'این نوشته یک آگهی است. این برای جستار فعلی مفید یا مربوط نیست٬ ولی ماهیت آن تبلیغاتی است. ' + long_form: 'نشانه گذاری به عنوان هرزنامه' + email_title: '"%{title}" به عنوان هرزنامه پرچم زده شد' + email_body: "%{link}\n\n%{message}" + inappropriate: + title: 'نامناسب' + long_form: 'این مورد نامناسب دانسته شد.' + notify_user: + title: 'پیام @{{username}}' + description: 'محتوای این نوشته چیزی هست که من می خوام بصورت خصوصی و مستقیم درباره آن حرف بزنم. برای دیگران پرچم گزاری نکن.' + long_form: 'به کاربر پیام داده شد' + email_title: 'نوشته ی شما در "{title}%"' + email_body: "%{link}\n\n%{message}" + notify_moderators: + title: "یک چیز دیگر" + description: 'این نوشته نیاز به توجه مدیر دارد به دلیل دیگری که در پایین لیست نشده است ' + long_form: 'این را برای توجه مدیر پرچم بزن ' + email_title: 'یک پست در "%{title}" نیاز به توجه مدیر دارد' + email_body: "%{link}\n\n%{message}" + bookmark: + title: 'نشانک گذاری' + description: 'نشنانک‌گذاری این دیدگاه' + long_form: 'این نوشته نشانک گذاری شد' + like: + title: 'پسندیدن' + description: 'پسندیدن این دیدگاه' + long_form: 'این مورد پسندیده شد' + vote: + title: 'امتیاز' + description: 'به این دیدگاه رای دهید' + long_form: 'به این دیدگاه رای داده شد' + topic_flag_types: + spam: + title: 'هرز نامه' + description: 'این موضوع یک تبلیغات است. این برای سایت مفید یا مربط نیست٬ ولی تبلغات طبیعی است.' + long_form: 'پرچم گزاری به عنوان یک هرزنامه' + inappropriate: + title: 'نامناسب' + description: 'محتوای این موضوع شامل مواردی میشود که یک شخص می تونه آن را توهین آمیز٬ آزار دهنده٬‌ یا نقض قوانین انجمن باشد. ' + long_form: 'پرچم گزاری شده به عنوان نامناسب' + notify_moderators: + title: "یک چیز دیگر" + description: 'این موضوع نیاز به توجه مدیر دارد بر اساس دستورعمل های سایت, TOS, یا به دلیل دیگری که اینجا اشاره نشده است. ' + long_form: 'این را برای توجه مدیر پرچم گزاری کن' + email_title: 'این موضوع "%{title}" نیاز به توجه مدیر دارد. ' + email_body: "%{link}\n\n%{message}" + flagging: + you_must_edit: '

    نوشته شما توسط انجمن پرچم گزاری شده. لطفا پیامت را نگاه کن.

    ' + user_must_edit: '

    این نوشته توسط انجمن پرچم گزاری شده و بطور موقت مخفی شده است.

    ' + archetypes: + regular: + title: "موضوع عادی" + banner: + message: + make: "این موضوع در حال حاضر بنر است. این در بالای در تمام صفحه ها نمایش داده می شود تا زمانی که توسط کاربر رد بشود. " + remove: "این موضوع دیگر در بنر نیست. دیگر در بالای در صفحه ها به نمایش در نمی آید. " + unsubscribed: + title: 'اشتراک لغو شده' + description: "اشتراک شما لغو شد. دیگر با شما تماس نخواهیم گرفت!" + oops: "در صورتی که قصد انجام این کار را نداشتید٬ پایین را کلیک کنید." + error: "خطا در لغو اشتراک" + preferences_link: "شما همچنین می توانید لغو اشتراک کنید از digest ایمیل در صفحه تنظیمات " + different_user_description: "شما در حال حاضر وارد سیستم شده اید به عنوان یک کاربر دیگر که ایمیل digest برایش ارسال شد. لطفا از سیسیتم خارج شوید و دوباره تلاش کنید." + not_found_description: "متاسفیم٬‌ ما نمی توانیم اشتراک شما را لغو کنیم. ممکن است پیوند در ایمیل شما منقضی شده است. " + resubscribe: + action: "اشتراک دوباره" + title: " دوباره اشتراک شده!" + description: "شما دوباره به اشتراک در آمدید." + reports: + visits: + title: "بازدید کاربران" + xaxis: "روز" + yaxis: "تعداد بازدید ها" + signups: + title: "کاربران جدید" + xaxis: "روز" + yaxis: "تعداد کاربران جدید" + topics: + title: "جُستارها" + xaxis: "روز" + yaxis: "تعداد جستارهای جدید" + posts: + title: "نوشته ها" + xaxis: "روز" + yaxis: "تعداد دیدگاه‌های جدید" + likes: + title: "پسندها" + xaxis: "روز" + yaxis: "شمار پسندهای تازه" + flags: + title: "پرچم ها" + xaxis: "روز" + yaxis: "تعداد پرچم ها" + bookmarks: + title: "نشانک ها" + xaxis: "روز" + yaxis: "تعداد نشانک های جدید" + starred: + title: "ستاره دار شد" + xaxis: "روز" + yaxis: "تعداد موضوعات تازه آغاز شده" + users_by_trust_level: + title: "کاربران بر اساس سطح اعتماد" + xaxis: "سطح اعتماد" + yaxis: "تعداد کاربران" + emails: + title: "ایمیل ها ارسال شد" + xaxis: "روز" + yaxis: "تعداد ایمیل ها" + user_to_user_private_messages: + title: "کاربر به کاربر" + xaxis: "روز" + yaxis: "تعداد پیام ها" + system_private_messages: + title: "سیستم" + xaxis: "روز" + yaxis: "تعداد پیام ها" + moderator_warning_private_messages: + title: "هشدل مدیر" + xaxis: "روز" + yaxis: "تعداد پیام ها" + notify_moderators_private_messages: + title: "اطلاعیه مدیران" + xaxis: "روز" + yaxis: "تعداد پیام ها" + notify_user_private_messages: + title: "اطلاعیه کاربر" + xaxis: "روز" + yaxis: "تعداد پیام ها" + top_referrers: + title: "رفتن به بالا" + xaxis: "کاربر" + num_clicks: "کلیک ها" + num_topics: "موضوعات" + top_traffic_sources: + title: "بالاترین ترافیک منابع" + xaxis: "دومین" + num_clicks: "کلیک ها" + num_topics: "موضوعات" + num_users: "کاربران" + top_referred_topics: + title: "بالاترین موضوعات مورد مراجعه" + xaxis: "موضوعات" + num_clicks: "کلیک ها" + page_view_anon_reqs: + title: "ناشناس" + xaxis: "روز" + yaxis: "درخواست های ناشناس API" + page_view_logged_in_reqs: + title: "وارد شده در" + xaxis: "روز" + yaxis: "وارد شده در درخواست های API" + page_view_crawler_reqs: + title: "خزنده وب" + xaxis: "روز" + page_view_total_reqs: + title: "کل" + xaxis: "روز" + yaxis: "تمام درخواست API" + http_background_reqs: + title: "پس زمینه" + xaxis: "روز" + yaxis: "درخواست برای به روز رسانی زنده و پیگیری استفاده شد " + http_2xx_reqs: + title: "وضعیت 2xx (OK)" + xaxis: "روز" + yaxis: "درخواست با موفقیت (Status 2xx)" + http_3xx_reqs: + title: "HTTP 3xx (Redirect)" + xaxis: "روز" + yaxis: "تغییر مسیر درخواست (Status 3xx)" + http_4xx_reqs: + title: "HTTP 4xx (ارور کلاینت)" + xaxis: "روز" + yaxis: "Client Errors (Status 4xx)" + http_5xx_reqs: + title: "HTTP 5xx (ارور سرور)" + xaxis: "روز" + yaxis: "ارور سرور (وضعیت 5xx)" + http_total_reqs: + title: "مجموع" + xaxis: "روز" + yaxis: "کل درخواست ها" + dashboard: + rails_env_warning: "سرور شما در حال اجراست در %{env} حالت " + ruby_version_warning: "شما نسخه Ruby 2.0.0 را اجرا کرده اید که به مشکل دارا بودن شناخته شده است. به روز کنید به بخش 247 یا بعدتر" + memory_warning: 'سرور شما با کمتر از 1 گیگ رم راه اندازی شده است،برای دیسکورس حداقل 1 گیگ رم لازم است تا به درستی کار کنند.' + default_logo_warning: "یک لوگوی گرافیکی برای سایت خود انتخاب نمایید. تگ های logo_url, logo_small_url, و favicon_url را بروز رسانی کنید. تنظیمات سایت" + title_nag: "اسمت را در وب سایت وارد کن. عنوان به روز کن در تنظیمات سایت ." + site_description_missing: "یک جمله برای توضیحات سایتت وارد کن که در جستجو نشان داده بشود. توضیحات سایتت را به روز کن در اینجا تنظیمات سایت ." + content_types: + education_new_reply: + title: "آموزش کاربر جدید: پاسخ های اول" + education_new_topic: + title: "آموزش کاربر جدید: موضوع های اول" + usage_tips: + title: "راهنما برای کاربر جدید" + description: "راهنما و اطلاعات ضروری برای کاربران جدید " + welcome_user: + title: "خوش آمدیده اید : کاربر جدید" + description: "این پیام بصورت خودکار به تمام کاربران جدید وقتی نام نویسی می کنند ارسال می شود. " + welcome_invite: + title: "خوش آمدید: کاربران دعوت شده" + description: "این پیام به صورت خودکار به تمام کاربران دعوت شده جدید ارسال می شود وقتی دعوتنامه را از طرف کاربر دیگری برای شرکت قبول می کنند. " + login_required_welcome_message: + title: "ورود مورد نیاز است: پیام خوش آمدید " + description: "پیام خوش آمدید به کاربرانی که از سیستم خارج شده اند نشان داده می شود وقتی که تنظیمات ورود به سیستم روشن است." + login_required: + title: "ورود مورد نیاز است: صفحه اصلی" + description: "نوشته نشان داده شده برای کاربران غیرمجاز است وقتی که ورود مورد نیاز است در سایت. " + head: + title: "HTML head" + top: + title: "بالای صفحه ها " + bottom: + title: "پایین صفحه ها" + description: "HTML که قبل از تگ به آن اضافه می شه " + site_settings: + censored_words: "کلماتی که به صورت خودکار جایگزین می شوند با ■■■■" + delete_old_hidden_posts: "پاک کردن خودکار تمام نوشته هایی که بیش از 30 روز بصورت پنهان باقی می مانند. " + default_locale: "زبان پیشفرض برای دیسکورس (ISO 639-1 کد)" + allow_user_locale: "اجازه برای کاربران تا بتوانند زبان مورد نظر خود را انتخاب نماییند" + min_post_length: "حداقل طول نوشته در کاراکتر" + min_first_post_length: "حداقل طول نوشته در کاراکتر (topic body)" + min_private_message_post_length: "حداقل طول نوشته کاراکتر در پیام ها " + max_post_length: "حداکثر طول نوشته در کاراکتر" + min_topic_title_length: "حداقل طول عنوان نوشته در کاراکتر" + max_topic_title_length: "حداکثر طول مجاز عنوان جستار در کاراکتر" + min_private_message_title_length: "حداقل طول مجاز عنوان برای پیام در کاراکتر" + allow_uncategorized_topics: "به جستار اجازه ساخت بده بدون دسته بندی " + title: "نام این وب سایت،استفاده شده در عنوان تگ" + site_description: "سایتت را در یک جمله توصیف کن٬‌ همنطور که در تگ متا توضیح داده شده بود" + show_subcategory_list: "نمایش زیر دسته بندی ها به جای لیست موضوع هنگام ورود به یک دسته بندی." + allow_moderators_to_create_categories: "اجازه دادن به مدیران برای ساخت دسته‌بندی‌های جدید" + enable_badges: "فعال سازی سیستم مدال دهی" + min_password_length: "حداقل طول رمز عبور" + max_likes_per_day: "حداکثر تعداد پسند هر کاربر در روز" + max_flags_per_day: "حداکثر تعداد پرچم هر کاربر در روز" + max_bookmarks_per_day: "حداکثر تعداد نشانک هر کاربر در روز" + max_edits_per_day: "حداکثر تعداد ویرایش هر کاربر در روز" + max_topics_per_day: "حداکثر تعداد موضوعاتی که هر کاربر در روز می توانند ایجاد کند" + max_private_messages_per_day: "حداکثر تعداد پیام هایی که هر کاربر در روز می توانند ایجاد کند" + max_invites_per_day: "حداکثر تعداد دعوت نامه هایی که هر کاربر در روز می توانندارسال کند" + suggested_topics: "نعداد موضوعات پیشنهادی در پایین هر موضوع" + tl1_requires_topics_entered: "یک کاربر جدید چه تعداد موضوعاتی باید ایجاد کنید تا به سطح اعتماد 1 ترفیع پیدا کند." + tl1_requires_read_posts: "یک کاربر جدید چه تعداد نوشته باید ایجاد کنید تا به سطح اعتماد 1 ترفیع پیدا کند." + tl1_requires_time_spent_mins: "یک کاربر جدید چه مدت باید نوشته را بخواند تا به سطح اعتماد 1 ترفیع پیدا کند." + tl2_requires_topics_entered: "کاربر چندتا از جستار را باید وارد کنه به بتونه به سطح اعتماد 2 برسد." + tl2_requires_read_posts: "کاربر چندتا نوشته باید بخواند تا بتواند به سطح اعتماد 2 برسد" + tl2_requires_time_spent_mins: "کاربر چند دقیقه باید نوشته ها را بخواند تا بتواند به سطح اعتماد 2 برسد." + tl2_requires_days_visited: "کاربر چند روز باید از سایت بازدید بکند تا بتواند به سطح اعتماد 2 برسد. " + tl2_requires_likes_received: "کاربر چندین پسند باید دریافت کند قبل از اینکه به سطح اعتماد 2 برسد." + tl2_requires_likes_given: "کاربر چندین لایک باید بزند تا بتواند به سطح اعتماد 2 برسد. " + tl2_requires_topic_reply_count: "کاربرچندین پاسخ باید بدهد قبل از اینکه به سطح اعتماد 2 برسد." + tl3_requires_days_visited: "حداقل روزهایی که روز که کاربر نیاز با بازدید از سایت دارد در 100 روز گذشته تا بتواند به سطح اعتماد 3 برسد. (0 to 100)" + tl3_requires_topics_replied_to: "حداقل تعداد جستارهایی که کاربر نیاز به پاسخ دارد در 100 روز گذشته تا بتواند سطح اعتماد 3 را بدست آورد. (0 to 100)" + tl3_requires_topics_viewed_all_time: "حداقل تعداد جستار ها که کاربر نیاز به بازدید دارد تا بتواند به سطح اعتماد 3 برسد." + tl3_requires_posts_read_all_time: "حداقل تعداد نوشته ها که کاربر نیاز به خواندن دارد تا بتواند به سطح اعتماد 3 برسد." + min_trust_to_create_topic: "حداقل سطح اعتمادی که برای ساخت جستار جدید مورد نیاز است. " + min_trust_to_edit_wiki_post: "حداقل سطح اعتمادی برای ویرایش نوشته ای که بعنوان ویکی نشانه گزاری شده است. " + newuser_max_links: "چند پیوند کاربر جدید می تواند به نوشته اضافه کند. " + newuser_max_images: "چند عکس کاربر جدید می تواند به نوشته اضافه کند." + newuser_max_attachments: "چند پیوست کاربر جدید می تواند اضافه کند به پست. " + newuser_max_mentions_per_post: "حداکثر تعداد @name اطلاعیه ها که کاربر جدید در یک پست می تواند استفاده کند. " + newuser_max_replies_per_topic: "حداکثر تعداد پاسخهایی که کاربر جدید می تواند در یک جستار بدهد قبل از اینکه شخص دیگری پاسخ دهد. " + max_mentions_per_post: "حداکثر تعداد @name اطلاعیه هایی که کسی می تواند در یک نوشته استفاده کند. " + allow_uploaded_avatars: "اجازه دادن به کاربران برای بارگذاری آواتارهای سفارشی" + enable_names: "نام کامل کاربران را در نمایه، کارت کاربری و ایمیل‌هایشان نمایش بده. قابلیت پنهان کردن نام کامل را در هرجایی غیرفعال کن." + enable_emoji: "فعالسازی ایموجی" + emoji_set: "می‌خواهید ایموجی شما چطور باشد؟" + errors: + invalid_email: "آدرس ایمیل نامعتبر" + invalid_username: "هیچ کاربری با این نام کاربری وجود ندارد." + invalid_integer: "مقدار باید یک عدد صحیح باشد." + invalid_string: "مقدار نامعتبر." + notification_types: + mentioned: "%{display_username} به شما اشاره شد در %{link}" + liked: "%{display_username} نوشته شما پسندیدهشد در %{link}" + replied: "%{display_username} به نوشته شما پاسخ داده شد در %{link}" + quoted: "%{display_username} از شما نقل قول شد در %{link}" + edited: "%{display_username} نوشته شما ویرایش شد در %{link}" + posted: "%{display_username} نوشته ارسال شد در %{link}" + moved_post: "%{display_username} نوشته شما منتقل شد به %{link}" + private_message: "%{display_username} یک پیام ارسال کنید: %{link}" + invitee_accepted: " %{display_username} دعوت نامه شما را پذیرفته شد " + linked: "%{display_username} شما پیوند خوردید در %{link}" + granted_badge: "شما وارد شدید %{link}" + search: + within_post: "#%{post_number} توسط %{username}" + types: + category: 'دسته‌ها' + topic: 'درخواست ها' + user: 'کاربران' + original_poster: "نویسنده اصلی" + most_posts: "بیشترین نوشته ها" + move_posts: + new_topic_moderator_post: + other: "من {count}% تا از نوشته‌ها را به این موضوع جدید انتقال دادم: {topic_link}%" + existing_topic_moderator_post: + other: "من {count}% تا از نوشته‌ها را به این موضوع انتقال دادم: {topic_link}%" + change_owner: + post_revision_text: "حق مالکیت از کاربر {old_user}% به کاربر {new_user}% منتقل شد" + emoji: + errors: + name_already_exists: "متأسفیم، در حال حاضر نام '{name}%' توسط ایموجی دیگری استفاده می‌شود." + error_while_storing_emoji: "متأسفیم، در هنگام ذخیره‌سازی ایموجی خطایی رخ داده است." + topic_statuses: + closed_enabled: "این موضوع در حال حاضر بسته شده است. پاسخ جدید دیگر مجاز نیست." + closed_disabled: "موضوع اکنون باز است. پاسخ‌های جدید اجازه‌ی ثبت دارند." + autoclosed_enabled_days: + other: "این موضوع به صورت خود کار بعد از %{count} روز بسته شد. پاسخ جدید دیگر مجاز نیست." + autoclosed_enabled_hours: + other: "این موضوع به صورت خود کار بعد از %{count} ساعت بسته شد. پاسخ جدید دیگر مجاز نیست." + autoclosed_enabled_minutes: + other: "این موضوع به صورت خود کار بعد از %{count} دقیقه بسته شد. پاسخ جدید دیگر مجاز نیست." + autoclosed_enabled_lastpost_days: + other: "این موضوع به صورت خود کار بعد از %{count} روز بعد از آخرین پاسخ بسته شد. پاسخ جدید دیگر مجاز نیست." + autoclosed_enabled_lastpost_hours: + other: "این موضوع به صورت خود کار بعد از %{count} ساعت بعد از آخرین پاسخ بسته شد. پاسخ جدید دیگر مجاز نیست." + autoclosed_enabled_lastpost_minutes: + other: "این موضوع به صورت خود کار بعد از %{count} دقیقه بعد از آخرین پاسخ بسته شد. پاسخ جدید دیگر مجاز نیست." + autoclosed_disabled: "این موضوع اکنون باز است. پاسخ‌های جدید اجازه‌ی ثبت دارند." + autoclosed_disabled_lastpost: "این موضوع اکنون باز است. پاسخ‌های جدید اجازه‌ی ثبت دارند." + login: + incorrect_username_email_or_password: "نام کاربری، ایمیل یا رمز عبور نادرست" + active: "حساب کاربریتان فعال شده و آماده‌ی استفاده است." + activate_email: "

    تقریبا ثبت نام انجام شد! ما ایمیل فعال سازی را برای ما ارسال کردیم %{email}. لطفا به ایمیل خود برای فعال سازی حساب کاربر خود مراجعه نمایید.

    اگر ایمل فعال سازی نبود، لطفا پوشه اسپم ایمیل خود را برسی نمایید،اگر ایمیل ارسال نشده است با ورود به سایت دوباره ایمیل فعال سازی ارسال نمایید.

    " + not_allowed_from_ip_address: "شما نمی‌توانید با این آی‌پی آدرس وارد حساب کاربری {username}% شوید." + admin_not_allowed_from_ip_address: "شما نمی تواند با این اپی آدرس به عنوان مدیر وارد سیستم شوید." + suspended: "شما تا تاریخ {date}% نمی‌توانید وارید سیستم شوید." + suspended_with_reason: "شما تا تاریخ {date}% نمی‌توانید وارید سیستم شوید. علت مسدود شدن حسابتان: {reason}%" + errors: "{errors}%" + new_registrations_disabled: "ثبت حساب‌ کاربری جدید اکنون امکان‌پذیر نیست." + password_too_long: "رمزهای عبور به 200 کاراکتر محدود شده‌اند." + user: + email: + blocked: "مجاز نیست." + ip_address: + blocked: "مسدود شده است." + invite_password_instructions: + subject_template: "تنظیم رمز عبور برای حساب کاربری {site_name}%" + test_mailer: + text_body_template: | + This is a test email from + + [**%{base_url}**][0] + + Email deliverability is complicated. Here are a few important things you should check first: + + - Be *sure* to set the `notification email` from: address correctly in your site settings. **The domain specified in the "from" address of the emails you send is the domain your email will be validated against**. + + - Know how to view the raw source of the email in your mail client, so you can examine email headers for important clues. in Gmail, it is the "show original" option in the drop-down menu at the top right of each mail. + + - **IMPORTANT:** Does your ISP have a reverse DNS record entered to associate the domain names and IP addresses you send mail from? [Test your Reverse PTR record][2] here. If your ISP does not enter the proper reverse DNS pointer record, it's very unlikely any of your email will be delivered. + + - Is your domain's [SPF record][8] correct? [Test your SPF record][1] here. Note that TXT is the correct official record type for SPF. + + - Is your domain's [DKIM record][3] correct? This will significantly improve email deliverability. [Test your DKIM record][7] here. + + - If you run your own mail server, check to make sure the IPs of your mail server are [not on any email blacklists][4]. Also verify that it is definitely sending a fully-qualified hostname that resolves in DNS in its HELO message. If not, this will cause your email to be rejected by many mail services. + + (The *easy* way is to create a free account on [Mandrill][md] or [Mailgun][mg] or [Mailjet][mj], which have free generous free mailing plans and will be fine for small communities. You'll still need to set up the SPF and DKIM records in your DNS, though!) + + We hope you received this email deliverability test OK! + + Good luck, + + Your friends at [Discourse](http://www.discourse.org) + + [0]: %{base_url} + [1]: http://www.kitterman.com/spf/validate.html + [2]: http://mxtoolbox.com/ReverseLookup.aspx + [3]: http://www.dkim.org/ + [4]: http://whatismyipaddress.com/blacklist-check + [7]: http://dkimcore.org/tools/dkimrecordcheck.html + [8]: http://www.openspf.org/SPF_Record_Syntax + [md]: http://mandrill.com + [mg]: http://www.mailgun.com/ + [mj]: https://www.mailjet.com/pricing + new_version_mailer_with_notes: + subject_template: "[%{site_name}] بروزرسانی در دسترس" + flags_reminder: + post_number: "نوشته" + subject_template: + other: "%{count} نشانه ها منتظر استفاده" + system_messages: + welcome_invite: + subject_template: "به %{site_name} خوش آمدید!" + backup_failed: + subject_template: "پشتیبان گیری با شکست مواجه شد." + restore_failed: + subject_template: "بازگردانی ناموفق" + pending_users_reminder: + subject_template: + other: "%{count} کاربران منتظر تایید" + subject_re: "پاسخ:" + subject_pm: "[PM] " + user_notifications: + previous_discussion: "پاسخ‌های قبلی" + unsubscribe: + title: "لغو اشتراک" + description: "آیا تمایلی به دریافت این ایمیل‌ها ندارید؟ مشکلی نیست! اینجا را کلیک کنید تا اشتراک آن هم‌اکنون حذف شود." + visit_link_to_respond: "برای پاسخگویی، لینک {base_url}%{url}% را در مرورگر خود مشاهده کنید." + posted_by: "نوشته شده توسط {username}% در تاریخ {post_date}%" + user_replied: + subject_template: "[%{site_name}] %{topic_title}" + text_body_template: | + {message}% + + {context}% + + --- + {respond_instructions}% + user_quoted: + subject_template: "[%{site_name}] %{topic_title}" + text_body_template: | + %{message} + + %{context} + + --- + %{respond_instructions} + user_mentioned: + subject_template: "[%{site_name}] %{topic_title}" + text_body_template: | + %{message} + + %{context} + + --- + %{respond_instructions} + user_posted: + subject_template: "[%{site_name}] %{topic_title}" + text_body_template: | + %{message} + + %{context} + + --- + %{respond_instructions} + user_posted_pm: + subject_template: "[%{site_name}] [PM] %{topic_title}" + text_body_template: | + %{message} + + %{context} + + --- + %{respond_instructions} + digest: + subject_template: "[%{site_name}] خلاصه" + new_activity: "فعالیت جدید در موضوعات و نوشته‌های شما:" + top_topics: "نوشته‌های محبوب" + other_new_topics: "موضوعات محبوب" + click_here: "اینجا کلیک کنید" + from: "%{site_name} خلاصه" + read_more: "بیش‌تر بخوانید" + more_topics_category: "موضوعات جدید بیشتر" + posts: + other: "%{count} نوشته ها" + forgot_password: + subject_template: "[%{site_name}] باز یابی رمز عبور" + set_password: + subject_template: "تنظیم رمز عبور [%{site_name}] " + account_created: + subject_template: "[%{site_name}] حساب کاربری جدید شما" + text_body_template: "حساب کاربری جدید برای شما ساخته شد در %{site_name}\n\nبر روری پیوند پیش رو کلیک کنید برای انتخاب رمز برای حساب کاربری جدیدتان: \n\n%{base_url}/users/password-reset/%{email_token}\n" + authorize_email: + subject_template: "آدرس ایمیل جدید را تایید کنید برای [%{site_name}]" + text_body_template: "آدرس ایمیل جدید را تایید کنید برای %{site_name} با کلیک کردن بر پیوند پیش رو : \n\n\n%{base_url}/users/authorize-email/%{email_token}\n" + signup_after_approval: + subject_template: "شما تایید شدید %{site_name}! " + text_body_template: "خوش آمدید به %{site_name}!\n\nیکی از مدیران حساب کاربری شما را تایید کرد در %{site_name}.\n\nبر روی پیوند پیش رو کلیک کنید تا حساب کاربری شما تایید شود: \n%{base_url}/users/activate-account/%{email_token}\n\nاگر پیوند بالا قابل کلیک کردن نیست٬ پیوند را کپی کنید و در مرور گر وب انتقال دهید. \n\n%{new_user_tips}\n\n\nما به [رفتار انجمن متمدن] معتقدیم (%{base_url}/guidelines) برای همیشه. \n\nاز بودنتان در اینجا لذت ببرید! \n\n( اگر شما نیاز به ارتباط با مدیران را دارید[staff members](%{base_url}/about) به عنوان یک کاربر جدید٬ لطفا به این پیام پاسخ دهید.)\n" + signup: + subject_template: "[%{site_name}] حساب کاربری جدیدتان را فعال کنید" + text_body_template: "خوش آمدید به %{site_name}!\n\n\nبرای فعال نمودن حساب کاربریتان بر روی پیوند پیش رو کلیک کنید: \n\n%{base_url}/users/activate-account/%{email_token}\n\n\nاگر پیوند بالا قابل کلیک کردن نیست٬ پیوند را کپی کنید و در مرور گر وب انتقال دهید. \n" + page_not_found: + title: "صفحه ای که درخواست کردید وجود ندارد یا خصوصی است. " + popular_topics: "محبوب" + recent_topics: "اخیر" + see_more: "بیشتر" + search_title: "جستجو در این سایت" + search_google: "گوگل" + login_required: + welcome_message: "#[خوش آمدید به %{title}](#welcome)\n\nحساب کاربری نیاز داره به. لطفا حساب کاربری درست کنید یا وارد سیستم بشید برای ادامه. \n" + terms_of_service: + title: "شرایط استفاده از خدمات" + signup_form_message: 'من خواندم و قبول می کنم شرایط و ضوابط استفاده از سرویس.' + deleted: 'حذف شد' + upload: + edit_reason: "کپی عکس های محلی دانلود شد" + unauthorized: "متأسفم، پرونده‌ای که می‌خواهید بارگذاری کنید معتبر نیست ( پسوندهای معتبر عبارتند از: {authorized_extensions}% )." + pasted_image_filename: "تصویر جایگذاری شد" + store_failure: "برای ذخیره آپلود انجام نشد#%{upload_id} برای کاربر #%{user_id}." + attachments: + too_large: "متأسفم، پرونده‌ای که می‌خواهید بارگذاری کنید بسیار بزرگ است! ( حداکثر حجم پرونده باید {max_size_kb}% کیلوبایت باشد. )" + images: + too_large: "با عرض پوزش٬ عکسی را که تلاش برای بارگزاری آن دارید بسیار بزرگ است ( حداکثر اندازه %{max_size_kb}KB ) لطفا آن را تغییر اندازه دهید و دوباره امتحان کنید. " + fetch_failure: "متأسفیم، در هنگام کشیدن عکس خطایی رخ داده است." + unknown_image_type: "متأسفم، اما به نظر می‌رسد پرونده‌ای که می‌خواهید بارگذاری کنید، از نوع «تصویر» نیست." + size_not_found: "با عرض پوزش٬ ولی ما نتوانستیم اندازه عکس را مشخص کنیم. شاید عکس شما خراب است. " + flag_reason: + sockpuppet: "یک کاربر جدید یک جستار جدید ساخته٬ و کاربر جدید دیگری با همان آدرس IP پاسخ داده. نگاه کن به گزارش٬ sockpuppets تنظیمات سایت " + spam_hosts: "این کاربر جدید چند نوشته جدید بوجود آورده با پیوندهایی به همان دامنه. کارابران جدید را ببین _اسپم_میزبان_بخش تنظیمات سایت" + email_log: + no_user: "کاربری با این ID پیدا نمی شود%{user_id}" + suspended_not_pm: "کاربر معلق شده٬ نه پیام " + seen_recently: "کاربر به تازگی دیده شد" + post_not_found: "نوشته ای با این ID پیدا نمی شود %{post_id}" + notification_already_read: "آگاه سازی این ایمیل قبلا خوانده شده" + topic_nil: "پاسخ در نوشه صفر است" + post_deleted: "نوشته توسط نویسنده حذفظ شده است" + user_suspended: "کاربر معلق شده بود" + already_read: "کاربر قبلا این پست را خوانده" + message_blank: "پیام خالی است" + message_to_blank: "پیام به خالی است" + text_part_body_blank: "text_part بدنه خالی است " + body_blank: "بدنه خالی است " + color_schemes: + base_theme_name: "پایه" + about: "درباره" + guidelines: "دستورالعمل های" + privacy: "خصوصی" + edit_this_page: "ویرایش این صحفه" + csv_export: + boolean_yes: "بله" + boolean_no: "خیر" + static_topic_first_reply: | + نوشته اول این جستار را ویرایش کن برای عوض کردن محتویا ت%{page_name} صفحه. + guidelines_topic: + title: "پرسش و پاسخ / دستورالعمل" + body: | + + + ## [This is a Civilized Place for Public Discussion](#civilized) + + Please treat this discussion forum with the same respect you would a public park. We, too, are a shared community resource — a place to share skills, knowledge and interests through ongoing conversation. + + These are not hard and fast rules, merely aids to the human judgment of our community. Use these guidelines to keep this a clean, well-lighted place for civilized public discourse. + + + + ## [Improve the Discussion](#improve) + + Help us make this a great place for discussion by always working to improve the discussion in some way, however small. If you are not sure your post adds to the conversation, think over what you want to say and try again later. + + The topics discussed here matter to us, and we want you to act as if they matter to you, too. Be respectful of the topics and the people discussing them, even if you disagree with some of what is being said. + + One way to improve the discussion is by discovering ones that are already happening. Please spend some time browsing the topics here before replying or starting your own, and you’ll have a better chance of meeting others who share your interests. + + + + ## [Be Agreeable, Even When You Disagree](#agreeable) + + You may wish to respond to something by disagreeing with it. That’s fine. But, remember to _criticize ideas, not people_. Please avoid: + + * Name-calling. + * Ad hominem attacks. + * Responding to a post’s tone instead of its actual content. + * Knee-jerk contradiction. + + Instead, provide reasoned counter-arguments that improve the conversation. + + + + ## [Your Participation Counts](#participate) + + The conversations we have here set the tone for everyone. Help us influence the future of this community by choosing to engage in discussions that make this forum an interesting place to be — and avoiding those that do not. + + Discourse provides tools that enable the community to collectively identify the best (and worst) contributions: favorites, bookmarks, likes, flags, replies, edits, and so forth. Use these tools to improve your own experience, and everyone else’s, too. + + Let’s try to leave our park better than we found it. + + + + ## [If You See a Problem, Flag It](#flag-problems) + + Moderators have special authority; they are responsible for this forum. But so are you. With your help, moderators can be community facilitators, not just janitors or police. + + When you see bad behavior, don’t reply. It encourages the bad behavior by acknowledging it, consumes your energy, and wastes everyone’s time. _Just flag it_. If enough flags accrue, action will be taken, either automatically or by moderator intervention. + + In order to maintain our community, moderators reserve the right to remove any content and any user account for any reason at any time. Moderators do not preview new posts in any way; the moderators and site operators take no responsibility for any content posted by the community. + + + + ## [Always Be Civil](#be-civil) + + Nothing sabotages a healthy conversation like rudeness: + + * Be civil. Don’t post anything that a reasonable person would consider offensive, abusive, or hate speech. + * Keep it clean. Don’t post anything obscene or sexually explicit. + * Respect each other. Don’t harass or grief anyone, impersonate people, or expose their private information. + * Respect our forum. Don’t post spam or otherwise vandalize the forum. + + These are not concrete terms with precise definitions — avoid even the _appearance_ of any of these things. If you’re unsure, ask yourself how you would feel if your post was featured on the front page of the New York Times. + + This is a public forum, and search engines index these discussions. Keep the language, links, and images safe for family and friends. + + + + ## [Keep It Tidy](#keep-tidy) + + Make the effort to put things in the right place, so that we can spend more time discussing and less cleaning up. So: + + * Don’t start a topic in the wrong category. + * Don’t cross-post the same thing in multiple topics. + * Don’t post no-content replies. + * Don’t divert a topic by changing it midstream. + * Don’t sign your posts — every post has your profile information attached to it. + + Rather than posting “+1” or “Agreed”, use the Like button. Rather than taking an existing topic in a radically different direction, use Reply as a Linked Topic. + + + + ## [Post Only Your Own Stuff](#stealing) + + You may not post anything digital that belongs to someone else without permission. You may not post descriptions of, links to, or methods for stealing someone’s intellectual property (software, video, audio, images), or for breaking any other law. + + + + ## [Powered by You](#power) + + This site is operated by your [friendly local staff](/about) and *you*, the community. If you have any further questions about how things should work here, open a new topic in the [meta category](/c/meta) and let's discuss! If there's a critical or urgent issue that can't be handled by a meta topic or flag, contact us via the [staff page](/about). + + + + ## [Terms of Service](#tos) + + Yes, legalese is boring, but we must protect ourselves – and by extension, you and your data – against unfriendly folks. We have a [Terms of Service](/tos) describing your (and our) behavior and rights related to content, privacy, and laws. To use this service, you must agree to abide by our [TOS](/tos). + tos_topic: + title: "شرایط استفاده از خدمات" + body: | + The following terms and conditions govern all use of the %{company_domain} website and all content, services and products available at or through the website, including, but not limited to, %{company_domain} Forum Software, %{company_domain} Support Forums and the %{company_domain} Hosting service ("Hosting"), (taken together, the Website). The Website is owned and operated by %{company_full_name} ("%{company_name}"). The Website is offered subject to your acceptance without modification of all of the terms and conditions contained herein and all other operating rules, policies (including, without limitation, %{company_domain}’s [Privacy Policy](/privacy) and [Community Guidelines](/faq)) and procedures that may be published from time to time on this Site by %{company_name} (collectively, the "Agreement"). + + Please read this Agreement carefully before accessing or using the Website. By accessing or using any part of the web site, you agree to become bound by the terms and conditions of this agreement. If you do not agree to all the terms and conditions of this agreement, then you may not access the Website or use any services. If these terms and conditions are considered an offer by %{company_name}, acceptance is expressly limited to these terms. The Website is available only to individuals who are at least 13 years old. + + + + ## [1. Your %{company_domain} Account](#1) + + If you create an account on the Website, you are responsible for maintaining the security of your account and you are fully responsible for all activities that occur under the account. You must immediately notify %{company_name} of any unauthorized uses of your account or any other breaches of security. %{company_name} will not be liable for any acts or omissions by you, including any damages of any kind incurred as a result of such acts or omissions. + + + + ## [2. Responsibility of Contributors](#2) + + If you post material to the Website, post links on the Website, or otherwise make (or allow any third party to make) material available by means of the Website (any such material, "Content"), You are entirely responsible for the content of, and any harm resulting from, that Content. That is the case regardless of whether the Content in question constitutes text, graphics, an audio file, or computer software. By making Content available, you represent and warrant that: + + * the downloading, copying and use of the Content will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark or trade secret rights, of any third party; + * if your employer has rights to intellectual property you create, you have either (i) received permission from your employer to post or make available the Content, including but not limited to any software, or (ii) secured from your employer a waiver as to all rights in or to the Content; + * you have fully complied with any third-party licenses relating to the Content, and have done all things necessary to successfully pass through to end users any required terms; + * the Content does not contain or install any viruses, worms, malware, Trojan horses or other harmful or destructive content; + * the Content is not spam, is not machine- or randomly-generated, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing); + * the Content is not pornographic, does not contain threats or incite violence, and does not violate the privacy or publicity rights of any third party; + * your content is not getting advertised via unwanted electronic messages such as spam links on newsgroups, email lists, blogs and web sites, and similar unsolicited promotional methods; + * your content is not named in a manner that misleads your readers into thinking that you are another person or company; and + * you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by %{company_name} or otherwise. + + + + ## [3. User Content License](#3) + + User contributions are licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_US). Without limiting any of those representations or warranties, %{company_name} has the right (though not the obligation) to, in %{company_name}’s sole discretion (i) refuse or remove any content that, in %{company_name}’s reasonable opinion, violates any %{company_name} policy or is in any way harmful or objectionable, or (ii) terminate or deny access to and use of the Website to any individual or entity for any reason, in %{company_name}’s sole discretion. %{company_name} will have no obligation to provide a refund of any amounts previously paid. + + + + + ## [4. Payment and Renewal](#4) + + ### General Terms + + Optional paid services or upgrades may be available on the Website. When utilizing an optional paid service or upgrade, you agree to pay %{company_name} the monthly or annual subscription fees indicated. Payments will be charged on a pre-pay basis on the day you begin utilizing the service or upgrade and will cover the use of that service or upgrade for a monthly or annual subscription period as indicated. These fees are not refundable. + + ### Automatic Renewal + + Unless you notify %{company_name} before the end of the applicable subscription period that you want to cancel a service or upgrade, your subscription will automatically renew and you authorize us to collect the then-applicable annual or monthly subscription fee (as well as any taxes) using any credit card or other payment mechanism we have on record for you. Subscriptions can be canceled at any time. + + + + ## [5. Services](#5) + + ### Hosting, Support Services + + Optional Hosting and Support services may be provided by %{company_name} under the terms and conditions for each such service. By signing up for a Hosting/Support or Support services account, you agree to abide by such terms and conditions. + + + + ## [6. Responsibility of Website Visitors](#6) + + %{company_name} has not reviewed, and cannot review, all of the material, including computer software, posted to the Website, and cannot therefore be responsible for that material’s content, use or effects. By operating the Website, %{company_name} does not represent or imply that it endorses the material there posted, or that it believes such material to be accurate, useful or non-harmful. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. The Website may contain content that is offensive, indecent, or otherwise objectionable, as well as content containing technical inaccuracies, typographical mistakes, and other errors. The Website may also contain material that violates the privacy or publicity rights, or infringes the intellectual property and other proprietary rights, of third parties, or the downloading, copying or use of which is subject to additional terms and conditions, stated or unstated. %{company_name} disclaims any responsibility for any harm resulting from the use by visitors of the Website, or from any downloading by those visitors of content there posted. + + + + ## [7. Content Posted on Other Websites](#7) + + We have not reviewed, and cannot review, all of the material, including computer software, made available through the websites and webpages to which %{company_domain} links, and that link to %{company_domain}. %{company_name} does not have any control over those non-%{company_domain} websites and webpages, and is not responsible for their contents or their use. By linking to a non-%{company_domain} website or webpage, %{company_name} does not represent or imply that it endorses such website or webpage. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. %{company_name} disclaims any responsibility for any harm resulting from your use of non-%{company_domain} websites and webpages. + + + + ## [8. Copyright Infringement and DMCA Policy](#8) + + As %{company_name} asks others to respect its intellectual property rights, it respects the intellectual property rights of others. If you believe that material located on or linked to by %{company_domain} violates your copyright, and if this website resides in the USA, you are encouraged to notify %{company_name} in accordance with %{company_name}’s [Digital Millennium Copyright Act](http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act) ("DMCA") Policy. %{company_name} will respond to all such notices, including as required or appropriate by removing the infringing material or disabling all links to the infringing material. %{company_name} will terminate a visitor’s access to and use of the Website if, under appropriate circumstances, the visitor is determined to be a repeat infringer of the copyrights or other intellectual property rights of %{company_name} or others. In the case of such termination, %{company_name} will have no obligation to provide a refund of any amounts previously paid to %{company_name}. + + + + ## [9. Intellectual Property](#9) + + This Agreement does not transfer from %{company_name} to you any %{company_name} or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with %{company_name}. %{company_name}, %{company_domain}, the %{company_domain} logo, and all other trademarks, service marks, graphics and logos used in connection with %{company_domain}, or the Website are trademarks or registered trademarks of %{company_name} or %{company_name}’s licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any %{company_name} or third-party trademarks. + + + + ## [10. Advertisements](#10) + + %{company_name} reserves the right to display advertisements on your content unless you have purchased an Ad-free Upgrade or a Services account. + + + + ## [11. Attribution](#11) + + %{company_name} reserves the right to display attribution links such as ‘Powered by %{company_domain},’ theme author, and font attribution in your content footer or toolbar. Footer credits and the %{company_domain} toolbar may not be removed regardless of upgrades purchased. + + + + ## [12. Changes](#12) + + %{company_name} reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. %{company_name} may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions of this Agreement. + + + + ## [13. Termination](#13) + + %{company_name} may terminate your access to all or any part of the Website at any time, with or without cause, with or without notice, effective immediately. If you wish to terminate this Agreement or your %{company_domain} account (if you have one), you may simply discontinue using the Website. All provisions of this Agreement which by their nature should survive termination shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, indemnity and limitations of liability. + + + + ## [14. Disclaimer of Warranties](#14) + + The Website is provided "as is". %{company_name} and its suppliers and licensors hereby disclaim all warranties of any kind, express or implied, including, without limitation, the warranties of merchantability, fitness for a particular purpose and non-infringement. Neither %{company_name} nor its suppliers and licensors, makes any warranty that the Website will be error free or that cess thereto will be continuous or uninterrupted. If you’re actually reading this, here’s [a treat](http://www.newyorker.com/online/blogs/shouts/2012/12/the-hundred-best-lists-of-all-time.html). You understand that you download from, or otherwise obtain content or services through, the Website at your own discretion and risk. + + + + ## [15. Limitation of Liability](#15) + + In no event will %{company_name}, or its suppliers or licensors, be liable with respect to any subject matter of this agreement under any contract, negligence, strict liability or other legal or equitable theory for: (i) any special, incidental or consequential damages; (ii) the cost of procurement for substitute products or services; (iii) for interruption of use or loss or corruption of data; or (iv) for any amounts that exceed the fees paid by you to %{company_name} under this agreement during the twelve (12) month period prior to the cause of action. %{company_name} shall have no liability for any failure or delay due to matters beyond their reasonable control. The foregoing shall not apply to the extent prohibited by applicable law. + + + + ## [16. General Representation and Warranty](#16) + + You represent and warrant that (i) your use of the Website will be in strict accordance with the %{company_name} [Privacy Policy](/privacy), [Community Guidelines](/guidelines), with this Agreement and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the country in which this website resides or the country in which you reside) and (ii) your use of the Website will not infringe or misappropriate the intellectual property rights of any third party. + + + + ## [17. Indemnification](#17) + + You agree to indemnify and hold harmless %{company_name}, its contractors, and its licensors, and their respective directors, officers, employees and agents from and against any and all claims and expenses, including attorneys’ fees, arising out of your use of the Website, including but not limited to your violation of this Agreement. + + + + ## [18. Miscellaneous](#18) + + This Agreement constitutes the entire agreement between %{company_name} and you concerning the subject matter hereof, and they may only be modified by a written amendment signed by an authorized executive of %{company_name}, or by the posting by %{company_name} of a revised version. Except to the extent applicable law, if any, provides otherwise, this Agreement, any access to or use of the Website will be governed by the laws of the state of California, U.S.A., excluding its conflict of law provisions, and the proper venue for any disputes arising out of or relating to any of the same will be the state and federal courts located in San Francisco County, California. Except for claims for injunctive or equitable relief or claims regarding intellectual property rights (which may be brought in any competent court without the posting of a bond), any dispute arising under this Agreement shall be finally settled in accordance with the Comprehensive Arbitration Rules of the Judicial Arbitration and Mediation Service, Inc. (“JAMS”) by three arbitrators appointed in accordance with such Rules. The arbitration shall take place in San Francisco, California, in the English language and the arbitral decision may be enforced in any court. The prevailing party in any action or proceeding to enforce this Agreement shall be entitled to costs and attorneys’ fees. If any part of this Agreement is held invalid or unenforceable, that part will be construed to reflect the parties’ original intent, and the remaining portions will remain in full force and effect. A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach thereof. You may assign your rights under this Agreement to any party that consents to, and agrees to be bound by, its terms and conditions; %{company_name} may assign its rights under this Agreement without condition. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and permitted assigns. + + This document is CC-BY-SA. It was last updated May 31, 2013. + + Originally adapted from the [WordPress Terms of Service](http://en.wordpress.com/tos/). + privacy_topic: + title: "سیاست حفظ حریم خصوصی" + body: | + + + ## [What information do we collect?](#collect) + + We collect information from you when you register on our site and gather data when you participate in the forum by reading, writing, and evaluating the content shared here. + + When registering on our site, you may be asked to enter your name and e-mail address. You may, however, visit our site without registering. Your e-mail address will be verified by an email containing a unique link. If that link is visited, we know that you control the e-mail address. + + When registered and posting, we record the IP address that the post originated from. We also may retain server logs which include the IP address of every request to our server. + + + + ## [What do we use your information for?](#use) + + Any of the information we collect from you may be used in one of the following ways: + + * To personalize your experience — your information helps us to better respond to your individual needs. + * To improve our site — we continually strive to improve our site offerings based on the information and feedback we receive from you. + * To improve customer service — your information helps us to more effectively respond to your customer service requests and support needs. + * To send periodic emails — The email address you provide may be used to send you information, notifications that you request about changes to topics or in response to your user name, respond to inquiries, and/or other requests or questions. + + + + ## [How do we protect your information?](#protect) + + We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. + + + + ## [What is your data retention policy?](#data-retention) + + We will make a good faith effort to: + + * Retain server logs containing the IP address of all requests to this server no more than 90 days. + * Retain the IP addresses associated with registered users and their posts no more than 5 years. + + + + ## [Do we use cookies?](#cookies) + + Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account. + + We use cookies to understand and save your preferences for future visits and compile aggregate data about site traffic and site interaction so that we can offer better site experiences and tools in the future. We may contract with third-party service providers to assist us in better understanding our site visitors. These service providers are not permitted to use the information collected on our behalf except to help us conduct and improve our business. + + + + ## [Do we disclose any information to outside parties?](#disclose) + + We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety. However, non-personally identifiable visitor information may be provided to other parties for marketing, advertising, or other uses. + + + + ## [Third party links](#third-party) + + Occasionally, at our discretion, we may include or offer third party products or services on our site. These third party sites have separate and independent privacy policies. We therefore have no responsibility or liability for the content and activities of these linked sites. Nonetheless, we seek to protect the integrity of our site and welcome any feedback about these sites. + + + + ## [Children's Online Privacy Protection Act Compliance](#coppa) + + Our site, products and services are all directed to people who are at least 13 years old or older. If this server is in the USA, and you are under the age of 13, per the requirements of COPPA ([Children's Online Privacy Protection Act](http://en.wikipedia.org/wiki/Children)), do not use this site. + + + + ## [Online Privacy Policy Only](#online) + + This online privacy policy applies only to information collected through our site and not to information collected offline. + + + + ## [Your Consent](#consent) + + By using our site, you consent to our web site privacy policy. + + + + ## [Changes to our Privacy Policy](#changes) + + If we decide to change our privacy policy, we will post those changes on this page. + + This document is CC-BY-SA. It was last updated May 31, 2013. + static: + search_help: | +

    راهنمایی

    +

    +

      +
    • Title matches are prioritized, so when in doubt, search for titles
    • +
    • Unique, uncommon words will always produce the best results
    • +
    • Whenever possible, scope your search to a particular category, user, or topic
    • +
    +

    +

    گزینه ها

    +

    + + + + + + +
    order:viewsorder:latest
    status:openstatus:closedstatus:archivedstatus:norepliesstatus:singleuser
    category:foouser:foo
    in:likesin:postedin:watchingin:trackingin:private
    in:bookmarks
    +

    +

    + rainbows category:parks status:open order:latest will search for topics containing the word "rainbows" in the category "parks" that are not closed or archived, ordered by date of last post. +

    + badges: + long_descriptions: + autobiographer: "بلا بلا بلا \nبلا بلا بلا \n" + first_like: "بلا بلا بلا \nبلا بلا بلا \n" + first_link: "بلا بلا بلا \nبلا بلا بلا\n" + first_quote: "بلا بلا بلا \nبلا بلا بلا \n" + first_share: "بلا بلا بلا \nبلا بلا بلا \n" + read_guidelines: "بلا بلا بلا \nبلا بلا بلا \n" + reader: "بلا بلا بلا \nبلا بلا بلا \n" + editor: "بلا بلا بلا \nبلا بلا بلا \n" + first_flag: | + پرچم گزاری برای سلامت انجمن بسیار مهمه. اگر متوجه شدی که نوشته ای نیاز به مدیر داره لطفا اون را پرچم گزاری کن + + از پرچم گزاری دریغ نکن. شاید برای گفتگوی پرچم گزاری استفاده کنید برای ارسال پیام ها به کاربران وقتی + + سطح اعتماد 1 را بدست آوردند. + nice_share: "بلا بلا بلا \nبلا بلا بلا \n" + welcome: "بلا بلا بلا \nبلا بلا بلا \n" + anniversary: "بلا بلا بلا \nبلا بلا بلا \n" + good_share: "بلا بلا بلا \nبلا بلا بلا \n" + great_share: "بلا بلا بلا \nبلا بلا بلا \n" + nice_post: "بلا بلا بلا \nبلا بلا بلا \n" + nice_topic: "بلا بلا بلا \nبلا بلا بلا \n" + good_post: "بلا بلا بلا \nبلا بلا بلا \n" + good_topic: "بلا بلا بلا \nبلا بلا بلا \n" + great_post: "بلا بلا بلا \nبلا بلا بلا \n" + great_topic: "بلا بلا بلا \nبلا بلا بلا \n" + basic: "بلا بلا بلا \nبلا بلا بلا \n" + member: "بلا بلا بلا \nبلا بلا بلا \n" + regular: "بلا بلا بلا \nبلا بلا بلا \n" + leader: "بلا بلا بلا \nبلا بلا بلا \n" diff --git a/config/locales/server.fi.yml b/config/locales/server.fi.yml index 5fd30aaf15..e310d4c823 100644 --- a/config/locales/server.fi.yml +++ b/config/locales/server.fi.yml @@ -20,6 +20,7 @@ fi: is_reserved: "on varattu" purge_reason: "Poistettu automaattisesti hylättynä, aktivoimattomana tilinä" disable_remote_images_download_reason: "Linkattujen kuvien lataaminen poistettiin käytöstä vähäisen tallennustilan vuoksi." + anonymous: "Anonyymejä" errors: format: '%{attribute} %{message}' messages: @@ -71,6 +72,8 @@ fi: backup_file_should_be_tar_gz: "Varmuuskopion tulisi olla .tar.gz-pakattu tiedosto." not_enough_space_on_disk: "Ei tarpeeksi levytilaa." not_logged_in: "Sinun täytyy kirjautua sisään ensin." + not_found: "Pyydettyä osoitetta tai resurssia ei löytynyt." + invalid_access: "Sinulla ei ole oikeutta nähdä pyydettyä resurssia." read_only_mode_enabled: "Sivusto on vain luku-tilassa. Vuorovaikutteiset toiminnot ovat poissa käytöstä." too_many_replies: one: "Pahoittelut, uudet käyttäjät voivat kirjoittaa yhden vastauksen samaan ketjuun." @@ -110,6 +113,7 @@ fi: other: "Pahoittelut, uudet käyttäjät voivat ladata viesteihinsä vain %{count} linkkiä." spamming_host: "Pahoittelut, linkit tuolle sivulle eivät ole sallittuja." user_is_suspended: "Hyllytetyt käyttäjät eivät saa luoda viestejä." + topic_not_found: "Jotain on mennyt pieleen. Ehkä tämä ketju on suljettu tai poistettu sillä välin, kun katselit sitä?" just_posted_that: "on liian samanlainen kuin aiempi viestisi" has_already_been_used: "on jo käytetty" invalid_characters: "sisältää epäkelpoja merkkejä" @@ -117,6 +121,7 @@ fi: next_page: "seuraava sivu →" prev_page: "← edellinen sivu" page_num: "Sivu %{num}" + home_title: "Koti" topics_in_category: "Ketjut alueella '%{category}'" rss_posts_in_topic: "ketjun '%{topic}' RSS syöte" rss_topics_in_category: "RSS syötteet alueen '%{category}' ketjuista" @@ -175,6 +180,14 @@ fi: Oletko miettinyt oman kuvan lataamista **[käyttäjäprofiiliisi profile](%{profile_path})**? On helpompaa seurata keskusteluita ja löytää mielenkiintoisia ihmisiä niistä, kun kaikilla on uniikki avatar! + sequential_replies: | + ### Harkitse kaikkiin viesteihin vastaamista kerralla + + Usean peräkkäisen viestin sijaan, harkitse yhden vastauksen kirjoittamista, joka sisältää useita lainauksia aiemmista viesteistä tai @nimen mainintoja. + + Voit muokata edellistä viestiäsi ja lisätä siihen lainauksen korostamalla osan lainattavan viestin tekstiä ja klikkaamalla näkyviin ilmestyvää lainaa-painiketta. + + On kaikille helpompaa lukea ketjua, jossa on vähemmän pidempiä vastauksia, kuin paljon lyhyitä yksittäisiä vastauksia. dominating_topic: | ### Anna muidenkin osallistua keskusteluun @@ -217,6 +230,8 @@ fi: attributes: password: common: "on yksi 10 000 yleisimmästä salasanasta. Ole hyvä ja valitse turvallisempi salasana." + same_as_username: "on sama, kuin käyttäjätunnuksesi. Ole hyvä ja valitse turvallisempi salasana." + same_as_email: "on sama, kuin sähköpostiosoitteesi. Ole hyvä ja valitse turvallisempi salasana." ip_address: signup_not_allowed: "Kirjautuminen ei ole sallittu tälle tilille." color_scheme_color: @@ -403,9 +418,9 @@ fi: description: 'Tämän viestin sisältö on loukkaava, herjaava tai ristiriidassa palstan sääntöjen kanssa.' long_form: 'liputti tämän asiattomaksi' notify_user: - title: 'Lähetä yksityisviesti käyttäjälle @{{username}}' + title: 'Lähetä viesti käyttäjälle @{{username}}' description: 'Tämä viesti sisältää jotain, mistä haluan keskustellä tämän henkilön kanssa suoraan ja yksityisesti. Tämä ei aiheuta liputusta.' - long_form: 'lähetä käyttäjälle yksityisviesti' + long_form: 'lähetä käyttäjälle viesti' email_title: 'Viestisi ketjussa "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -442,7 +457,7 @@ fi: email_title: 'Viestiketju"%{title}" kaipaa valvojan huomiota' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Viestisi on liputettu muiden käyttäjien toimesta. Käy lukemassa saapuneet yksityisviestisi.

    ' + you_must_edit: '

    Viestisi on liputettu muiden käyttäjien toimesta. Käy lukemassa saapuneet viestisi.

    ' user_must_edit: '

    Tämä viesti on liputettu ja siksi piilotettu väliaikaisesti.

    ' archetypes: regular: @@ -507,23 +522,23 @@ fi: user_to_user_private_messages: title: "Käyttäjältä käyttäjälle" xaxis: "Päivä" - yaxis: "Yksityisviestien lukumäärä" + yaxis: "Viestien lukumäärä" system_private_messages: title: "Järjestelmä" xaxis: "Päivä" - yaxis: "Yksityisviestien lukumäärä" + yaxis: "Viestien lukumäärä" moderator_warning_private_messages: title: "Varoitus valvojalle" xaxis: "Päivä" - yaxis: "Yksityisviestien lukumäärä" + yaxis: "Viestien lukumäärä" notify_moderators_private_messages: title: "Ilmoita valvojille" xaxis: "Päivä" - yaxis: "Yksityisviestien lukumäärä" + yaxis: "Viestien lukumäärä" notify_user_private_messages: title: "Ilmoita käyttäjälle" xaxis: "Päivä" - yaxis: "Yksityisviestien lukumäärä" + yaxis: "Viestien lukumäärä" top_referrers: title: "Parhaat viittaajat" xaxis: "Käyttäjä" @@ -542,15 +557,19 @@ fi: page_view_anon_reqs: title: "Anonyymejä" xaxis: "Päivä" + yaxis: "Anonyymien API-pyynnöt" page_view_logged_in_reqs: title: "Kirjautuneita" xaxis: "Päivä" + yaxis: "Kirjautuneiden API-pyynnöt" page_view_crawler_reqs: title: "Hakurobotteja" xaxis: "Päivä" + yaxis: "Hakurobottien API-pyynnöt" page_view_total_reqs: title: "Yhteensä" xaxis: "Päivä" + yaxis: "API-pyynnöt yhteensä" http_background_reqs: title: "Taustajärjestelmä" xaxis: "Päivä" @@ -598,8 +617,9 @@ fi: title_nag: "Aseta keskustelupalstalle nimi. Voita muokata sitä sivuston asetuksissa." site_description_missing: "Aseta yhden lauseen mittainen kuvaus palstasta, joka näkyy hakutuloksissa. Muokkaa asetusta site_description sivuston asetuksissa." consumer_email_warning: "Sivusto on konfiguroitu käyttämään Gmailia (tai muuta yksityishenkilöille suunnattua sähköpostipalvelua) sähköpostin lähettämiseen. Gmail rajoittaa lähetettävien sähköpostien määrää. Harkitse sähköpostipalveluntarjoajaa, kuten mandrill.com varmistaaksesi sähköpostin lähetyksen." - site_contact_username_warning: "Aseta käyttäjänimi, jonka nimissä palsta automaattiset yksityisviestit lähetetään. Muokkaa asetusta site_contact sivuston asetuksissa." + site_contact_username_warning: "Aseta käyttäjänimi, jonka nimissä palsta automaattiset viestit lähetetään. Muokkaa asetusta site_contact sivuston asetuksissa." notification_email_warning: "Palstan sähköpostien lähettäjäosoite ei ole kelvollinen, josta johtuen sähköpostit eivät mene perille luotettavasti. Aseta toimiva sähköpostiosoite kohtaan notification_email sivuston asetuksissa." + s3_deprecation_warning: "VAROITUS! Kuvien ja liitetiedostojen tallentamisen Amazon S3-tuki lakkautetaan kohta. Ole hyvä ja seuraa ohjeita siirtyäksesi paikalliseen tallennukseen." content_types: education_new_reply: title: "Uuden käyttäjän opastus: Ensimmäinen vastaus" @@ -612,10 +632,10 @@ fi: description: "Ohjeita ja tärkeää tietoa uusille käyttäjille." welcome_user: title: "Tervetuloa: Uusi käyttäjä" - description: "Tilin luomisen yhteydessä automaattisesti lähetettävä yksityisviesti uusille käyttäjille." + description: "Tilin luomisen yhteydessä automaattisesti lähetettävä viesti uusille käyttäjille." welcome_invite: title: "Tervetuloa: Kutsuttu käyttäjä" - description: "Kutsun hyväksymisen yhteydessä automaattisesti lähetettävä yksityisviesti palstalle kutsutuille käyttäjille." + description: "Kutsun hyväksymisen yhteydessä automaattisesti lähetettävä viesti palstalle kutsutuille käyttäjille." login_required_welcome_message: title: "Kirjautuminen vaaditaan: Tervetuloviesti" description: "Tervetuloviesti uloskirjautuneille käyttäjille, kun 'pakollinen kirjautuminen' on otettu käyttöön." @@ -637,11 +657,12 @@ fi: default_locale: "Sivuston oletuskieli (ISO 639-1 koodi)" allow_user_locale: "Salli käyttäjien vaihtaa käyttöliittymän kieli omista asetuksista" min_post_length: "Viestin merkkien minimimäärä" - min_private_message_post_length: "Viestin merkkien minimimäärä yksityisviesteille" + min_first_post_length: "Ketjun aloitusviestin (leipätekstin) merkkien minimimäärä" + min_private_message_post_length: "Viestin merkkien minimimäärä viesteille" max_post_length: "Viestin merkkien minimimäärä" min_topic_title_length: "Viestin otsikon merkkien minimimäärä" max_topic_title_length: "Viestin otsikon merkkien maksimimäärä" - min_private_message_title_length: "Viestin otsikon merkkien minimimäärä yksityisviestille" + min_private_message_title_length: "Viestin otsikon merkkien minimimäärä viestille" min_search_term_length: "Haun merkkien minimimäärä" allow_uncategorized_topics: "Salli ketjujen luominen valitsematta aluetta." uncategorized_description: "Alueettomien ketjujen alueen kuvaus. Jätä tyhjäksi, jos et halua käyttää kuvausta." @@ -651,6 +672,7 @@ fi: title: "Palstan nimi, käytetään title tagissa." site_description: "Kuvaile sivustoa yhdellä lauseella, jota käytetään meta description tagissa." contact_email: "Sähköpostiosoite, josta sivuston henkilökunnan saa tavoitettua. Tänne lähetetään sivuston kriittiset ilmoitukset, kuten käsittelemättömät liput ja näytetään /about sivun yhteystietona." + contact_url: "Verkko-osoiteyhteystieto sivustolle. Näytetään /about sivun yhteystietona kiireellisiin asioihin liittyen." queue_jobs: "VAIN KEHITTÄJILLE! VAROITUS! Oletusarvona tehtävät asetetaan sidekiq jonoon. Jos poistetaan käytöstä, sivusto ei enää toimi." crawl_images: "Lataa linkatut kuvat kuvan dimensioiden määrittamiseksi." download_remote_images_to_local: "Muunna linkatut kuvat liitetiedostoiksi lataamalla ne; tämä estää kuvien rikkoontumisen vanhentuneiden linkkien vuoksi." @@ -674,7 +696,7 @@ fi: digest_logo_url: "Vaihtoehtoinen logo, jota käytetään tiivistelmäsähköpostin yläreunassa. Jos asetus jätetään tyhjäksi 'logo_url' käytetään tämän sijaan. esim: http://esimerkki.fi/logo.png" logo_small_url: "Logo sivun vasemmassa ylälaidassa, kun sivua on vieritetty alas. Jos jätetään tyhjäksi, näytetään koti-merkki." favicon_url: "Palstan favicon, katso http://fi.wikipedia.org/wiki/Favicon" - mobile_logo_url: "Logo mobiilisivun vasemmassa ylälaidassa. Jos jätetään tyhjäksi, näytetään sen tilalla palstan nimi." + mobile_logo_url: "Logo mobiilisivun vasemmassa ylälaidassa. Jos jätetään tyhjäksi, sen tilalla käytetään 'logo_url'." apple_touch_icon_url: "Applen laitteiden käyttämä ikoni, Suositeltu koko on 144px kertaa 144px." notification_email: "Sähköpostiosoite, josta kaikki tärkeät järjestelmän lähettämät sähköpostiviestit lähetetään. Verkkotunnuksen SPF, DKIM ja reverse PTR tietueiden täytyy olla kunnossa, jotta sähköpostit menevät perille." email_custom_headers: "Pystyviivalla eroteltu lista mukautetuista sähköpostin tunnisteista" @@ -685,7 +707,7 @@ fi: summary_likes_required: "Montako tykkäystä ketjussa pitää olla, jotta ketjun tiivistelmä otetaan käyttöön" summary_percent_filter: "Kun käyttäjä klikkaa 'Näytä ketjun tiivistelmä', näytä paras % viesteistä" summary_max_results: "Maksimimäärä viestejä, jotka näytetään ketjun tiivistelmässä" - enable_private_messages: "Salli luottamustason 1 käyttäjien luoda ja vastata yksityisviesteihin" + enable_private_messages: "Salli luottamustason 1 käyttäjien luoda ja vastata viesteihin" enable_long_polling: "Ilmoitusten käyttämä viestiväylä voi käyttää long pollingia" long_polling_base_url: "Base URL, jota käytetään long pollingissa (kun CDN on käytössä, varmista että tähän on asetettu origin pull) esim: http://origin.site.com" long_polling_interval: "Kuinka kauan palvelimen pitäisi odottaa ennen vastaamista asiakkaalle, kun ei ole mitään dataa jota lähettää (vain kirjautuneille käyttäjille)" @@ -718,8 +740,8 @@ fi: post_menu_hidden_items: "Piilotettavat painikkeet viestin valikosta, kunnes '...' klikataan." share_links: "Mitkä painikkeet näytetään Jaa-valikossa ja missä järjestyksessä." track_external_right_clicks: "Seuraa pois sivustolta vieviä linkkejä, jotka avataan hiiren oikealla näppäimellä (esim. avaa uudessa välilehdessä) oletuksena poistettu käytöstä, koska tämä kirjoittaa URL:n uudelleen" - site_contact_username: "Henkilökuntaan kuuluvan käyttäjä, jonka nimissä kaikki automaattiset yksityisviestit lähetetään. Jos jätetään tyhjäksi, oletuksena on System-käyttäjä." - send_welcome_message: "Lähetä kaikille uusille käyttäjille yksityinen tervetuliaisviesti, jossa on pikakäyttöopas." + site_contact_username: "Henkilökuntaan kuuluvan käyttäjä, jonka nimissä kaikki automaattiset viestit lähetetään. Jos jätetään tyhjäksi, oletuksena on System-käyttäjä." + send_welcome_message: "Lähetä kaikille uusille käyttäjille tervetuliaisviesti, jossa on pikakäyttöopas" suppress_reply_directly_below: "Älä näytä vastausten lukumäärää viestissä, jos ainoa vastaus on seuraavassa viestissä." suppress_reply_directly_above: "Älä näytä vastauksena-painiketta viestin yläreunassa, jos viestissä on vastattu vain edelliseen viestiin." suppress_reply_when_quoting: "Älä näytä vastauksena-painiketta viestin yläreunassa, kun viestissä on lainaus." @@ -749,11 +771,13 @@ fi: max_username_length: "Käyttäjänimen enimmäispituus merkeissä. VAROITUS: KÄYTTÄJÄT JOIDEN KÄYTTÄJÄTUNNUS ON PIDEMPI KUIN TÄMÄ EIVÄT VOI ENÄÄ KIRJAUTUA SISÄÄN MUUTOKSEN JÄLKEEN." min_password_length: "Salasanan vähimmäispituus." block_common_passwords: "Älä salli salasanoja, jotka ovat 10 000 yleisimmän salasanan joukossa." + enable_sso: "Ota käyttöön single sign on ulkopuolisen sivuston kautta (HUOM: voi estää kaikkia kirjautumasta sisään, MUKAANLUKIEN SINUA, jos asetukset eivät ole kunnossa. Poistaa myös kutsut käytöstä)" + enable_sso_provider: "Ota käyttöön Discourse SSO provider -protokolla /session/sso_provider päätepisteessä, vaatii asetuksen sso_secret asettamista." sso_url: "single sign on endpointin URL" sso_secret: "Salausavain, jolla todennetaan SSO tiedot, varmista että se on vähintään 10 merkkiä pitkä" sso_overrides_email: "Ohittaa paikallisen sähköpostiosoitteen SSO:n kautta saatavalla ulkopuolisella sähköpostillosoitteella (VAROITUS: eroavuuksia saattaa syntyä johtuen paikallisten sähköpostien normalisoinnista)" sso_overrides_username: "Ohittaa paikallisen käyttäjänimen SSO:n kautta saatavalla ulkopuolisella käyttäjänimellä (VAROITUS: eroavuuksia saattaa syntyä johtuen eroavuuksista nimien pituuksissa/vaatimuksissa)" - sso_overrides_name: "Ohittaa paikallisen nimen SSO:n kautta saatavalla ulkopuolisella nimellä (VAROITUS: eroavuuksia saattaa syntyä johtuen paikallisten nimien normalisoinnista)" + sso_overrides_name: "Ohittaa paikallisen koko nimen SSO:n kautta ulkopuolelta saatavalla nimellä" sso_overrides_avatar: "Syrjäyttää käyttäjän avatarin ulkopuolisella kertakirjautumisen kautta haetulla avatarilla. Jos tämä otetaan käyttöön, suositellaan samalla allow_uploaded_avatars -asetuksen poistamista käytöstä." enable_local_logins: "Ota käyttöön käyttäjätunnus/salasana -perusteinen kirjautuminen. (Huom: tämän täytyy olla käytössä kutsujen toimimiseksi)" allow_new_registrations: "Salli uusien käyttäjien rekisteröityminen. Ota tämä asetus pois käytöstä estääksesi uusien käyttäjätilien luomisen." @@ -788,7 +812,7 @@ fi: max_bookmarks_per_day: "Kirjanmerkkien päivittäinen maksimäärä per käyttäjä." max_edits_per_day: "Muokkausten päivittäinen maksimäärä per käyttäjä." max_topics_per_day: "Luotujen ketjujen päivittäinen maksimäärä per käyttäjä." - max_private_messages_per_day: "Yksityisviestien päivittäinen maksimäärä per käyttäjä." + max_private_messages_per_day: "Viestien päivittäinen maksimäärä per käyttäjä" max_invites_per_day: "Maksimimäärä kutsuja, jonka käyttäjä voi lähettää päivässä." suggested_topics: "Suositeltujen ketjujen määrä ketjun alaosassa." limit_suggested_to_category: "Näytä suositeltuja ketjuja vain nykyiseltä alueelta." @@ -838,7 +862,7 @@ fi: email_time_window_mins: "Odota (n) minuuttia ennen ilmoitussähköpostien lähettämistä, jotta käyttäjällä on aikaa muokata ja viimeistellä viestinsä." email_posts_context: "Kuinka monta edellistä vastausta liitetään kontekstiksi sähköposti-ilmoituksessa." flush_timings_secs: "Kuinka usein timing data päivitetään palvelimelle, sekunneissa." - max_word_length: "Sanan enimmäispituus merkkeinä ketjun otsikossa." + title_max_word_length: "Sanan enimmäispituus merkkeinä ketjun otsikossa" title_min_entropy: "Ketjun otsikon minimientropia (uniikkeja merkkejä)." body_min_entropy: "Viestin minimientropia (uniikkeja merkkejä)." title_fancy_entities: "Muunna tavalliset ASCII merkit hienommiksi HTML merkinnöiksi ketjun otsikoissa, kuten SmartyPants http://daringfireball.net/projects/smartypants/" @@ -869,6 +893,7 @@ fi: newuser_spam_host_threshold: "Kuinka monta kertaa uusi käyttäjä voi lisätä linkin samaan isäntään `newuser_spam_host_posts` viesteissään, kunnes se tulkitaan roskapostin lähettämiseksi." white_listed_spam_host_domains: "Lista verkkotunnuksista, joita ei oteta huomioon roskapostin tunnistamisessa. Uusilla käyttäjillä ei ole rajoituksia linkkaamisessa näihin tunnuksiin." staff_like_weight: "Kuinka suuri ylimääräinen arvo on henkilökunnan tykkäyksillä." + topic_view_duration_hours: "Laske uusi ketjun katselu kerran per IP/käyttäjä n tunnin välein" levenshtein_distance_spammer_emails: "Verrattaessa sähköpostiosoitteita tunnettuihin roskapostittajiin, näin monen merkin ero saa vielä aikaan löydöksen." max_new_accounts_per_registration_ip: "Jos samasta IP osoitteesta on jo (n) luottamustason 0 käyttäjätiliä (eikä yhtään henkilökunnan tai vähintään LT2), lakkaa hyväksymästä uusia rekisteröitymisiä tästä IP:stä." min_ban_entries_for_roll_up: "Kun Kääri-painiketta painetaan, luodaan IP-porttikielloista aliverkon kattavia kieltoja jos kieltoja on asettu vähintään (N) määrä." @@ -876,6 +901,7 @@ fi: max_age_unmatched_ips: "Poista osumattomat seulotut IP-osoitteet (N) päivän jälkeen." num_flaggers_to_close_topic: "Minimimäärä uniikkeja liputtajia, joka vaaditaan ketjun automaattiseksi keskeyttämiseksi." num_flags_to_close_topic: "Minimimäärä aktiivisia lippuja, joka vaaditaan ketjun automaattiseksi keskeyttämiseksi." + auto_respond_to_flag_actions: "Ota käyttöön automaattinen vastaus lippua poistettaessa." reply_by_email_enabled: "Ota käyttöön vastaukset sähköpostin avulla." reply_by_email_address: "Saapuvan sähköpostin sapluuna sähköpostivastauksiin, esimerkiksi: %{reply_key}@reply.example.com tai replies+%{reply_key}@example.com" disable_emails: "Estä Discoursea lähettämästä mitään sähköpostia" @@ -902,15 +928,22 @@ fi: allow_uploaded_avatars: "Salli käyttäjien ladata oma avatar." allow_animated_avatars: "Salli käyttäjien valita animoituja gif-avatareja. VAROITUS: aja avatars:refresh rake task tämän asetuksen muuttamisen jälkeen." allow_animated_thumbnails: "Luo animoidut esikatselukuvat animoiduista gif-tiedostoista." + default_avatars: "Verkko-osoitteet profiilikuviin, joita käytetään oletuksena uusille käyttäjille." automatically_download_gravatars: "Lataa käyttäjille Gravatarit automaattisesti tilin luonnin ja sähköpostin vaihdon yhteydessä." digest_topics: "Sähköpostitiivistelmässä näytettävien ketjujen maksimimäärä." digest_min_excerpt_length: "Viestin katkelman vähimmäispituus sähköpostitiivistelmässä, merkeissä" default_digest_email_frequency: "Kuinka usein käyttäjän saavat sähköpostitiivistelmän oletuksena. He voivat muuttaa asetusta omista asetuksistaan." - suppress_digest_email_after_days: "Supista tiivistelmäsähköpostit käyttäjltä, joita ei ole nähty (n) päivän aikana." + suppress_digest_email_after_days: "Jätä lähettämättä tiivistelmäsähköpostit käyttäjille, joita ei ole nähty (n) päivän aikana." disable_digest_emails: "Ota tiivistelmäsähköpostit pois käytöstä kaikilta käyttäjiltä." default_external_links_in_new_tab: "Avaa ulkoiset linkit uudessa välilehdessä. Käyttäjät voivat muuttaa tämän asetuksistaan." detect_custom_avatars: "Tarkistetaanko, ovatko käyttäjät ladanneet oman avatarin." max_daily_gravatar_crawls: "Korkeintaan kuinka monta kertaa Discourse tarkistaa avatarit Gravatarista päivässä" + public_user_custom_fields: "Whitelist käyttäjän mukautetuista kentistä, jotka voidaan näyttää julkisesti." + staff_user_custom_fields: "Whitelist käyttäjän mukautetuista kentistä, jotka voidaan näyttää henkilökunnalle." + enable_user_directory: "Näytä hakemisto käyttäjistä" + allow_anonymous_posting: "Salli käyttäjien vaihtaa anonyymiin tilaan" + anonymous_posting_min_trust_level: "Anonyymin tilan käyttämiseen vaadittava luottamustila" + anonymous_account_duration_minutes: "Suojellaksesi anonymiteettiä, luo uusi anonyymi tili N minuutin välein jokaiselle käyttäjälle. Esimerkki: jos arvoksi asetetaan 600, kun 600 minuuttia tulee kuluneeksi edellisestä viestistä JA käyttäjä vaihtaa anonyymiin tilaan, luodaan uusi anonyymi tili." allow_profile_backgrounds: "Salli käyttäjien ladata profiilin taustakuva." sequential_replies_threshold: "Kuinka monen peräkkäisen viestin jälkeen yhdessä ketjussa käyttäjää muistutetaan peräkkäisistä vastauksista." enable_mobile_theme: "Mobiililaitteet käyttävät erillistä teemaa ja kahden välillä on mahdollista vaihtaa. Poista asetus käytöstä, jos haluat käyttää omaa tyylitiedostoa, joka on mukautuva eri laitteille." @@ -918,6 +951,7 @@ fi: suppress_uncategorized_badge: "Älä näytä alueettomille ketjuille tunnusta ketjujen listauksissa." global_notice: "Näytä KIIREELLISESTÄ HÄTÄTAPAUKSESTA kertova banneri kaikilla sivuilla kaikille käyttäjille, vaihda tyhjäksi piilottaaksesi sen (HTML sallittu)." disable_edit_notifications: "Poista muokkausilmoitukset system-käyttäjältä, kun 'download_remote_images_to_local' on asetettu." + full_name_required: "Koko nimi on käyttäjäprofiilin vaadittu kohta" enable_names: "Näytä käyttäjän koko nimi profiilissa, käyttäjäkortissa ja sähköposteissa. Poista käytöstä piilottaaksesi koko nimen kaikkialla." display_name_on_posts: "Näytä käyttäjän pitkä nimi viesteissä @nimen lisäksi." invites_per_page: "Oletuksena montako kutsua näytetään käyttäjäsivulla." @@ -925,6 +959,8 @@ fi: default_code_lang: "Oletusarvoinen ohjelmointikieli syntaksin korostukseen Github koodiblokeissa (lang-auto, ruby, python etc.)" warn_reviving_old_topic_age: "Kun käyttäjä alkaa kirjoittamaan vastausta ketjuun, jonka uusin viesti on tätä vanhempi päivissä, näytetään varoitus. Poista käytöstä asettamalla arvoksi 0." autohighlight_all_code: "Pakota koodin korostus kaikkiin esimuotoiltuihin tekstiblokkeihin, vaikka käyttäjä ei määrittelisi kieltä." + highlighted_languages: "Syntaksin korostamisen säännöt. (Varoitus: liian monen kielen sisällyttäminen voi vaikuttaa suorituskykyyn) katso demo: https://highlightjs.org/static/demo/" + embeddable_host: "Isäntä, joka voi upottaa kommentteja tältä palstalta. Pelkkä isäntänimi, älä aloita http://" feed_polling_enabled: "VAIN UPOTUS: Upotetaanko RSS/ATOM syöte viesteinä." feed_polling_url: "VAIN UPOTUS: RSS/ATOM syötteen URL." embed_by_username: "Sen käyttäjän Discourse käyttäjänimi, joka luo upotetut ketjut." @@ -941,6 +977,7 @@ fi: prevent_anons_from_downloading_files: "Estä kirjautumattomia käyttäjiä lataamasta liitetiedostoja. VAROITUS: tämä estää viestin liitettyjen muiden tiedostojen, kuin kuvien käyttämisen sivustolla." enable_emoji: "Ota emoji käyttöön" emoji_set: "Minkälaisa emojia haluaisit käyttää?" + enforce_square_emoji: "Pakota neliö kuvasuhteeksi kaikille emojille." errors: invalid_email: "Sähköpostiosoite ei kelpaa." invalid_username: "Tällä nimellä ei löydy käyttäjää." @@ -949,6 +986,7 @@ fi: invalid_integer_max: "Arvo ei voi olla suurempi kuin %{max}." invalid_integer: "Arvon pitää olla kokonaisluku." regex_mismatch: "Arvo ei vastaa vaadittua formaattia." + must_include_latest: "Ylävalikon täytyy sisältää 'tuoreimmat' välilehti." invalid_string: "Arvo ei kelpaa." invalid_string_min_max: "Merkkien lukumäärän täytyy olla välillä %{min} - %{max}." invalid_string_min: "Täytyy olla vähintään %{min} merkkiä." @@ -962,8 +1000,9 @@ fi: edited: "%{display_username} muokkasi viestiäsi %{link}" posted: "%{display_username} kirjoitti viestin %{link}" moved_post: "%{display_username} siirsi viestisi tänne %{link}" - private_message: "%{display_username} lähetti sinulle yksityisviestin: %{link}" - invited_to_private_message: "%{display_username} kutsui sinut yksityisviestiin: %{link}" + private_message: "%{display_username} lähetti sinulle viestin: %{link}" + invited_to_private_message: "%{display_username} kutsui sinut viestiin: %{link}" + invited_to_topic: "%{display_username} kutsui sinut ketjuun: %{link}" invitee_accepted: "%{display_username} hyväksyi kutsusi" linked: "%{display_username} linkitti sinuun täällä %{link}" granted_badge: "Ansaitsit %{link}" @@ -1036,6 +1075,8 @@ fi: active: "Tilisi on aktivoitu ja valmiina käyttöön." activate_email: "

    Olet melkein valmis! Lähetimme sähköpostin osoitteeseen %{email}. Seuraa viestin ohjeita aktivoidaksesi käyttäjätilisi.

    Jos viesti ei tullut perille, tarkista roskapostikansiosta tai yritä kirjautua sisään, jolloin aktivointiviestin voi lähettää uudestaan.

    " not_activated: "Et voi vielä kirjautua sisään. Lähetimme sinulle vahvistusviestin. Seuraa sähköpostiviestin ohjeita ottaaksesi tunnuksen käyttöön." + not_allowed_from_ip_address: "Et voi kirjautua käyttäjätunnuksella %{username} tästä IP-osoitteesta." + admin_not_allowed_from_ip_address: "Et voi kirjautua ylläpitäjänä tästä IP-osoitteesta." suspended: "Et voi kirjautu sisään ennen %{date}." suspended_with_reason: "Et voi kirjautua sisään ennen %{date}. Hyllytyksen syy: %{reason}" errors: "%{errors}" @@ -1102,6 +1143,45 @@ fi: %{base_url}/users/password-reset/%{email_token} test_mailer: subject_template: "[%{site_name}] Sähköpostin toimitettavuustesti" + text_body_template: | + Tämä on testisähköposti sivustolta + + [**%{base_url}**][0] + + Sähköpostin toimitus on monimutkaista. Tässä on muutama tärkeä asia, jotka kannattaa tarkistaa ensin: + + - *Varmista,* että `ilmoitusten sähköpostiosoitteen` from: kenttä on asetettu oikein sivuston asetuksissa. **Sähköpostin varmennus tapahtuu "from"-kentän sähköpostiosoitteen verkkotunnusta vastaan**. + + - Selvitä, miten sähköpostiohjelmassasi saa näkyville *sähköpostin raakadatan,* jotta voit tutkia viestin tunnistetiedot. Gmailissa tämä tapahtuu "näytä kokonaan" valinnalla viestin oikeassa yläkulmassa olevasta valikosta. + + - **TÄRKEÄÄ:** Onko palveluntarjoajasi syöttänyt reverse DNS kentän verkkotunnuksille ja IP osoitteille, joists lähetät sähköpostia? [Kokeile Reverse PTR tietuetta][2] täällä. Jos palveluntarjoajasi ei tarjoa kunnollista reverse DNS pointer tietuetta, on hyvin epätodennäköistä, että mikään sähköposti menee perille. + + - Onko verkkotunnuksesi [SPF record][8] oikein? [Kokeile SPF tietuetta][1] täällä. Huomaa, että TXT oikea tietuetyyppi SPF tietueelle. + + - Onko verkkotunnuksesi [DKIM tietue][3] oikein? Tämä vaikuttaa merkittävästi sähköpostin toimitettavuuteen. [Kokeile DKIM tietuetta][7] täällä. + + - Jos käytät omaa sähköpostipalvelinta, tarkista että palvelimen IP osoite [ei ole millään sähköpostin mustalla listalla][4]. + + - Tarkista myös, että se varmasti lähettää oikean muotoisen isäntänimen HELO viestissään, joka palauttaa oikean DNS tietueen. Jos näin ei ole, sähköposti hylätään monissa sähköpostipalveluissa. + + (Helpoin tapa on luoda ilmainen tili [Mandrilliin][md], [Mailguniin][mg] tai [Mailjetiin][mj], joide ilmaiset palvelut riittävät hyvin piemen palstan käyttöön. Muista silti asettaa SPF ja DKIM tietueet DNS:ään!) + + Toivottavasti tämä testisähköposti meni perille OK! + + Onnea matkaan, + + Ystäväsi [Discourselta](http://www.discourse.org) + + [0]: %{base_url} + [1]: http://www.kitterman.com/spf/validate.html + [2]: http://mxtoolbox.com/ReverseLookup.aspx + [3]: http://www.dkim.org/ + [4]: http://whatismyipaddress.com/blacklist-check + [7]: http://dkimcore.org/tools/dkimrecordcheck.html + [8]: http://www.openspf.org/SPF_Record_Syntax + [md]: http://mandrill.com + [mg]: http://www.mailgun.com/ + [mj]: https://www.mailjet.com/pricing new_version_mailer: subject_template: "[%{site_name}] Uusi Discourse versio, päivitys saatavilla" text_body_template: |+ @@ -1178,7 +1258,7 @@ fi: Saadaksesi lisätietoja, lue [yhteisön säännöt](%{base_url}/guidelines). usage_tips: text_body_template: | - Tässä yksityisviestissä on muutama pikaohje, joiden avulla pääset alkuun: + Tässä muutama pikaohje, joiden avulla pääset alkuun. ## Jatka vierittämistä @@ -1212,6 +1292,8 @@ fi: + [Tavallisia Emojia](http://www.emoji.codes/), voit lisätä vain aloittamalla kirjoittamaan `:` tai perinteisiä hymiöitä `:)` :smile: + ## Mitä muuta voin tehdä? Jokaisen viestin alalaidassa on rivi painikkeita. @@ -1228,7 +1310,7 @@ fi: - Älä murehdi siitä, että et huomaisi uusi vastauksia. Saat sähköposti-ilmoituksen uusista vastauksista viesteihisi (ja yksityisviesteistä) jos et ole paikalla, kun ne saapuvat. + Älä murehdi siitä, että et huomaisi uusi vastauksia. Saat sähköposti-ilmoituksen uusista vastauksista (ja viesteistä) jos et ole paikalla, kun ne saapuvat. ## Milloin keskustelut ovat uusia? @@ -1254,7 +1336,7 @@ fi: Toivottavasti viihdyt! - (Jos haluat keskustella yksityisesti [henkilökunnan jäsenten](%{base_url}/about) kanssa, vastaa vain tähän viestiin) + (Jos haluat keskustella [henkilökunnan jäsenten](%{base_url}/about) kanssa, vastaa vain tähän viestiin) welcome_invite: subject_template: "Tervetuloa sivustolle %{site_name}!" text_body_template: | @@ -1274,7 +1356,7 @@ fi: Toivottavasti viihdyt! - (Jos haluat keskustella yksityisesti [henkilökunnan jäsenten](%{base_url}/about) kanssa, vastaa vain tähän viestiin) + (Jos haluat keskustella [henkilökunnan jäsenten](%{base_url}/about) kanssa, vastaa vain tähän viestiin) [prefs]: %{user_preferences_url} backup_succeeded: @@ -1328,19 +1410,19 @@ fi: subject_template: "Datan vienti epäonnistui" text_body_template: "Pahoittelemme, mutta datan vientisi epäonnistui. Tarkasta lokit tai ota yhteyttä henkilökuntaan." email_reject_trust_level: - subject_template: "Sähköpostiongelma -- Riittämätön luottamustaso" + subject_template: "[%{site_name}] Sähköpostiongelma -- Riittämätön luottamustaso" text_body_template: | Pahoittelut, sähköpostiviestiäsi tänne: %{destination} (otsikolla %{former_title}) ei voitu toimittaa. Tilisi luottamustaso ei ole riittävä, jotta saisit lähettää uusia ketjuja tähän sähköpostiosoitteeseen. Jos uskot, että tämä johtuu virheestä, ota yhteyttä henkilökuntaan. email_reject_no_account: - subject_template: "Sähköpostiongelma -- Tuntematon tili" + subject_template: "[%{site_name}] Sähköpostiongelma -- Tuntematon tili" text_body_template: | Pahoittelemme, mutta sähköpostin lähettäminen tänne %{destination} (otsikolla %{former_title}) ei onnistunut. Tälle sähköpostiosoitteelle ei löydy käyttäjätiliä. Yritä lähettää sähköposti toisesta osoitteesta tai ota yhteyttä henkilökuntaan. email_reject_empty: - subject_template: "Sähköpostiongelma -- Ei sisältöä" + subject_template: "[%{site_name}] Sähköpostiongelma -- Ei sisältöä" text_body_template: | Pahoittelemme, että sähköpostin lähettäminen tänne %{destination} (otsikolla %{former_title}) ei onnistunut. @@ -1348,19 +1430,19 @@ fi: Jos saat tämän viestin, vaikka sähköpostissa _oli_ sisältöä, yritä uudestaan siten, että viesti sisältää HTML-sisältöä (ei pelkkää selkotekstiä). email_reject_parsing: - subject_template: "Sähköpostionelma -- Tunnistamaton sisältö" + subject_template: "[%{site_name}] Sähköpostiongelma -- Tunnistamaton sisältö" text_body_template: | Pahoittelemme, että sähköpostin lähettäminen tänne %{destination} (otsikolla %{former_title}) ei onnistunut. Emme löytäneet viestisi sisältöä sähköpostista. **Varmista, että kirjoitit viestisi sähköpostin alkuun** -- emme pysty käsittelemään lainausten sekaan kirjoitettuja vastauksia email_reject_post_error: - subject_template: "Sähköpostiongelma -- Lähetysvirhe" + subject_template: "[%{site_name}] Sähköpostiongelma -- Lähetysvirhe" text_body_template: | Pahoittelemme, mutta sähköpostin lähettäminen tänne %{destination} (otsikolla %{former_title}) ei onnistunut. Joitain mahdollisia syitä: monimutkainen muotoilu, liian suuri tai liian pieni viesti. Yritä uudelleen, tai lähetä viesti nettisivun kautta jos ongelma jatkuu. email_reject_post_error_specified: - subject_template: "Sähköpostiongelma -- Lähetysvirhe" + subject_template: "[%{site_name}] Sähköpostiongelma -- Lähetysvirhe" text_body_template: | Pahoittelemme, mutta sähköpostin lähettäminen tänne %{destination} (otsikolla %{former_title}) ei onnistunut. @@ -1370,31 +1452,37 @@ fi: Jos voit korjata ongelman, yritä uudelleen. email_reject_reply_key: - subject_template: "Sähköpostiongelma -- Tuntematon vastausavain" + subject_template: "[%{site_name}] Sähköpostiongelma -- Tuntematon vastausavain" text_body_template: | Pahoittelemme, mutta sähköpostin lähettäminen tänne %{destination} (otsikolla %{former_title}) ei onnistunut. Annettu vastausavain on väärä tai tuntematon, joten emme pystyneet selvittämään mihin tämä sähköposti lähetettiin vastauksena. Ota yhteys henkilökuntaan. email_reject_destination: - subject_template: "Sähköpostiongelma -- Tuntematon Vastaanottaja: -osoite" + subject_template: "[%{site_name}] Sähköpostiongelma -- Tuntematon Vastaanottaja: -osoite" text_body_template: | Pahoittelut, sähköpostiviestiäsi tänne: %{destination} (otsikolla %{former_title}) ei voitu toimittaa. Mitään sähköpostin kohdeosoitteista ei tunnistettu. Varmista, että sähköpostiosoite on "Vastaanottaja:"-rivillä (ei CC tai BCC) ja että yrität lähettää sähköpostia osoitteeseen, jonka palstan henkilökunta on antanut. email_reject_topic_not_found: - subject_template: "Sähköpostiongelma -- Ketjua ei löytynyt" + subject_template: "[%{site_name}] Sähköpostiongelma -- Ketjua ei löytynyt" text_body_template: | Pahoittelut, sähköpostiviestiäsi tänne: %{destination} (otsikolla %{former_title}) ei voitu toimittaa. Ketjua ei löytynyt, se on voitu poistaa. Jos uskot, että on tapahtunut virhe, ota yhteyttä palstan henkilökuntaan. email_reject_topic_closed: - subject_template: "Sähköpostiongelma -- Suljettu ketju" + subject_template: "[%{site_name}] Sähköpostiongelma -- Suljettu ketju" text_body_template: | Pahoittelut, sähköpostiviestiäsi tänne: %{destination} (otsikolla %{former_title}) ei voitu toimittaa. Ketju on suljettu. Jos uskot, että on tapahtunut virhe, ota yhteys palstan henkilökuntaan. + email_reject_auto_generated: + subject_template: "[%{site_name}] Sähköpostiongelma -- Automaattivastaus" + text_body_template: | + Pahoittelut, sähköpostiviestiäsi tänne: %{destination} (otsikolla %{former_title}) ei voitu toimittaa. + + Sähköpostivastauksesi oli automaattisesti luotu, mitä emme hyväksy. Jos uskot, että on tapahtunut virhe, ota yhteys palstan henkilökuntaan. email_error_notification: - subject_template: "Sähköpostiongelma -- POP autentikoinnin virhe" + subject_template: "[%{site_name}] Sähköpostiongelma -- POP-autentikoinnin virhe" text_body_template: | Sähköpostin pollauksessa POP-palvelimelta tapahtui autentikointivirhe. @@ -1468,11 +1556,35 @@ fi: visit_link_to_respond: "Vastataksesi, vieraile selaimella osoitteessa %{base_url}%{url}." posted_by: "Käyttäjältä %{username} %{post_date}" user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} kutsui sinut yksityisviestiin '%{topic_title}'" - text_body_template: | - %{username} kutsui sinut yksityisviestiin '%{topic_title}' sivustolla %{site_name}: + subject_template: "[%{site_name}] %{username} kutsui sinut viestiin '%{topic_title}'" + text_body_template: |2 - Seuraa tätä linkkiä nähdäksesi viestiketjun: %{base_url}%{url} + %{username} kutsui sinut viestiin + + > **%{topic_title}** + > + > %{topic_excerpt} + + sivustolla + + > %{site_title} -- %{site_description} + + Seuraa tätä linkkiä nähdäksesi viestin: %{base_url}%{url} + user_invited_to_topic: + subject_template: "[%{site_name}] %{username} kutsui sinut viestiin '%{topic_title}'" + text_body_template: |2 + + %{username} kutsui sinut keskusteluun + + > **%{topic_title}** + > + > %{topic_excerpt} + + sivustolla + + > %{site_title} -- %{site_description} + + Seuraa tätä linkkiä nähdäksesi keskustelun: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1521,7 +1633,7 @@ fi: %{respond_instructions} digest: why: "Lyhyt tiivistelmä siitä mitä on tapahtunut sivustolla %{site_link} viimeisimmän vierailusi jälkeen %{last_seen_at}." - subject_template: "[%{site_name}] Tiivistelmä ajalta %{date}" + subject_template: "[%{site_name}] Tiivistelmä" new_activity: "Uusi toiminta omissa ketjuissasi ja viesteissäsi:" top_topics: "Suosittuja viestejä" other_new_topics: "Suosittuja ketjuja" @@ -1583,7 +1695,7 @@ fi: Toivottavasti viihdyt! - (Jos haluat keskustella yksityisesti [henkilökunnan jäsenten](%{base_url}/about) kanssa, vastaa vain tähän viestiin) + (Jos haluat keskustella [henkilökunnan jäsenten](%{base_url}/about) kanssa, vastaa vain tähän viestiin) signup: subject_template: "[%{site_name}] Vahvista uusi tilisi" text_body_template: | @@ -1625,7 +1737,7 @@ fi: spam_hosts: "Tämä uusi käyttäjä yritti luoda useita viestejä, joissa oli linkkejä samaan verkkotunnukseen. Katso asetus newuser_spam_host_threshold." email_log: no_user: "Käyttäjää id:llä %{user_id} ei löydy" - suspended_not_pm: "Käyttäjä on hyllytetty, ei yksityisviesti" + suspended_not_pm: "Käyttäjä on hyllytetty, ei viesti" seen_recently: "Käyttäjä nähtiin äskettäin" post_not_found: "Viestiä id:llä %{post_id} ei löydy" notification_already_read: "Ilmoitus, jota tämä sähköposti koskee, on jo luettu" @@ -1677,3 +1789,78 @@ fi:

    sateenkaari category:puistot status:open order:latest etsii ketjuja, joissa mainitaan sana "sateenkaari" alueella "puistot" joita ei ole suljettu tai arkistoitu, järjestettynä viimeisen viestin mukaan.

    + badges: + long_descriptions: + autobiographer: | + Blah blah blah + Blah blah blah + first_like: | + Blah blah blah + Blah blah blah + first_link: | + Blah blah blah + Blah blah blah + first_quote: | + Blah blah blah + Blah blah blah + first_share: | + Blah blah blah + Blah blah blah + read_guidelines: | + Blah blah blah + Blah blah blah + reader: | + Blah blah blah + Blah blah blah + editor: | + Blah blah blah + Blah blah blah + first_flag: | + Liputus on tärkeää yhteisön elinvoimaisuuden kannalta. Jos huomaat viestejä, jotka kaipaavat moderaattorin toimenpiteitä, + älä epäröi liputtaa niitä. Voit myös käyttää liputuspainiketta lähettääksesi viestejä muille käyttäjille, kun olet saavuttanut + luottamustason 1. + nice_share: | + Blah blah blah + Blah blah blah + welcome: | + Blah blah blah + Blah blah blah + anniversary: | + Blah blah blah + Blah blah blah + good_share: | + Blah blah blah + Blah blah blah + great_share: | + Blah blah blah + Blah blah blah + nice_post: | + Blah blah blah + Blah blah blah + nice_topic: | + Blah blah blah + Blah blah blah + good_post: | + Blah blah blah + Blah blah blah + good_topic: | + Blah blah blah + Blah blah blah + great_post: | + Blah blah blah + Blah blah blah + great_topic: | + Blah blah blah + Blah blah blah + basic: | + Blah blah blah + Blah blah blah + member: | + Blah blah blah + Blah blah blah + regular: | + Blah blah blah + Blah blah blah + leader: | + Blah blah blah + Blah blah blah diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index e08980fc21..fc2b578f40 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -127,7 +127,7 @@ fr: num_posts: "Messages :" num_participants: "Participants :" read_full_topic: "Lire le sujet en entier" - private_message_abbrev: "MP" + private_message_abbrev: "Msg" rss_description: latest: "Sujets récents" hot: "Sujets populaires" @@ -411,9 +411,9 @@ fr: description: 'Ce message contient du contenu qu''une personne raisonnable jugerait offensant, abusif ou en violation du règlement de notre communauté.' long_form: 'signalé comme inapproprié' notify_user: - title: 'Contacter @{{username}} en privé' + title: 'Contacter @{{username}}' description: 'Ce message contient quelque chose sur lequel je souhaite discuter en privé avec cet utilisateur. N''envoi pas de signalement.' - long_form: 'utilisateur contacté en privé' + long_form: 'utilisateur contacté' email_title: 'Votre message sur "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -450,7 +450,7 @@ fr: email_title: 'Ce sujet "%{title}" requière l''attention d''un modérateur' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Votre message a été signalé par la communauté. Veuillez regarder vos messages privés.

    ' + you_must_edit: '

    Votre message a été signalé par la communauté. Veuillez regarder vos messages.

    ' user_must_edit: '

    Ce message a été signalé par la communauté et temporairement masqué.

    ' archetypes: regular: @@ -515,23 +515,23 @@ fr: user_to_user_private_messages: title: "Utilisateur à Utilisateur" xaxis: "Jour" - yaxis: "Nombre de messages privés" + yaxis: "Nombre de messages" system_private_messages: title: "Système" xaxis: "Jour" - yaxis: "Nombre de messages privés" + yaxis: "Nombre de messages" moderator_warning_private_messages: title: "Avertissements aux modérateurs" xaxis: "Jour" - yaxis: "Nombre de messages privés" + yaxis: "Nombre de messages" notify_moderators_private_messages: title: "Notifications aux modérateurs" xaxis: "Jour" - yaxis: "Nombre de messages privés" + yaxis: "Nombre de messages" notify_user_private_messages: title: "Notifications aux utilisateurs" xaxis: "Jour" - yaxis: "Nombre de messages privés" + yaxis: "Nombre de messages" top_referrers: title: "Meilleurs référants" xaxis: "Utilisateurs" @@ -611,8 +611,9 @@ fr: title_nag: "Saisissez le nom de votre site. Modifier le titre sous Paramètres du site." site_description_missing: "Saisissez une phrase courte qui décrira votre site et apparaîtra dans les moteurs de recherche. Mettez site_description à jour dans les Paramètres du site." consumer_email_warning: "Votre site est configuré pour envoyer les courriels en utilisant Gmail (ou un autre site de courriels pour utilisateur standard). Gmail limite le nombre d'emails que vous pouvez envoyer. Nous vous conseillons d'utiliser un autre service d'envoi de courriels afin d'assurer une meilleure délivrabilité." - site_contact_username_warning: "Saisissez le pseudo d'un responsable sympathique à partir de laquele seront envoyés les messages privés importants. Mettez à jour site_contact_username dans les Paramètres du site." + site_contact_username_warning: "Saisissez le pseudo d'un responsable sympathique qui enverra automatiquement les messages importants. Mettez à jour site_contact_username dans les paramètres du site." notification_email_warning: "Les courriels de notification ne serot pas envoyés depuis une adresse de courriel valide sur votre domaine ; l'envoie des courriels sera aléatoire et peu fiable. Veuillez saisir une adresse de courriel locale dans notification_email dans les Paramètres du site." + s3_deprecation_warning: "ATTENTION ! Le support d'Amazon S3 pour l'hébergement des images et des pièces jointes va bientôt être abandonné. Merci de suivre ces instructions pour migrer vers de l'hébergement local." content_types: education_new_reply: title: "Education du nouvel utlisateur : premières réponses" @@ -625,10 +626,10 @@ fr: description: "Conseil et informations essentielles pour les nouveaux utilisateurs." welcome_user: title: "Bienvenue : nouvel utilisateur" - description: "Un message privé envoyé automatiquement à tous les nouveaux utilisateurs lorsqu'ils s'enregistrent." + description: "Un message envoyé automatiquement à tous les nouveaux utilisateurs lorsqu'ils s'enregistrent." welcome_invite: title: "Bienvenue : utilisateur invité" - description: "Un message privé envoyé automatiquement à tous les utilisateurs invités lorsqu'ils acceptent l'invitation d'un membre à participer au forum." + description: "Un message envoyé automatiquement à tous les invités lorsqu'ils acceptent l'invitation d'un utilisateur à participer au forum." login_required_welcome_message: title: "Connexion requise : message d'accueil" description: "Message d'accueil qui est affiché pour déconnecter les utilisateurs quand le paramètre 'connexion obligatoire' est activé." @@ -650,11 +651,12 @@ fr: default_locale: "La langue par défaut de cette instance de Discourse (code ISO 639-1)" allow_user_locale: "Autoriser les utilisateurs à choisir la langue de l'interface dans leur préférences." min_post_length: "Longueur minimale autorisée des messages en nombre de caractères" - min_private_message_post_length: "Longueur minimale autorisée des messages privés en nombre de caractères" + min_first_post_length: "Longueur minimale d'un premier message (corps de sujet) en nombre de caractères" + min_private_message_post_length: "Longueur minimale des messages en nombre de caractères" max_post_length: "Longueur maximale autorisée des messages en nombres de caractères" min_topic_title_length: "Longueur minimale autorisée des titres de sujet en nombre de caractères" max_topic_title_length: "Longueur maximale autorisée des titres de sujet en nombre de caractères" - min_private_message_title_length: "Longueur minimale autorisée pour un titre de message privé en nombre de caractères" + min_private_message_title_length: "Longueur minimale pour un titre de message en nombre de caractères" min_search_term_length: "Longueur minimale autorisée du texte saisie avant de lancer une recherche en nombre de caractères" allow_uncategorized_topics: "Autoriser la création de sujet sans catégorie." uncategorized_description: "La description de la catégorie Sans catégorie. Laissez vide pour ne pas avoir de description." @@ -688,7 +690,7 @@ fr: digest_logo_url: "Le logo alternatif qui sera utilisé dans les courriels de votre site. Si non renseigné, alors `logo_url` sera utilisé, par exemple : http://example.com/logo.png" logo_small_url: "La petite image logo affiché en haut à gauche du site quand la page est défilée vers le bas. Si vide, une glyphe 'maison' sera affichée." favicon_url: "Le favicon de votre site, voir http://fr.wikipedia.org/wiki/Favicon" - mobile_logo_url: "L'image logo avec position fixe en haut à gauche de votre site en mode mobile. Si vide, le titre du site sera affiché." + mobile_logo_url: "Le logo fixé en haut à gauche de votre site mobile. Si vide, `logo_url` sera utilisé." apple_touch_icon_url: "Icône utilisée pour les appareils d'Apple. Taille recommandée 144 px par 144 px." notification_email: "L'adresse de courriel dans le champs De qui sera utilisée pour envoyer les courriels systèmes essentiels. Le nom de domaine spécifié doit avoir les informations SPF, DKIM et PTR inversé renseignés correctement pour que le courriel arrive à destination." email_custom_headers: "Une liste délimité par des (|) pipes d'entêtes de courriel" @@ -699,7 +701,7 @@ fr: summary_likes_required: "Nombre de J'aime minimum dans un sujet avant que le 'Résumé du sujet' soit activé" summary_percent_filter: "Quand un utilisateur clique sur 'Résumé du sujet', montrer le top % des messages" summary_max_results: "Nombre maximum de messages retournés par 'Résumé de ce sujet'" - enable_private_messages: "Autoriser les utilisateurs du niveau de confiance 1 à créer des messages et conversations privés." + enable_private_messages: "Autoriser les utilisateurs de niveau de confiance 1 à créer des messages et à y répondre" enable_long_polling: "Utiliser les requêtes longues pour le flux de notifications." long_polling_base_url: "Racine de l'url utilisée pour les requêtes longues (dans le cas de l'utilisation d'un CDN pour fournir du contenu dynamique, pensez à le configurer en mode \"origin pull\") par exemple: http://origin.site.com" long_polling_interval: "Délai d'attente du serveur avant de répondre aux clients lorsqu'il n'y a pas de données à envoyer\n(réservé aux utilisateurs connectés)" @@ -732,8 +734,8 @@ fr: post_menu_hidden_items: "Les éléments du menu qui seront cachés par défaut jusqu’à extension du menu." share_links: "Choix des éléments qui doivent apparaître dans la fenêtre de partage, et leur ordre." track_external_right_clicks: "Suivi des clics sur les liens externes (ex: ouverture dans un nouvel onglet) désactivé par défaut car nécessite une ré-écriture de toutes les urls" - site_contact_username: "Un pseudo de responsable à partir de laquelle seront envoyés les message privés. Si laissé vide, le compte système sera utilisé." - send_welcome_message: "Envoyer à tous les nouveaux utilisateurs un message privé avec un guide de démarrage rapide." + site_contact_username: "Un pseudo de responsable valide pour envoyer tous les message automatiques. Si laissé vide, le compte système sera utilisé." + send_welcome_message: "Envoyer à tous les nouveaux utilisateurs un message de bienvenue avec un guide de démarrage rapide." suppress_reply_directly_below: "Ne pas afficher le panneau extensible des réponses d'un message quand la seule réponse est juste en dessous ce dernier." suppress_reply_directly_above: "Ne pas afficher 'en réponse à' sur un message quand la seule réponse est juste en dessus de ce dernier." suppress_reply_when_quoting: "Ne pas affiché le panneau \"En réponse à\" sur un message qui répond à une citation." @@ -769,7 +771,7 @@ fr: sso_secret: "Chaîne de caractères secrète utilisée pour authentifier les informations SSO par cryptographie, assurez-vous qu'elle est de 10 caractères ou plus" sso_overrides_email: "Surcharger les adresses de courriel locales avec les adresses de courriel externes d'un SSO (ATTENTION: Des écarts peuvent se produire due aux règles locales sur les adresses de courriel)" sso_overrides_username: "Surcharger les pseudos avec les pseudos du SSO (ATTENTION: Des écarts peuvent se produire due aux règles locales sur les pseudos)" - sso_overrides_name: "Surcharger les noms locaux avec les noms externes du SSO (ATTENTION: Des écarts peuvent se produire due aux règles locales sur les noms)" + sso_overrides_name: "Surcharger les noms locaux avec les noms du site fournissant l'authentification unique" sso_overrides_avatar: "Surcharge les avatars des utilisateurs avec les avatars d'un SSO. Si activé, il est fortement recommandé de désactiver allow_uploaded_avatars." enable_local_logins: "Activer l'authentification traditionnelle, avec pseudo local et mot de passe. (Note: Doit être activé pour que les invitations fonctionnent)" allow_new_registrations: "Autorise l'inscription des nouveaux utilisateurs. Décocher pour prévenir la création de nouveau compte." @@ -791,7 +793,7 @@ fr: maximum_backups: "Nombre maximum de sauvegardes à conserver sur le disque. Les anciennes sauvegardes seront automatiquement supprimées" backup_daily: "Créer automatiquement une sauvegarde du site chaque jour." enable_s3_backups: "Envoyer vos sauvegardes à S3 lorsqu'elles sont terminées. IMPORTANT: Vous devez avoir renseigné vos identifiants S3 dans les paramètres de fichiers." - s3_backup_bucket: "Bucket distant qui contiendra les sauvegardes. ATTENTION: Vérifié que c'est un bucket privée" + s3_backup_bucket: "Bucket distant qui contiendra les sauvegardes. ATTENTION: Vérifiez que c'est un bucket privé" active_user_rate_limit_secs: "A quelle fréquence mettre à jour le champ 'last_seen_at' (Dernière vu à), en secondes." verbose_localization: "Afficher des informations de debug sur l'interface à coté des textes traduits." previous_visit_timeout_hours: "Combien de temps pour qu'une visite soit considérer comme la visite 'précédente', en heures." @@ -804,7 +806,7 @@ fr: max_bookmarks_per_day: "Nombre maximum de signets par utilisateur et par jour." max_edits_per_day: "Nombre maximum de modifications par utilisateur chaque jour." max_topics_per_day: "Nombre maximum de sujet qu'utilisateur peut créer par jour." - max_private_messages_per_day: "Nombre maximum de message privé qu'utilisateur peut créer par jour." + max_private_messages_per_day: "Nombre maximum de messages que les utilisateurs peuvent créer chaque jour." max_invites_per_day: "Nombre maximum d'invitations qu'un utilisateur peut envoyer par jour." suggested_topics: "Nombre de sujets suggérés affichés en bas d'un sujet." limit_suggested_to_category: "Afficher uniquement les sujets de la catégorie courante dans les sujets similaires." @@ -854,7 +856,6 @@ fr: email_time_window_mins: "Attendre (n) minutes avant l'envoi des courriels de notification, afin de laisser une chance aux utilisateurs de modifier ou finaliser leurs messages." email_posts_context: "Combien de réponses précédentes doit-on inclure dans les courriels de notifications pour situer le contexte." flush_timings_secs: "A quelle fréquence les données de timing doivent être vider, en secondes." - max_word_length: "Le nombre maximum de mots, en caractères, dans un titre de sujet." title_min_entropy: "L'entropie minimale (caractères unique, les caractères en langues étrangères compte pour plus) requise pour le titre d'un sujet." body_min_entropy: "L'entropie minimale (caractères unique, les caractères en langues étrangères compte pour plus) requise pour le corps d'un message." title_fancy_entities: "Convertir les caractères ASCII commun en jolies entitées HTML dans les titres des sujets, comme SmartyPants http://daringfireball.net/projects/smartypants/" @@ -885,6 +886,7 @@ fr: newuser_spam_host_threshold: "Limite du nombre de liens vers un même host compris dans `newuser_spam_host_posts` qu'un nouvel utilisateur peut insérer dans un message avant d'être considérer comme un spam." white_listed_spam_host_domains: "Une liste des domaines exclus des hôtes testés comme spam. Les nouveaux utilisateurs ne seront jamais restreint dans la création de message contenant des liens vers ses domaines. " staff_like_weight: "Quel poids supplémentaire donner aux J'aime de l'équipe." + topic_view_duration_hours: "Considérer un IP/utilisateur qui retourne sur un sujet comme une nouvelle vue seulement au bout de N heures" levenshtein_distance_spammer_emails: "Lorsque des courriels correspondent à des spammer, la différence du nombre de caractère permettra toujours une correspondance floue." max_new_accounts_per_registration_ip: "S'il y a déjà (n) Niveau de confiance 0 comptes à partir de cette adresse IP ( et aucun n'est un membre du personnel ou au NC2 ou ultérieure), ne plus accepter de nouvelles inscriptions de cette IP." min_ban_entries_for_roll_up: "En cliquant sur le bouton Consolider, une liste d'au moins (N) adresses interdites sera remplacée par une plage de sous réseau." @@ -931,6 +933,7 @@ fr: max_daily_gravatar_crawls: "Nombre maximum de fois que Discourse vérifiera Gravatar pour des avatars personnalisés en une journée." public_user_custom_fields: "Une liste blanche des champs personnalisés pour un utilisateur qui peuvent être affichés publiquement." staff_user_custom_fields: "Une liste blanche des champs personnalisés pour un utilisateur qui peuvent être vus par l'équipe." + enable_user_directory: "Fournir un répertoire des utilisateurs pour la navigation" allow_profile_backgrounds: "Autoriser les utilisateurs à envoyer des arrières-plans de profil." sequential_replies_threshold: "Nombre de messages qu'un utilisateur doit poster d'affilé dans un sujet avant d'être rappelé à l'ordre pour multiple réponses." enable_mobile_theme: "Les appareils mobiles utilisent un thème adapté aux mobiles, avec la possibilité de passer à la totalité du site. Désactivez cette option si vous voulez utiliser une feuille de style personnalisée qui répond à tous les types de client." @@ -986,8 +989,9 @@ fr: edited: "%{display_username} a modifié votre message dans %{link}" posted: "%{display_username} a répondu à %{link}" moved_post: "%{display_username} a déplacé votre message vers %{link}" - private_message: "%{display_username} vous a envoyé un message privé: %{link}" - invited_to_private_message: "%{display_username} vous a invité dans une conversation privée: %{link}" + private_message: "%{display_username} vous a envoyé un message : %{link}" + invited_to_private_message: "%{display_username} vous a invité dans une conversation : %{link}" + invited_to_topic: "%{display_username} vous a invité dans une discussion: %{link}" invitee_accepted: "%{display_username} a accepté votre invitation" linked: "%{display_username} a mentionné l'un de vos messages : %{link}" granted_badge: "Vous avez gagné %{link}" @@ -1238,18 +1242,12 @@ fr: Cependant, si le message est signalé par la communauté une seconde fois, il restera marqué jusqu’à l'intervention d'un modérateur – et ils pourront prendre d'autres mesures y compris l'éventuelle suspension de votre compte. Pour plus d'informations, merci de vous en référer aux [règles de la communauté](%{base_url}/guidelines). - usage_tips: - text_body_template: "Ce message privé contient quelques astuces pour vous aider à démarrer rapidement.\n\n## Continuez de descendre\n\nIl n'y a pas de bouton Page Suivante ni de numéro de page – pour en lire plus, **il vous suffit de descendre !**\n\nLorsque de nouvelles réponses arrivent, elles apparaissent automatiquement. \n\n## Où suis-je ?\n\n- Pour la recherche, votre page d'utilisateur, ou le menu, utiliser les **boutons icônes en haut à droite**.\n\n- Dans la liste des sujets, le titre vous emmènera toujours vers le prochain message non lu. Utiliser les colonnes Activité ou Messages pour allez au premier ou au dernier message. \n\n- Lorsque vous lisez un sujet, retournez en haut de celui ↑ en cliquant sur le titre. Cliquez sur la barre de progression en bas à droite pour avoir une navigation complète, ou utilisez les touches Home et Fin. \n\n \n\n## Comment je réponds ?\n\n- Pour répondre au sujet dans sa globalité, utilisez le bouton \"Répondre\" tout en bas de la page.\n\n- Pour répondre à un message spécifique, utilisez le bouton \"Répondre\" sur le message.\n\n - Si vous voulez continuer le sujet dans une section différente, mais garder le lien entre votre sujet et le message qui vous l'a inspiré, utilisez la fonction Répondre en créant un nouveau sujet à droite de chaque message.\n\nPour citer quelqu'un dans votre message, sélectionnez le texte que vous voulez citer et appuyez sur un des boutons Répondre.\n\n\n\nPour mentionner le pseudo d'un utilisateur, commencez à taper `@` et une liste d'auto-complétion apparaîtra.\n\n\n\nConcernant les [icones Emoji](http://www.emoji.codes/), commencez par écrire `:` ou le traditionnel smiley `:)` :smile: \n\n## Que puis-je faire d'autre ?\n\nÀ la fin de chaque message il y a un ensemble de boutons pour les différentes actions possibles.\n\n\n\nPour faire savoir à quelqu'un que vous avez apprécié son message, cliquez sur le bouton *j'aime** en bas du message. Si vous voyez un problème avec un message, n'hésitez pas à cliquer sur le bouton **signaler**\ - \ pour avertir en privé l'auteur ou les modérateurs du contenu de ce message.\n\nVous pouvez aussi **partager** un liens vers un message ou l'ajouter à vos **signets** pour le retrouver sur votre page d'utilisateur. \n\n## Qui me parle ?\n\nWhen someone replies to your post, quotes your post, or mentions your `@username`, a number will immediately appear at the top right of the page. Use it access your **notifications**.\n\nQuand quelqu'un répond à votre message, vous cite, ou mentionne votre `@pseudo`, un nombre apparaitra immédiatement en haut à droite de la page. Utilisez-le pour consulter vos **notifications**.\n\n\n\nNe soyez pas inquiêt de manquer des notifications – \nLes réponses directes (et les messages privés) vous seront envoyés par courriel si vous n'êtes pas présent sur le site lorsqu'ils sont envoyés. \n\n## Quand est-ce qu'une conversation est nouvelle ?\n\nBy default all conversations less than two days old are considered new, and any conversation you've participated in (replied to, created, or read for an extended period) will automatically be tracked.\n\nPar défaut, toutes les conversations de moins de deux jours sont considérées comme nouvelles, et chaque sujets auxquels vous avez participé\ - \ (répondus, créés ou lu pendant un long moment) seront automatiquements suivis. \n\nYou will see the blue new and number indicators next to these topics:\nVous verrez le badge bleu de nouveauté et le nombre de nouveaux messages au côté de ces discussions:\n\n\n\n\nYou can change the individual notification state of a topic via the control at the bottom of the topic (this can also be set per category). To change how you track topics, or the definition of new, see [your user preferences](/my/preferences).\n\nVous pouvez modifier l'état du suivi des notifications d'une discussion en utilisant les boutons en bas de la discussion (vous pouvez également le modiifer au niveau des catégories).\nPour changer la façon dont vous suivez les discussions, ou pour définir de nouveaux suivis, consultez [vos préférences utilisateurs](%{base_url}/my/preferences). \n\n## Quelles sont les choses que je ne peux pas faire ?\n\nLes nouveaux utilisateurs sont limités pour des raisons de sécurité. Plus vous participerez, plus vous gagnerez la confiance de la communauté et les restrictions disparaîtrons. A plus haut [niveau de confiance](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924), vous gagnerez de nouvelles compétences\ - \ pour nous aider à gérer la communauté. \n" welcome_user: subject_template: "Bienvenue sur %{site_name} !" - text_body_template: "Merci d'avoir rejoint %{site_name}, et bienvenue ! \n\n%{new_user_tips}\n\nNous croyons au [comportement communautaire civilisé](%{base_url}/guidelines) en tous temps. \n\nAmusez-vous bien ! \n\n(Si en tant que nouvel utilisateur vous avez besoin de communiquer de façon privée avec un [responsable](%{base_url}/about), répondez simplement à ce message privé.)\n" + text_body_template: "Merci d'avoir rejoint %{site_name} et bienvenue ! \n\n%{new_user_tips}\n\nNous croyons au [comportement communautaire civilisé](%{base_url}/guidelines) en tous temps. \n\nAmusez-vous bien ! \n\n(Si, en tant que nouvel utilisateur, vous avez besoin de communiquer avec un [responsable](%{base_url}/about), répondez simplement à ce message.)\n" welcome_invite: subject_template: "Bienvenue sur %{site_name} !" - text_body_template: "Merci d'avoir accepté votre invitation sur %{site_name}, et bienvenue !\n\nNous vous avons crée un pseudo : **%{username}**, mais vous pouvez le changer quand vous voulez en allant sur [votre profil][prefs].\n\nPour vous reconnecter :\n\n1. Utiliser **toujours la même adresse de courriel que celle de l'invitation** que vous avez reçue. Autrement, nous ne pourrons pas vous reconnaître.\n\n2. Créer un mot de passe unique sur votre [page de profil utilisateur][prefs], et vous connecter avec. \n\n%{new_user_tips}\n\nNous croyons au [comportement communautaire civilisé](%{base_url}/guidelines) en tous temps.\n\nAmusez-vous bien !\n\n(Si en tant que nouvel utilisateur vous avez besoin de communiquer de façon privée avec un [responsable](%{base_url}/about), répondez simplement à ce message privé).\n\n[prefs] : %{user_preferences_url}\n" + text_body_template: "Merci d'avoir accepté votre invitation sur %{site_name} et bienvenue !\n\nNous avons créé un nouveau compte : **%{username}**, et vous y êtes connecté. Vous pouvez changer votre pseudo en allant sur [votre profil][prefs].\n\nPour vous reconnecter :\n\n1. Toujours **utiliser la même adresse de courriel que celle de l'invitation** que vous avez reçue. Autrement, nous ne pourrons pas vous reconnaître.\n\n2. Créer un mot de passe unique sur votre [sur votre profil][prefs] et connectez-vous avec. \n\n%{new_user_tips}\n\nNous croyons au [comportement communautaire civilisé](%{base_url}/guidelines) en tous temps.\n\nAmusez-vous bien !\n\n(Si, en tant que nouvel utilisateur, vous avez besoin de communiquer avec un [responsable](%{base_url}/about), répondez simplement à ce message).\n\n[prefs] : %{user_preferences_url}\n" backup_succeeded: subject_template: "Sauvegarde terminée avec succès" text_body_template: "La sauvegarde a été un succès.\nVisitez la section [Administration > sauvegardes](/admin/backups) pour télécharger votre dernière sauvegarde." @@ -1301,19 +1299,16 @@ fr: subject_template: "Échec de l'exportation des données " text_body_template: "Nous sommes désolés, l'exportation de vos données a échoué. Veuillez consultez les logs ou contactez un modérateur." email_reject_trust_level: - subject_template: "Problème de courriel - Niveau de confiance insuffisant " text_body_template: | Nous sommes désolé, mais l'envoi de votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. Votre compte n'a pas le niveau de confiance requis pour créer un nouveau sujet via cette adresse de courriel. Si vous pouvez que c'est une erreur, contacter un membre de l'équipe du site. email_reject_no_account: - subject_template: "Problème de courriel - Compte utilisateur inconnu" text_body_template: | Malheureusement votre courriel à %{destination} (titled %{former_title}) a échoué. Aucun compte d'utilisateur avec cette adresse existe. Essayez de l'envoyer depuis une autre adresse, ou contactez un membre de l'équipe. email_reject_empty: - subject_template: "Problème de courriel - Sans contenu" text_body_template: | Malheureusement votre courriel à %{destination} (titled %{former_title}) a échoué. @@ -1321,19 +1316,16 @@ fr: Si vous avez reçu ce message et que vous _pensez_ avoir envoyé du contenu, réenvoyez-le au format HTML (et non pas seulement au format text brut) . email_reject_parsing: - subject_template: "Problème de courriel - Contenu non reconnu." text_body_template: | Nous sommes désolés, mais l'envoi de votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. Nous n'avons pas trouvé votre réponse dans ce courriel. **Assurez-vous d'avoir écrit votre réponse tout en haut du courriel** -- il nous est impossible de traiter les réponses imbriquées. email_reject_post_error: - subject_template: "Problème de courriel - Erreur d'envoi d'un message" text_body_template: | Nous sommes désolé, mais l'envoi de votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. Cela peut-être à cause de: format trop complexe, message trop long ou trop court. Veuillez réessayer, ou rédigé votre message directement sur le site si le problème persiste. email_reject_post_error_specified: - subject_template: "Problème de courriel - Erreur d'envoi d'un message" text_body_template: | Nous sommes désolé, mais l'envoi de votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. @@ -1343,37 +1335,31 @@ fr: Si vous pouvez corriger les erreurs, veuillez réessayer. email_reject_reply_key: - subject_template: "Problème de courriel -- Mauvaise clé de réponse" text_body_template: | Nous sommes désolé, mais l'envoi de votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. La clé de réponse du fournisseur est invalide ou inconnu, et nous ne pouvons pas savoir à quel sujet s’adresse cette réponse. Contactez un membre de l'équipe du site. email_reject_destination: - subject_template: "Problème de courriel - Adresse de destinataire inconnue" text_body_template: | Nous sommes désolé, mais l'envoi de votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. Aucune adresse de destination n'est reconnue. Veuillez vérifier que l'adresse du site est bien renseignée dans le champs To: (et non dans les champs C:: ou Bcc:), et que vous envoyez bien à l'adresse de courriel fournie par l'équipe. email_reject_topic_not_found: - subject_template: "Erreur de courriel -- Le sujet est introuvable" text_body_template: | Nous sommes désolé, mais votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. Le sujet est introuvable et a peut-être été supprimé. Si vous considérez que c'est une erreur, contacter un responsable. email_reject_topic_closed: - subject_template: "Erreur de courriel -- Le sujet est fermé" text_body_template: | Nous sommes désolé, mais votre courriel à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. Le sujet est fermé. Si vous considérez que c'est une erreur, contacter un responsable. email_reject_auto_generated: - subject_template: "Problème de courriel - Réponse automatique" text_body_template: | Nous sommes désolé, mais votre email à destination de {destination} (intitulé %{former_title}) n'a pas fonctionné. Votre réponse était générée automatiquement, ce que nous n'acceptons pas. Si vous considérez qu'il s'agit d'une erreur, prenez contact avec un responsable. email_error_notification: - subject_template: "Problème de courriel - Erreur d'authentification POP3" text_body_template: | Il y a eu un erreur d'authentification lors de la récupération des courriels depuis le serveur POP. @@ -1447,12 +1433,7 @@ fr: visit_link_to_respond: "Pour répondre, visitez %{base_url}%{url} avec votre navigateur." posted_by: "Ecrit par %{username} le %{post_date}" user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} vous a invité(e) à une conversation privée '%{topic_title}'" - text_body_template: |+ - %{username} vous a invité(e) à une conversation privée '%{topic_title}' sur %{site_name}: - - Merci de visiter ce lien pour voir le sujet: %{base_url}%{url} - + subject_template: "[%{site_name}] %{username} vous a invité dans la conversation '%{topic_title}'" user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1500,7 +1481,7 @@ fr: %{respond_instructions} digest: why: "Voici un bref résumé de ce qu'il s'est passé sur %{site_link} depuis votre dernière visite le %{last_seen_at}" - subject_template: "[%{site_name}] Résumé du %{date}" + subject_template: "[%{site_name}] Résumé" new_activity: "Nouvelles activités sur vos sujets et messages :" top_topics: "Messages populaires" other_new_topics: "Sujets populaires" @@ -1547,7 +1528,7 @@ fr: Cliquez sur le lien suivant pour confirmer et activer votre nouveau compte : %{base_url}/users/activate-account/%{email_token} - Si le lien ci-dessus n'est pas cliquable, essayez de le copier et coller dans la barre d'adresse de votre navigateur web. + Si le lien ci-dessus n'est pas cliquable, essayez de le copier-coller dans la barre d'adresse de votre navigateur web. %{new_user_tips} @@ -1555,7 +1536,7 @@ fr: Amusez-vous bien ! - (Si vous voulez communiquer en privée avec [staff members](%{base_url}/about) en tant que nouveau membre, répondez à ce message privé.) + (Si, en tant que nouvel utilisateur, vous avez besoin de communiquer avec un [responsable](%{base_url}/about), répondez simplement à ce message.) signup: subject_template: "[%{site_name}] Activer votre nouveau compte" text_body_template: | @@ -1597,7 +1578,7 @@ fr: spam_hosts: "Cet utilisateur a essayé de créer plusieurs messages avec des liens vers le même domaine. Voir le paramétrage du site newuser_spam_host_threshold." email_log: no_user: "Impossible de trouver l'utilisateur avec l'id %{user_id}" - suspended_not_pm: "L'utilisateur est suspendu, pas de message privé" + suspended_not_pm: "L'utilisateur est suspendu, pas de message" seen_recently: "L'utilisateur a été vu récemment" post_not_found: "Impossible de trouver le message avec l'id %{post_id}" notification_already_read: "La notification de ce courriel a déjà été lue" @@ -1930,5 +1911,5 @@ fr: badges: long_descriptions: first_flag: | - Les signalements sont essentiels pour la santé de la communauté. Si vous remarquez des messages qui requièrent l'attention d'un modérateur, s'il vous plaît - n'hésitez pas à les signaler. A partir du niveau de confiance 1, vous pouvez également utiliser le dialogue de signalement pour envoyer des messages privés aux autre utilisateurs. + Les signalements sont essentiels à la santé de la communauté. Si vous remarquez des messages qui requièrent l'attention d'un modérateur, s'il vous plaît, + n'hésitez pas à les signaler. À partir du niveau de confiance 1, vous pouvez également utiliser le formulaire de signalement pour envoyer des messages aux autres utilisateurs. diff --git a/config/locales/server.he.yml b/config/locales/server.he.yml index 7d8a4f9bf2..234e55ef6b 100644 --- a/config/locales/server.he.yml +++ b/config/locales/server.he.yml @@ -20,6 +20,7 @@ he: is_reserved: "שמור" purge_reason: "נמחק באופן אוטומטי כחשבון נטוש ולא פעיל" disable_remote_images_download_reason: "הורדת תמונות מרחוק נחסמה בשל היעדר מספיק שטח אכסון פנוי." + anonymous: "אנונימי" errors: format: '%{attribute} %{message}' messages: @@ -112,6 +113,7 @@ he: other: "סליחה, משתמשים חדשים יכולים להוסיף רק %{count} קישורים לכל היותר להודעה." spamming_host: "סליחה אך אינך יכול להוסיף קישור לאתר זה." user_is_suspended: "משתמשים מושעים אינפ מורשים לפרסם" + topic_not_found: "משהו השתבש אולי נושא זה נסגר או נמחק בזמן שקראת אותו?" just_posted_that: "דומה מידי למה שפורסם לאחרונה" has_already_been_used: "כבר בשימוש" invalid_characters: "מכיל תווים לא חוקיים" @@ -119,6 +121,7 @@ he: next_page: "עמוד הבא ←" prev_page: "→ עמוד קודם" page_num: "עמוד %{num}" + home_title: "בית" topics_in_category: "נושאים בקטגוריה '%{category}'" rss_posts_in_topic: "תזרים RSS '%{topic}'" rss_topics_in_category: "תזרים RSS של נושאים בקטגוריה '%{category}'" @@ -126,7 +129,7 @@ he: num_posts: "הודעות:" num_participants: "משתתפים:" read_full_topic: "קרא נושא מלא" - private_message_abbrev: "ה\"פ" + private_message_abbrev: "הודעה" rss_description: latest: "נושאים מדוברים" hot: "נושאים חמים" @@ -168,6 +171,7 @@ he: האם שקלת **[לבקר בעמוד הפרופיל שלך](%{profile_path})** ולהעלות תמונה אישית שמייצגת אותך? יותר קל לעקוב אחרי דיוני הקהילה ולמצוא אנשים מעניינים בשיחות כשלכולם יש אוואטר ייחודי! + sequential_replies: "### שקלו להשיב לכמה פרסומים בבת אחת\n\nבמקום להשיב בתגובות עוקבות לנושא, שקלו בבקשה לפרסם תגובה אחת שכוללת ציטוטים מהפרסומים הקודמים או הפניות ל@שם_משתמש/ת.\n\nתוכל/י לערוך תגובה קודמת שלך כדי להוסיף ציטוט על ידי הדגשת הטקסט ובחירה בכפתור ציטוט התגובה שיופיע.\n\nקל יותר לכולם לקרוא נושאים עם מספר נמוך יחסית תגובות מעמיקות מאשר הרבה תגובות קצרות ונפרדות.\n \n" dominating_topic: | ### אפשר לאחרים להצטרף לשיחה @@ -397,9 +401,9 @@ he: description: 'פרסום זה מכיל תוכן שאדם סביר היה רואה כפוגעני, מתעלל או הפרה של כללי הקהילה .' long_form: 'דוגלל כלא ראוי' notify_user: - title: 'מסר פרטי @{{username}}' + title: 'הודעה ל-@{{username}}' description: 'פרסום זה מכיל משהו שארצה לשוחח עליו עם האדם הזה באופן ישיר ופרטי. אין צורך בסימון.' - long_form: 'הועבר מסר פרטי למשתמש/ת' + long_form: 'הודעה נשלחה למשתמש/ת' email_title: 'הפרסום שלךב"%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -436,7 +440,7 @@ he: email_title: 'הנושא "%{title}" דורש תשומת לב של מנהל' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    ההודעה שלך סומנה על ידי הקהילה. אנא בדוק/בדקי את ההודעת הפרטיות שלך

    ' + you_must_edit: '

    הפרסום שלך סומן על ידי הקהילה. אנא בדוק/בדקי את ההודעות שלך.

    ' user_must_edit: '

    פרסום זה סומן על ידי הקהילה וכרגע מוסתר באופן זמני.

    ' archetypes: regular: @@ -501,23 +505,23 @@ he: user_to_user_private_messages: title: "משתמש למשתמש" xaxis: "יום" - yaxis: "מספר ההודעות הפרטיות" + yaxis: "מספר ההודעות" system_private_messages: title: "מערכת" xaxis: "יום" - yaxis: "מספר ההודעות הפרטיות" + yaxis: "מספר ההודעות" moderator_warning_private_messages: title: "אזהרות מנהל" xaxis: "יום" - yaxis: "מספר הודעות פרטיות" + yaxis: "מספר ההודעות" notify_moderators_private_messages: title: "התראה למנחים" xaxis: "יום" - yaxis: "מספר הודעות פרטיות" + yaxis: "מספר ההודעות" notify_user_private_messages: title: "התרע למשתמש" xaxis: "יום" - yaxis: "מספר הודעות פרטיות" + yaxis: "מספר ההודעות" top_referrers: title: "מיטב המפנים" xaxis: "משתמש" @@ -581,6 +585,7 @@ he: sidekiq_warning: 'Sidekiq is not running. Many tasks, like sending emails, are executed asynchronously by sidekiq. Please ensure at least one sidekiq process is running. Learn about Sidekiq here.' queue_size_warning: 'The number of queued jobs is %{queue_size}, which is high. This could indicate a problem with the Sidekiq process(es), or you may need to add more Sidekiq workers.' memory_warning: 'Your server is running with less than 1 GB of total memory. At least 1 GB of memory is recommended.' + enable_google_logins_warning: "זהירות! התמיכה במתודת הזיהוי הנוכחית של גוגל מסתיימת ב-20 לאפריל 2015!\nאנא החליפו למתודה החדשה עכשיו!" both_googles_warning: "שתי האפשרויות, enable_google_logins וגם enable_google_oauth2_logins מסומנים הגדרות האתר. בטלו את enable_google_logins." google_oauth2_config_warning: 'השרת מכוון לאפשר הרשמות והתחברות עם OAuth2 של גוגל (enable_google_oauth2_logins), אבל ערכי זהות הלקוח (client id) וסיסאת הלקוח (client secret) אינם מוגדרים. לכו ל הגדרות האתר ועדכנו את הגדרות האתר. ראו מדריך זה כדי ללמוד עוד.' facebook_config_warning: 'The server is configured to allow signup and log in with Facebook (enable_facebook_logins), but the app id and app secret values are not set. Go to the Site Settings and update the settings. See this guide to learn more.' @@ -596,8 +601,9 @@ he: title_nag: "הזינו את השם של האתר שלך. עדכנו את הכותרת בהגדרות האתר." site_description_missing: "הזינו משפט אחד לתיאור האתר שלך אשר יופיע בתוצאות מנועי חיפוש. עדכנו את תיאור האתר בהגדרות האתר." consumer_email_warning: "Your site is configured to use Gmail (or another consumer email service) to send email. Gmail limits how many emails you can send. Consider using an email service provider like mandrill.com to ensure email deliverability." - site_contact_username_warning: "הזינו שם חשבון של חבר/ת צוות ידידותיים ממנו יישלחו אוטומטית הודעות פרטיות. עדכנו את שם המשתמש של הדמות ליצירת קשר ב הגדרות אתר." + site_contact_username_warning: "הזינו שם חשבון ידידותי של אי/אשת צות ממנו ישלחו הודעות אוטומטיות חשובות. עדכנו את site_contact_username בהגדרות האתר." notification_email_warning: "מיילים ליידוע אינם נשלחים מכתובת תקינה בדומיין שלכם; משלוח דוא\"ל יהיה בעייתי ולא אמין. אנא כוונו את כתובת המייל למשלוח התראות לכתובת מקומית תקינה בהגדרות האתר." + s3_deprecation_warning: "אזהרה! Amazon S3 יהיה בקרוב לא מומלץ לשימוש לאכסון צרופות/image. אנא עקבו אחר ההנחיות להעברה לאכסון מקומי." content_types: education_new_reply: title: "New User Education: First Replies" @@ -610,10 +616,10 @@ he: description: "הדרכה ומידע חשוב למשתמשים חדשים." welcome_user: title: "Welcome: New User" - description: "A private message automatically sent to all new users when they sign up." + description: "הודעה שנשלחת באופן אוטומטי לכל המשתמשים החדשים כאשר הם נרשמים." welcome_invite: title: "Welcome: Invited User" - description: "A private message automatically sent to all new invited users when they accept the invitation from another user to participate." + description: "הודעה שנשלחת באופן אוטומטי לכל המשתמשים המוזמנים כאשר הם מקבלים את ההזמנה ממשתמש אחר." login_required_welcome_message: title: "Login Required: Welcome Message" description: "Welcome message that is displayed to logged out users when the 'login required' setting is enabled." @@ -635,11 +641,12 @@ he: default_locale: "The default language of this Discourse instance (ISO 639-1 Code)" allow_user_locale: "Allow users to choose their own language interface preference" min_post_length: "מספר התווים המותר כאורך מינימלי לפרסום הודעה" - min_private_message_post_length: "מספר התווים המותרים כאורך מינימלי של הודעות מסר פרטיות" + min_first_post_length: "אורך מינימלי מותר לפרסום ראשון (בגוף הפרסום) בתווים " + min_private_message_post_length: "אורך הפרסום המינמלי המותר בתווים להודעות" max_post_length: "מספר התווים המקסימלי כאורך הודעה." min_topic_title_length: "מספר התווים המינימלי הנדרש לכותרת נושא" max_topic_title_length: "מספר התווים המקסימלי המותר לכותרת נושא" - min_private_message_title_length: "מספר התווים המינימלי המותר כאורך לכותרת למסר פרטי." + min_private_message_title_length: "אורך הכותרת המנימילי המותר להודעה בתווים" min_search_term_length: "מספר התווים המינמלי התקין כאורך מונח לחיפוש" allow_uncategorized_topics: "Allow topics to be created without a category." uncategorized_description: "תיאור הקבוצה \"ללא קטגוריה\". השאירו ריק אם אין צורך בתיאור." @@ -649,6 +656,7 @@ he: title: "שם האתר הזה, כפי שהוא משתמש בתגית הכותרת." site_description: "תארו את האתר הזה במשפט אחד, כפי שהוא מופיע במטא-תגית התיאור." contact_email: "כתובת דוא\"ל של איש/אשת קשר האחראי לאתר זה. משמש להתראות חשובות, כמו סימונים שלא טופלו, כמו גם ליצירת קשר חירום בעמוד האודות." + contact_url: "כתובת URL ליצירת קשר לעמוד זה. משמשת בטופס ה-/אודות לעניינים דחופים." queue_jobs: "DEVELOPER ONLY! WARNING! By default, queue jobs in sidekiq. If disabled, your site will be broken." crawl_images: "אחזור תמונות מכתובת URL רחוקה כדי להכניס את מימדי האורך והרוחב הנכונים." download_remote_images_to_local: "המרת תמונות מרחוק לתמונות מקומיות באמצעות הורדות; למניעת שגיאות של תמונות חסרות" @@ -668,8 +676,11 @@ he: post_excerpt_maxlength: "אורך מקסימלי של פרסום קטע / סיכום." post_onebox_maxlength: "מספר תוים מקסימאלי מותר כאורך פרסום Discourse אחד בקופסא (oneboxed Discourse post)." onebox_domains_whitelist: "רשימת מתחמים (דומיינים) מותרים לאריזה (oneboxing); על דומיינים אלה לתמוך ב-OpenGraph או ב-oEmbed. בדקו אותם ב-http://iframely.com/debug." + logo_url: "תמונת הלוגו שתופיע בצד שמאל למעלה באתר שלך; אם ישאר ריק, תוצג כותרת האתר הטקסטואלית." digest_logo_url: "הסמליל (לוגו) האלטרנטיבי שיופיע בראש מייל התקציר של האתר שלך. אם תשאירו משבצת זו ריק יופיע שם 'logo_url' במקום. לדוגמא: http://example.com/logo.png" + logo_small_url: "תמונת הלוגו הקטנה שתופיע בצד שמאל למעלה של האתר שלך, ומוצגת בגלילה למטה. אם ישאר ריק, תוצג גלופה בצורה של בית." favicon_url: "A favicon for your site, see http://en.wikipedia.org/wiki/Favicon" + mobile_logo_url: "מיקומה הקבוע של תמונת הלוגו בצד השמאלי העליון של האתר הנייד שלך. אם יושאר ריק 'logo_url' ישמש כאן." apple_touch_icon_url: "Icon used for Apple touch devices. Recommended size is 144px by 144px." notification_email: "הטופס: נעשה שימוש בכתובת הדוא\"ל כאשר שולחים את כל הודעות המערכת הנדרשות. כדי שהודעות הדוא\"ל יגיעו, המתחם (domain) המצויין כאן חייב לכלול SPF, DKIM ורשומות reverse PTR מוגדרים כהלכה." email_custom_headers: "A pipe-delimited list of custom email headers" @@ -680,7 +691,7 @@ he: summary_likes_required: "מינימום הלייקים לנושא לפני שהאפשרות \"סיכום נושא זה\" תתאפשר" summary_percent_filter: "כאשר משתמש/ת מקליקים על \"סיכום נושא זה\", הציגו את % o הפרסומים הראשונים" summary_max_results: "מספר הפרסומים שיוחזרו באמצעות \"סיכום נושא זה\"" - enable_private_messages: "אפשרו למשתמשים בעלי רמת אמון 1 ליצור מסרים פרטיים ולהשיב למסרים פרטיים" + enable_private_messages: "אפשרו למשתמשים בעלי רמת_אמון 1 ליצור הודעות ולהגיב להודעות" enable_long_polling: "Message bus used for notification can use long polling" long_polling_base_url: "בסיס ה-URL שנמצא בשימוש עבור long polling (כאשר CDN מחזיר תוכן דינמי, זכרו להגדיר את ערך זה ל-Origin pull, דוגמת http://origin.site.com)" long_polling_interval: "כמות הזמן שהשרת צריך לחכות לפני שעונה ללקוחות, כאשר אין מידע לשליחה (משתמשים רשומים מחוברים למערכת בלבד)" @@ -708,10 +719,12 @@ he: enable_noscript_support: "Enable standard webcrawler search engine support via the noscript tag" allow_moderators_to_create_categories: "Allow moderators to create new categories" cors_origins: "מקורות שאפשר לבצע להם בקשות קרוס-דומיין (Cross origin requests). כל מקור צריך לכלול את התחילית http:// או https:// . משתנה הסביבה DISCOURCE_ENABLE_CORS חייב להיות true כדי לאפשר CORS." + top_menu: "החליטו אילו פריטים יופיעו בניווט עמוד הבית ובאיזה סדר לדוגמא |אחרונים|חדשים|קטגוריות|מובילים|נקראו|פורסמו|סימניות" post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply" post_menu_hidden_items: "פריטי התפריט להסתרה כברירת מחדל בתפריט הפרסום, אלא אם כן נלחץ לחצן ההרחבה." share_links: "החלט אילו פריטים יופיעו בתיבת השיתוף, ובאיזה סדר." track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs" + site_contact_username: "שם משתמש/ת תקין ממנו ישלחו הודעות פרטיות. אם ישאר ריק חשבון ברירת המחדל של המערכת ישמש לכך." send_welcome_message: "שלחו כל המשתמשים החדשים הודעת \"ברוכים הבאים\" פרטים עם הדרכה ראשונית כיצד להתחיל." suppress_reply_directly_below: "אל תציגו את סך התגובות המצטבר בפרסום כאשר ישנה תגובה ישירה אחת לפרסום זה." suppress_reply_directly_above: "אל תציגו את את אפשרות ההרחבה \"בתגובה ל..\" לפרסום כאשר יש רק תגובה אחת ישירה מעל לפרסום זה." @@ -729,6 +742,7 @@ he: email_domains_blacklist: "רשימה של מתחמי דוא\"ל (email domains) בהם למשתמשים אסור לרשום חשבונות. לדוגמא: mailinator.com trashmail.net" email_domains_whitelist: "רשימת של מתחמי דוא\"ל (email domains) שמשתמשים חייבים(!) כדי להירשם ולפתוח חשבון. אזהרה: משתמשים עם כתובות דוא\"ל אחרות מאלו המפורטות כאן לא יאושרו באתר!" forgot_password_strict: "אל תעדכנו משתמשים על קיום חשבון כאשר הם משתמשים ב\"שכחתי סיסמא\"." + log_out_strict: "בהתנתקות, נתקו את כל ההפעלות של המשתמ/ת בכל המכשירים" version_checks: "שלחו פינג להאב של Discourse לעדכוני גרסה וכדי להציג מסרים אודות גרסאות בלוח התצוגה של האדמין" new_version_emails: "שלחו דוא\"ל לכתובת של contact_email כשגרסא חדשה של Discourse זמינה." port: "DEVELOPER ONLY! WARNING! Use this HTTP port rather than the default of port 80. Leave blank for default of 80." @@ -741,10 +755,12 @@ he: max_username_length: "מספר תווים מקסימלי המותר לשם משתמש/ת. אזהרה: משתמשים קיימים עם שמות הארוכים מערך זה לא יוכלו להתחבר לאתר." min_password_length: "Minimum password length." block_common_passwords: "אל תאפשרו סיסמאות מתוך 10,000 הסיסמאות הנפוצות ביותר." + enable_sso: "אפשרו התחברות יחידה באמצעות אתר חיצוני (אזהרה: עלול למנוע מכל אחד/אחת להחבר, ובכלל זה את/ה!, אם לא תכוונו זזאת נכון בעת ההפעלה! כמו כן, אפשרות זו מבטלת הזמנות)" + enable_sso_provider: "הטמיעו את פרוטוקול הספק Discourse SSO בנקודת הקצה /session/sso_provider, דורש כיוון של sso_secret" sso_url: "URL of single sign on endpoint" + sso_secret: "מחרוזת סודית המשמשית לאמת באופן קרפיטוגרפי מידע SSO, וודאו שהיא באורך 10 תווים ומעלה" sso_overrides_email: "Overrides local email with external site email from SSO payload (WARNING: discrepancies can occur due to normalization of local emails)" sso_overrides_username: "Overrides local username with external site username from SSO payload (WARNING: discrepancies can occur due to differences in username length/requirements)" - sso_overrides_name: "Overrides local name with external site name from SSO payload (WARNING: discrepancies can occur due to normalization of local names)" sso_overrides_avatar: "מעקף אווטאר של משתמש בעזרת אווטר אתרחיצוני מ-SSO Payload. אם אפשרות זו מופעלת, מומלץ מאוד לבטל את האפשרות להעלאת אווטר." enable_local_logins: "אפשרו שם חשבונות מבוססים על שן משתמש מקומי וסיסמאת התחברות. (שימו לב: אפשרות זו חייבת להיות מותרת כדי שהזמנות להצטרפות יפעלו)" allow_new_registrations: "אפשרו הרשמות משתמשים חדשים. בטלו סימון זה כדי למנוע יצירת חשבונות חדשים." @@ -779,7 +795,8 @@ he: max_bookmarks_per_day: "מספר מקסימלי של סימניות למשתמש/ת ביום." max_edits_per_day: "מספר עריכות מקסימלי מותר למשתמש ליום." max_topics_per_day: "מספר מקסימלי של נושאים שמשתמש/ת יכולים ליצור ביום." - max_private_messages_per_day: "מספר מקסימלי של מסרים פרטיים שמשתמש/ת יכולים ליצור ביום." + max_private_messages_per_day: "מספר מקסימלי של הודעות שמשתמש/ת יכולים ליצור ביום." + max_invites_per_day: "מספר מקסימלי של הזמנות שיכולים משתמש/ת לשלוח ביום." suggested_topics: "מספר הנושאים המוצעים שיופיעו בתחתית הנושא המוצג." limit_suggested_to_category: "הצגת רק נושאים מהקטגוריה הנוכחית ברשימת הנושאים המומלצים." clean_up_uploads: "הסירו העלאות יתומות וללא הפניה כדי למנוע אירוח בלתי חוקי של חומר. אזהרה: אתם עלולי לרצות לגבות את תיקיית ה-/uploads שלכם לפנו שתאפשרו הגדרה זו." @@ -828,13 +845,14 @@ he: email_time_window_mins: "המתינו (n) דקות לפני משלוח כל התראת מייל, כדי לאפשר למשתמשים הזדמנות לערוך ולוודא באופן סופי את הפרסומים שלהם." email_posts_context: "כמה תגובות קודמות יש לכלול למתקן הקשר בהודעות דוא\"ל עם התראות." flush_timings_secs: "באיזו תדירות אנחנו מזרימים מידע לשרת, בשניות." - max_word_length: "האורך המקסימלי המותר למילה בכותרת נושא, בתווים. " + title_max_word_length: "האורך המקסימלי המותר למילה בכותרת נושא, בתווים. " title_min_entropy: "האנטרופיה (תווים ייחודים שאינם בשפת הכתיבה) המינימלית הנדרשת בכותרת נושא." body_min_entropy: "האנטרופיה (תוים ייחודיים שאינם בשפת הכתיבה) המינימלית הנדרשת בגוף המסמך." 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: "האורך המינימלי של כותרת לפני שהיא נבדקת עבור איתור נושאים דומים." min_body_similar_length: "האורך המינימלי של גוף הפרסום לפני שהוא ייבדק לאיתור נושאים דומים." category_colors: "רשימה של ערכי צבעים האקסדיצמלים מותרים לסימון קטגוריות." + category_style: "סגנון ויזואלי עבור תגי קטגוריות." max_image_size_kb: "גודל קובץ מקסימלי להעלאה בקילו-בייטים (kB). ערך זה חייב להיות מוגדרת גם ב-nginx (client_max_body_size) / apache או בפרוקסי." max_attachment_size_kb: "הגודל המקסימלי בקילובייטים (kBs) של קבצים להעלאה. הגדרה זו חייבת להיות מוגדרת ב-nginx (client_max_body_size) / apache או בפרוקסי." authorized_extensions: "רשימה של הרחבות מותרות להעלאה (השתמשו ב '*' כדי לאפשר את כל סוגי הקבצים)" @@ -865,6 +883,7 @@ he: max_age_unmatched_ips: "מחק ערכי IP לא תואמים שמוצגים לאחר (N) ימים." num_flaggers_to_close_topic: "מספר מינימלי של מסמנים שונים שנדרש כדי להשהות באופן אוטומטי אפשות להתערב בנושא" num_flags_to_close_topic: "מספר מינימלי של סימונים פעילים שנדרש כדי להשהות באופן אוטומטי את היכולת להתערב בנושא" + auto_respond_to_flag_actions: "אפשרו תגובה אוטמטית עם הסרת סימון." reply_by_email_enabled: "אפשרו תגובה לנושאים באמצעות הדוא\"ל." reply_by_email_address: "Template for reply by email incoming email address, for example: %{reply_key}@reply.example.com or replies+%{reply_key}@example.com" disable_emails: "מנעו מ-Discourse ממשלו דוא\"ל כלשהו." @@ -891,13 +910,22 @@ he: allow_uploaded_avatars: "אפשרו למשתמשים להעלות אווטרים מותאמים אישית." allow_animated_avatars: "אפשרו למשתמשים להשתמש באווטרים מסוג GIF אנימציה. אזהרה: הריצו את האווטרים: רעננו לאחר שינוי הגדרה זו." allow_animated_thumbnails: "יצירת תמונות אנימציה מוקטנות קטנות של קבצי אנימציית gif." + default_avatars: "כתובות URL לאווטרים אשר ישמשו כברירת מחדל למשתמשים חדשים עד אשר ישנו אותם." automatically_download_gravatars: "הורדת גראווטרים למשתמשים בעת יצירת החשבון או שינוי כתובת הדוא\"ל." digest_topics: "מספר הנושאים המקסימלי להצגה במייל סיכום." digest_min_excerpt_length: "מספר התווים המינימלי למובאות מתוך הפרסום במייל הסיכום." default_digest_email_frequency: "How often users receive digest emails by default. They can change this setting in their preferences." + suppress_digest_email_after_days: "השהיית מיילים מסכמים עבור משתמשים שלא נראו באתר במשך יותר מ(n) ימים." + disable_digest_emails: "נטרול דוא\"ל סיכום לכל המשתמשים." default_external_links_in_new_tab: "Open external links in a new tab. Users can change this in their preferences." detect_custom_avatars: "האם לבדוק אם משתמשם העלו אווטרים מותאמים אישית." max_daily_gravatar_crawls: "מספר הפעמים המקסימלי ש-Discourse יבדוק אווטרים ב-Gravatar ביום" + public_user_custom_fields: "רשימה לבנה (whitelist) של שדות מותאמים למשתמש שיכולים להיות מוצגים באופן פומבי." + staff_user_custom_fields: "רשימה לבנה (whitelist) של שדות מותאמים למשתמש שיכולים להיות מוצגים לאנשי צוות." + enable_user_directory: "ספקו ספריייה של משתמשים לגלישה" + allow_anonymous_posting: "אפשרו למשתמשים לעבור למצב אנונימי" + anonymous_posting_min_trust_level: "רמת האמון המינמלית הנדרשת כדי לאפשר פרסום אנונימי" + anonymous_account_duration_minutes: "בכדי להגן על האנונימות צרו חשבון אנונימי כל N דקות לכ משתמש. לדוגמה: אם מכוון ל-600, כאשר יעברו 600 דקות מהפרסום האחרון והמשתמש/ת יחליפו לזהות אנונימית, חשבון אנונימי חדש יווצר." allow_profile_backgrounds: "אפשרו למשתמשים להעלות רקעים לפרופיל." sequential_replies_threshold: "מספר הפרסומים שעל משתמש להכין ברצף בפרסום לפני שיקבל תזכורת בנוגע ליותר מידי תגובות עוקבות." enable_mobile_theme: "Mobile devices use a mobile-friendly theme, with the ability to switch to the full site. Disable this if you want to use a custom stylesheet that is fully responsive." @@ -905,12 +933,16 @@ he: suppress_uncategorized_badge: "אל תציגו את התג (badge) לנושאים נטולי קטגוריה ברשימת הנושאים." global_notice: "הציגו הודעת אזהרה דחופה כללית לכל המבקרים, החליפו לריק כדי להסתיר אותה (ניתן להשתמש ב-HTML)." disable_edit_notifications: "ביטול התראות עריכה על ידי משתמש המערכת כאשר 'download_remote_images_to_local' פעיל." + full_name_required: "שם מלא הוא שדה נדרש לפרופיל משתמש/ת." + enable_names: "הצגת השם המלא של המשתמש/ת בעמודי הפרופיל שלהם, בכרטיסי המשתמ ובדוא\"ל שלהם. נטרול הסתרת השם המלא בכל מקום." display_name_on_posts: "הצגת שמם המלא של משתמשים בפרסומיהם, בנוסף ל@שם_המשתמש שלהם." invites_per_page: "ברירת המחדל, הזמנות המוצגות בעמוד המשתמש." short_progress_text_threshold: "After the number of posts in a topic goes above this number, the progress bar will only show the current post number. If you change the progress bar's width, you may need to change this value." default_code_lang: "Default programming language syntax highlighting applied to GitHub code blocks (lang-auto, ruby, python etc.)" warn_reviving_old_topic_age: "כאשר מישהו/מישהי מתחילים להגיב לנושא שבו התגובה האחרונה היא בת יותר מכמה ימים, אזהרה תוצג. בטלו אפשרות זו באמצעות הזנה של 0." autohighlight_all_code: "לחייב שימוש בקוד הדגשה לכל קוד מעוצב מראש (preformatted code blocks) אפילו אם הם אינם מציינים את השפה." + highlighted_languages: "הכללת הדגשת שגיאות תחביר. (אזהרה: הכללת שפות רבות מידי עשוי להשפיע על הביצוע) ראו: https://highlightjs.org/static/demo/ להדגמה" + embeddable_host: "מארח (Host) אשר יכול להטמיע את התגובות מפורום Discourse זה. שם מארח בלבד, ללא http:// בהתחלה" feed_polling_enabled: "הטמעה בלבד: האם לעמבד פידים של RSS/ATOM כפרסומים." feed_polling_url: "הטמעה בלבד: URL של פיד RSS/ATOM להטמעה." embed_by_username: "שם המשתמש של המשתמש/ת שיוצר את הנושאים המוטמעים." @@ -927,6 +959,7 @@ he: prevent_anons_from_downloading_files: "מונע ממשתמשים אנונימיים להוריד צרופות (attachments). אזהרה: דבר זה ימנע מכל משאב שאינו תמונה ופורסם כצרופה לעבוד." enable_emoji: "אפשרו emoji" emoji_set: "איך אתם אוהבים את ה-emoji שלכם?" + enforce_square_emoji: "חובת מימדי ריבועיים בכל ה-emojis." errors: invalid_email: "כתובת דוא\"ל לא קיימת." invalid_username: "אין משתמש/ת עם שם משתמש כזה." @@ -947,8 +980,6 @@ he: edited: "%{display_username} ערך הודעה שלך ב %{link}" posted: "%{display_username} פרסם ב %{link}" moved_post: "%{display_username} העביר את ההודעה שלך ל %{link}" - private_message: "%{display_username} שלח לך הודעה פרטית: %{link}" - invited_to_private_message: "%{display_username} הזמין אותך להודעה פרטית: %{link}" invitee_accepted: "%{display_username} קיבל את הזמנתך" linked: "%{display_username} קישר אליך ב %{link}" granted_badge: "הרווחת %{link}" @@ -1205,19 +1236,16 @@ he: subject_template: "ייצוא הנתונים נכשל" text_body_template: "צר לנו, אך ייצוא הנתונים שלכם נכשל. אנא בדקו את רישומי המערכת או צרו קשר עם איש/אשת צוות." email_reject_trust_level: - subject_template: "בעיית דוא\"ל - היעדר רמת אמון מספקת" text_body_template: | אנו מצטערים, אבל הודעת הדוא"ל שלך אל %{destination} (titled %{former_title}) לא עברה. אין לחשבון שלך את רמון האמון הנדרשת כדי לפרסם נושאים חדשים לכתובת דוא"ל זו. אם אתם מאמינים כי זוהי שגיאה, צרו קשר עם אחד מאנשי הצוות. email_reject_no_account: - subject_template: "בעיית דוא\"ל - חשבון לא ידוע" text_body_template: | אנחנו מצטערים, אך הודעת הדוא"ל שלכם אל %{destination} (titled %{former_title}) לא עברה. לא ידוע לנו על חשבון משתמש/ת עם כתובת כזו. נסו לשלוח מכתובת דוא"ל אחרת, או צרו קשר עם אנשי הצוות שלנו. email_reject_empty: - subject_template: "בעיית דוא\"ל - אין תוכן" text_body_template: | אנחנו מצטערים, אבל הודעת הדוא"ל שלך אל %{destination} (titled %{former_title}) לא עבדה. @@ -1225,19 +1253,16 @@ he: אם בדקתם זאת ו_כן_ כללתם תוכן נוסף, נסו שוב עם תוכן בצורת HTML בתוך המייל (לא רק טקסט פשוט- plain text). email_reject_parsing: - subject_template: "סוגיית דוא\"ל -- תוכן בלתי מוכר" text_body_template: | מצטערים, אבל הודעת הדוא"ל שלך ל-%{destination} עם הכותרת %{former_title} לא עבדה. לא יכולנו למצוא את תגובתך באימייל המצורף. **אנא ודאו שתגובתכם נמצאת בראש המייל** - אין לנו יכולת לעבד תגובות מוטמעות (inline replies). email_reject_post_error: - subject_template: "בעיית דוא\"ל - שגיאת פרסום (Posting error)" text_body_template: | אנו מצטערים, אך מסר הדוא"ל שלך ל-%{destination} (שכותרתו %{former_title}) לא עבר. סיבות אפשריות לעניין: מבנה מורכב, המסר ארוך מידי, המסר קצר מידי. אנא נסו שוב, או פרסמו באמצעות האתר עם הבעיה נמשכת. email_reject_post_error_specified: - subject_template: "בעיית דוא\"ל - שגיאה בפרסום." text_body_template: | אנחנו מצטערים, אבל הודעת הדוא"ל שלך אל %{destination} (titled %{former_title}) לא עברה. @@ -1254,31 +1279,26 @@ he: If you can correct the problem, please try again. email_reject_reply_key: - subject_template: "בעיית דוא\"ל - מפתח תגובה (Reply) לא ידוע" text_body_template: | אנו מצטערים, אבל הודעת הדוא"ל שלך אל %{destination} (titled %{former_title}) לא עברה. מפתח התגובה לא קיים או לא מוכר, כך שאיננו יודעים לאיזה פרסום המייל הזה אמור להגיב. אנא צרו קשר עם אנשי הצוות. email_reject_destination: - subject_template: "בעיית דוא\"ל - מען (כתובת דוא\"ל) לא ידוע" text_body_template: | מצטערים, אבל הודעת הדוא"ל שלך ל-%{destination} עם הכותרת %{former_title} לא הצליחה. לא הצלחנו לזהות כתובות יעד. אנא ודא שכתובת האתר נמצאת בשדה "אל:", ולא ב-"עותק" או "עותק מוחבא (CC / BCC), ושאתה שולח לכתובת אימייל שסופקה בידי הצוות. email_reject_topic_not_found: - subject_template: "בעיית דוא\"ל -- הנושא לא נמצא" text_body_template: | אנחנו מצטערים, אך הודעת הדוא"ל שלך אל %{destination} (בנושא %{former_title}) לא נשלחה. הנושא לא נמצא, ייתכן והוא נמחק. אם אתם מאמינים שזוהי תקלה, אנא צרו קשר עם איש/אשת צוות. email_reject_topic_closed: - subject_template: "בעיית דוא\"ל -- הנושא נסגר" text_body_template: | אנחנו מצטערים, אך הודעת הדוא"ל ששלחת אל %{destination} (בנושא %{former_title}) לא עברה. הנושא נסגר. אם אתם מאמינים שמדובר בתקלה, צרו קשר עם איש/אשת צוות. email_error_notification: - subject_template: "תקלת דוא\"ל - שגיאת אישור POP" text_body_template: | התרחשה תקלת אימות בזמן שבדקנו הודעות מייל בשרת ה-POP. @@ -1343,12 +1363,6 @@ he: reply_by_email: "To respond, reply to this email or visit %{base_url}%{url} in your browser." visit_link_to_respond: "To respond, visit %{base_url}%{url} in your browser." posted_by: "Posted by %{username} on %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} invited you to a private message '%{topic_title}'" - text_body_template: | - %{username} invited you to a private message '%{topic_title}' on %{site_name}: - - Please visit this link to view the topic: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1396,7 +1410,6 @@ he: %{respond_instructions} digest: why: "סיכום קצר של %{site_link} מאז ביקורך האחרון ב-%{last_seen_at}" - subject_template: "[%{site_name}] Forum Activity for %{date}" new_activity: "New activity on your topics and posts:" top_topics: "Recent posts the community enjoyed:" other_new_topics: "Other New Topics:" @@ -1480,7 +1493,6 @@ he: spam_hosts: "המשתמש/ת החדשים ניסו ליצור כמה פרסומים עם קישורים לאותו מתחם (domain)ץ ראו את הגדרות האתר (newuser_spam_host_threshold)." email_log: no_user: "Can't find user with id %{user_id}" - suspended_not_pm: "המשתמש/ת מושעים, לא מסר פרטי" seen_recently: "User was seen recently" post_not_found: "Can't find a post with id %{post_id}" notification_already_read: "The notification this email is about has already been read" diff --git a/config/locales/server.id.yml b/config/locales/server.id.yml index 28a819cffb..0cf8b47b30 100644 --- a/config/locales/server.id.yml +++ b/config/locales/server.id.yml @@ -49,7 +49,6 @@ id: rss_posts_in_topic: "RSS feed dari '%{topic}'" rss_topics_in_category: "RSS feed dari topik-topik pada kategori '%{category}'" author_wrote: "%{author} menuliskan:" - private_message_abbrev: "PM" groups: errors: can_not_modify_automatic: "Anda tidak dapat mengubah grup otomatis" @@ -102,14 +101,10 @@ id: notify_moderators: email_title: 'Perhatian moderator dibutuhkan di topik "%{title}"' reports: - moderator_warning_private_messages: - yaxis: "Jumlah pesan pribadi" notify_moderators_private_messages: xaxis: "Hari" - yaxis: "Jumlah pesan pribadi" notify_user_private_messages: xaxis: "Hari" - yaxis: "Jumlah pesan pribadi" top_referrers: xaxis: "Pengguna" num_clicks: "Klik" diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml index 972b8de905..09ca9ec8db 100644 --- a/config/locales/server.it.yml +++ b/config/locales/server.it.yml @@ -20,6 +20,7 @@ it: is_reserved: "è riservato" purge_reason: "Cancellato automaticamente come account abbandonato e mai attivato" disable_remote_images_download_reason: "Lo scaricamento delle immagini remote è stato disabilitato perché non c'è abbastanza spazio disco disponibile." + anonymous: "Anonimo" errors: format: '%{attribute} %{message}' messages: @@ -112,6 +113,7 @@ it: other: "Spiacenti, i nuovi utenti possono inserire solo %{count} collegamenti in un messaggio." spamming_host: "Spiacenti, non puoi inserire un collegamento verso quel dominio." user_is_suspended: "Agli utenti sospesi non è permesso creare messaggi." + topic_not_found: "Quancosa non ha funzionato. Forse questo argomento è stato chiuso o cancellato mentre lo leggevi." just_posted_that: "è troppo simile a ciò che hai appena pubblicato" has_already_been_used: "è già stato usato" invalid_characters: "contiene caratteri non validi" @@ -119,6 +121,7 @@ it: next_page: "pagina seguente →" prev_page: "← pagina precedente" page_num: "Pagina %{num}" + home_title: "Home" topics_in_category: "Argomenti nella categoria '%{category}'" rss_posts_in_topic: "RSS feed di '%{topic}'" rss_topics_in_category: "RSS feed degli argomenti nella categoria '%{category}'" @@ -381,9 +384,9 @@ it: description: 'Questo messaggio ha dei contenuti che una persona ragionevole considererebbe offensivi, aggressivi o una violazione delle linee guida della comunità.' long_form: 'segnalato come inappropriato' notify_user: - title: 'Messaggio Privato @{{username}}' + title: 'Messaggio @{{username}}' description: 'Vorrei discutere direttamente e privatamente con l''autore di questo messaggio. Non voglio attivare una segnalazione.' - long_form: 'messaggio privato inviato' + long_form: 'messaggio inviato' email_title: 'Il tuo messaggio su "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -420,7 +423,7 @@ it: email_title: 'L''argomento "%{title}" richiede l''attenzione di un moderatore' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Il tuo messaggio è stato segnalato dalla comunità. Controlla i tuoi messaggi privati.

    ' + you_must_edit: '

    Il tuo messaggio è stato segnalato dalla comunità. Controlla i tuoi messaggi.

    ' user_must_edit: '

    Questo messaggio è stato segnalato dalla comunità ed è stato temporaneamente nascosto.

    ' archetypes: regular: @@ -485,23 +488,23 @@ it: user_to_user_private_messages: title: "Utente-a-Utente" xaxis: "Giorno" - yaxis: "Numero di messaggi privati" + yaxis: "Numero di messaggi" system_private_messages: title: "Sistema" xaxis: "Giorno" - yaxis: "Numero di messaggi privati" + yaxis: "Numero di messaggi" moderator_warning_private_messages: title: "Segnalazione Moderatore" xaxis: "Giorno" - yaxis: "Numero di messaggi privati" + yaxis: "Numero di messaggi" notify_moderators_private_messages: title: "Notifica i Moderatori" xaxis: "Giorno" - yaxis: "Numero di messaggi privati" + yaxis: "Numero di messaggi" notify_user_private_messages: title: "Notifiche Utente" xaxis: "Giorno" - yaxis: "Numero di messaggi privati" + yaxis: "Numero di messaggi" top_referrers: title: "Migliori Referrer" xaxis: "Utente" @@ -565,6 +568,7 @@ it: 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.' queue_size_warning: 'Il numero di job in coda è %{queue_size}, troppo alto. Potrebbe esserci un problema con i processi Sidekiq, oppure potresti dover aggiungere altri Sidekiq worker.' memory_warning: 'Il tuo server gira con meno di 1 GB di memoria. Si raccomanda almeno 1 GB di memoria.' + enable_google_logins_warning: "ATTENZIONE! Il metodo di autenticazione che stai usando non verrà più supportato a partire dal 20 Aprile 2015. Cambia metodo di autenticazione ora!" both_googles_warning: "Hai entrambe le impostazioni enable_google_logins e enable_google_oauth2_logins attivate. Disabilita enable_google_logins." 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ù.' @@ -580,7 +584,7 @@ it: title_nag: "Inserisci il nome del tuo sito. Aggiorna il titolo nelle Impostazioni Sito." site_description_missing: "Scrivi una breve descrizione del sito che comparirà nei risultati di ricerca. Aggiorna site_description nelle Impostazioni Sito." consumer_email_warning: "Il tuo sito è configurato per usare Gmail (o un altro servizio email consumer) per inviare le email. Gmail limita il numero di email che puoi inviare. Considera l'utilizzo di un fornitore di servizi come mandrill.com per assicurare l'invio delle email." - site_contact_username_warning: "Scrivi il nome di un membro dello staff disponibile, da cui inviare messaggi privati importanti in maniera automatica. Aggiorna site_contact_username nelle Impostazioni Sito." + site_contact_username_warning: "Inserisci il nome di un membro dello staff da cui inviare messaggi importanti in maniera automatica. Aggiorna site_contact_username nelle Impostazioni Sito." notification_email_warning: "Le email di notifica non vengono inviate da un indirizzo email valido del tuo dominio; l'invio di email sarà inaffidabile. Definisci notification_email con un indirizzo email valido nelle Impostazioni Sito." content_types: education_new_reply: @@ -594,10 +598,10 @@ it: description: "Guida e informazioni essenziali per nuovi utenti." welcome_user: title: "Benvenuto: Nuovo Utente" - description: "Verrà inviato automaticamente un messaggio privato a tutti i nuovi utenti dopo la registrazione." + description: "Verrà inviato automaticamente un messaggio a tutti i nuovi utenti dopo la registrazione." welcome_invite: title: "Benvenuto: Utente Invitato" - description: "Verrà inviato automaticamente un messaggio privato a tutti gli utenti invitati quando accettano l'invito a partecipare da parte di un altro utente." + description: "Verrà inviato automaticamente un messaggio a tutti gli utenti invitati quando accettano l'invito a partecipare da parte di un altro utente." login_required_welcome_message: title: "Accesso Richiesto: Messaggio di Benvenuto" description: "Messaggio che viene mostrato agli utenti non collegati quando l'impostazione \"login obbligatorio\" è attiva." @@ -619,11 +623,12 @@ it: default_locale: "Il linguaggio di default di questa istanza Discourse (ISO 639-1 Code)" allow_user_locale: "Permetti agli utenti di personalizzare la lingua dell'interfaccia" min_post_length: "Lunghezza minima dei messaggi in caratteri" - min_private_message_post_length: "Lunghezza minima in caratteri per i messaggi privati" + min_first_post_length: "Lunghezza minima del primo messaggio (corpo del testo), in caratteri" + min_private_message_post_length: "Lunghezza minima in caratteri per i messaggi" max_post_length: "Lunghezza massima dei messaggi in caratteri" min_topic_title_length: "Numero minimo di caratteri per i titoli degli argomenti" max_topic_title_length: "Numero massimo di caratteri per i titoli degli argomenti" - min_private_message_title_length: "Numero minimo di caratteri necessari per un messaggio privato" + min_private_message_title_length: "Numero minimo di caratteri per un messaggio" min_search_term_length: "Numero minimo di caratteri per le parole cercate" allow_uncategorized_topics: "Permetti la creazione di argomenti senza categoria." uncategorized_description: "La descrizione della categoria \"Non classificato\". Lascia vuoto per nessuna descrizione." @@ -657,7 +662,7 @@ it: digest_logo_url: "Il logo alternativo usato in cima alla email di riepilogo. Se lasciato vuoto, sarà utilizzato il campo `logo_url`. es: http://example.com/logo.png" logo_small_url: "La piccola immagine del logo in alto a sinistra sul tuo sito, che appare quando si scorre in giù. Se non impostato, verrà mostrato l'icona di una casa." favicon_url: "La favicon del tuo sito, vedi http://it.wikipedia.org/wiki/Favicon" - mobile_logo_url: "L'immagine del logo a posizione fissa usata in alto a sinistra del sito mobile. Se non impostato, verrà usato il testo del titolo del sito." + mobile_logo_url: "L'immagine del logo a posizione fissa usata in alto a sinistra del sito mobile. Se non impostato, verrà usato `logo_url`." apple_touch_icon_url: "Icona usata per dispositivi touch Apple. La dimensione consigliata è 144 x 144 pixel." notification_email: "L'indirizzo presente nel campo from: usato per inviare tutte le email essenziali di sistema. Il dominio indicato deve avere i record SPF, DKIM e reverse PTR impostati correttamente perché l'email arrivi." email_custom_headers: "Una lista di intestazioni email personalizzate delimitata da una barra verticale (pipe |)" @@ -668,7 +673,7 @@ it: summary_likes_required: "Minimo numero di \"Mi piace\" in un argomento affinché venga abilitato 'Riassumi Questo Argomento'" summary_percent_filter: "Quando un utente clicca su 'Riassumi Questo Argomento', mostra i primi % messaggi" summary_max_results: "Massimo numero di messaggi mostrati in 'Riassumi Argomento'" - enable_private_messages: "Autorizza gli utenti con livello di esperienza 1 a creare e rispondere a messaggi privati" + enable_private_messages: "Autorizza gli utenti con livello di esperienza 1 a creare e rispondere ai messaggi" enable_long_polling: "Il message bus per le notifiche può usare il long polling" long_polling_base_url: "URL di base usato per il long polling (quando una CDN serve contenuto dinamico, bisogna impostarlo come origin pull) es. http://origin.site.com" long_polling_interval: "Tempo di attesa prima che il server risponda ai client che non ci sono dati da trasmettere (solo per utenti autenticati)" @@ -701,8 +706,8 @@ it: post_menu_hidden_items: "Le voci di menu da nascondere per difetto nel menu di composizione del messaggio, a meno che non vengano premuti i punti di sospensione per espanderle." share_links: "Determina quali elementi appaiono nella finestra di condivisione e in quale ordine." track_external_right_clicks: "Segui i collegamenti esterni sui quali viene fatto click destro (es: apri in una nuova tab). Disabilitato di default perché riscrive le URL" - site_contact_username: "Un nome utente valido dello staff da cui inviare tutti i messaggi privati automatici. Se lasciato vuoto verrà usato l'account System di default." - send_welcome_message: "Invia a tutti i nuovi utenti un messaggio di benvenuto con una guida di avvio rapido." + site_contact_username: "Un utente dello staff valido da cui inviare tutti i messaggi automatici. Se lasciato vuoto verrà usato l'account System di default." + send_welcome_message: "nvia a tutti i nuovi utenti un messaggio di benvenuto con una guida di avvio rapido." suppress_reply_directly_below: "Non mostrare il conteggio espandibile delle risposte quando c'è una sola risposta sotto quel messaggio." suppress_reply_directly_above: "Non mostrare in-risposta-a espandibile in un messaggio quando c'è una sola risposta sopra quel messaggio. " suppress_reply_when_quoting: "Non mostrare in-risposta-a espandibile in un messaggio quando il messaggio include la citazione." @@ -738,7 +743,7 @@ it: sso_secret: "Stringa segreta utilizzata per autenticare crittograficamente le informazioni SSO, assicurati che sia lunga almeno 10 caratteri" sso_overrides_email: "Sostituisce le email locali con quelle del sito esterno con cui ci si è connessi tramite SSO (ATTENZIONE: potrebbero avvenire discrepanze a causa delle direttive per le email locali)" sso_overrides_username: "Sovrascrive il nome utente locale con quello del sito esterno con cui ci si è connessi tramite SSO (ATTENZIONE: potrebbero verificarsi discrepanze a causa delle differenze tra lunghezza effettiva e richiesta del nome utente)" - sso_overrides_name: "Sovrascrive il nome locale con quello del sito esterno con cui ci si è connessi tramite SSO (ATTENZIONE: potrebbero verificarsi discrepanze a causa della normalizzazione dei nomi locali)" + sso_overrides_name: "Sovrascrive il nome locale con quello del sito esterno con cui ci si è connessi tramite SSO " sso_overrides_avatar: "Sostituisce l'avatar dell'utente con un avatar su un sito esterno usando SSO. Se abilitato, si raccomanda di disabilitare allow_uploaded_avatars" enable_local_logins: "Abilita account basati su login con nome utente e password locali. (Nota: deve essere abilitato affinché funzionino gli inviti)" allow_new_registrations: "Abilita la registrazione di nuovi utenti. Se deselezionato, non sarà possibile creare nuovi account." @@ -773,7 +778,7 @@ it: max_bookmarks_per_day: "Massimo numero di segnalibri per utente al giorno." max_edits_per_day: "Massimo numero di modifiche per utente al giorno." max_topics_per_day: "Massimo numero di argomenti che un utente può creare al giorno." - max_private_messages_per_day: "Numero massimo di messaggi privati che gli utenti possono creare al giorno." + max_private_messages_per_day: "Numero massimo di messaggi che gli utenti possono creare al giorno." max_invites_per_day: "Numero massimo di inviti che un utente può inviare in un giorno." suggested_topics: "Numero di argomenti suggeriti mostrati in fondo ad un argomento." limit_suggested_to_category: "Negli argomenti suggeriti, mostra soltanto argomenti della categoria corrente. " @@ -822,7 +827,7 @@ it: email_time_window_mins: "Aspetta (n) minuti prima di inviare email di notifica, per dare agli utenti la possibilità di modificare e completare i loro messaggi." email_posts_context: "Quante risposte precedenti inserire come contesto nelle email di notifica." flush_timings_secs: "Frequenza di svuotamento dei dati temporali verso il server, in secondi." - max_word_length: "Numero massimo di caratteri che compongono il titolo di un argomento." + title_max_word_length: "La lunghezza massima di una parola, in caratteri, nel titolo di un argomento." title_min_entropy: "Minima entropia (caratteri unici) richiesti come titolo di un argomento." body_min_entropy: "Minima entropia (caratteri unici) richiesti come corpo di un messaggio." title_fancy_entities: "Converti caratteri ASCII comuni in HTML nei titoli dell'argomento, tipo SmartyPants http://daringfireball.net/projects/smartypants/" @@ -830,6 +835,8 @@ it: min_body_similar_length: "Lunghezza minima del corpo di un messaggio che attiva il controllo su argomenti simili." category_colors: "Un elenco di valori esadecimali di colori permessi per le categorie." category_style: "Stile grafico per le etichette di categoria." + max_image_size_kb: "Dimensione massima in kB per caricare immagini degli utenti. Deve essere configurata anchein nginx (client_max_body_size) o in apache." + max_attachment_size_kb: "Dimensione massima dei file che gli utenti possono caricare, in kB. Configura il limite anche in nginx (client_max_body_size) / apache o proxy." 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." @@ -849,12 +856,28 @@ it: tos_url: "Se vuoi usare un documento dei Termini di Servizio ospitato da qualche altra parte, fornisci qui la sua URL completa." privacy_policy_url: "Se vuoi usare un documento sulle Politiche di Privacy ospitato da qualche altra parte, fornisci qui la sua URL completa." newuser_spam_host_threshold: "Quante volte un nuovo utente può inviare un collegamento verso lo stesso host compreso nei messaggi `newuser_spam_host_posts` prima che venga considerato spam." + white_listed_spam_host_domains: "Una lista di domini esclusi dall'host spam testing. Ai nuovi utenti non verrà mai impedito di creare messaggi con link a questi domini." + staff_like_weight: "Peso extra attribuito ai \"mi piace\" dati dallo staff." + topic_view_duration_hours: "Conta una nuova visita all'argomento una volta sola per IP/Utente ogni N ore" + 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." + 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." reply_by_email_address: "Modello per rispondere via email, per esempio: %{reply_key}@risposta.esempio.com o risposte+%{reply_key}@esempio.com" disable_emails: "Evita che Discourse invii qualunque tipo di email" + strip_images_from_short_emails: "Elimina le immagini dalle email aventi dimensione inferiore a 2800 Byte." + short_email_length: "Lunghezza delle email brevi in Byte" + pop3_polling_enabled: "Cerca le risposte via email tramite POP3." + pop3_polling_ssl: "Usa SSL per la connessione al server POP3 (raccomandato)." pop3_polling_port: "La porta dell'account POP3." + pop3_polling_host: "L'host a cui collegarsi per ricevere email via POP3." + pop3_polling_username: "Il nome utente dell'account POP3 per la ricezione di email." + pop3_polling_password: "La password dell'account POP3 per la ricezione di email." email_in: "Permetti agli utenti di pubblicare nuovi argomenti per email (richiede il pop3 polling). Configura gli indirizzi nella scheda \"Impostazioni\" di ciascuna categoria." email_in_min_trust: "Livello di esperienza minimo necessario affinché un utente possa pubblicare nuovi argomenti via email." + email_prefix: "La [etichetta] utilizzata nell'oggetto delle email. Se non impostata sarà 'titolo'." + relative_date_duration: "Dopo quanti giorni dalla pubblicazione le date verranno mostrate in termini relativi anziché assoluti. Per esempio, 7g anzichè 20 feb." delete_user_max_post_age: "Non permettere di cancellare utenti il cui primo messaggio è più vecchio di (x) giorni." delete_all_posts_max: "Numero massimo di messaggi che possono essere eliminati contemporaneamente con il pulsante Cancella Tutti. Se un utente ha un numero maggiore di tali messaggi, questi non possono essere eliminati contemporaneamente e l'utente non può essere cancellato." username_change_period: "Numero di giorni dall'iscrizione dopo i quali è possibile modificare il nome utente (imposta a 0 per non permettere il cambio del nome utente)." @@ -898,8 +921,6 @@ it: edited: "%{display_username} ha modificato il tuo messaggio in %{link}" posted: "%{display_username} ha commentato in %{link}" moved_post: "%{display_username} ha spostato il tuo messaggio in %{link}" - private_message: "%{display_username} ti ha inviato un messaggio privato: %{link}" - invited_to_private_message: "%{display_username} ti ha invitato in un messaggio privato: %{link}" invitee_accepted: "%{display_username} ha accettato il tuo invito" linked: "%{display_username} ti ha collegato in %{link}" granted_badge: "Hai guadagnato %{link}" @@ -910,6 +931,7 @@ it: topic: 'Risultati' user: 'Utenti' sso: + not_found: "Impossibile cercare o creare l'account, contatta l'amministratore del sito" account_not_approved: "L'account è in attesa di approvazione, riceverai una notifica per email una volta approvato" unknown_error: "Errore nell'aggiornamento delle informazioni, contatta l'amministratore del sito" timeout_expired: "Il tempo di autenticazione di questo account è scaduto, prova ad autenticarti nuovamente" @@ -972,6 +994,7 @@ it: errors: "%{errors}" not_available: "Non disponibile. Prova %{suggestion}?" something_already_taken: "Qualcosa è andato storto, forse il nome utente o l'email sono già registrati. Prova a recuperare la password." + omniauth_error: "Si è verificato un errore nell'autorizzazione del tuo account. Hai approvato l'autorizzazione?" omniauth_error_unknown: "Qualcosa è andato storto durante il collegamento, per favore riprova." new_registrations_disabled: "Non sono permesse nuove registrazioni al momento." password_too_long: "Le password sono limitate a 200 caratteri." @@ -1050,7 +1073,7 @@ it: Per ulteriori informazioni, puoi far riferimento alle nostre [community guidelines](%{base_url}/guidelines). usage_tips: text_body_template: | - Questo messaggio privato contiene alcune indicazioni per cominciare. + Ecco alcuni veloci consigli per cominciare. ## Continua a scorrere la pagina @@ -1112,36 +1135,15 @@ it: - Puoi modificare le impostazioni di notifica di ciascuna discussione con i controlli in fondo al topic (questa impostazione si può anche definire per ciascuna categoria). Per modificare il modo in cui segui le discussioni, o la definizione di nuovo, vedi le [tue preferenze utente](%{baseurl}/my/preferences). + Puoi modificare le impostazioni di notifica di ciascuna discussione con i controlli in fondo al topic (questa impostazione si può anche definire per ciascuna categoria). Per modificare il modo in cui segui le discussioni, o la definizione di nuovo, vedi le [tue preferenze utente](/my/preferences). ## Perché non posso fare certe cose? Per ragioni di sicurezza i nuovo utenti hanno alcune limitazioni. Man mano che parteciperai guadagnerai la fiducia della comunità, ne diverrai partecipante a pieno titolo e questi limiti verranno rimossi automaticamente. Ad un [livello di fiducia](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924) sufficientemente alto guadagnerai ulteriori capacità per aiutarci a gestire insieme questa comunità. welcome_user: subject_template: "Benvenuto su %{site_name}!" - text_body_template: "Grazie per esserti unito a %{site_name}, e benvenuto!\n\n %{new_user_tips} \n\nNoi crediamo sempre in un [comportamento comunitario civile](%{base_url}/guidelines). \n\nBuona permanenza!\n\n(Se vuoi comunicare in privato con [i membri dello staff](%{base_url}/about) come nuovo utente, rispondi semplicemente a questo messaggio privato.)\n" welcome_invite: subject_template: "Benvenuto su %{site_name}!" - text_body_template: | - Grazie per aver accettato l'invito a %{site_name} -- benvenuto/a! - - Ti abbiamo creato il nuovo account **%{username}** e sei autenticato sul sito. Puoi cambiare il tuo nome visitando [il tuo profilo utente][prefs]. - - Per fare login in futuro: - - 1. **Usa sempre lo stesso indirizzo email dell'invito originale** quando fai login. Altrimenti non capiremo che sei tu! - - 2. Crea una password unica per [il tuo profilo utente][prefs], e usala per fare login. - - %{new_user_tips} - - Crediamo nei [comportamenti civili della comunità](%{base_url}/guidelines), sempre. - - Buona permanenza! - - (Se vuoi comunicare privatamente con i [membri dello staff](%{base_url}/about) come nuovo utente, rispondi semplicemente a questo messaggio privato.) - - [prefs]: %{user_preferences_url} backup_succeeded: subject_template: "Backup completato correttamente" backup_failed: @@ -1177,25 +1179,11 @@ it: csv_export_failed: subject_template: "Esportazione dati fallita" email_reject_trust_level: - subject_template: "Problema email -- Livello Esperienza insufficente" text_body_template: | Ci dispiace, ma il tuo messaggio email per %{destination} (con il titolo %{former_title}) non è stato processato. Il tuo utente non ha il livello di esperienza richiesto per inviare nuovi argomenti a questo indirizzo email. Se credi che ciò sia un errore, contatta un membro dello staff. - email_reject_no_account: - subject_template: "Problema relativo all'email -- Account Sconosciuto" - email_reject_empty: - subject_template: "Problema relativo all'email -- Nessun Contenuto" - email_reject_parsing: - subject_template: "Problema relativo all'email -- Contenuto non riconosciuto" - email_reject_post_error: - subject_template: "Problema email -- Errore di invio" - email_reject_post_error_specified: - subject_template: "Problema email -- Errore di invio" - email_reject_topic_not_found: - subject_template: "Problema relativo all'email -- Argomento Non Trovato" email_reject_topic_closed: - subject_template: "Problema email -- Argomento Chiuso" text_body_template: | Spiacenti, ma la tua email a %{destination} (intitolato %{former_title}) non è andata a buon fine. @@ -1223,6 +1211,14 @@ it: La soglia può essere modificata tramite l'impostazione del sito `block_new_user`. spam_post_blocked: subject_template: "Il messaggi del nuovo utente %{username} sono stati bloccati a causa dell'invio di ripetuti collegamenti." + text_body_template: | + Questo è un messaggio automatico. + + Il nuovo utente [%{username}](%{base_url}%{user_url}) ha creato diversi messaggi con link a %{domains}, ma questi messaggi sono stati bloccati per evitare spam. L'utente è ancora in grado di creare post ma senza link verso %{domains}. + + Per favore [controlla questo utente](%{base_url}%{user_url}). + + Questa soglia può essere modificata tramite l'impostazione `newuser_spam_host_threshold` e `white_listed_spam_host_domains` del sito. unblocked: subject_template: "Account sbloccato" text_body_template: | @@ -1251,11 +1247,9 @@ it: visit_link_to_respond: "Per rispondere, visita %{base_url}%{url}" posted_by: "Pubblicato da %{username} il %{post_date}" user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} ti invita alla conversazione privata '%{topic_title}'" - text_body_template: | - %{username} ti ha invitato alla conversazione privata '%{topic_title}' su %{site_name}: - - Segui questo collegamento per visualizzare l'argomento: %{base_url}%{url} + subject_template: "[%{site_name}] %{username} ti invita al partecipare al messaggio '%{topic_title}'" + user_invited_to_topic: + subject_template: "[%{site_name}] %{username} ti invita al partecipare allla discussione '%{topic_title}'" user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1303,7 +1297,7 @@ it: %{respond_instructions} digest: why: "Un breve sommario di %{site_link} dalla tua ultima visita il %{last_seen_at}" - subject_template: "[%{site_name}] Riepilogo del %{date}" + subject_template: "[%{site_name}] Riepilogo" new_activity: "Nuove attività nei tuoi argomenti e messaggi:" top_topics: "Messaggi di successo" other_new_topics: "Argomenti più attivi" @@ -1343,6 +1337,7 @@ it: %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "Sei stato ammesso su %{site_name}!" + text_body_template: "Benvenuto su %{site_name}! \n\nUn membro dello staff ha approvato il tuo account su %{site_name}. \n\nClicca sul seguente collegamento per confermare e attivare il tuo nuovo account:\n%{base_url}/users/activate-account/%{email_token} \n\nSe il collegamento qui sopra non è cliccabile, prova a copiarlo e incollarlo nella barra degli indirizzi del tuo browser. \n\n%{new_user_tips}\n\nNoi crediamo fermamente in un [comportamento comunitario civile](%{base_url}/guidelines) sempre.\n\nBuona permanenza!\n\n(Se hai bisogno di comunicare privatamente con i [membri dello staff](%{base_url}/about) come nuovo utente, rispondi semplicemente a questo messaggio privato.)\n" signup: subject_template: "[%{site_name}] Attiva il tuo nuovo account" text_body_template: | @@ -1384,7 +1379,7 @@ it: spam_hosts: "Questo nuovo utente ha tentato di creare più messaggi con collegamenti allo stesso dominio. Guarda l'impostazione newuser_spam_host_threeshold." email_log: no_user: "Non trovo l'utente con l'id %{user_id}" - suspended_not_pm: "L'utente è stato sospeso, questo non è un messaggio privato." + suspended_not_pm: "L'utente è sospeso, non è un messaggio" seen_recently: "L'utente è stato visto di recente" post_not_found: "Non trovo un messaggio con id %{post_id}" notification_already_read: "La notifica per cui è stata inviata questa mail è già stata letta" @@ -1398,6 +1393,7 @@ it: body_blank: "il corpo è vuoto" color_schemes: base_theme_name: "Base" + about: "Informazioni su" guidelines: "Linee Guida" privacy: "Privacy" edit_this_page: "Modifica questa pagina" @@ -1430,3 +1426,10 @@ it: \ di proteggere l'integrità del nostro sito pertanto accettiamo eventuali riscontri negativi sui siti terzi.\n\n\n\n\n## [Rispetto della legge sulla protezione della privacy online dei minori - Children's Online Privacy Protection Act Compliance - COPPA](#coppa)\n\nIl nostro sito, nonché i prodotti ed i servizi ad esso collegati, sono tutti diretti a persone maggiorenni. Se non si è maggiorenni secondo le leggi del proprio Paese, per il rispetto della COPPA ([Legge sulla protezione della privacy online dei minori]( http://en.wikipedia.org/wiki/Children's_Online_Privacy_Protection_Act)), non usare questo sito.\n\n\n\n## [Politica sulla privacy online](#online)\n\nLa presente politica sulla privacy online si applica soltanto alle informazioni raccolte attraverso il nostro sito e non alle informazioni fuori linea.\n\n\n\n## [Consenso](#consent)\n\nUsando il nostro sito, accetti senza riserve la presente politica sulla privacy.\n\n\n\n## [Cambiamenti alla politica sulla privacy](#changes)\n\nQualora decidessimo di cambiare la nostra politica sulla privacy, invieremo tali modifiche su questa pagina.\n\nQuesto documento è CC-BY-SA (http://it.wikipedia.org/wiki/Licenze_Creative_Commons). \nAggiornato il 31 maggio 2013.\n" static: search_help: "

    Suggerimenti

    \n

    \n

      \n
    • La ricerca nei titoli è prioritaria, perciò, in caso di dubbi, cerca per titolo
    • \n
    • I risultati migliori si ottengono sempre con parole uniche e non comuni
    • \n
    • Quando possibile, circoscrivi l'ambito della ricerca a una categoria, a un utente o a un argomento in particolare
    • \n
    \n

    \n

    Opzioni

    \n

    \n \n\n \n \n \n\n
    order:viewsorder:latest
    status:openstatus:closedstatus:archivedstatus:norepliesstatus:singleuser
    category:foouser:foo
    in:likesin:postedin:watchingin:trackingin:private
    in:bookmarks
    \n

    \n

    \narcobaleni category:parchi status:open order:latest ricercherà gli argomenti contenenti la parola \"arcobaleni\" nella categoria \"parchi\" che non siano chiusi o archiviati, ordinati secondo la data dell'ultimo messaggio.

    \n" + badges: + long_descriptions: + first_flag: "Le segnalazioni sono importanti per il benessere della tua comunità. Se noti dei messaggi che richiedono l'attenzione dei moderatori, non esitare a segnalarli. Puoi anche usare la finestra di segnalazione per inviare un messaggio agli utenti, una volta che avrai raggiunto il \nlivello di esperienza 1.\n" + anniversary: "Bla bla bla \nBla bla bla \n" + good_share: "Bla bla bla \nBla bla bla\n" + great_share: "Bla bla bla \nBla bla bla \n" + nice_post: "Bla bla bla \nBla bla bla \n" diff --git a/config/locales/server.ja.yml b/config/locales/server.ja.yml index e6948433f3..9c10e95b13 100644 --- a/config/locales/server.ja.yml +++ b/config/locales/server.ja.yml @@ -120,7 +120,6 @@ ja: num_posts: "ポスト:" num_participants: "参加者:" read_full_topic: "Read full topic" - private_message_abbrev: "PM" rss_description: latest: "最新トピック" hot: "ホットトピック" @@ -341,9 +340,7 @@ ja: description: 'この投稿は、誹謗中傷、恫喝、名誉毀損、わいせつ、犯罪行為など他人を不快にさせる内容を含んでいる。' long_form: '不適切フラグをたてる' notify_user: - title: 'プライベートメッセージ @{{username}}' description: 'この投稿やトピックを書いた人に、直接メッセージを送る。(フラグを付けません)' - long_form: 'プライベートメッセージを送ったユーザ' email_title: '「%{title}」にの投稿' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -380,7 +377,6 @@ ja: email_title: 'トピック"%{title}" は不適切な可能性があるため、管理人による確認を必要とする。' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    あなたの投稿はコミュニティにフラグを付けられました。受信トレイに確認してください。

    ' user_must_edit: '

    この投稿はコミュニティにフラグを付けられまして、非表示されています。

    ' archetypes: regular: @@ -445,23 +441,18 @@ ja: user_to_user_private_messages: title: "ユーザ to ユーザ" xaxis: "日" - yaxis: "プライベートメッセージの数" system_private_messages: title: "システム" xaxis: "日" - yaxis: "プライベートメッセージの数" moderator_warning_private_messages: title: "モデレータ警告" xaxis: "日" - yaxis: "プライベートメッセージの数" notify_moderators_private_messages: title: "管理人に通知" xaxis: "日" - yaxis: "プライベートメッセージの数" notify_user_private_messages: title: "ユーザ通知" xaxis: "日" - yaxis: "プライベートメッセージの数" top_referrers: title: "トップリファラ" xaxis: "ユーザ" @@ -539,7 +530,6 @@ ja: title_nag: "サイトの名前が正しくありません。サイトの設定で更新してください" site_description_missing: "検索結果に表示される説明文を入力してください。サイトの設定で更新してください" consumer_email_warning: "サイトはメール送信に Gmail (または他のカスタムメールサービス) を利用するように設定されています。Gmail で送信可能なメール数には制限があります。メールを確実に送信するために mandrill.com などのメールサービスプロバイダーのり用を検討してください。" - site_contact_username_warning: "重要な自動的に送信されるプライベートメッセージを送信するために、フレンドリーなスタッフ名を入力してください。サイトの設定で更新してください" notification_email_warning: "通知用メールがあなたのドメインで有効なメールアドレスから送信されていません。メール配信が不安定になり、信頼性が低くなります。\nサイトの設定で更新してください" content_types: education_new_reply: @@ -553,10 +543,8 @@ ja: description: "新規ユーザのための重要な情報とガイダンス" welcome_user: title: "ウェルカムメッセージ: 新規ユーザ" - description: "サインアップした全ての新規ユーザに自動送信されるプライベートメッセージの内容。" welcome_invite: title: "ウェルカムメッセージ: 招待ユーザ" - description: "ユーザより招待された全ての外部ユーザに自動送信されるプライベートメッセージの内容。" login_required_welcome_message: title: "ウェルカムメッセージ: 要ログイン" description: "'login required' 設定有効時に、ユーザに対してログインを促すメッセージの内容。" @@ -578,11 +566,10 @@ ja: default_locale: "この Discourse インスタンスのデフォルト言語 (ISO 639-1 Code)" allow_user_locale: "ユーザーが各自の言語設定を選択できるようにする" min_post_length: "投稿を許可する最少の文字数" - min_private_message_post_length: "プライベートメッセージの投稿を許可する最少の文字数" + min_first_post_length: "最初の投稿(投稿本文)を許可する最少の文字数" max_post_length: "投稿を許可する最大の文字数" min_topic_title_length: "トピックタイトルとして許可する最小の文字数" max_topic_title_length: "トピックタイトルとして許可する最大の文字数" - min_private_message_title_length: "プライベートメッセージのタイトルとして許可する最少の文字数" min_search_term_length: "検索ワードとして有効にする最小の文字数" allow_uncategorized_topics: "カテゴリなしのトピック作成を許可するか。" uncategorized_description: "未分類カテゴリについての説明。存在しない場合は空白のままにします" @@ -616,7 +603,6 @@ ja: digest_logo_url: "サイトのメールに使用されるロゴです。空白の場合`logo_url`が使用されます。 eg: http://example.com/logo.png" logo_small_url: "スクロールしたときに表示されるトップ左上のロゴ画像です。空白の場合、ホームグリフが表示されます" favicon_url: "サイトの favicon。参照: http://en.wikipedia.org/wiki/Favicon" - mobile_logo_url: "モバイルサイトでトップ左上に固定で表示されるロゴです。空白の場合、サイトタイトルが表示されます" apple_touch_icon_url: "Apple のタッチデバイス用のアイコン。推奨サイズは 144px x 144px" notification_email: "The from: email address used when sending all essential system emails. The domain specified here must have SPF, DKIM and reverse PTR records set correctly for email to arrive." email_custom_headers: "カスタムメールヘッダのリスト (パイプ(バーティカルバー) 区切り)" @@ -627,7 +613,6 @@ ja: summary_likes_required: "'トピックサマリー'が有効になるために必要な最小「いいね!」数" summary_percent_filter: "ユーザが'トピックサマリー'をクリックしたとき, 上位何パーセントのポストを表示するか" summary_max_results: "'トピックサマリー'として返却される最大ポスト数" - enable_private_messages: "トラストレベル1のユーザーにプライベートメッセージの作成と受信を許可する" enable_long_polling: "通知用のメッセージバスによるロングポーリングの利用を許可する" long_polling_base_url: "ロングポーリングのベースURL(CDNが動的コンテンツを配信している場合、これをoriginに指定してください) eg: http://origin.site.com" long_polling_interval: "ユーザに送信するデータが存在しないとき、サーバが待機する時間(ログインユーザーのみ)" @@ -660,8 +645,6 @@ ja: post_menu_hidden_items: "展開記号がクリックされない限り、ポストのメニュー項目を隠します" share_links: "シェアダイアログに表示する項目、表示順を指定" track_external_right_clicks: "右クリックされた外部リンクをトラックする (例: 新しいタブで開く)。URL のリライトを要するためデフォルトでは無効化されています" - site_contact_username: "自動送信されるプライベートメッセージを送信する有効なスタッフユーザ名。空白の場合、システムアカウントが使用されます" - send_welcome_message: "全ての新規ユーザにクイックスタートガイド付きのウェルカムプライベートメッセージを送信する" suppress_reply_directly_below: "ポストに回答が1つしかない場合、ポストの回答数を表示しない" suppress_reply_directly_above: "ポストに回答が1つしかない場合、ポストのin-reply-toを表示しない" suppress_reply_when_quoting: "ポストが引用返信だった場合、ポストのin-reply-toを表示しない" @@ -696,7 +679,6 @@ ja: sso_secret: "SSO認証情報の暗号化に利用する秘密の文字列。10文字以上である必要があります" sso_overrides_email: "SSOペイロードから取得した外部サイトのメールアドレスでローカルのメールアドレスを上書きする(警告: 不一致が原因でローカルのメールアドレスの正規化が発生する可能性があります)" sso_overrides_username: "SSOペイロードから取得した外部サイトのユーザ名でローカルのユーザ名を上書きする(警告: 不一致が原因でユーザ名の長さ/要件に違いがでる可能性があります) " - sso_overrides_name: "SSOペイロードから取得した外部サイトの名前でローカルの名前を上書きする(警告: 不一致が原因でユーザの正規化が発生する可能性があります) " sso_overrides_avatar: "SSOペイロードから取得した外部サイトのプロフィール画像でローカルのプロフィール画像を上書きする。有効にする場合、プロフィール画像のアップデートを無効にする事を強く薦めます" enable_local_logins: "ローカルのユーザ名、パスワードでのログインを有効にする (注意: 招待を使用するには有効にする必要があります)" allow_new_registrations: "新規ユーザー登録を許可。誰でもユーザーを作れるのを防ぐには、チェックを外してください。" @@ -717,6 +699,7 @@ ja: enable_s3_backups: "完了時にS3にバックアップをアップロードします。重要: 有効なS3 credentialsがファイル設定に必要です" s3_backup_bucket: "バックアップを保持するバケット。 警告: 必ずプライベートバケットになっていることを確認してください" active_user_rate_limit_secs: "'last_seen_at' フィールドを更新する頻度 (秒)" + verbose_localization: "ローカライゼーションtipsを展開するUIを表示する" previous_visit_timeout_hours: "'previous' visit とみなす時間 (時間)" rate_limit_create_topic: "トピック作成後、次のトピックを作成するまでにユーザが待たなければならない時間 (秒)" rate_limit_create_post: "ポスト投稿後、次のポストを投稿するまでにユーザが待たなければならない時間 (秒)" @@ -727,7 +710,6 @@ ja: max_bookmarks_per_day: "ユーザが一日にブックマークできる最大数" max_edits_per_day: "ユーザが一日に編集できる最大数" max_topics_per_day: "ユーザが一日に作成できるトピックの最大数" - max_private_messages_per_day: "ユーザが一日に作成できるプライベートメッセージの最大数" max_invites_per_day: "ユーザが一日に招待できる最大数" suggested_topics: "トピック下部に表示されるおすすめトピックの数" limit_suggested_to_category: "現在参照しているトピックのカテゴリからトピックをサジェストする" @@ -777,7 +759,6 @@ ja: email_time_window_mins: "ユーザによるポストの最終編集チャンスを与えるために、通知用メール送信までに待つ時間 (分)" email_posts_context: "通知メールのコンテンツに含める回答の数" flush_timings_secs: "サーバにタイミングデータを送信する頻度 (秒)" - max_word_length: "トピックタイトルの最大文字数" title_min_entropy: "トピックタイトルの最小許容エントロピー (ユニークキャラクターや英語以外の単語を含むとより大きな値になります)" body_min_entropy: "ポスト本文の最小許容エントロピー (ユニークキャラクターや英語以外の単語を含むとより大きな値になります)" title_fancy_entities: "トピックタイトルの一般的な ASCII 文字をファンシーな HTML エンティティに変換する; SmartyPants http://daringfireball.net/projects/smartypants/" @@ -858,9 +839,45 @@ ja: dominating_topic_minimum_percent: "ユーザがトピックを占拠しているとリマインドを行う、ポスト投稿支配率 " suppress_uncategorized_badge: "トピック一覧でカテゴライズされていないトピックのバッジは表示しない" global_notice: "緊急の内容を表示します。全ての訪問者の緊急バナーで注意を行います。隠すには空白に変更してください(HTMLが許可されています)" + enable_names: "ユーザーのプロフィール、ユーザーカード、メールアドレスでのフルネームを表示します。無効にすると、フルネームは非表示になります" + display_name_on_posts: "@usernameに加えて、ポストにユーザのフルネームを表示する" + invites_per_page: "ユーザページに表示されるデフォルトの招待数" short_progress_text_threshold: "プログレスバーが現在のポスト番号のみを表示するようになるポスト数のしきい値。プログレスバーの幅を変更した際には、この値を変更することをおすすめします。" default_code_lang: "Github コードブロックにデフォルトで適用されるプログラム言語シンタックスハイライト (lang-auto, ruby, python 等)" + warn_reviving_old_topic_age: "最後の返信がこの設定よりも古いトピックに返信すると、警告を表示します。0を設定すると無効になります" + autohighlight_all_code: "明示的に言語を指定しなくても、全てのコードブロックにコードハイライトを強制的に適用する" + highlighted_languages: "適用するシンタックスハイライトルール(警告: あまりに多くの言語を含むとパフォーマンスに影響を与えます) デモ: https://highlightjs.org/static/demo/ " + embeddable_host: "このDiscourseフォーラムのコメントを埋め込む事が出来るHost。Host名のみ、http:// で始めない" + feed_polling_enabled: "EMBEDDING ONLY: ポストとしてRSS/Atomフィードを埋め込むかどうか" + feed_polling_url: "EMBEDDING ONLY: RSS/ATOMフィードのURLを埋め込む事が出来ます" + embed_by_username: "embedされたトピックの作成者として表示されるDiscourseユーザー名" + embed_username_key_from_feed: "フィードからDsicourseユーザ名をプルするキー" + embed_truncate: "embedされた投稿をtruncateする" + embed_category: "embedトピックのカテゴリ" + embed_whitelist_selector: "embedを許可するエレメントのCSS Selector" + embed_blacklist_selector: "embedから削除するエレメントのCSS Selector" + notify_about_flags_after: "この数時間後に処理されていないフラグがある場合は、contact_emailにメールを送信する。0を設定すると無効になります" + enable_cdn_js_debugging: "全てのJSにcrossorigin権限を追加することで、/logsに適切なエラーを表示することを許可する" + show_create_topics_notice: "サイトにpublicなトピックが5よりも少ない場合、トピックを作成するための通知が管理者に表示される" + vacuum_db_days: "DB領域を再利用するため、migration後にVACUUM FULL ANALYZEを実行する(0を設定すると無効化)" + prevent_anons_from_downloading_files: "匿名ユーザーが添付ファイルをダウンロードするのを防止。警告: 画像ではなく、添付ファイルとして投稿された全てのファイルが対象です" enable_emoji: "絵文字を有効にする" + emoji_set: "How would you like your emoji?" + enforce_square_emoji: "絵文字のアスペクト比を強制的に揃える" + errors: + invalid_email: "不正なメールアドレスです" + invalid_username: "そのユーザ名のユーザは存在しません" + invalid_integer_min_max: "値は%{min}と%{max}の間である必要があります" + invalid_integer_min: "値は%{min}以上必要です" + invalid_integer_max: "値は%{max}以上にすることはできません" + invalid_integer: "値は整数で入力してください" + regex_mismatch: "値は、指定されたフォーマットと一致しませんでした" + must_include_latest: "トップメニューは'latest'タブを含む必要があります" + invalid_string: "不正な値です" + invalid_string_min_max: "文字数は%{min}と%{max}の間である必要があります" + invalid_string_min: "少なくとも%{min}文字は必要です" + invalid_string_max: "%{max}文字以下である必要があります" + invalid_reply_by_email_address: "値は'%{reply_key}'を含む必要があり、通知メールとは異なる必要があります" notification_types: mentioned: "%{link} で %{display_username} があなたをタグ付けしました" liked: "%{link} で %{display_username} があなたのポストを「いいね!」しました" @@ -869,38 +886,88 @@ ja: edited: "%{link} で %{display_username} があなたのポストを編集しました" posted: "%{link} に %{display_username} がポストを投稿しました" moved_post: "%{display_username} があなたのポストを %{link} に移動しました" - private_message: "%{display_username} があなたにプラベートメッセージを送信しました: %{link}" - invited_to_private_message: "%{display_username} がプライベートメッセージにあなたを招待しました: %{link}" invitee_accepted: "%{display_username} があなたの招待を受けました" + linked: "%{display_username} は%{link}であなたをリンクしました" + granted_badge: "あなたは%{link}を獲得しました" search: + within_post: "#%{post_number} by %{username}" types: category: 'カテゴリ' + topic: '結果' user: 'ユーザ' + sso: + not_found: "アカウントを検索、作成することができません。サイト管理者に連絡してください" + account_not_approved: "アカウントの承認は保留され、承認されると通知メールが届きます" + unknown_error: "情報の更新中にエラーが発生しました。サイト管理者に連絡してください" + timeout_expired: "ログインがタイムアウトしました。もう一度ログインを試してください" original_poster: "Original Poster" most_posts: "Most Posts" most_recent_poster: "Most Recent Poster" frequent_poster: "Frequent Poster" + redirected_to_top_reasons: + new_user: "コミュニティへようこそ! これらが最も人気な最近のトピックです" + not_seen_in_a_month: "お帰りなさい! 最近見かけませんでしたね。 これらがあなたが離れてから最も人気のトピックです" + move_posts: + new_topic_moderator_post: + other: "%{count} 件のポストを新しいトピックに移動しました: %{topic_link}" + existing_topic_moderator_post: + other: "%{count} 件のポストを既存のトピックに移動しました: %{topic_link}" + change_owner: + post_revision_text: "%{old_user} から %{new_user}にownershipを移動させました" + emoji: + errors: + name_already_exists: "申し訳ありません。'%{name}'は既に別の絵文字で使われています" + error_while_storing_emoji: "申し訳ありません、絵文字の保存中にエラーが発生しました" topic_statuses: archived_enabled: "このトピックはアーカイブされました。すべての内容は凍結されており、一切の変更ができません。" archived_disabled: "このトピックはアーカイブ解除されました。凍結解除され、変更可能になりました。" closed_enabled: "このトピックは終了しました。新たに回答を投稿することはできません。" closed_disabled: "このトピックはオープンされました。新たに回答を投稿することができます。" + autoclosed_enabled_days: + other: "このトピックは%{count}日が経過したので自動的に終了しました。新たに回答を投稿することはできません" + autoclosed_enabled_hours: + other: "このトピックは%{count}時間が経過したので自動的に終了しました。新たに回答を投稿することはできません" + autoclosed_enabled_minutes: + other: "このトピックは%{count}分が経過したので自動的に終了しました。新たに回答を投稿することはできません" + autoclosed_enabled_lastpost_days: + other: "このトピックは最後の返信から%{count}日が経過したので自動的に終了しました。新たに回答を投稿することはできません" + autoclosed_enabled_lastpost_hours: + other: "このトピックは最後の返信から%{count}時間が経過したので自動的に終了しました。新たに回答を投稿することはできません" + autoclosed_enabled_lastpost_minutes: + other: "このトピックは最後の返信から%{count}分が経過したので自動的に終了しました。新たに回答を投稿することはできません" autoclosed_disabled: "このトピックは再オープンされました。新しい回答が投稿できるようになりました。。" + autoclosed_disabled_lastpost: "このトピックは再オープンされました。新しい回答が投稿できます" + pinned_enabled: "このトピックはピン留めされました。スタッフによって全てのユーザのピン留めが解除されるか、ユーザ自身がピン留め解除するまで、カテゴリのトップに表示されます" pinned_disabled: "このトピックのピン留めが解除されました。以後、カテゴリのトップに表示されません。" + pinned_globally_enabled: "このトピックはグローバルにピン留めされました。スタッフによって全てのユーザのピン留めが解除されるか、ユーザ自身がピン留め解除するまで、全てのカテゴリとトピック一覧のトップに表示されます" + pinned_globally_disabled: "このトピックのピン留めが解除されました。以後、カテゴリのトップに表示されません" + visible_enabled: "このトピックはリストされています。トピックリストに表示されます" + visible_disabled: "このトピックは非表示状態になりました。トピックリストには表示されません。直接リンク経由でのみこのトピックにアクセスできます" login: not_approved: "あなたのアカウントはまだ承認されていません。ログイン可能になった際にメールで通知いたします。" incorrect_username_email_or_password: "ユーザネーム、メールアドレス、またはパスワードが違います" wait_approval: "サインアップありがとうござました。アカウントが承認され次第メールにて通知いたします。" active: "アカウントが利用可能になりました。" + activate_email: "

    ほぼ完了です! アクティベーションメールを %{email}に送りました。アクティベートするために、メール内の指示に従ってください。

    もし届かない場合、迷惑メールフォルダをチェックするか、アクティベーションメールを再送するために再度ログインしてください

    " not_activated: "まだログインできません。メールを送信済ですので、メールの指示に従ってあなたのアカウントを有効にしてください。" + not_allowed_from_ip_address: "そのIPアドレスからは%{username} としてログインできません" + admin_not_allowed_from_ip_address: "そのIPアドレスからは管理者としてログインできません" suspended: "%{date} までログインできません。" suspended_with_reason: "%{date} までログインできません。アカウントがサスペンドされた理由は次の通りです: %{reason}" errors: "%{errors}" not_available: "利用できません。%{suggestion} を試してみては?" something_already_taken: "エラーが発生しました。ユーザ名またはメールアドレスが既に使用中の可能性があります。パスワードリセットを行ってください。" + omniauth_error: "あなたの アカウントの認可に失敗しました。アカウントの認可を許可したか確認してください" omniauth_error_unknown: "ログインに失敗しました。もう一度試してください。" + new_registrations_disabled: "新規登録は、この時点で許可されていません" + password_too_long: "パスワードは200文字までです" + missing_user_field: "全てのユーザーフィールドの入力が終わっていません" + close_window: "ログインは完了しました。このウィンドウを閉じて続けてください" user: + no_accounts_associated: "関連づけられたアカウントはありませんでした" username: + short: "少なくとも%{min}文字は必要です" + long: "%{max}文字以下である必要があります" characters: "は英数字のみである必要があります" unique: "はユニークである必要があります" blank: "は空であってはなりません" @@ -910,10 +977,67 @@ ja: blocked: "は許可されていません。" ip_address: blocked: "はブロックされてます。" + invite_mailer: + subject_template: "%{invitee_name} があなたを %{site_domain_name}の'%{topic_title}'に招待しました" + text_body_template: | + %{invitee_name} があなたを招待しました + + > %{site_title} -- %{site_description} + + > **%{topic_title}** + > + > %{topic_excerpt} + + もし興味があれば下のリンクをクリックしてください: + + %{invite_link} + + これは信頼されたユーザからの招待のため、すぐに議論に返答することができます invite_forum_mailer: subject_template: "%{invitee_name} あなたを %{site_domain_name}に招待しました。" + text_body_template: | + %{invitee_name} があなたを招待しました + + > %{site_title} -- %{site_description} + + もし興味があれば下のリンクをクリックしてください: + + %{invite_link} + + これは信頼されたユーザからの招待のため、あなたはログインする必要がありません + invite_password_instructions: + subject_template: "%{site_name} アカウントのパスワードを設定" + text_body_template: | + %{site_name}の招待を受けてくれてありがとうございます -- ようこそ! + + 再度ログインする場合は、以下のリンクをクリックし、パスワードを設定してください: + %{base_url}/users/password-reset/%{email_token} test_mailer: subject_template: "[%{site_name}] メール送信テスト" + new_version_mailer: + subject_template: "[%{site_name}] New Discourse version, update available" + new_version_mailer_with_notes: + subject_template: "[%{site_name}] update available" + flags_reminder: + flags_were_submitted: + other: "これらのフラグは%{count}時間以上前に作成されました" + please_review: "これを確認してください" + post_number: "投稿" + how_to_disable: ' "notify about flags after"設定でこのリマインダーを停止、頻度を変更することができます' + subject_template: + other: "%{count} 個のフラグが判断待ちです" + flag_reasons: + off_topic: "あなたの投稿やトピックは「オフトピック」としてフラグされています" + inappropriate: "あなたの投稿は「不適切」にフラグされています。コミュニティは攻撃的、 [コミュニティガイドライン](/guidelines)に違反だと判断しました" + spam: "あなたの投稿は「スパム」にフラグされています。コミュニティは営利目的、宣伝目的の書き込みの可能性があると判断しました" + notify_moderators: "あなたの投稿は「モデレータに通知」にフラグされています。コミュニティはモデレータの確認が必要の内容を含んでいると判断しました" + flags_dispositions: + agreed: "伝えてくれてありがとうございます。問題に同意し、調査しています" + agreed_and_deleted: "伝えてくれてありがとうございます。問題に同意し、投稿を削除します" + disagreed: "伝えてくれてありがとうございます。調査しています" + deferred: "伝えてくれてありがとうございます。調査しています" + deferred_and_deleted: "伝えてくれてありがとうございます。投稿を削除しました" + temporarily_closed_due_to_flags: "多くのコミュニティフラッグのため、トピックは一時的に停止されました" system_messages: post_hidden: subject_template: "コミュニティによるフラグによりポストが非表示になりました" @@ -921,15 +1045,155 @@ ja: subject_template: "%{site_name} へようこそ!" welcome_invite: subject_template: "%{site_name}へようこそ!" + backup_succeeded: + subject_template: "バックアップは正常に完了しました" + text_body_template: "バックアップが完了しました.\n [admin > backup section](/admin/backups) から新しいバックアップがダウンロードできます" + backup_failed: + subject_template: "バックアップ失敗" + text_body_template: | + バックアップが失敗しました + + ログ: + + ``` + %{logs} + ``` restore_succeeded: subject_template: "復元が正常に完了しました" text_body_template: "復元に成功しました" restore_failed: subject_template: "復元に失敗しました" + text_body_template: | + リストアが失敗しました + + ログ: + + ``` + %{logs} + ``` + bulk_invite_succeeded: + subject_template: "一括ユーザー招待が正常に処理されました" + text_body_template: "一括ユーザー招待が処理され、%{sent}通の招待メールを送信しました" + bulk_invite_failed: + subject_template: "一括ユーザー招待がエラーを含み処理されました" + text_body_template: | + 一括ユーザ招待が処理され、%{sent} 通の招待メールが送信され、%{failed}個のエラーが発生しました + + ログ: + + ``` + %{logs} + ``` + csv_export_succeeded: + subject_template: "データ出力完了" + text_body_template: | + データ出力が完了しました! :dvd: + + %{file_name} (%{file_size}) + + このダウンロードリンクは48時間有効です + csv_export_failed: + subject_template: "データ出力失敗" + text_body_template: "申し訳ありません。データ出力に失敗しました。ログを確認するかスタッフメンバーに連絡してください" + email_reject_trust_level: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした + + あなたのアカウントは、このアドレスに新しいトピックを投稿するために必要なトラストレベルに達していませんでした。不明な点がある場合は、スタッフメンバーに連絡してください。 + email_reject_no_account: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした。 + + このメールアドレスを持つユーザーアカウントがありませんでした。違うメールアドレスから送信するか、スタッフメンバーに連絡してください。 + email_reject_empty: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした + + メールから本文を見つける事ができませんでした。返信はメールのトップにあることを確認してください。インライン回答を見つける事はできません。 + + もし、本文を含んでいるのにこれを受け取った場合、メールにHTMLコンテンツを含んでください。(プレーンテキストだけではなく) + email_reject_parsing: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした + + メールから回答を見つける事ができませんでした。返信はメールのトップにあることを確認してください。インライン回答を見つける事はできません。 + email_reject_post_error: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした + + 複雑な書式、大きすぎるメッセージ、小さすぎるメッセージなど、複数の原因が考えられます。もう一度試してください。もし続くようであれば、ウェブサイトから投稿してください + email_reject_post_error_specified: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした + + 理由: + + %{post_error} + + 問題が修正できたら、もう一度試してください + email_reject_reply_key: + text_body_template: "申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした。 \n\n提供されたreply keyが無効または不明のため、このメールがどの返答なのかがわかりません。スタッフメンバーに連絡してください。\n" + email_reject_destination: + text_body_template: "申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした。 \n\n宛先が認識されませんでした。宛先(CC,BCCではなく)にサイトのアドレスがあること、スタッフから提供された正しいメールアドレスに送信していることを確認してください。\n\n" + email_reject_topic_not_found: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした。 + + トピックが見つかりませんでした。削除された可能性があります。不明な点がある場合は、スタッフメンバーに連絡してください。 + email_reject_topic_closed: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした。 + + トピックは停止されています。不明な点がある場合は、スタッフメンバーに連絡してください。 + email_reject_auto_generated: + text_body_template: | + 申し訳ありません,あなたの %{destination} へのメール(titled %{former_title}) は動きませんでした。 + + あなたの返信は自動生成されています。自動生成された返信は受け付けていません。不明な点がある場合は、スタッフメンバーに連絡してください。 + email_error_notification: + text_body_template: | + メールをポーリングするPOPサーバで認証エラーが発生しました。 + + [the site settings](%{base_url}/admin/site_settings/category/email)で、POP認証の設定を確認してください。 too_many_spam_flags: subject_template: "新規アカウントのブロック" + text_body_template: | + こんにちは + + コミュニティからのフラグによりあなたの投稿が非表示になったことをお知らせするために、%{site_name} から自動的に送信されています + + スタッフメンバーが確認するまで、あなたのアカウントはトピックの作成、返答がブロックされています。 + + 詳細については[コミュニティガイドライン](%{base_url}/guidelines)を参照してください。 blocked_by_staff: subject_template: "アカウントのブロック" + text_body_template: | + こんにちは + + スタッフメンバーによってブロックされたことをお知らせするために、%{site_name} から自動的に送信されています。 + + 詳細については[コミュニティガイドライン](%{base_url}/guidelines)を参照してください。 + user_automatically_blocked: + subject_template: "コミュニティフラッグによって新たにブロックされたユーザ%{username}" + text_body_template: |+ + これは自動送信メッセージです。 + + 複数のユーザが%{username}'のポストにフラグを立てているため、新規ユーザ[%{username}](%{base_url}%{user_url})は自動的にブロックされました。 + + フラグを確認してください(%{base_url}/admin/flags)。もし%{username}が間違ってブロックされた場合は、 このユーザの管理ページ(%{base_url}%{user_url})でブロック解除ボタンをクリックしてください。 + + この閾値はサイト設定の`block_new_user`で変更できます。 + + spam_post_blocked: + subject_template: "同一リンクの連続投稿による新規ユーザ %{username} のブロック" + text_body_template: | + これは自動送信メッセージです。 + + 新規ユーザ[%{username}](%{base_url}%{user_url})は、%{domains}へのリンクを複数投稿しようとしましたが、スパムを避けるために投稿をブロックしました。ユーザは%{domains}のリンクを含まない投稿であれば引き続き作成可能です。 + + ユーザを確認してください。(%{base_url}%{user_url}) + + この設定はサイト設定の `newuser_spam_host_threshold` と `white_listed_spam_host_domains` で変更できます。 unblocked: subject_template: "アカウントのブロック解除" text_body_template: | @@ -945,8 +1209,12 @@ ja: 新たなユーザが、フォーラム参加のための承認(もしくは拒否)待ち状態になっています。 [管理者セクションで確認する](/admin/users/list/pending). + download_remote_images_disabled: + subject_template: "リモート画像のダウンロードを無効化" + text_body_template: "'download_remote_images_threshold'の制限に達したため、`download_remote_images_to_local`の設定は無効になりました" unsubscribe_link: "メール解除は [ユーザ設定画面](%{user_preferences_url}) で行ってください。" subject_re: "Re:" + subject_pm: "[プライベートメッセージ]" user_notifications: previous_discussion: "以前の回答" unsubscribe: @@ -989,16 +1257,28 @@ ja: %{context} + --- + %{respond_instructions} + user_posted_pm: + subject_template: "[%{site_name}] [プライベートメッセージ] %{topic_title}" + text_body_template: | + %{message} + + %{context} + --- %{respond_instructions} digest: - subject_template: "[%{site_name}] メールマガジン【%{date}】" + why: "あなたが最後にアクセスした %{last_seen_at} 以降の %{site_link} のまとめです" new_activity: "あなたのトピックおよびポストにおけるアクティビティ:" top_topics: "人気の投稿" other_new_topics: "人気のトピック" + unsubscribe: "このダイジェストは、あなたからのアクセスがしばらくない場合、%{site_link}から送信されます。配信停止はこちら %{unsubscribe_link}" click_here: "ここをクリック" from: "%{site_name} ダイジェスト" read_more: "もっと読む" + more_topics: " %{new_topics_since_seen}個の新しいトピックがありました" + more_topics_category: "もっと新しいトピック:" posts: other: "%{count} 投稿" forgot_password: @@ -1010,6 +1290,15 @@ ja: 新たなパスワードを設定する場合は次のリンクをクリックしてください: %{base_url}/users/password-reset/%{email_token} + set_password: + subject_template: "[%{site_name}] パスワード設定" + account_created: + subject_template: "[%{site_name}] あなたの新しいアカウント" + text_body_template: | + %{site_name}のあなたの新しいアカウントが作成されました。 + + 以下のリンクをクリックしてパスワードを設定してください: + %{base_url}/users/password-reset/%{email_token} authorize_email: subject_template: "[%{site_name}] メールアドレスの確認" text_body_template: | @@ -1029,15 +1318,59 @@ ja: もし上記リンクがクリックできない場合は、ブラウザのアドレスバーにリンクアドレスをコピー&ペーストしてください。 page_not_found: title: "リクエストしたページは存在しないかモデレータによって削除されました。" + popular_topics: "人気" + recent_topics: "最新" + see_more: "もっと見る" + search_title: "サイトを検索" + search_google: "Google" + login_required: + welcome_message: | + #[%{title}へようこそ](#welcome) + アカウントが必要です。アカウントを作成するかログインしてください + terms_of_service: + title: "利用規約" + signup_form_message: 'Terms of Serviceを読んで同意しました' deleted: 'deleted' upload: + edit_reason: "ダウンロードされた画像のコピー" unauthorized: "申し訳ありません、ファイルのアップロードが拒否されました (サポートするファイルの拡張子: %{authorized_extensions})." pasted_image_filename: "貼り付けた画像" + store_failure: "ユーザ#%{user_id}のアップロード#%{upload_id} の保存に失敗しました" + attachments: + too_large: "申し訳ありませんが、ファイルが大きすぎてアップロードできません (最大サイズは %{max_size_kb}KB です)" images: + too_large: "申し訳ありませんが、画像が大きすぎてアップロードできません (最大サイズは %{max_size_kb}KB です)。リサイズして再アップロードしてください" fetch_failure: "申し訳ありませんが、画像取得中にエラーが発生しました。" unknown_image_type: "申し訳ありませんが、アップロードしようとしたファイルは画像ではないようです。" size_not_found: "申し訳ありませんが、画像のサイズを判定できませんでした。画像が壊れているかもしれません。" flag_reason: sockpuppet: "新規ユーザがトピックを作成し、同じ IP アドレスより別の新規ユーザが回答を投稿しました。サイトの flag_sockpuppets 設定を確認してください。" + spam_hosts: "この新規ユーザは同一ドメインへのリンクを含むポストを複数作成しようとしました。サイトの newuser_spam_host_threshold 設定を確認してください" + email_log: + no_user: "id %{user_id}のユーザーは見つかりませんでした" + seen_recently: "最近訪れたユーザ" + post_not_found: "id %{post_id}のポストは見つかりません" + notification_already_read: "メールが既読になったという通知です" + topic_nil: "post.topic is nil" + post_deleted: "投稿は投稿者によって削除されました" + already_read: "ユーザーはポストを既に読んだ" + message_blank: "メッセージが空" + message_to_blank: "メッセージの宛先(to)が空" + color_schemes: + base_theme_name: "ベース" + about: "About" + guidelines: "ガイドライン" + privacy: "プライバシー" + edit_this_page: "ページを編集" + csv_export: + boolean_yes: "はい" + boolean_no: "いいえ" + static_topic_first_reply: |+ + %{page_name}ページのコンテンツを編集するには、このトピックの最初の投稿を編集してください + guidelines_topic: title: "よくある質問/コミュニティガイドライン" + tos_topic: + title: "利用規約" + privacy_topic: + title: "プライバシーポリシー" diff --git a/config/locales/server.ko.yml b/config/locales/server.ko.yml index 3d0593028b..87a143b3cb 100644 --- a/config/locales/server.ko.yml +++ b/config/locales/server.ko.yml @@ -84,7 +84,6 @@ ko: num_posts: "게시글 수:" num_participants: "참여자:" read_full_topic: "전체 토픽 읽기" - private_message_abbrev: "개인 메시지" rss_description: latest: "최신 토픽" hot: "인기 토픽들" @@ -318,9 +317,7 @@ ko: description: '이 게시물은 다른 사용자들에게 공격적이나 모욕적 또는 침해적인 글을 담고 있습니다.' long_form: '부적절함으로 신고하기' notify_user: - title: '비공개 메세지 @{{username}}' description: '이 게시물에 내가 작성자와 직접 대화하고 싶은 내용이 있습니다. 신고에서 제외해주세요.' - long_form: '비공개 메세지' email_title: '"%{title}" 내의 당신의 게시글' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -359,7 +356,6 @@ ko: email_title: '토픽 "%{title}" 은 운영자의 확인이 필요합니다' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    회원님의 포스트가 신고접수 되었습니다. 개인 메시지를 확인해주세요.

    ' user_must_edit: '

    게시물이 신고되었기 때문에 일시적으로 보이지 않습니다.

    ' archetypes: regular: @@ -423,23 +419,18 @@ ko: user_to_user_private_messages: title: "사용자대 사용자" xaxis: "일" - yaxis: "개인 메세지 수" system_private_messages: title: "시스템" xaxis: "일" - yaxis: "개인 메세지 수" moderator_warning_private_messages: title: "운영자 주의" xaxis: "일" - yaxis: "개인 메세지 수" notify_moderators_private_messages: title: "운영자에게 알리기" xaxis: "일" - yaxis: "개인 메세지 수" notify_user_private_messages: title: "사용자에게 알리기" xaxis: "일" - yaxis: "개인 메세지 수" top_referrers: title: "가장 많이 언급된 사용자들" xaxis: "사용자" @@ -485,10 +476,8 @@ ko: description: "새로운 사용자를 위한 가이드와 팁." welcome_user: title: "환영: 새로운 사용자" - description: "새로운 사용자가 가입하면 자동으로 개인 메시지를 보냅니다." welcome_invite: title: "환영: 초대된 사용자" - description: "새로운 사용자가 초대고 수락하면 자동으로 개인 메시지를 보냅니다." login_required_welcome_message: title: "로그인 필요: Welcome Message" description: "'login required' 설정이 활성화 되어있으면 웰컴 메시지가 로그인 되지 않은 사용자들에게 보여집니다." @@ -510,11 +499,9 @@ ko: default_locale: "Discourse 인스턴스가 사용하는 기본 언어 (ISO 639-1 Code)" allow_user_locale: "사용자에게 자신이 원하는 언어를 선택할 수 있는 옵션을 제공한다." min_post_length: "포스트의 최소 글자 수" - min_private_message_post_length: "개인 메시지를 보내기 위한 최소 글자 수" max_post_length: "포스트의 최대 글자 수" min_topic_title_length: "토픽 제목의 최소 글자 수" max_topic_title_length: "토픽 제목의 최대 글자 수" - min_private_message_title_length: "개인 메시지 제목의 최소 글자 수" min_search_term_length: "검색을 하기 위한 최소 글자 수" allow_uncategorized_topics: "카테고리없이 토픽이 생성되는 것을 허용한다." uncategorized_description: "'카테고리 없음' 카테고리의 설명, 설명을 쓰지 않으려면 빈칸으로 놔둔다." @@ -555,7 +542,6 @@ ko: summary_likes_required: "하나의 토픽에 대하여 요약본 보기 모드가 활성화되기 전까지 요구되는 최소 좋아요 수" summary_percent_filter: "요약본 보기를 클릭시, 글 중에 몇 %의 상위 글을 보여줄 것인가?" summary_max_results: "이 주제에 대한 요약 글 최대 갯수" - enable_private_messages: "신뢰도 1 사용자들만 개인 메세지와 개인 메세지에 대한 답글을 허용합니다" enable_long_polling: "Message bus used for notification can use long polling" anon_polling_interval: "How often should anonymous clients poll in milliseconds" auto_track_topics_after: "토픽이 자동으로 추적되기까지의 기본 시간, 사용자에 따라 재정의 될 수 있음.(밀리초, 0 : 항상, -1 : 안함)" @@ -581,7 +567,6 @@ ko: post_menu: "게시물 메뉴에 어떤 사항들이 무슨 순서로 올라올지 결정합니다. 예: like(좋아요)|edit(수정)|flag(신고)|delete(삭제)|share(공유)|bookmark(북마크)|reply(답글)" share_links: "공유 다이얼로그에 어떤 아이템이 어떤 순서로 나올지 결정" track_external_right_clicks: "우클릭한 외부 링크를 추적한다 (에: 새 탭 열기) 이 설정을 위해선 해당 URL를 다시 써야하는 이유로 기본값은 비활성화이다." - send_welcome_message: "신규 사용자에게 가입 환영 메세지를 보냅니까?" suppress_reply_directly_below: "게시글의 바로 아래에 단 하나의 댓글만 있는 경우 '댓글 수'를 보여주지 않음" suppress_reply_directly_above: "단 하나의 댓글 위의 게시글이 하나 있는 상황에서 '~에 대한 댓글'을 보여주지 않음." max_reply_history: "덧글 확장해서 보여지는 최대 갯수" @@ -607,7 +592,6 @@ ko: sso_url: "SSO endpoint의 URL" sso_overrides_email: "내부에서 사용되는 이메일을 SSO로부터 부여받은 외부 이메일로 사용. (주의 : 내부에서 사용되는 이메일 표준화로 인해 불일치가 발생할 수 있)" sso_overrides_username: "내부에서 사용되는 사용자 이름을 SSO로부터 부여받은 외부 사용자 이름으로 사용. (주의 : 내부에서 사용되는 사용자 이름의 길이/요구조건의 차이점 때문에 불일치가 발생할 수 있)" - sso_overrides_name: "내부에서 사용되는 이름을 SSO로부터 부여받은 외부 이름으로 사용. (주의 : 내부에서 사용되는 이름의 표준화로 인해 불일치가 발생할 수 있)" enable_local_logins: "기존의 로컬 username, password에 의한 인증을 허용. (초대 기능이 필요하다면 이 기능을 허용해야 함)" allow_new_registrations: "새로운 사용자 가입을 허락함. 새로운 계정 생성을 막으려면 체크하지 않음." enable_google_logins: "(deprecated) Google 인증을 허용. OpenID로 인증하는 방식을 Google이 deprecated 하였습니다. 새 설치는 이 방법으로는 동작을 안할 것입니다. 대신에 Google Oauth2 사용할 수 있습니다. 기존 설치된 것은 2015년 4월20일까지 Google Oauth2로 이동해야 합니다." @@ -641,7 +625,6 @@ ko: max_bookmarks_per_day: "사용자가 하루동안 할 수 있는 최대 북마크 개수" max_edits_per_day: "사용자가 하루동안 할 수 있는 최대 편집 수" max_topics_per_day: "사용자가 하루동안 생성할 수 있는 최대 토픽 개수" - max_private_messages_per_day: "사용자가 하루동안 생성할 수 있는 개인 메시지 개수" max_invites_per_day: "하루에 보낼 수 있는 초대장의 최대치입니다." suggested_topics: "토픽 아랫부분에 몇개의 토픽을 제안하여 보여준다." limit_suggested_to_category: "제안된 토픽은 현재의 카테고리에 있는 토픽 중에서만 보여준다." @@ -688,7 +671,6 @@ ko: email_time_window_mins: "알림 메일을 보내기 전 대기 기간(분), 사용자에게 포스트의 변경하고 완료할 수 있는 기회를 준다." email_posts_context: "알림메일의 내용에 추가할 기존 답글 수" flush_timings_secs: "사용자의 이용 시간 데이터를 서버로 보내는 기간(초)" - max_word_length: "토픽 제목에 최대 단어 길이(글자 수)" title_min_entropy: "토픽 제목에 필요한 최소 엔트로피(서로 다른 글자들이 몇개 존재해야하는지)" body_min_entropy: "포스트 본문에 필요한 최소 엔트로피(서로 다른 글자들이 몇개 존재해야하는지)" title_fancy_entities: "토픽 제목에 일반 ASCII 문자로 만든 기호들을 보기 좋은 HTML로 변환시켜준다. 참고: SmartyPants http://daringfireball.net/projects/smartypants/" @@ -771,8 +753,6 @@ ko: edited: "%{display_username} 사용자가 %{link} 에서 당신의 글을 수정하였습니다." posted: "%{display_username} 사용자가 %{link} 에 글을 게시 했습니다." moved_post: "%{display_username} 사용자가 %{link} 에 당신의 게시글을 이동하였습니다." - private_message: "%{display_username} 사용자가 당신에게 개인 메시지를 보냈습니다: %{link}" - invited_to_private_message: "%{display_username} 사용자가 당신에게 개인 메시지로 초대하였습니다: %{link}" invitee_accepted: "%{display_username} 사용자가 당신의 초대를 수락하였습니다." linked: "%{display_username} 사용자가 %{link} 에서 당신을 링크했습니다." granted_badge: "당신은 %{link}를 획득했습니다." @@ -909,20 +889,6 @@ ko: csv_export_failed: subject_template: "데이터 추출 실패" text_body_template: "죄송합니다. 데이터 추출에 실패하였습니다. 로그를 확인하시거나 관리자에게 문의해주세요." - email_reject_no_account: - subject_template: "이메일 문제 -- 모르는 계정" - email_reject_empty: - subject_template: "이메일 문제 -- 컨텐츠 없음" - email_reject_post_error: - subject_template: "이메일 문제 -- 글쓰기 에러" - email_reject_post_error_specified: - subject_template: "이메일 문제 -- 글쓰기 에러" - email_reject_destination: - subject_template: "이메일 오류 -- 잘못된 주소" - email_reject_topic_not_found: - subject_template: "이메일 오류 -- 주제를 찾을 수 없습니다" - email_reject_topic_closed: - subject_template: "이메일 오류 -- 토픽이 닫힘" too_many_spam_flags: subject_template: "새로운 계정은 블락되었습니다." blocked_by_staff: @@ -953,8 +919,6 @@ ko: reply_by_email: "응답하시려면 %{base_url}%{url} 를 방문하시거나 이메일에 답장하세요." visit_link_to_respond: "응답하시려면 %{base_url}%{url} 를 방문하세요." posted_by: "%{username} 사용자가 %{post_date}에 게시하였습니다." - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} 사용자가 당신을 개인 메시지에 초대했습니다. '%{topic_title}'" user_replied: subject_template: "[%{site_name}] '%{topic_title}'에 답글이 달렸습니다" text_body_template: | @@ -1001,7 +965,6 @@ ko: --- %{respond_instructions} digest: - subject_template: "[%{site_name}] 요약 %{date}" new_activity: "당신의 토픽과 게시물에 등록된 새로운 활동:" top_topics: "인기 게시글" other_new_topics: "인기 토픽" @@ -1066,7 +1029,6 @@ ko: sockpuppet: "새로운 사용자가 토픽을 만들었습니다. 그리고 같은 IP를 사용하는 새 사용자가 답글을 달았습니다. 사이트 설정의 flag_sockpuppets를 확인하세요." email_log: no_user: "ID %{user_id} 인 사용자를 찾을 수 없습니다" - suspended_not_pm: "사용자는 정지되어 메세지 불가" seen_recently: "최근 보여진 사용자" post_not_found: "해당하는 ID %{post_id} 을 찾을 수 없습니다. " notification_already_read: "이 알림 이미 읽은 것에 대한 이메일 입니다." diff --git a/config/locales/server.nl.yml b/config/locales/server.nl.yml index 8c0e167331..e2cb1c4304 100644 --- a/config/locales/server.nl.yml +++ b/config/locales/server.nl.yml @@ -127,7 +127,6 @@ nl: num_posts: "Berichten:" num_participants: "Deelnemers:" read_full_topic: "Lees volledige topic" - private_message_abbrev: "PB" rss_description: latest: "Nieuwste topics" hot: "Hot topics" @@ -394,7 +393,6 @@ nl: description: 'Dit bericht bevat inhoud dat iemand als beledigend, discriminerend of kwetsend kan ervaren. Ook kan het een overtreding van de regels zijn.' long_form: 'heeft dit als ongepast gemeld' notify_user: - title: 'Privebericht @{{username}}' description: 'Dit bericht bevat iets waarover ik je graag persoonlijk en privé wil spreken. Dit zet geen vlag.' email_title: 'Uw bericht in ''%{title}''' email_body: "%{link}\n\n%{message}" @@ -432,7 +430,6 @@ nl: email_title: 'De topic "%{title}" moet door een moderator worden bekeken' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Je bericht is gemarkeerd door andere gebruikers van dit forum. Kijk bij je privéberichten om te zien waarom.

    ' user_must_edit: '

    Je bericht heeft het maximaal aantal moderatie-meldingen gekregen en is daarom tijdelijk onzichtbaar.

    ' archetypes: regular: @@ -491,23 +488,18 @@ nl: user_to_user_private_messages: title: "Lid-naar-lid" xaxis: "Dag" - yaxis: "Aantal privéberichten" system_private_messages: title: "Systeem" xaxis: "Dag" - yaxis: "Aantal privéberichten" moderator_warning_private_messages: title: "Moderatiewaarschuwing" xaxis: "Dag" - yaxis: "Aantal privéberichten" notify_moderators_private_messages: title: "Licht moderators in" xaxis: "Dag" - yaxis: "Aantal privéberichten" notify_user_private_messages: title: "Licht persoon in" xaxis: "Dag" - yaxis: "Aantal privé-berichten" top_referrers: title: "Top verwijzingen" xaxis: "Lid" @@ -583,10 +575,8 @@ nl: description: "Hulp en essentiële informatie voor nieuwe leden." welcome_user: title: "Welkom: Nieuw lid" - description: "Een privébericht dat automatisch naar alle nieuwe leden wordt gestuurd als ze zich inschrijven." welcome_invite: title: "Welkom: Uitgenodigd lid" - description: "Een privébericht dat automatisch naar alle nieuwe leden wordt gestuurd als ze ingaan op de uitnodiging om aan het forum deel te nemen door een ander lid." login_required_welcome_message: title: "Inloggen vereist: Welkomstbericht" description: "Welcomstbericht dat getoond wordt aan uitgelogde gebruikers als 'login required' is ingesteld." @@ -605,11 +595,9 @@ nl: default_locale: "De standaard taal van dit Discourse forum (ISO 639-1 code)" allow_user_locale: "Gebruikers kunnen zelf een taal instellen voor de interface van de site" min_post_length: "Minimum lengte van een bericht in tekens" - min_private_message_post_length: "Minimum lengte van een privé-bericht in tekens" max_post_length: "Maximum lengte van een bericht in tekens" min_topic_title_length: "Minimum lengte van een topictitel" max_topic_title_length: "Maximum lengte van een topictitel" - min_private_message_title_length: "Minimum lengte van de titel van een privé-bericht in tekens" min_search_term_length: "Minimum lengte van een zoekterm in tekens" allow_uncategorized_topics: "Sta topics zonder categorie toe" allow_duplicate_topic_titles: "Sta topics met dezelfde titels toe" @@ -658,7 +646,6 @@ nl: sso_url: "URL van single sign on eindpunt" sso_overrides_email: "Gebruikt het mailadres van de SSO service i.p.v. het lokaal opgegegeven adres. (WAARSCHUWING: er kunnen discrepanties ontstaan door normalisatie van lokale mailadressen)" sso_overrides_username: "Gebruikt de gebruikersnaam van de SSO service i.p.v. de lokaal gekozen gebruikersnaam. (WAARSCHUWING: er kunnen discrepanties ontstaan door verschillen in eisen aan bijv. de lengte van de gebruikersnaam)" - sso_overrides_name: "Gebruikt de naam die gebruikt wordt bij de SSO service i.p.v. de lokaal opgegeven naam. (WAARSCHUWING: er kunnen discrepanties ontstaan door normalisatie van lokale namen)" enable_yahoo_logins: "Zet inloggen met Yahoo! aan" google_oauth2_client_id: "Client ID van je Google applicatie." google_oauth2_client_secret: "Client secret van je Google applicatie." @@ -731,8 +718,6 @@ nl: edited: "%{display_username} bewerkte je bericht in %{link}" posted: "%{display_username} heeft een bericht geplaatst in %{link}" moved_post: "%{display_username} verplaatste je bericht naar %{link}" - private_message: "%{display_username} heeft je een privé-bericht gestuurd: %{link}" - invited_to_private_message: "%{display_username} heeft je uitgenodigd voor een privé-bericht: %{link}" invitee_accepted: "%{display_username} heeft je uitnodiging geaccepteerd" linked: "%{display_username} heeft je gelinkt in %{link}" granted_badge: "%{link} is aan jou toegekend" @@ -835,26 +820,6 @@ nl: subject_template: "Welkom bij %{site_name}!" welcome_invite: subject_template: "Welkom bij %{site_name}!" - text_body_template: | - Bedankt voor het accepteren van je uitnodiging voor %{site_name} en welkom op ons forum! - - We hebben een automatisch een gebruikersnaam voor je aangemaakt: **%{username}** en je bent nu ingelogd. Je kan je gebruikersnaam nog veranderen door naar [je gebruikersprofiel][prefs] te gaan. Dit is zeker aan te raden als je gebruikersnaam wat onduidelijk is. - - Om nogmaals in te loggen kan je het volgende doen: - - 1. Gebruik altijd **hetzelfde e-mailadres** als waarop je je originele uitnodiging hebt ontvangen. Anders weten we niet zeker dat jij het bent! - - 2. Maak een uniek wachtwoord aan in [je gebruikersprofiel][prefs] en log daarmee in. - - %{new_user_tips} - - We geloven altijd in [beschaafd gemeenschappelijk gedrag](%{base_url}/faq). - - Nogmaals, welkom! - - (Mocht je, als nieuwe gebruiker, een privebericht aan een van de [stafleden](%{base_url}/about) willen sturen, reageer dan op dit bericht.) - - [prefs]: %{user_preferences_url} backup_succeeded: subject_template: "Backup succesvol uitgevoerd" backup_failed: @@ -877,13 +842,11 @@ nl: csv_export_failed: subject_template: "Export mislukt" email_reject_topic_not_found: - subject_template: "E-mailprobleem -- Topic niet gevonden" text_body_template: | Je e-mailbericht aan %{destination} (titel %{former_title}) is niet goed verwerkt. De betreffende topic is niet gevonden. Als je denkt dat dit niet klopt, neem dan contact op met een staflid. email_reject_topic_closed: - subject_template: "E-mailprobleem --- Topic gesloten" text_body_template: | Je e-mailbericht aan %{destination} (titel %{former_title}) is niet goed verwerkt. @@ -955,12 +918,6 @@ nl: reply_by_email: "Beantwoord deze mail om te reageren op dit forumbericht, of ga naar %{base_url}%{url} in je browser." visit_link_to_respond: "Ga naar %{base_url}%{url} in je browser om te reageren." posted_by: "Geplaatst door %{username} op %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} heeft je uitgenodigd voor een privé-gesprek '%{topic_title}'" - text_body_template: | - %{username} heeft je uitgenodigd voor een privé-gesprek '%{topic_title}' op %{site_name}: - - Bezoek deze link om de topic te bekijken: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1008,7 +965,6 @@ nl: %{respond_instructions} digest: why: "Een korte samenvatting van %{site_link} sinds we je voor het laatst zagen op %{last_seen_at}." - subject_template: "[%{site_name}] Samenvatting voor %{date}" new_activity: "Nieuwe reacties op je topics en berichten:" top_topics: "Populaire berichten" other_new_topics: "Populaire topics" @@ -1095,7 +1051,6 @@ nl: spam_hosts: "Deze nieuwe gebruiker probeerde om meerdere berichten met links naar hetzelfde domein te plaatsen. Zie de newuser_spam_host_threshold instelling." email_log: no_user: "Kan geen gebruiker met id %{user_id} vinden" - suspended_not_pm: "De gebruiker is geschorst, geen privébericht" seen_recently: "Gebruiker was recentelijk nog online" post_not_found: "Kan geen bericht met id %{post_id} vinden" notification_already_read: "De notificatie waar deze mail voor is is al gezien" diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index f7a7cc78f2..83dbae6548 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -128,7 +128,6 @@ pl_PL: num_posts: "Wpisy:" num_participants: "Uczestnicy:" read_full_topic: "Przeczytaj cały temat" - private_message_abbrev: "PW" rss_description: latest: "Ostatnie wątki" hot: "Popularne wątki" @@ -418,9 +417,7 @@ pl_PL: description: 'Ten wpis zawiera treści które umiarkowana osoba może uznać za wulgarne, obraźliwe lub naruszające wytyczne społeczności.' long_form: 'oflagowano jako niewłaściwe' notify_user: - title: 'Prywatna wiadomość @{{username}}' description: 'Ten wpis zawiera coś o czym chciałbym porozmawiać z tą osobą bezpośrednio i prywatnie. Bez oflagowania.' - long_form: 'wysłał prywatną wiadomość do użytkownika' email_title: 'Twój wpis w "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -457,7 +454,6 @@ pl_PL: email_title: 'Temat "%{title}" wymaga uwagi moderatora' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Twój wpis został oflagowany przez społeczność. Sprawdź swoje prywatne wiadomości.

    ' user_must_edit: '

    Ten wpis został oflagowany przez społeczność i został tymczasowo ukryty.

    ' archetypes: regular: @@ -522,23 +518,18 @@ pl_PL: user_to_user_private_messages: title: "Użytkownik-do-użytkownika" xaxis: "Dzień" - yaxis: "Liczba prywatnych wiadomości" system_private_messages: title: "System" xaxis: "Dzień" - yaxis: "Liczba prywatnych wiadomości" moderator_warning_private_messages: title: "Ostrzeżenia moderatorów" xaxis: "Dzień" - yaxis: "Liczba prywatnych wiadomości" notify_moderators_private_messages: title: "Powiadomienia moderatorów" xaxis: "Dzień" - yaxis: "Liczba prywatnych wiadomości" notify_user_private_messages: title: "Powiadom użytkownika" xaxis: "Dzień" - yaxis: "Liczba prywatnych wiadomości" top_referrers: title: "Najczęstszy referrerzy" xaxis: "Użytkownik" @@ -628,10 +619,8 @@ pl_PL: description: "Przewodnik i inne informacje dla nowych użytkowników." welcome_user: title: "Przywitanie: Nowy użytkownik" - description: "Prywatna wiadomość automatycznie wysyłana do wszystkich nowych użytkowników po ich rejestracji." welcome_invite: title: "Przywitanie: Zaproszony użytkownik" - description: "Prywatna wiadomość automatycznie wysyłana do nowych użytkowników po zaakceptowaniu przez nich zaproszenia do udziału od innego użytkownika." login_required_welcome_message: title: "Wymagane logowanie: wiadomość powitalna" description: "Wiadomość powitalna wyświetlana niezalogowanym użytkownikom, gdy ustawienie 'login required' jest włączone." @@ -653,11 +642,9 @@ pl_PL: default_locale: "Domyślny język tej instancji Discourse (kod ISO 639-1)" allow_user_locale: "Zezwól użytkownikom na zmianę języka interfejsu we własnych ustawieniach" min_post_length: "Minimalna długość wpisu w znakach" - min_private_message_post_length: "Minimalna długość wpisu w znakach dla prywatnych wiadomości" max_post_length: "Maksymalna długość wpisu, w znakach" min_topic_title_length: "Minimalna długość tytułu tematu, w znakach" max_topic_title_length: "Maksymalna długość tytułu tematu, w znakach" - min_private_message_title_length: "Minimalna ilość znaków w tytule prywatnej wiadomości" min_search_term_length: "Minimalna długość wyszukiwanego tekstu, w znakach" allow_uncategorized_topics: "Pozwól na tworzenie tematów bez kategorii." uncategorized_description: "Znajdują się tu wątki którym jeszcze nie przypisano odpowiedniej kategorii." @@ -763,8 +750,6 @@ 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} wysyła Ci prywatną wiadomość: %{link}" - invited_to_private_message: "%{display_username} zaprosił(-a) Cię do prywatnej wiadomości: %{link}" invitee_accepted: "%{display_username} przyjął(-ęła) Twoje zaproszenie" search: within_post: "#%{post_number} przez %{username}" @@ -921,12 +906,6 @@ pl_PL: reply_by_email: "Aby odpowiedzieć odpisz na ten email lub otwórz %{base_url}%{url} w swojej przeglądarce." visit_link_to_respond: "To respond, visit %{base_url}%{url} in your browser." posted_by: "Dodany przez %{username} w dniu %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} dołączył ciebie do prywatnego tematu '%{topic_title}'" - text_body_template: | - %{username} dołączył ciebie do prywatnego tematu '%{topic_title}' na %{site_name}: - - Kliknij ten odnośnik by odwiedzić wskazany temat: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -973,7 +952,6 @@ pl_PL: --- %{respond_instructions} digest: - subject_template: "[%{site_name}] Podsumowanie dla %{date}" new_activity: "Nowa aktywność w twoich tematach i wpisach:" top_topics: "Popularne wpisy" other_new_topics: "Popularne wątki" diff --git a/config/locales/server.pt.yml b/config/locales/server.pt.yml index 5f05aee852..bb88f265c1 100644 --- a/config/locales/server.pt.yml +++ b/config/locales/server.pt.yml @@ -86,7 +86,6 @@ pt: num_posts: "Mensagens:" num_participants: "Participantes:" read_full_topic: "Ler tópico completo" - private_message_abbrev: "MP" rss_description: latest: "Tópicos recentes" hot: "Tópicos quentes" @@ -349,9 +348,7 @@ pt: description: 'Esta mensagem contém conteúdo que uma pessoa sensata iria considerar ofensivo, abusivo, ou como uma violação das diretrizes da nossa comunidade.' long_form: 'sinalizou isto como inapropriado' notify_user: - title: 'Mensagem Privada @{{username}}' description: 'Esta mensagem contém algo sobre o qual quero falar com esta pessoa diretamente e em privado. Não representa motivo para ter alguma sinalização.' - long_form: 'utilizador com mensagens privadas' email_title: 'A sua mensagem em "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -388,7 +385,6 @@ pt: email_title: 'O tópico "%{title}" requer a atenção do moderador' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    A sua mensagem foi sinalizada pela comunidade. Por favor consulte as sua mensagens privadas.

    ' user_must_edit: '

    Esta mensagem foi sinalizada pela comunidade e está temporariamente oculta.

    ' archetypes: regular: @@ -452,23 +448,18 @@ pt: user_to_user_private_messages: title: "Utilizador-a-Utilizador" xaxis: "Dia" - yaxis: "Número de mensagens privadas" system_private_messages: title: "Sistema" xaxis: "Dia" - yaxis: "Número de mensagens privadas" moderator_warning_private_messages: title: "Alerta ao Moderador" xaxis: "Dia" - yaxis: "Número de mensagens privadas" notify_moderators_private_messages: title: "Notificação aos Moderadores" xaxis: "Dia" - yaxis: "Número de mensagens privadas" notify_user_private_messages: title: "Notificar o Uilizador" xaxis: "Dia" - yaxis: "Número de mensagens privadas" top_referrers: title: "As Melhores Referências" xaxis: "Utilizador" @@ -514,10 +505,8 @@ pt: description: "Orientação e informação essencial para novos utilizadores." welcome_user: title: "Bem-vindo: Novo Utilizador" - description: "Mensagem privada enviada automaticamente para todos os novos utilizadores quando estes se registam." welcome_invite: title: "Bem-vindo: Utilizador Convidado" - description: "Mensagem privada enviada automaticamente para todos os novos utilizadores convidados assim que aceitam o convite de outro utilizador para participar." login_required_welcome_message: title: "Início de Sessão Obrigatório: Mensagem de Boas-vindas" description: "Mensagem de boas-vindas exibida a utilizadores que não têm sessão iniciada quando a configuração 'início de sessão obrigatório' está ativa." @@ -539,11 +528,9 @@ pt: default_locale: "Idioma padrão para esta instância do Discourse (ISO 639-1 Code)" allow_user_locale: "Permitir aos utilizadores escolherem a sua própria língua preferencial para a interface." min_post_length: "Tamanho mínimo permitido por mensagem, em caracteres" - min_private_message_post_length: "Tamanho mínimo permitido para mensagens privadas, em caracteres" max_post_length: "Tamanho máximo permitido por mensagem, em caracteres" min_topic_title_length: "Tamanho mínimo permitido por título de cada tópico, em caracteres" max_topic_title_length: "Tamanho máximo permitido por título de cada tópico, em caracteres" - min_private_message_title_length: "Tamanho mínimo permitido por título de cada tópico nas mensagens privadas, em caracteres" min_search_term_length: "Tamanho mínimo válido para termos de pesquisa, em caracteres" allow_uncategorized_topics: "Permitir a criação de tópicos sem categoria." uncategorized_description: "Descrição da categoria sem classificação. Deixar em branco para nenhuma descrição." @@ -581,7 +568,6 @@ pt: summary_likes_required: "Número mínimo de gostos num tópico antes que 'Resumir Este Tópico' seja ativo." summary_percent_filter: "Quando um utilizador clica em 'Resumir Este Tópico', mostrar as melhores % de mensagens" summary_max_results: "Número máximo de mensagens devolvidas por 'Resumo deste Tópico'" - enable_private_messages: "Permitir que utilizadores de nível de confiança 1 possam criar e responder a mensagens privadas" enable_long_polling: "O sistema de mensagens usado para notificações pode fazer solicitações longas" long_polling_base_url: "URL base usada para solicitação ao servidor (quando um CDN serve conteúdo dinâmico, certifique-se de configurá-lo para a 'pull' original) ex: http://origem.sítio.com" long_polling_interval: "Quantidade de tempo que um servidor deve esperar antes de notificar os clientes quando não há dados para serem enviados (apenas utilizadores ligados)" @@ -613,7 +599,6 @@ pt: post_menu_hidden_items: "Os elementos do menu a serem escondidos por defeito no menu de mensagens a não ser que se clique na elipse de expansão." share_links: "Determinar que elementos aparecem no diálogo de partilha, e em que ordem." track_external_right_clicks: "Acompanhar cliques externos que são clicados com o botão direito (ex: abrir num novo separador) desativado por padrão pois este reescreve URLs" - send_welcome_message: "Enviar a todos os novos utilizadores uma mensagem privada de boas-vindas com um guia de inicio rápido." suppress_reply_directly_below: "Não mostrar a contagem de respostas expansível quando há apenas uma única resposta diretamente abaixo desta publicação." suppress_reply_directly_above: "Não mostrar em-resposta-a expansível quando há apenas uma única resposta diretamente acima desta publicação." suppress_reply_when_quoting: "Não mostraR em-resposta-a expansível numa mensagem quando esta cita uma resposta." @@ -645,7 +630,6 @@ pt: sso_url: "URL da inscrição única" sso_overrides_email: "Substitui o email local por um email externo de um SSO (AVISO: discrepâncias podem ocorrer devido a normalização de emails locais)" sso_overrides_username: "Substitui nomes de utilizador locais por nomes de utilizadores externos de um SSO (AVISO: discrepâncias podem ocorrer diferenças no nome de utilizador length/requirements)" - sso_overrides_name: "Substitui o nome local por um nome externo de um SSO (AVISO: discrepâncias podem ocorrer devido à normalização de nomes locais)" sso_overrides_avatar: "Substitui o avatar do utilizador com avatares externos de um SSO. Se ativo, é altamente recomendada a desativação de allow_uploaded_avatars" enable_local_logins: "Ativar contas com nome de utilizador e senha de forma local (Nota: isto tem que estar ativo para que os convites funcionem)" allow_new_registrations: "Permitir registo de novos utilizadores. Desmarcar isto para prevenir que alguém crie uma nova conta." @@ -680,7 +664,6 @@ pt: max_bookmarks_per_day: "Número máximo de marcadores por utilizador por dia." max_edits_per_day: "Número máximo de edições por utilizador por dia." max_topics_per_day: "Número máximo de tópicos que um utilizador pode criar por dia." - max_private_messages_per_day: "Número máximo de mensagens privadas que os utilizadores podem criar por dia." suggested_topics: "Número de tópicos sugeridos mostrados no final de um tópico." limit_suggested_to_category: "Apenas mostrar tópicos da categoria atual nos tópicos sugeridos." clean_up_uploads: "Remover carregamentos orfãos não referenciados para prevenir alojamento ilegal. AVISO: poderá querer criar uma cópia de segurança da diretoria /uploads antes de ativar esta configuração." @@ -729,7 +712,6 @@ pt: email_time_window_mins: "Esperar (n) minutos antes de enviar quaisquer emails de notificação, para dar aos utilizadores a hipótese de editarem e finalizarem as suas mensagens." email_posts_context: "Quantas respostas prévias a serem incluídas como contexto em emails de notificação." flush_timings_secs: "Com que frequência o servidor é alimentado com dados de sincronização, em segundos." - max_word_length: "Tamanho máximo permitido de palavras, em caracteres, no título de um tópico." title_min_entropy: "Entropia mínima (caracteres únicos, contagem não-inglesa para mais) necessária para o título de um tópico." body_min_entropy: "Entropia mínima (caracteres únicos, contagem não-inglesa para mais) necessária para o corpo de uma mensagem." title_fancy_entities: "Converter caracteres ASCII comuns em entidades HTML nos títulos dos tópicos, ala SmartyPants http://daringfireball.net/projects/smartypants/" @@ -848,8 +830,6 @@ pt: edited: "%{display_username} editou a sua mensagem em %{link}" posted: "%{display_username} publicou em %{link}" moved_post: "%{display_username} moveu a sua mensagem para %{link}" - private_message: "%{display_username} enviou-te uma mensagem privada: %{link}" - invited_to_private_message: "%{display_username} convidou-te para uma conversa privada: %{link}" invitee_accepted: "%{display_username} aceitou o seu convite" linked: "%{display_username} hiperligou-o em %{link}" granted_badge: "Ganhou %{link}" @@ -1104,19 +1084,16 @@ pt: subject_template: "A exportação dos dados falhou" text_body_template: "Pedimos desculpa mas a sua exportação de dados falhou. Por favor verifique os registos do log ou contacte um membro do pessoal." email_reject_trust_level: - subject_template: "Problema de email -- Nível de Confiança Insuficiente" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. A sua conta não tem o nível de confiança necessário para publicar novos tópicos para este endereço de email. Se acredita que isto é um erro, contacte um membro do pessoal. email_reject_no_account: - subject_template: "Problema de email -- Conta Desconhecida" text_body_template: | Pedimos desculpa mas a sua mensagem de email %{destination} (titled %{former_title}) não funcionou. Não há nenhuma conta de utilizador conhecida com este endereço de email. Tente enviar a partir de um endereço de email diferente, ou contacte um membro do pessoal. email_reject_empty: - subject_template: "Problema de email -- Sem Conteúdo" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. @@ -1124,19 +1101,16 @@ pt: Se está a ter este erro e se _realmente_ colocou conteúdo, tente novamente com conteúdo HTML incluído no seu email (e não apenas texto simples). email_reject_parsing: - subject_template: "Problema de email -- Conteúdo não reconhecido" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. Não conseguimos encontrar nenhuma resposta no email fornecido. **Certifique-se que a sua resposta está no topo do email** -- não conseguimos processar respostas em linha. email_reject_post_error: - subject_template: "Problema de email -- Erro de publicação" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. Algumas causas possíveis são: formatação complexa, mensagem demasiado grande, mensagem demasiado pequena. Por favor tente novamente, ou publique através do sítio se isto continuar. email_reject_post_error_specified: - subject_template: "Problema de email -- Erro de publicação" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. @@ -1146,31 +1120,26 @@ pt: Se conseguir corrigir o problema, tente novamente. email_reject_reply_key: - subject_template: "Problema de email -- Chave de Resposta Desconhecida" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. A chave de resposta fornecida é inválida ou desconhecida, por isso não sabemos a que resposta corresponde este email. Contacte um membro do pessoal. email_reject_destination: - subject_template: "Problema de email -- Endereço Para: Desconhecido" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. Nenhum dos endereços de destino é reconhecido. Por favor, certifique-se que o endereço do sítio está na linha Para: (não em Cc: ou em Bcc:), e que está a enviar para o endereço de email correto fornecido pelo pessoal. email_reject_topic_not_found: - subject_template: "Problema de email -- Tópico Não Encontrado" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. O tópico não foi encontrado, poderá ter sido eliminado. Se acredita que isto é um erro, contacte um membro do pessoal. email_reject_topic_closed: - subject_template: "Problema de email -- Tópico Encerrado" text_body_template: | Pedimos desculpa mas a sua mensagem de email para %{destination} (titled %{former_title}) não funcionou. O tópico está fechado. Se acredita que isto é um erro, contacte um membro do pessoal. email_error_notification: - subject_template: "Problema de email -- Erro de autenticação POP" text_body_template: | Ocorreu um erro de autenticação ao recuperar emails do servidor POP. @@ -1243,12 +1212,6 @@ pt: reply_by_email: "Para responder, responda a este email ou visite %{base_url}%{url} no seu navegador." visit_link_to_respond: "Para responder visite %{base_url}%{url} no seu navegador." posted_by: "Publicado por %{username} em %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} convidou-o para uma mensagem privada '%{topic_title}'" - text_body_template: | - %{username} convidou-o para uma mensagem privada '%{topic_title}' em %{site_name}: - - Por favor visite a hiperligação para visualizar este tópico: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1296,7 +1259,6 @@ pt: %{respond_instructions} digest: why: "Um breve sumário de %{site_link} desde a sua última visita em %{last_seen_at}" - subject_template: "[%{site_name}] Resumo para %{date}" new_activity: "Nova atividade nos seus tópicos e mensagens:" top_topics: "Mensagens populares" other_new_topics: "Tópicos populares" @@ -1380,7 +1342,6 @@ pt: spam_hosts: "Este novo utilizador tentou criar múltiplas mensagens com hiperligações ao mesmo domínio. Verifique as configurações do sítio em newuser_spam_host_threshold." email_log: no_user: "Não foi possível encontrar o utilizador com o id %{user_id}" - suspended_not_pm: "O utilizador está suspenso, sem mensagens privadas" seen_recently: "O utilizador foi visto recentemente" post_not_found: "Não foi possível encontrar a mensagem com o id %{post_id}" notification_already_read: "A notificação sobre o qual este email se trata já foi lida" diff --git a/config/locales/server.pt_BR.yml b/config/locales/server.pt_BR.yml index 243abf5c09..4d751e2ef5 100644 --- a/config/locales/server.pt_BR.yml +++ b/config/locales/server.pt_BR.yml @@ -20,6 +20,7 @@ pt_BR: is_reserved: "está reservado" purge_reason: "A conta não verificada, foi excluída." disable_remote_images_download_reason: "Download de imagens remotas foi desativado porque não havia espaço suficiente em disco disponível." + anonymous: "Anônimo" errors: format: '%{attribute} %{message}' messages: @@ -112,6 +113,7 @@ pt_BR: other: "Desculpe, usuários novos podem colocar apenas %{count} links nas postagens." spamming_host: "Desculpe, você não pode colocar um link para este site." user_is_suspended: "Usuários suspensos não tem permissão para postar." + topic_not_found: "Ocorreu um erro. Talvez este tópico foi fechado ou removido enquanto você estava visualizando?" just_posted_that: "é demasiado similar ao que postaste recentemente" has_already_been_used: "já foi usado" invalid_characters: "contém caracteres inválidos" @@ -119,6 +121,7 @@ pt_BR: next_page: "próxima página →" prev_page: "← página anterior" page_num: "Página %{num}" + home_title: "Início" topics_in_category: "Tópicos na categoria '%{category}'" rss_posts_in_topic: "RSS feed de '%{topic}'" rss_topics_in_category: "RSS feed dos tópicos da categoria '%{category}'" @@ -126,7 +129,7 @@ pt_BR: num_posts: "Mensagens:" num_participants: "Participantes:" read_full_topic: "Ler tópico completo" - private_message_abbrev: "MP" + private_message_abbrev: "Msg" rss_description: latest: "Últimos tópicos" hot: "Tópicos quentes" @@ -177,6 +180,14 @@ pt_BR: Já considerou **[visitar o seu perfil de usuário](%{profile_path})** e fazer o envio de uma imagem personalizada que representa você?⏎ ⏎ É mais fácil para acompanhar as discussões da comunidade e encontrar pessoas interessantes em conversas quando todo mundo tem um avatar exclusivo!⏎ + sequential_replies: | + ### Considere responder a várias mensagens simultaneamente + + No lugar de várias respostas em seguida para um tópico, por favor considere uma única resposta que inclui citações de mensagens anteriores ou referência ao @nome. + + Você pode editar sua resposta anterior para adicionar uma citação destacando o texto e selecionando o botão citar resposta que aparece. + + É mais fácil para todos lerem tópicos que tem menos respostas em profundidade contra muitas respostas curtas individuais. dominating_topic: | ### Deixe que os outros se juntem à conversa⏎ ⏎ @@ -397,9 +408,9 @@ pt_BR: description: 'Este post contém conteúdo que uma pessoa razoável consideraria ofensivo, abusivo, ou uma violação das nossas diretrizes da comunidade.' long_form: 'sinalizado como inapropriado' notify_user: - title: 'Mensagem privada @{{username}}' + title: 'Mensagem @{{username}}' description: 'Este post contém algo que eu quero falar com essa pessoa diretamente e em particular sobre. Não lançar uma flag.' - long_form: 'usuário de mensagem privada' + long_form: 'mensagem privada' email_title: 'Sobre a sua postagem "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -436,7 +447,7 @@ pt_BR: email_title: 'O tópico "%{title}" requer atenção do moderador' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    A sua mensagem atingiu o nível máximo de sinalizações. Por favor leia as suas mensagens privadas.

    ' + you_must_edit: '

    Sua mensagem foi marcada pela comunidade. Por favor veja suas mensagens.

    ' user_must_edit: '

    Conteúdo sinalizado escondido.

    ' archetypes: regular: @@ -552,6 +563,7 @@ pt_BR: http_background_reqs: title: "Background" xaxis: "Dia" + yaxis: "Pedidos utilizados para atualização ao vivo e rastreamento" http_2xx_reqs: title: "Status 2xx (OK)" xaxis: "Dia" @@ -580,6 +592,7 @@ pt_BR: sidekiq_warning: 'Sidekiq não está em execução. Muitas tarefas, como envio de emails, são executadas de forma assíncrona pelo sidekiq. Por favor certifique-se de que ao menos um processo sidekiq esteja execução. Aprenda sobre Sidekiq aqui.' queue_size_warning: 'O número de tarefas agendadas é %{queue_size}, o que é alto. Isto pode indicar um problema com o(s) processo(s) Sidekiq, ou você pode estar precisando de mais Sidekiq workers.' memory_warning: 'Seu servidor está rodando com menos de 1 GB de memória total. Pelo menos 1 GB é quantidade de memória recomendada.' + enable_google_logins_warning: "AVISO! Termino do suporte ao método atual de autenticação do Google em 20 de Abril, 2015! Por favor mudar para novo método agora!" both_googles_warning: "Você tem enable_google_logins e enable_google_oauth2_logins ativados nas configurações do site. Desative o enable_google_logins." google_oauth2_config_warning: 'O servidor está configurado para permitir o signup e login com Google OAuth2 (enable_google_oauth2_logins), mas os valores de Cliend Id e Secret não estão configurados. Vá para as Configurações do Site e atualize as configurações. Veja este guia e aprenda mais.' facebook_config_warning: 'O servidor está configurado para permitir o signup e login com Facebook (enable_facebook_logins), mas os valores do App Id e App Secret não estão configurados. Vá para as Configurações do Site e atualize as configurações. Veja este guia e aprenda mais.' @@ -595,8 +608,9 @@ pt_BR: title_nag: "Digite o nome do seu site. Atualize o título nas Configurações do Site." site_description_missing: "Digite uma frase de descrição do seu site que aparecerá em resultados de busca. Atualize site_description nas Configurações do Site." consumer_email_warning: "Seu site está configurado para usar Gmail (ou outro serviço de email para pessoas). Gmail limita a quantidade de emails que você pode enviar. Considere o uso de um serviço de envio de emails como mandrill.com para assegurar a entregabilidade dos emails enviados." - site_contact_username_warning: "Digite o nome de uma membro da equipe do site próximo por quem enviar mensagens particulares automáticas importantes. Atualize site_contact_username nas Configurações do Site." + site_contact_username_warning: "Digite o nome de um membro interno para enviar mensagens importantes automaticamente a partir dele. Atualize site_contact_username em Configurações do Site." notification_email_warning: "Emails de notificação não estão sendo enviados por um endereço de email válido no seu domínio; entrega de email será errática e não confiável. Por favor configure notification_email com um endereço de email local válido nas Configurações do Site." + s3_deprecation_warning: "AVISO! Amazon S3 logo se tornará obsoleto para armazenamento de imagem/anexo. Por favor, siga as istruções para migrar o armazenamento local." content_types: education_new_reply: title: "Educação do Usuário Novo: Primeiras Respostas" @@ -609,10 +623,10 @@ pt_BR: description: "Dicas de uso comuns, informações essenciais do fórum, e orientação básica para usuários novos." welcome_user: title: "Boas-vindas: Usuário Novo" - description: "Uma mensagem particular enviada automaticamente para todos os usuários novos quando eles se registram." + description: "Uma mensagens enviada automaticamente para todos novos usuários quando se registrarem." welcome_invite: title: "Boas-vindas: Usuário Convidado" - description: "Uma mensagem particular enviada automaticamente para todos os usuários convidados quando eles aceitam o convite de outro usuário para participar." + description: "Uma mensagem enviada automaticamente para todos novos usuários convidados quando eles aceitarem o convite de outro usuário para participar." login_required_welcome_message: title: "Boas-vindas: Login Solicitado" description: "Mensagem de boas-vindas que é exibida para usuários que não estão logados quando a configuração de 'login requerido' está ativada." @@ -634,11 +648,12 @@ pt_BR: default_locale: "Idioma padrão para esta instância do Discourse (ISO 639-1 Code)" allow_user_locale: "Permitir que os usuários escolham suas próprias preferências de idioma de interface" min_post_length: "Comprimento mínimo permitido do post em caracteres" - min_private_message_post_length: "Comprimento mínimo permitido para mensagens privadas em caracteres" + min_first_post_length: "Comprimento mínimo de caracteres permitido para primeira mensagem (corpo do tópico)" + min_private_message_post_length: "Comprimento mínimo de caracteres permitido para mensagens" max_post_length: "Comprimento máximo permitido para o post em caracteres" min_topic_title_length: "Comprimento mínimo permitido para o título do post em caracteres" max_topic_title_length: "Comprimento máximo permitido para o título do post em caracteres" - min_private_message_title_length: "Comprimento mínimo permitido para a mensagem privada em caracteres" + min_private_message_title_length: "Comprimento mínimo de caracteres permitido para o título de uma mensagem" min_search_term_length: "Comprimento mínimo válido para o termo de pesquisa em caracteres" allow_uncategorized_topics: "Permitir tópicos serem criados sem categoria." uncategorized_description: "A descrição da categoria Sem categoria. Deixe em branco para nenhuma descrição." @@ -648,6 +663,7 @@ pt_BR: title: "O nome deste site, como usado na tag de título." site_description: "Descreva este site com uma frase, como usado na tag de meta description." contact_email: "Endereço de email do responsável de contato chave para este site. Usado para notificações críticas tais como sinalizações não controladas, assim como também pela forma de contato em /about para assuntos urgentes." + contact_url: "URL de contato para este site. Usada no formulário de contato /about para assuntos urgentes." queue_jobs: "APENAS DESENVOLVEDORES! ATENÇÃO! Por padrão, enfileira tarefas no sidekiq. Se desativado, seu site ficará defeituoso." crawl_images: "Recupere imagens de URLs remotas para inserir as dimensões de largura e altura corretos." download_remote_images_to_local: "Converta imagens remotas para imagens locais, transferindo-as; isto evita imagens quebradas." @@ -671,7 +687,7 @@ pt_BR: digest_logo_url: "O logo alternativo usado no topo do resumo de e-mails do seu site. Se deixar em branco `logo_url` será usado. eg: http://example.com/logo.png" logo_small_url: "A pequena imagem de logo no topo à esquerda do seu site, vista quando rolando a página abaixo. Se deixado em branco, um símbolo de homepage será mostrado." favicon_url: "Um favicon para o seu site" - mobile_logo_url: "A imagem posicionada fixada no topo à esquerda do site móvel. Se deixado em branco, o texto de título do site será usado." + mobile_logo_url: "A posição fixada da imagem do logo utilizado no canto superior esquerdo do site móvel. Se deixar em branco `logo_url` será usado." apple_touch_icon_url: "Ícone usado para dispositivos Apple. Tamanho recomendado é 144px por 144px." notification_email: "O endereço de email utilizado quando enviado emails do sistema. O domínio especificado deve ter registros SPF, DKIM e PTR, devidamente configurados para que os email funcionem corretamente." email_custom_headers: "A lista delimitada por barras verticais de cabeçalhos de e-mail personalizados" @@ -682,7 +698,7 @@ pt_BR: summary_likes_required: "Curtidas mínimas em um tópico antes de 'Resumir este tópico, ficar habilitado" summary_percent_filter: "Quando um usuário clicar em 'Resumor este tópico', mostrar os melhores % mensagens" summary_max_results: "Máximo número de posts quando resumidos por Categoria " - enable_private_messages: "Permitir usuários de nível 1 a criar e responder mensagens privadas." + enable_private_messages: "Permitir a usuários de nível 1 criar e responder mensagens" enable_long_polling: "O sistema de mensagens das notificações pode fazer solicitações longas." long_polling_base_url: "URL Utilizada para \"long polling\" ( Quando um CDN for configurado, tenha certeza que essa configuração seja a padrão) ex: http://origin.site.com" long_polling_interval: "Tempo que o servidor deve aguardar antes de responder quando não existe nenhum dado para ser enviado. (apenas usuários logados)" @@ -715,8 +731,8 @@ pt_BR: post_menu_hidden_items: "Os items de menu a ser escondidos por padrão no menu de postagem, a menos que uma elipse de expansão seja clicada." share_links: "Determine quais itens aparecem na caixa de diálogo de compartilhamento, e em qual ordem." track_external_right_clicks: "Rastrear cliques externos que são clicados com o botão direito (ex: abrir em nova aba) desativado por padrão, pois tem que reescrever urls, quebrando a usabilidade" - site_contact_username: "Um nome de usuário da staff para enviar todas as mensagens particulares em nome dele. Se deixado em branco, a conta padrão System será usada." - send_welcome_message: "Enviar a todos os novos usuários uma mensagem particular de boas vindas com um guia de início rápido." + site_contact_username: "Um nome de usuário válido de membro da equipe para enviar todas mensagens automáticas por ele. Se deixado em branco a conta padrão System será utilizada." + send_welcome_message: "Enviar a todos novos usuários uma mensagem de boas vindas com um guia de início rápido." suppress_reply_directly_below: "Não mostrar a contagem de respostas expansível em um post quando há apenas uma única resposta diretamente abaixo deste post." suppress_reply_directly_above: "Não mostrar a em-resposta-à expansível em um post quando há apenas uma única resposta diretamente acima deste post." suppress_reply_when_quoting: "Não mostrar a em-resposta-à expansível em um post quando o post cita a resposta." @@ -746,12 +762,15 @@ pt_BR: max_username_length: "Tamanho máximo de nome de usuário em caracteres. AVISO: QUAISQUER USUÁRIOS EXISTENTES COM NOMES MAIORES DO QUE ISSO SERÃO INCAPACITADOS DE ACESSAR O SITE." min_password_length: "Comprimento mínimo da senha." block_common_passwords: "Não permitir senhas que estiverem entre as 10,000 senhas mais comuns." + enable_sso: "Habilitar autenticação única por meio de um site externo (AVISO: pode impedir todos de se autenticarem, INCLUINDO VOCÊ, se não configurado corretamente quando habilitado! Também desabilita convites)" + enable_sso_provider: "Implementar protocolo do provedor Discourse SSO no caminho /session/sso_provider, requer que sso_secret seja configurado" sso_url: "URL destino do logon único" sso_secret: "String secreta usada para autenticar criptograficamente informação de SSO, esteja certo de que possui 10 ou mais caracteres" sso_overrides_email: "Substitui e-mail local com site externo de e-mail do servidor SSO (ATENÇÃO: discrepâncias podem ocorrer devido à normalização de e-mails locais)" sso_overrides_username: "Substitui nome de usuário local com nome de usuário do site externo do servidor SSO (ATENÇÃO: discrepâncias podem ocorrer devido a diferenças nos requerimentos de comprimento de nome de usuário)" - sso_overrides_name: "Substitui nome local com o nome do site externo do servidor SSO (ATENÇÃO: discrepâncias podem ocorrer devido à normalização de nomes locais)" + sso_overrides_name: "Substitui nome completo local com nome completo do site externo do conteúdo SSO" sso_overrides_avatar: "Substitui o avatar do usuário pelo avatar do site externo de SSO. Se habilitado, desabilitar allow_uploaded_avatars é altamente recomendado" + enable_local_logins: "Habilitar nome de usuário e senha local para autenticação nas contas. (Observação: deve ser habilitado para funcionamento dos convites)" allow_new_registrations: "Permitir registro de novos usuários. Desmarque isso para prevenir quem quer que seja de criar uma nova conta." enable_google_logins: "(obsoleto) Habilitar a autenticação do Google. Este é o método de autenticação OpenID que o Google está abandonando. Novas instalações não vai funcionar com isso. Use o Google Oauth2 ao invés. Instalações existentes devem passar para Google Oauth2 até 20 de Abril de 2015." enable_yahoo_logins: "Ativar autenticação pelo Yahoo" @@ -784,7 +803,7 @@ pt_BR: max_bookmarks_per_day: "Número máximo de novos favoritos por usuário por dia." max_edits_per_day: "Número máximo de edições que um usuário pode fazer por dia." max_topics_per_day: "Número máximo de postagens que um usuário pode criar por dia." - max_private_messages_per_day: "Número máximo de mensagens privadas que os usuários podem criar por dia." + max_private_messages_per_day: "Máximo número de mensagens que usuários podem criar por dia." max_invites_per_day: "Número máximo de convites que um usuário pode enviar por dia." suggested_topics: "Número de tópicos sugeridos mostrados no final de um tópico." limit_suggested_to_category: "Mostrar apenas tópicos da categoria atual em tópicos sugeridos." @@ -793,6 +812,7 @@ pt_BR: purge_deleted_uploads_grace_period_days: "Carência (em dias) antes que um upload excluído seja apagado." purge_unactivated_users_grace_period_days: "Período extra (em dias) antes que um usuário que não ativou sua conta seja deletado." enable_s3_uploads: "Colocar uploads no armazenamento da Amazon S3. IMPORTANTE: exige credenciais válidas da S3 (ambos id da chave de acesso & segredo da chave de acesso)." + s3_use_iam_profile: 'Usar papel AWS EC2 IAM para recuperar chaves. OBS: habilitar irá substituir configurações "s3 access key id" e "s3 secret access key".' s3_upload_bucket: "Nome do bucket da Amazon S3 no qual os arquivos serão enviados. AVISO: precisa ser em minúsculas, sem pontos, sem underscores." s3_access_key_id: "A id da chave de acesso da Amazon S3 que será usada para fazer upload de imagens." s3_secret_access_key: "O segredo da chave de acesso da Amazon S3 que será usada para fazer upload de imagens." @@ -832,7 +852,10 @@ pt_BR: create_thumbnails: "Criar thumbnails e lightbox para imagens que são muito largas para caber em uma postagem." email_time_window_mins: "Aguardar (n) minutos antes de enviar quaisquer emails de notificação, para dar aos usuários uma chance de editarem e finalizarem seus posts." email_posts_context: "Quantas respostas prévias incluir como contexto em emails de notificação." - max_word_length: "O tamanho máximo permitido de uma palavra, em caracteres, num título de tópico." + flush_timings_secs: "Frequência, em segundos, que irá descarregar dados de tempo para o servidor." + title_max_word_length: "Comprimento máximo, em caracteres, de uma palavra permitida no título de um tópico." + title_min_entropy: "A entropia mínima (caracteres únicos, não inglês contam mais) necessária para um título de tópico." + body_min_entropy: "A entropia mínima (caracteres únicos, não inglês contam mais) necessária para o corpo de uma mensagem." title_fancy_entities: "Converter caracteres ASCII comuns em entidades HTML nos títulos dos tópicos, ala SmartyPants http://daringfireball.net/projects/smartypants/" min_title_similar_length: "O tamanho mínimo de um título antes que ele seja checado por tópicos semelhantes." min_body_similar_length: "O tamanho mínimo do corpo de conteúdo de um post antes que ele seja checado por tópicos semelhantes." @@ -861,6 +884,7 @@ pt_BR: newuser_spam_host_threshold: "Quantas vezes um usuário pode postar um link para o mesmo site dentro de`newuser_spam_host_posts` posts antes de ser considerado spam." white_listed_spam_host_domains: "Uma lista de domínios excluídas do teste de spam. Usuários novos nunca serão restringidos de criar posts com links para estes domínios." staff_like_weight: "Qual o fator de ênfase extra a dar para likes da staff." + topic_view_duration_hours: "Contar nova visualização de um tópico por IP/Usuário a cada N horas" levenshtein_distance_spammer_emails: "Ao equiparar emails de spammers, o número da diferença de caracteres que ainda assim irá permitir uma equiparação imprecisa." max_new_accounts_per_registration_ip: "Se já houver (n) contas com o nível de confiança 0 deste IP (e nenhum for membro da staff ou tiver NC2 ou mais alto), parar de aceitar novas assinaturas daquele IP." min_ban_entries_for_roll_up: "Ao clicar no botão Combinar, criará uma entrada de banimento de subrede se houverem ao menos (N) entradas." @@ -868,6 +892,7 @@ pt_BR: max_age_unmatched_ips: "Excluir entradas de IPs filtrados não combinadas após (N) dias." num_flaggers_to_close_topic: "Número mínimo de usuários sinalizadores únicos que são exigidos para que um tópico seja automaticamente pausado por intervenção" num_flags_to_close_topic: "Número mínimo de sinalizações ativas que são exigidas para que um tópico seja automaticamente pausado por intervenção" + auto_respond_to_flag_actions: "Habilitar resposta automática quando eliminada marcação." reply_by_email_enabled: "Habilitar responder tópicos via email" reply_by_email_address: "Template de resposta por email, por exemplo: %{reply_key}@reply.example.com or replies+%{reply_key}@example.com" disable_emails: "Impedir o Discourse de enviar qualquer tipo de emails." @@ -894,6 +919,7 @@ pt_BR: allow_uploaded_avatars: "Permitir usuários de fazer upload de avatares personalizados." allow_animated_avatars: "Permitir usuários de usar gifs animados como avatares. AVISO: execute o avatars:refresh rake test após mudar essa configuração." allow_animated_thumbnails: "Gera thumbnails animados a partir de gifs animados." + default_avatars: "URLs para avatars que serão usadas por padrão para novos usuários até que sejam alteradas por eles." automatically_download_gravatars: "Fazer download de Gravatars dos usuários ao criar conta ou mudança de email." digest_topics: "O número máximo de tópicos a serem mostrados no resumo via email." digest_min_excerpt_length: "O excerto mínimo de post no resumo via email, em caracteres." @@ -903,6 +929,12 @@ pt_BR: default_external_links_in_new_tab: "Abrir links externos em uma nova guia. Os usuários podem mudar isso em suas preferências." detect_custom_avatars: "Se ou não deve se checar que os usuários fizeram upload de avatares personalizados." max_daily_gravatar_crawls: "Número máximo de vezes que o Discourse irá checar o Gravatar por avatares personalizados em um dia" + public_user_custom_fields: "Um conjunto de campos personalizados para um usuário que podem ser apresentados publicamente." + staff_user_custom_fields: "Um conjunto de campos personalizados para um usuário que pode ser mostrado para membros da equipe." + enable_user_directory: "Fornece um diretório de usuários para navegar" + allow_anonymous_posting: "Permitir usuários trocar para modo anônimo" + anonymous_posting_min_trust_level: "Nível de confiança mínimo necessária para habilitar mensagens anônimas" + anonymous_account_duration_minutes: "Para proteger anonimidade cria uma conta anônima a cada N minutos para cada usuário. Exemplo: se configurado para 600, assim que passar 600 minutos da última mensagem E o usuário trocar para anônimo, uma nova conta anônima será criada." allow_profile_backgrounds: "Permitir usuários de fazerem upload de backgrounds para o perfil" sequential_replies_threshold: "Número de posts que um usuário precisa fazer em seguida num tópico antes de ser relembrado sobre muitas respostas sequenciais." enable_mobile_theme: "Os dispositivos móveis usam um tema mobile-friendly, com a possibilidade de mudar para o site completo. Desative isso se você quiser usar um estilo personalizado que é totalmente responsivo." @@ -910,6 +942,7 @@ pt_BR: suppress_uncategorized_badge: "Não mostrar emblema para assuntos não categorizados em listas de tópicos" global_notice: "Mostrar um banner global URGENTE, de EMERGÊNCIA para todos os visitantes, mude para branco para esconder (HTML permitido)." disable_edit_notifications: "Desabilitar modificação de notificações pelo sistema quando 'download_remote_images_to_local' estiver ativado." + full_name_required: "Nome completo é um campo obrigatório do perfil do usuário." enable_names: "Mostrar o nome completo do usuário em seu perfil, cartão de usuário, e emails. Desabilitar para esconder o nome completo em todos os lugares." display_name_on_posts: "Também exibir o nome completo do usuário em suas mensagens" invites_per_page: "Mostrar convites padrões no página de usuário" @@ -917,9 +950,12 @@ pt_BR: default_code_lang: "Realce de sintaxe padrão da linguagem de programação aplicada a blocos de código GitHub (lang-auto, Ruby, Python, etc)" warn_reviving_old_topic_age: "Quando alguém começa a responder a um tópico mais velho do que este número de dias, um aviso será exibido para desencorajar o usuário de reviver uma velha discussão. Desabilite definindo para 0." autohighlight_all_code: "Aplicar código destacando todos os blocos de código pré-formatados, mesmo quando não for específica o idioma" + highlighted_languages: "Incluir regras de destaque de sintaxe. (AVISO: incluir muitas linguagens podem afetar a performance) veja: https://highlightjs.org/static/demo/ para uma demonstração" + embeddable_host: "Servidor que pode incorporar os comentários deste forum Discourse. Apenas o Nome do Servidor, não começar com http://" feed_polling_enabled: "Se um feed RSS / ATOM são importados como mensagens" feed_polling_url: "URL do feed RSS / ATOM para importar" embed_by_username: "Nome de usuário Discourse para o usuário que cria os tópicos" + embed_username_key_from_feed: "Chave para puxar nome do usuário discourse a partir do feed." embed_truncate: "Cortar os posts embutidos." embed_category: "Categoria dos posts embutidos." embed_post_limit: "Número máximo de respostas para embutir" @@ -932,6 +968,7 @@ pt_BR: prevent_anons_from_downloading_files: "Impedir que usuários anônimos façam download de arquivos anexados. AVISO: isso irá impedir quaisquer componentes do site que não sejam imagens, tendo sido postados como anexos, de funcionar." enable_emoji: "Habilitar emoji" emoji_set: "Como você gostaria do seu emoji?" + enforce_square_emoji: "Forçar proporção quadrangular para todos emojis." errors: invalid_email: "Endereço de email inválido" invalid_username: "Não há nenhum usuário com esse nome de usuário." @@ -940,6 +977,7 @@ pt_BR: invalid_integer_max: "O valor não pode ser maior que %{max}." invalid_integer: "O valor deve ser um inteiro." regex_mismatch: "O valor não está de acordo com o formato exigido." + must_include_latest: "Menu superior deve incluir a 'última' aba." invalid_string: "Valor inválido." invalid_string_min_max: "Precisa estar entre %{min} e %{max} caracteres." invalid_string_min: "Precisa ter no mínimo %{min} caracteres." @@ -955,6 +993,7 @@ pt_BR: moved_post: "%{display_username} moveu a sua postagem para %{link}" private_message: "%{display_username} enviou-te uma mensagem particular: %{link}" invited_to_private_message: "%{display_username} convidou-te para uma conversa privada: %{link}" + invited_to_topic: "%{display_username} convidou você para um tópico: %{link}" invitee_accepted: "%{display_username} aceitou o seu convite" linked: "%{display_username} linkou você em %{link}" granted_badge: "Você ganhou %{link}" @@ -1027,6 +1066,8 @@ pt_BR: active: "A sua conta está ativa e pronta." activate_email: "

    Você está quase lá! Enviamos um email de ativação para %{email}. Por favor, siga as instruções contidas nele para ativar sua conta.

    Se ele não chegar, verifique sua pasta de spam, ou tente entrar novamente para enviar outro email de ativação.

    " not_activated: "Ainda não podes fazer log in. Enviamos um email de ativação para você. Por favor siga as instruções no email para ativar a sua conta." + not_allowed_from_ip_address: "Você não pode entrar como %{username} a partir deste endereço IP." + admin_not_allowed_from_ip_address: "Você não pode entrar como administrador a partir deste endereço IP." suspended: "Você não pode entrar até %{date}." suspended_with_reason: "Você não pode entrar até %{date}. Razão da sua suspensão: %{reason}" errors: "%{errors}" @@ -1093,6 +1134,43 @@ pt_BR: %{base_url}/users/password-reset/%{email_token} test_mailer: subject_template: "[%{site_name}] Teste de entrega de email" + text_body_template: | + Este é um email de teste de + + [**%{base_url}**][0] + + Entregabilidade de Email é complicada. Seguem algumas coisas importantes que você deve verificar primeiro: + + - Tenha *certeza* de definir o endereço de remetente `email de notificação` corretamente nas configurações do site. **O domínio especificado no endereço de remetente "from" dos emails enviados é o domínio que seus emails serão validados**. + + - Aprenda a verificar o conteúdo completo do email no seu cliente de email, para que possa examinar os cabeçalhos do email para pistas importantes. No Gmail, é a opção "mostrar original" no menu de seleção no canto superior direito de cada email. + + - **IMPORTANTE:** Seu provedor de internet (ISP) tem um registro de DNS reverso configurado para associar os nomes de domínio e os endereços de IP que você enviou os emails? [Testar seu registro reverso PTR][2] aqui. Se seu provedor (ISP) não entrou o registro de apontamento de DNS reverso apropriadamente, é muito improvável que qualquer email seja entregue. + + - O [registro SPF][8] de seu domínio está correto? [Teste seu registro SPF][1] aqui. Observe que TXT é o typo de registro correto para SPF. + + - O [registro DKIM][3] de seu domínio está correto? Isto irá melhorar significativamente a entregabilidade de email. [Teste seu registro DKIM][7] aqui. + + - Se você utiliza seu próprio servidor de email, verifique que os IPs de seu servidor de email [não estão em nenhuma lista negra][4]. Também verifique que está definitivamente enviando um nome de domínio totalmente qualificado resolvido por DNS em sua mensagem HELO. Se não estiver, irá fazer com que email seja rejeitado por muitos serviços de mail. + + (A maneira *fácil* é criar uma conta no [Mandrill][md] ou [Mailgun][mg] ou [Mailjet][mj], que tem generosos planos gratuitos e serão suficientes para comunidades pequenas. Entretanto você ainda terá que configurar os registros SPF e DKIM no seu DNS!) + + Esperamos que tenha recebido este email de verificação de entrega com sucesso! + + Boa sorte, + + Seus amigos do [Discourse](http://www.discourse.org) + + [0]: %{base_url} + [1]: http://www.kitterman.com/spf/validate.html + [2]: http://mxtoolbox.com/ReverseLookup.aspx + [3]: http://www.dkim.org/ + [4]: http://whatismyipaddress.com/blacklist-check + [7]: http://dkimcore.org/tools/dkimrecordcheck.html + [8]: http://www.openspf.org/SPF_Record_Syntax + [md]: http://mandrill.com + [mg]: http://www.mailgun.com/ + [mj]: https://www.mailjet.com/pricing new_version_mailer: subject_template: "[%{site_name}] Nova versão do Discourse, atualização disponível" text_body_template: | @@ -1166,10 +1244,109 @@ pt_BR: No entanto, se o post é escondido pela comunidade uma segunda vez, ele permanecerá escondido até ser manipuladas pela staff - e pode haver outras medidas, incluindo a possibilidade de suspensão da sua conta. Para informações adicionais, por favor consulte a nossas [diretrizes da comunidade] (%{base_url}/guidelines). + usage_tips: + text_body_template: | + Dicas rápidas para iniciar: + + ## Continue a rolagem + + Não existem botões de próxima página ou números de página - para ler mais, **apenas continue a rolagem para baixo!** + + A medida que novas mensagens chegam, elas irão aparecer automaticamente. + + ## Onde estou? + + - Para buscar, sua página de usuário, ou o menu, use o botão **ícone no lado superior direito**. + + - Qualquer título de tópico o levará a próxima mensagem não lida. Use o tempo de última atividade e contagem de mensagens para entrar no início ou final. + + - Enquanto estiver lendo um tópico, pule para o inicio ↑ selecionando o título do tópico. Selecione a barra de progresso verde no canto inferior direito para completo controle de navegação, ou use as teclas de início e fim. + + + + ## Como eu respondo? + + - Para responder ao tópico todo, use o botão de Resposta no final da página. + + - Para responder a uma mensagem específica, use o botão de Resposta daquela mensagem. + + - Para iniciar uma conversa em diferentes direções, e mantê-las conectadas, use a Responder com Tópico conectado a direita da mensagem. + + Para citar alguém em sua resposta, selecione o texto que quer citar, então pressione qualquer botão de Resposta. + + + + Para notificar alguém em sua resopsta, mencione seu nome. Digite `@` e uma seleção de auto completar irá surgir. + + + + Para [Emoji padrão](http://www.emoji.codes/), comece digitando `:` ou um tradicional sorriso `:)` :smile: + + ## O que mais eu posso fazer? + + Existem botões de ações no final de cada mensagem. + + + + Para deixar alguém saber que você gostou de sua mensagem, use o botão **like**. Se você ver um problema com uma mensagem, de forma privada, notifique a pessoa ou a equipe, por meio do botão **flag**. + + Você pode também **compartilhar** um link para uma mensagem, ou **bookmark** para consultar depois na sua página de usuário. + + ## Quem está falando comigo? + + Quando alguém responde a uma mensagem sua, citação sua mensagem, ou indica seu `@nomedeusuário`, um número irá aparecer imediatamente no canto superior direito da página. Use para acessar suas **notificações**. + + + + Não se preocupe se perder uma resposta – você receberá um email com respostas (e mensagens) se não estiver online quando ela chegar. + + ## Quando conversas são novas? + + Por padrão toda conversa a menos de dois dias são consideradas novas, e qualquer conversa que você participou (respondeu, criou, ou leu a certo tempo) será automaticamente rastreada. + + Você irá ver os números indicadores novos próximo aos tópicos: + + + + Você pode mudar o estado de notificação individual de um tópico por meio do controle no final do tópico (também pode ser definido por categoria). Para mudar como seus tópicos são rastreados, ou a definição de novo, veja [preferências de usuário](%{base_url}/my/preferences). + + ## Por que não posso fazer certas coisas? + + Novos usuários são limitados por razões de segurança. Conforme participar, irá ganhar confiança da comunidade, e se tornar um cidadão completo, e as limitações serão removidas automaticamente. Em um [nível de confiabilidade](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924) bem alto, você ganhará mais habilidades para nos ajudar a gerenciar a comunidade. welcome_user: subject_template: "Bem-vindo ao %{site_name}!" + text_body_template: | + Obrigado por participar do %{site_name}, e bem-vindo! + + %{new_user_tips} + + Nós acreditamos sempre no [comportamento comunitário civilizado](%{base_url}/guidelines). + + Aproveite sua participação! + + (Se precisar se comunicar com [membros da equipe](%{base_url}/about) como um novo usuário, apenas responda a esta mensagem.) welcome_invite: subject_template: "Bem-vindo ao %{site_name}!" + text_body_template: | + Obrigado por aceitar seu convite para %{site_name} -- bem vindo! + + Nós criamos uma nova conta **%{username}** para você, e você está autenticado. Pode mudar seu nome visitando o [perfil de seu usuário][prefs]. + + Para entrar novamente depois: + + 1. Sempre **use o mesmo endereço de email de seu convite original** quando se registrou. Caso contrário não saberemos que é você! + + 2. Crie uma senha única para o [perfil de seu usuário][prefs], e use para entrar. + + %{new_user_tips} + + Nós acreditamos sempre em [comportamento comunitário civilizado](%{base_url}/guidelines). + + Aproveite sua participação! + + (Se precisar se comunicar com um [membro da equipe](%{base_url}/about) como novo usuário, apenas responda a esta mensagem.) + + [prefs]: %{user_preferences_url} backup_succeeded: subject_template: "Backup completado com sucesso" text_body_template: "O backup foi bem sucedido.\nVisite a [administração > seção backup](/admin/backups) para fazer download do seu novo backup." @@ -1221,31 +1398,31 @@ pt_BR: subject_template: "A exportação de dados falhou" text_body_template: "Nos desculpamos, mas sua exportação de dados falhou. Por favor verifique os logs ou entre em contato com um membro da staff." email_reject_trust_level: - subject_template: "Mensagem rejeitada" + subject_template: "[%{site_name}] Problema com email -- Nível de Confiabilidade Insuficiente" text_body_template: | Lamentamos, mas o seu e-mail para%{destination} (intutulado %{former_title}) não funcionou. Sua conta não tem o nível de confiança necessário para criar novos tópicos para este endereço de e-mail. Se você acredita que isso é um erro, entre em contato com um membro da equipe. email_reject_no_account: - subject_template: "Problema com Email -- Conta Desconhecida" + subject_template: "[%{site_name}] Problema com Email -- Conta Desconhecida" text_body_template: | Lamentamos, mas o seu e-mail para%{destination} (intutulado %{former_title}) não funcionou. Não há nenhum relato conhecido com este endereço de e-mail. Tente enviar a partir de um endereço de e-mail diferente, ou entre em contato com um membro da equipe. email_reject_empty: - subject_template: "Problemas no Email - Mensagem em Branco" + subject_template: "[%{site_name}] Problema com email -- Sem conteúdo" text_body_template: | Desculpe-nos, mas seu e-mail para %{destination} (entitulado %{former_title}) não funcionou. Nós não conseguimos encontrar nenhum conteúdo no e-mail. Tenha certeza que você escreveu alguma coisa no topo do e-mail - nós não conseguimos analisar respostas em linha. Se você está recebendo isto, mas incluiu conteúdo, tente novamente com conteúdo em HTML no seu e-mail (não somente texto). email_reject_parsing: - subject_template: "Problemas no Email - Conteúdo desconhecido." + subject_template: "[%{site_name}] Problema com email -- Conteúdo não reconhecido" text_body_template: | Desculpe-nos, mas seu e-mail para %{destination} (entitulado %{former_title}) não funcionou. Não conseguimos encontrar onde sua resposta estava no e-mail. **Tenha certeza de escrever a resposta no topo do e-mail** -- tudo após o início da mensagem respondida é descartado. email_reject_post_error: - subject_template: "Problemas no email - \"Posting Error\" " + subject_template: "[%{site_name}] Problema com email -- Erro de postagem" text_body_template: | Desculpe-nos, mas seu e-mail para %{destination} (entitulado %{former_title}) não funcionou. Algumas possíveis causas são: formatação complexa, mensagem muito grande, mensagem muito pequena. Por favor tente novamente, ou poste através do site se persistir. email_reject_post_error_specified: - subject_template: "Problemas no email - \"Posting Error\" " + subject_template: "[%{site_name}] Problema com email -- Erro de postagem" text_body_template: | Desculpe-nos, mas seu e-mail para %{destination} (entitulado %{former_title}) não funcionou. @@ -1255,29 +1432,35 @@ pt_BR: Se você puder corrigir, por favor tente novamente. email_reject_reply_key: - subject_template: "Problemas no email - Sem endereço para retorno - \"Unknown Reply Key\"" + subject_template: "[%{site_name}] Problema com email -- Chave de Resposta Desconhecida" text_body_template: | Pedimos desculpas, mas seu email para %{destination} (titled %{former_title}) não foi enviado. O endereço de email do destinatário é desconhecido ou inválido, Contate um dos moderadores para relatar esse problema email_reject_destination: - subject_template: "Probelmas no Email - Email destinatário desconhecido" + subject_template: "[%{site_name}] Problema com email -- Email destinatário desconhecido" text_body_template: | Desculpe-nos, mas seu e-mail para %{destination} (entitulado %{former_title}) não funcionou. Nenhum dos endereços de destinatário são reconhecidos pelo fórum. Por favor tenha certeza que o fórum está na linha To: (não CC ou BCC), e que você está enviando para o endereço de e-mail fornecido pelos administradores. email_reject_topic_not_found: - subject_template: "Problema com o email -- Tópico Não Encontrado" + subject_template: "[%{site_name}] Problema com email -- Tópico Não Encontrado" text_body_template: | Nós nos desculpamos, mas sua mensagem de email para %{destination} (entitulada %{former_title}) não funcionou. O tópico não foi encontrado, ele pode ter sido excluído. Se você acredito que isso é um erro, entre em contato com um membro da staff. email_reject_topic_closed: - subject_template: "Problema com email -- Tópico Fechado" + subject_template: "[%{site_name}] Problema com email -- Tópico Fechado" text_body_template: | Desculpe-nos, mas a sua mensagem de email para %{destination} (entitulada %{former_title}) não funcionou. O tópico está fechado. Se você acredita que isso é um erro, entre em contato com um membro da staff. + email_reject_auto_generated: + subject_template: "[%{site_name}] Problema com email -- Resposta Gerada Automaticamente" + text_body_template: | + Nós lamentamos, mas sua mensgem de email para %{destination} (intitulada %{former_title}) não funcionou. + + Este email de resposta foi gerado automaticamente, não é aceitável. Se você acredita que isso é um erro, entre em contato com um membro da equipe. email_error_notification: - subject_template: "Problema com o email -- Erro de authenticação POP" + subject_template: "[%{site_name}] Problema com email -- Erro de autenticação POP" text_body_template: | Erro de autenticação ao baixar e-mails através do servidor POP. @@ -1343,8 +1526,35 @@ pt_BR: visit_link_to_respond: "Para responder visite %{base_url}%{url} no seu navegador." posted_by: "Postado por %{username} em %{post_date}" user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} convidou você para uma mensagem privada '%{topic_title}'" - text_body_template: "%{username} convidou você para a mensagem privada '%{topic_title}' em %{site_name}:\n \nPor favor, visite este link para ver o tópico: %{base_url}%{url}\n" + subject_template: "[%{site_name}] %{username} convidou você para uma mensagem '%{topic_title}'" + text_body_template: |2 + + %{username} convidou você para uma mensagem + + > **%{topic_title}** + > + > %{topic_excerpt} + + a + + > %{site_title} -- %{site_description} + + Por favor visitar este link para visualizar a mensagem: %{base_url}%{url} + user_invited_to_topic: + subject_template: "[%{site_name}] %{username} convidou você para um tópico '%{topic_title}'" + text_body_template: |2 + + %{username} convidou você para uma discussão + + > **%{topic_title}** + > + > %{topic_excerpt} + + em + + > %{site_title} -- %{site_description} + + Por favor visitar o link para visualizar a mensagem: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1396,7 +1606,7 @@ pt_BR: %{respond_instructions} digest: why: "Um breve resumo de %{site_link} desde que viu pela última vez em %{last_seen_at}." - subject_template: "[%{site_name}] Atividade do Fórum para %{date}" + subject_template: "Resumo [%{site_name}]" new_activity: "Nova atividade nos seus tópicos e postagens:" top_topics: "Tópicos populares" other_new_topics: "Tópicos populares" @@ -1436,6 +1646,23 @@ pt_BR: %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "Você foi aprovado no %{site_name}!" + text_body_template: | + Bem vindo a %{site_name}! + + Um membro interno aprovou sua conta no %{site_name}. + + Selecione o endereço a seguir para confirmar e ativar sua nova conta: + %{base_url}/users/activate-account/%{email_token} + + Se preferir, tente copiar e colar o endereço acima no seu navegador. + + %{new_user_tips} + + Nós acreditamos sempre em [comportamento comunitario civilizado](%{base_url}/guidelines). + + Aproveite sua participação! + + (Se precisar se comunicar com um [membro interno](%{base_url}/about) como um novo usuário, só responder a esta mensagem.) signup: subject_template: "[%{site_name}] Ativar a sua nova conta" text_body_template: | @@ -1477,7 +1704,7 @@ pt_BR: spam_hosts: "Esse novo usuário tentou criar múltiplas postagens com links do mesmo domínio. Veja a configuração newuser_spam_host_threshold do site." email_log: no_user: "Não foi possível encontrar usuário com id %{user_id}" - suspended_not_pm: "Usuário está suspenso e e-mail não é uma mensagem privada" + suspended_not_pm: "Usuário está suspenso, não é uma mensagem" seen_recently: "Usuário viu recentemente" post_not_found: "Não foi possível encontrar uma mensagem com id %{post_id}" notification_already_read: "A notificação deste e-mail é sobre já foi lido" @@ -1543,3 +1770,78 @@ pt_BR:

    arco-íris category:parques status:open order:latest irá pesquisar por tópicos contendo a palavra "arco-íris" na categoria "parques" que não estiverem fechados ou arquivados, ordenados pela data do último post.

    + badges: + long_descriptions: + autobiographer: | + Blah blah blah + Blah blah blah + first_like: | + Blah blah blah + Blah blah blah + first_link: | + Blah blah blah + Blah blah blah + first_quote: | + Blah blah blah + Blah blah blah + first_share: | + Blah blah blah + Blah blah blah + read_guidelines: | + Blah blah blah + Blah blah blah + reader: | + Blah blah blah + Blah blah blah + editor: | + Blah blah blah + Blah blah blah + first_flag: | + Sinalizar é crítico para a saúde de sua comunidade. Se notar qualquer mensagem que requer atenção de um moderador por favor + não hesite em sinalizar. Você também pode usar o diálogo de sinalização para enviar mensagens para usuários a seu alcance + confiabilidade nível 1. + nice_share: | + Blah blah blah + Blah blah blah + welcome: | + Blah blah blah + Blah blah blah + anniversary: | + Blah blah blah + Blah blah blah + good_share: | + Blah blah blah + Blah blah blah + great_share: | + Blah blah blah + Blah blah blah + nice_post: | + Blah blah blah + Blah blah blah + nice_topic: | + Blah blah blah + Blah blah blah + good_post: | + Blah blah blah + Blah blah blah + good_topic: | + Blah blah blah + Blah blah blah + great_post: | + Blah blah blah + Blah blah blah + great_topic: | + Blah blah blah + Blah blah blah + basic: | + Blah blah blah + Blah blah blah + member: | + Blah blah blah + Blah blah blah + regular: | + Blah blah blah + Blah blah blah + leader: | + Blah blah blah + Blah blah blah diff --git a/config/locales/server.ro.yml b/config/locales/server.ro.yml index c203f3a87d..ed43d14a9a 100644 --- a/config/locales/server.ro.yml +++ b/config/locales/server.ro.yml @@ -869,7 +869,7 @@ ro: email_time_window_mins: "Aşteaptă (n) minute până să trimiţi orice email de notificare, pentru a da utilizatorilor şansa să-şi editeze şi să-şi finalizeze postările." email_posts_context: "Câte răspunsuri precedente să fie incluse ca context în email-urile de notificare." flush_timings_secs: "Cât de frecvent se resetează timpul de pe server, în secunde." - max_word_length: "Lungimea maximă permisă a unui cuvânt, în caractere, în titlul discuţiei." + title_max_word_length: "Lungimea maximă permisă a unui cuvânt, în caractere, în titlul discuţiei." title_min_entropy: "Minimul de entropie (caractere unice, non-engelze ce definesc mai multe elemente) necesară pentru un titlu de discuţie." body_min_entropy: "Minimul de entropie (caractere unice, non-engleze ce definesc mai multe elemente) necesară pentru conţinutul unei postari." diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index 128f04af63..34c29c862c 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -13,13 +13,14 @@ ru: title: "Discourse" topics: "Темы" posts: "сообщения" - loading: "Загружается..." + loading: "Загрузка..." powered_by_html: 'При поддержке Discourse, лучше всего использовать с включенным JavaScript' log_in: "Войти" via: "%{username} на %{site_name}" is_reserved: "зарезервировано" purge_reason: "Автоматически удален, как неактивная, неактивированная учетная запись" disable_remote_images_download_reason: "Загрузка картинок была отключена из-за недостаточности места на диске." + anonymous: "Гость" errors: format: '%{attribute} %{message}' messages: @@ -47,6 +48,18 @@ ru: restrict_dependent_destroy: one: "Невозможно удалить запись, т.к. существует зависимая запись: %{record}" many: "Невозможно удалить запись, т.к. существует зависимая запись: %{record}" + too_long: + one: слишком длинное (максимум 1 символ) + few: слишком длинное (максимум %{count} символов) + other: слишком длинное (максимум %{count} символов) + too_short: + one: слишком короткое (минимум 1 символ) + few: слишком короткое (минимум %{count} символов) + other: слишком короткое (минимум %{count} символов) + wrong_length: + one: недопустимой длины (должен быть 1 символ) + few: недопустимой длины (должно быть %{count} символов) + other: недопустимой длины (должно быть %{count} символов) template: body: 'Обнаружены ошибки в следующих полях:' embed: @@ -117,7 +130,6 @@ ru: num_posts: "Сообщений:" num_participants: "Участников:" read_full_topic: "Читать всю тему" - private_message_abbrev: "ЛС" rss_description: latest: "Последние темы" hot: "Популярные темы" @@ -413,9 +425,7 @@ ru: description: 'Это сообщение может быть оскорбительным или нарушает правила поведения.' long_form: 'отметить как неуместное' notify_user: - title: 'Отправить личное сообщение @{{username}}' description: 'Это сообщение содержит что-то, на что я хочу обратить внимание автора в приватном диалоге. Не отправлять жалобу модераторам.' - long_form: 'оповещаемый пользователь' email_title: 'Ваше сообщение в теме "%{title}"' email_body: "%{link}\n\n%{message}\n" notify_moderators: @@ -452,7 +462,6 @@ ru: email_title: 'Тема "%{title}" требует внимания модератора' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Ваше сообщение было отмечено сообществом. Посмотрите ваши личные сообщения.

    ' user_must_edit: '

    На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.

    ' archetypes: regular: @@ -517,23 +526,23 @@ ru: user_to_user_private_messages: title: "Личные сообщения" xaxis: "День" - yaxis: "Количество личных сообщений" + yaxis: "Количество сообщений" system_private_messages: title: "Системные сообщения" xaxis: "День" - yaxis: "Количество личных сообщений" + yaxis: "Количество сообщений" moderator_warning_private_messages: title: "Предупреждения модераторов" xaxis: "День" - yaxis: "Количество личных сообщений" + yaxis: "Количество сообщений" notify_moderators_private_messages: title: "Оповещений модераторам" xaxis: "День" - yaxis: "Количество личных сообщений" + yaxis: "Количество сообщений" notify_user_private_messages: title: "Оповещение пользователю" xaxis: "День" - yaxis: "Количество личных сообщений" + yaxis: "Количество сообщений" top_referrers: title: "Топ ссылающихся" xaxis: "Пользователь" @@ -617,10 +626,8 @@ ru: description: "Руководство и необходимая информация для новых пользователей." welcome_user: title: "Приветствие: новый пользователь" - description: "После регистрации новому пользователю будет автоматически послано личное сообщение." welcome_invite: title: "Приветствие: Приглашенный пользователь" - description: "После принятия приглашения от пользователя сайта, новому пользователю будет автоматически послано личное сообщение." login_required_welcome_message: title: "Требуется вход: приветствие" description: "Приветствие, отображаемое пользователям, не вошедшим на сайт, если опция 'требуется вход' включена." @@ -642,11 +649,9 @@ ru: default_locale: "Язык по умолчанию для данного экземпляра Discourse (ISO 639-1 Code)" allow_user_locale: "Позволять пользователям выбирать язык интерфейса" min_post_length: "Минимально допустимое количество символов в одном сообщении." - min_private_message_post_length: "Минимально допустимое количество символов в одном приватном сообщении." max_post_length: "Максимально допустимое количество символов в одном сообщении." min_topic_title_length: "Максимально допустимое количество символов в названии темы." max_topic_title_length: "Максимально допустимое количество символов в названии темы." - min_private_message_title_length: "Минимально допустимое количество символов в заголовке приватного сообщения." min_search_term_length: "Минимальное количество символов в поисковом запросе." allow_uncategorized_topics: "Разрешить создание тем вне разделов." uncategorized_description: "Описание раздела для тем \"без раздела\". Будет скрыто есть оставить пустым." @@ -685,7 +690,6 @@ ru: summary_posts_required: "Минимальное количество сообщение в теме для активации кнопки \"Сводка по теме\"" summary_likes_required: "Минимальное количество симпатий в теме для активации кнопки \"Сводка по теме\"" summary_percent_filter: "При нажатии на кнопку \"Сводка по теме\", показывать лучшие % сообщений" - enable_private_messages: "Разрешить пользователям 1-го уровеня доверия писать приватные сообщения и отвечать на приватные сообщения" enable_long_polling: "Использовать механизм long polling для уведомлений о событиях" anon_polling_interval: "Как часто следует опрашивать клиентов анонимных пользователей в миллисекундах" auto_track_topics_after: "Глобальное количество миллисекунд по умолчанию до того, как тема начинает автоматически отслеживаться (0 - всегда, -1 - никогда)" @@ -708,7 +712,6 @@ ru: post_menu_hidden_items: "Пункты меню действий над сообщением, которые должны быть спрятаны и появляться по нажатию на кнопку с троеточием." share_links: "Определите, какие элементы должны отображаться в окне 'Поделиться' и в какой последовательности." track_external_right_clicks: "Отслеживать внешние ссылки, открытые правой кнопкой мыши (например: открыть в новой вкладке), по умолчанию отключено, так как это перезаписывает пути" - send_welcome_message: "Отправлять новым зарегистрировавшимся пользователям приватное сообщение с короткой инструкцией по возможностям форума." redirect_users_to_top_page: "Автоматически перенаправлять новых и давно отсутствующих пользователей к началу страницы." show_email_on_profile: "Показать Email пользователя в профиле (видно только себе и персоналу)" enable_badges: "Включить систему наград" @@ -749,7 +752,6 @@ ru: max_bookmarks_per_day: "Максимальное количество созданных закладок пользователем в день." max_edits_per_day: "Максимальное количество редактирований пользователем в день." max_topics_per_day: "Максимальное количество тем, которые пользователь может создать за один день." - max_private_messages_per_day: "Максимальное количество приватных сообщений, которые пользователь может послать за один день." suggested_topics: "Количество рекомендованных тем, отображаемых внизу текущей темы." limit_suggested_to_category: "Показыать только темы из текущего раздела в списке рекомендованых тем." clean_orphan_uploads_grace_period_hours: "Период (в часах) после которого неопубликованные вложения удаляются." @@ -781,7 +783,6 @@ ru: create_thumbnails: "Создавать миниатюры слишком больших картинок в сообщениях, показывать большие оригиналы в отдельно открывающемся окне." email_time_window_mins: "Подождать (n) минут перед отсылкой каких-либо уведомлений почтой, чтобы дать автору возможность перечитать и отредактировать своё сообщение." email_posts_context: "Сколько предыдущих ответов включать для контекста в уведомления по e-mail." - max_word_length: "Максимальная длина слов в названии темы." title_min_entropy: "Минимальная энтропия, требуемая для названия темы. Энтропия - количество уникальных символов, причем некоторые русские буквы могут считаться за 2 символа, а не за 1, как английские)." body_min_entropy: "Минимальная энтропия, требуемая для текста новой темы. Энтропия - количество уникальных символов, причем некоторые русские буквы могут считаться за 2 символа, а не за 1, как английские)." title_fancy_entities: "Конвертировать обычные ASCII символы в симпатичные HTML символы в названиях тем, аля SmartyPants http://daringfireball.net/projects/smartypants/" @@ -861,8 +862,6 @@ ru: edited: "%{display_username} отредактировал ваш пост в теме %{link}" posted: "%{display_username} оставил сообщение в теме %{link}" moved_post: "%{display_username} перенес ваш пост в тему %{link}" - private_message: "%{display_username} отправил вам личное сообщение: %{link}" - invited_to_private_message: "%{display_username} пригласил вас в частную беседу: %{link}" invitee_accepted: "%{display_username} принял ваше приглашение" linked: "пользователь %{display_username} упомянул вас в %{link}" granted_badge: "Вы награждены: %{link}" @@ -925,10 +924,10 @@ ru: other: "Эта тема была автоматически закрыта через %{count} минут после последнего ответа. В ней больше нельзя отвечать." autoclosed_disabled: "Эта тема открыта. В ней можно отвечать." autoclosed_disabled_lastpost: "Эта тема теперь открыта, и в ней можно отвечать." - pinned_enabled: "Данная тема прилеплена. Тема будет находиться наверху списка тем раздела, пока кто нибудь из администраторов не открепит ее." - pinned_disabled: "Эта тема отлеплена. Она больше не будет отображаться наверху списка тем раздела." - pinned_globally_enabled: "Эта тема теперь прилеплена глобально и будет появляться вверху списка тем соответствующего раздела и всех списков тем, пока персонал не отлепит ее глобально или пользователь не отлепит лично для себя." - pinned_globally_disabled: "Эта тема теперь отлеплена и больше не будет появляться вверху списка тем соответствующего раздела." + pinned_enabled: "Данная тема закреплена. Тема будет находиться наверху списка тем раздела, пока кто нибудь из администраторов не открепит ее." + pinned_disabled: "Эта тема откреплена. Она больше не будет отображаться наверху списка тем раздела." + pinned_globally_enabled: "Эта тема теперь закреплена глобально и будет появляться вверху списка тем соответствующего раздела и всех списков тем, пока персонал не открепит ее глобально или пользователь не открепит лично для себя." + pinned_globally_disabled: "Эта тема теперь откреплена и больше не будет появляться вверху списка тем соответствующего раздела." visible_enabled: "Эта тема включена в списки и будет отображаться среди других тем." visible_disabled: "Эта тема теперь исключена из списков. Она не будет отображаться среди других тем ни на каких страницах, а единственным способом прочитать ее будет доступ по ее прямой ссылке." login: @@ -1060,18 +1059,77 @@ ru: system_messages: post_hidden: subject_template: "Сообщение скрыто по причине поступления множественных жалоб" + usage_tips: + text_body_template: | + Несколько коротких советов, чтобы помочь вам освоиться на форуме: + + ## Прокручивайте страницу + + Здесь нет кнопок "Следующая страница" или номеров страниц – чтобы читать дальше, **просто крутите вниз!** + + Когда придут новые сообщения, они отобразятся автоматически. + + ## Где я? + + - Для поиска, перехода к своему профилю или отображения меню используйте **кнопку в правом верхнем углу**. + + - Клик на заголовок темы приведет к следующему непрочитанному сообщению. Используйте ссылки "Активность" и "Ответов" чтобы перейти в начало или конец темы. + + - Когда читаете тему, переходите в начало ↑, нажав на заголовок темы. Нажмите на зеленую панель в правом нижнем углу для управления навигацией или используйте кнопки home и end на клавиатуре. + + + + ## Как ответить? + + - Чтобы ответить на всю тему в целом, используйте кнопку "Ответить" в самом низу страницы. + + - Чтобы ответить на отдельное сообщение, используйте кнопку "Ответить" в теле этого сообщения. + + - Чтобы отклонить обсуждение в другом направлении, но сохранить эти темы как взаимосвязанные, используйте кнопку "Ответить в новой связанной теме" справа от сообщения. + + Чтобы процитировать чье-либо сообщение в вашем ответе, выделите текст, который вы хотите процитировать, и затем нажмите кнопку "Ответить". + + + + Чтобы упомянуть кого-либо в вашем ответе, укажите его имя. Введите с клавиатуры символ '@', и появится список автоматического дополнения с именами пользователей. + + + + Чтобы добавить [стандартные иконки Emoji](http://www.emoji.codes/), просто введите с клавиатуры символ ':' или традиционный смайлик ':)' :smile: + + ## Что еще я могу делать? + + Внизу каждого сообщения есть кнопки действий. + + + + Чтобы дать кому-то понять, что вам понравилось его сообщение, используйте кнопку **мне нравится**. Если вы заметили нарушение в сообщении, сообщите об этом приватно автору или команде сайта, нажав на кнопку **пожаловаться на сообщение**. + + Также вы можете **поделиться ссылкой на сообщение** или **добавить его в закладки**, чтобы в будущем найти это сообщение в своем профиле. + + ## Кто говорит со мной? + + Когда кто-то отвечает на ваше сообщение, цитирует ваше сообщение или упоминает вас с помощью '@', в правом верхнем углу сразу же появляется число. Нажмите на эту иконку чтобы перейти к **уведомлениям**. + + + + Не беспокойтесь о пропущенных ответах – мы отправим вам письмо на электронную почту о новых ответах (и сообщениях) если вас не будет в онлайне, когда они появятся. + + ## Что такое новые темы? + + По умолчанию, все темы младше двух дней считаются новыми, и любая тема, в которой вы приняли активное участие (отвечали, создали ее или читали достаточно долгое время) будет автоматически отслеживаться на предмет обновлений. + + Вы увидите синий "новый" и числовой индикаторы рядом с такими темами: + + + + Вы можете изменить настройки уведомлений и отслеживания с помощью списка внизу темы (то же самое касается и категорий). Чтобы изменить настройки отслеживания тем или классификацию тем как "новых", перейдите в [свои пользовательские настройки](%{base_url}/my/preferences). + + ## Почему я не могу делать некоторые вещи? + + Новые пользователи ограничены в некоторых правах по соображениям безопасности. В процессе вовлечения и участия в жизни сообщества, вы зарабатываете доверие, становитесь полноправным гражданином, и эти ограничения будут автоматически сняты. При достаточно высоком [уровне доверия](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924), вы получите еще больше возможностей чтобы помогать нам вместе управлять сообществом. welcome_user: subject_template: "Добро пожаловать на %{site_name}!" - text_body_template: | - Спасибо, что зарегистрировались на сайте %{site_name} и добро пожаловать! - - %{new_user_tips} - - Пожалуйста, старайтесь придерживаться [этики и правил вежливости](%{base_url}/guidelines). - - Приятного времяпровождения! - - (Если у вас имеются вопросы к [персоналу](%{base_url}/about), то можете задать их ответив на это личное сообщение.) welcome_invite: subject_template: "Добро пожаловать на %{site_name}!" backup_succeeded: @@ -1116,7 +1174,6 @@ ru: csv_export_failed: subject_template: "Экспорт не удался" email_reject_trust_level: - subject_template: "Проблема с письмом - недостаточный уровень доверия" text_body_template: | К сожалению, ваше письмо к %{destination} (под названием %{former_title}) не может быть обработано. @@ -1124,39 +1181,22 @@ ru: Если вы считаете, что произошла ошибка, свяжитесь с персоналом (модератором или администратором). email_reject_no_account: - subject_template: "Проблема с письмом - не найдена учетная запись" text_body_template: | К сожалению, ваше письмо к %{destination} (под названием %{former_title}) не может быть обработано. Мы не смогли найти учетную запись с электронным адресом, с которого пришло ваше письмо. Попробуйте отправить с другого почтового ящика, или, если вы считаете, что произошла ошибка, свяжитесь с персоналом - модератором или администратором. - email_reject_empty: - subject_template: "Проблема с письмом - отсутствует текст" - email_reject_parsing: - subject_template: "Проблема с письмом - ошибка в интерпретации сообщения" - email_reject_post_error: - subject_template: "Проблема с письмом - ошибка в сообщении" - email_reject_post_error_specified: - subject_template: "Проблема с e-mail -- ошибка отправки" email_reject_reply_key: - subject_template: "Проблема с письмом - неизвестный ключ ответа" text_body_template: | К сожалению, ваше письмо к %{destination} (под названием %{former_title}) не может быть обработано. Ключ ответа неверный, поэтому мы не можем определить, кому адресован ваш ответ. Пожалуйста, свяжитесь с персоналом (модератором или администратором). - email_reject_destination: - subject_template: "Проблема с письмом - неизвестный адрес получателя To:" - email_reject_topic_not_found: - subject_template: "Проблема с обработкой письма - тема не найдена" email_reject_topic_closed: - subject_template: "Проблема с обработкой письма - тема уже закрыта" text_body_template: | К сожалению, ваше письмо к %{destination} (под названием %{former_title}) не может быть обработано. Тема закрыта. Если вы считаете, что произошла ошибка, свяжитесь с персоналом (модератором или администратором). - email_error_notification: - subject_template: "Проблема с e-mail -- ошибка POP аутентификации" too_many_spam_flags: subject_template: "Новый аккаунт заблокирован" text_body_template: | @@ -1216,12 +1256,6 @@ ru: reply_by_email: "Чтобы отреагировать на сообщение, ответьте на данное письмо или перейдите по ссылке %{base_url}%{url} в вашем браузере." visit_link_to_respond: "Чтобы отреагировать на сообщение, перейдите по ссылке %{base_url}%{url} в вашем браузере." posted_by: "Отправлено %{username} %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} отправил вам личное сообщение '%{topic_title}'" - text_body_template: | - %{username} отправил вам личное сообщение '%{topic_title}' на %{site_name}: - - Пожалуйста, нажмите на ссылку, чтобы прочитать сообщение: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1269,7 +1303,6 @@ ru: %{respond_instructions} digest: why: "Сводка обсуждений на сайте %{site_link} с момента вашего последнего визита %{last_seen_at}" - subject_template: "[%{site_name}] Новые сообщения от %{date}" new_activity: "Новая активность в ваших темах и сообщениях:" top_topics: "Популярные темы" other_new_topics: "Популярные темы" @@ -1377,6 +1410,104 @@ ru: Отредактируйте первое сообщение этой темы чтобы изменить содержание страницы {page_name}. guidelines_topic: title: "Руководство и часто задаваемые вопросы" + body: | + + + ## [Это цивилизованное место для публичной дискуссии](#civilized) + + Пожалуйста, относитесь к этому форуму с таким же уважением, с которым вы отнеслись бы к общественому парку. Наше сообщество — это место для обмена навыками, знаниями и интересами через общение. + + Здесь нет строгого и краткого свода правил, только лишь общее руководство по управлению нашим сообществом. Используйте эти рекомендации для того, чтобы сохранить этот форум чистым и хорошо освещенным местом для цивилизованного публичного общения. + + + + ## [Улучшайте дискуссию](#improve) + + Помогите нам сделать этот форум замечательным местом для общения, улучшая дискуссию любым возможным способом, даже незначительным. Если вы не уверены, что ваше сообщение улучшит дискуссию, подумайте еще раз, что вы хотите сказать на самом деле, или попытайтесь написать чуть позже. + + Темы, обсуждаемые на этом форуме, имеют для нас значение, и мы хотим, чтобы они имели значение для вас. Уважайте темы и людей, которые их обсуждают, даже если вы не согласны с чем-либо, что было сказано. + + Вы сможете улучшить дискуссию, изучив темы, которые уже обсуждаются. Пожалуйста, потратьте немного своего времени, исследуя существующие темы перед тем, как ответить или начать новую. Так вы сможете увеличить шанс встреть людей, разделяющих ваши интересы. + + + + ## [Будьте цивилизованны, даже если вы не согласны](#agreeable) + + Возможно, вы захотите ответить, не соглашаясь с чем-то. Это нормально. Но помните, что _следует критиковать идеи, а не людей_. Пожалуйста, избегайте: + + * Ругательства. + * Перехода на личности. + * Реакции на тон сообщения вместо его содержания. + * Рефлекторной, необдуманной реакции. + + Вместо этого приведите обоснованный контраргумент, который улучшит дискуссию. + + + + ## [Ваше участие имеет решающее значение](#participate) + + Обсуждения, которые мы ведем на этом форуме, задают тон каждому участнику. Помогите нам повлиять на будущее этого сообщества, активно включаясь в обсуждения, которые делают форум интересным местом, и избегая бесполезных. + + Форум предоставляет инструменты, которые позволяют сообществу совместно определять лучшие (и худшие) вклады: избранное, закладки, лайки, жалобы, ответы, правки и т. д. Используйте эти инструменты, чтобы улучшить свои собственные впечатления и впечатления других участников. + + Давайте сделаем так, чтобы после нашего прихода парк стал лучше, чем он был до нас. + + + + ## [Если вы заметили проблему, сообщите о ней](#flag-problems) + + Модераторы имеют особые полномочия; они в ответе за форум. Но и вы тоже. С вашей помощью модераторы могут стать помощниками сообщества, а не только уборщиками или полицейскими. + + Если вы заметили неприемлемое поведение, не отвечайте. Это поощряет такое поведение, признавая его, расходует ваши силы и тратит время каждого. _Пожалуйтесь_. Если накопится достаточно жалоб, будут приняты необходимые меры, либо автоматически, либо с привлечением модератора. + + В целях поддержки нашего сообщества модераторы оставляют за собой право удалить любые материалы и любого пользователя в любой момент времени и без объяснения причин. Модераторы не занимаются премодерацией новых сообщений; модераторы и операторы сайта не несут ответственности за содержание материалов, размещенных пользователями форума. + + + + ## [Всегда будьте цивилизованны](#be-civil) + + Ничто не вредит здоровому общению так, как грубость: + + * Будьте цивилизованны. Не публикуйте ничего такого, что разумный человек счел бы обидным, оскорбительным или враждебным. + * Содержите форум в чистоте. Не публикуйте непристойные или сексуально откровенные материалы. + * Уважайте друг друга. Не утомляйте и не раздражайте других, не выдавайте себя за кого-то, кем вы не являетесь, и не публикуйте персональные данные людей. + * Уважайте наш форум. Не публикуйте спам и не допускайте вандализма в любой форме. + + У нас нет строгих правил с точными определениями — избегайте даже _косвенного сходства_ с недопустимыми вещами. Если вы не уверены, спросите себя, как бы вы себя почувствовали, если ваше сообщение увидели близкие вам люди. + + Это публичный форум, и поисковые машины индексируют его содержимое. Помните, что ваши высказывания, ссылки и изображения могут увидеть несовершеннолетние и ваши друзья. + + + + ## [Будьте аккуратны](#keep-tidy) + + Старайтесь размещать вещи в правильных местах, чтобы мы могли потратить больше времени на общение и меньше на уборку. Поэтому: + + * Не начинайте тему в неподходящей для нее категории. + * Не публикуйте свое сообщение сразу в нескольких местах. + * Не публикуйте бессодержательные сообщения. + * Не отклоняйтесь от темы в середине обсуждения. + * Не подписывайте свои сообщения — к каждому сообщению автоматически прикреплена ссылка на ваш профиль. + + Вместо сообщений "+1" или "Согласен" используйте кнопку "Мне нравится". Вместо разворота темы в совершенно другом направлении используйте функцию "Ответить в новой связанной теме". + + + + ## [Публикуйте только то, на что у вас есть права](#stealing) + + Не следует размещать материалы, принадлежащие другим лицам, без их разрешения. Не следует размещать описания, ссылки или способы кражи чьей-либо интеллектуальной собственности (программы, видео, аудио, изображения) или способы нарушения любого другого закона. + + + + ## [Вы управляете форумом](#power) + + Этот сайт управляется [дружественным коллективом](/about) и *вами*, сообществом. Если у вас есть вопросы, касающиеся принципов работы форума, откройте новую тему в [категории meta](/c/meta) и давайте обсудим их! В случае возникновения критической или срочной проблемы, которая не может быть решена с помощью meta темы или жалобы, свяжитесь с нами через [страницу коллектива](/about). + + + + ## [Условия предоставления услуг](#tos) + + Да, юридические документы скучны, но мы должны защитить себя – и в расширительном смысле вас и вашу информацию – против недоброжелателей. У нас есть раздел [Условия предоставления услуг](/tos), описывающий ваше (и наше) поведение и права относительно содержимого, приватности и закона. Чтобы пользоваться нашими услугами, вы должны согласиться следовать нашим [условиям предоставления услуг](/tos). tos_topic: title: "Пользовательское соглашение" privacy_topic: diff --git a/config/locales/server.sq.yml b/config/locales/server.sq.yml index c4a29a23c7..10c61a0149 100644 --- a/config/locales/server.sq.yml +++ b/config/locales/server.sq.yml @@ -85,7 +85,6 @@ sq: num_posts: "Postime:" num_participants: "Pjesëmarrësit:" read_full_topic: "Lexo temën e plotë" - private_message_abbrev: "PM" rss_description: latest: "Temat e fundit" hot: "Temat Kryesore" @@ -359,9 +358,7 @@ sq: description: 'This post contains content that a reasonable person would consider offensive, abusive, or a violation of our community guidelines.' long_form: 'flagged this as inappropriate' notify_user: - title: 'Mesazh Privat @{{username}}' description: 'This post contains something I want to talk to this person directly and privately about. Does not cast a flag.' - long_form: 'mesazh privat anëtarit' email_title: 'Your post in "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -398,7 +395,6 @@ sq: email_title: 'The topic "%{title}" requires moderator attention' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Your post was flagged by the community. Please see your private messages.

    ' user_must_edit: '

    This post was flagged by the community and is temporarily hidden.

    ' archetypes: regular: @@ -462,23 +458,18 @@ sq: user_to_user_private_messages: title: "User-to-User" xaxis: "Ditë" - yaxis: "Number of private messages" system_private_messages: title: "Sistem" xaxis: "Ditë" - yaxis: "Number of private messages" moderator_warning_private_messages: title: "Moderator Warning" xaxis: "Ditë" - yaxis: "Number of private messages" notify_moderators_private_messages: title: "Notify Moderators" xaxis: "Ditë" - yaxis: "Number of private messages" notify_user_private_messages: title: "Notify User" xaxis: "Ditë" - yaxis: "Number of private messages" top_referrers: title: "Top Referrers" xaxis: "User" @@ -524,10 +515,8 @@ sq: description: "Guidance and essential information for new users." welcome_user: title: "Welcome: New User" - description: "A private message automatically sent to all new users when they sign up." welcome_invite: title: "Welcome: Invited User" - description: "A private message automatically sent to all new invited users when they accept the invitation from another user to participate." login_required_welcome_message: title: "Login Required: Welcome Message" description: "Welcome message that is displayed to logged out users when the 'login required' setting is enabled." @@ -549,11 +538,9 @@ sq: default_locale: "The default language of this Discourse instance (ISO 639-1 Code)" allow_user_locale: "Allow users to choose their own language interface preference" min_post_length: "Minimum allowed post length in characters" - min_private_message_post_length: "Minimum allowed post length in characters for private messages" max_post_length: "Maximum allowed post length in characters" min_topic_title_length: "Minimum allowed topic title length in characters" max_topic_title_length: "Maximum allowed topic title length in characters" - min_private_message_title_length: "Minimum allowed title length for a private message in characters" min_search_term_length: "Minimum valid search term length in characters" allow_uncategorized_topics: "Allow topics to be created without a category." uncategorized_description: "The description of the uncategorized category. Leave blank for no description." @@ -591,7 +578,6 @@ sq: summary_likes_required: "Minimum likes in a topic before 'Summarize This Topic' is enabled" 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 private messages and reply to private 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" long_polling_interval: "Amount of time the server should wait before responding to clients when there is no data to send (logged on users only)" @@ -623,7 +609,6 @@ sq: post_menu_hidden_items: "The menu items to hide by default in the post menu unless an expansion ellipsis is clicked on." share_links: "Determine which items appear on the share dialog, and in what order." track_external_right_clicks: "Track external links that are right clicked (eg: open in new tab) disabled by default because it rewrites URLs" - send_welcome_message: "Send all new users a welcome private message with a quick start guide." suppress_reply_directly_below: "Don't show the expandable reply count on a post when there is only a single reply directly below this post." suppress_reply_directly_above: "Don't show the expandable in-reply-to on a post when there is only a single reply directly above this post." suppress_reply_when_quoting: "Don't show the expandable in-reply-to on a post when post quotes reply." @@ -655,7 +640,6 @@ sq: sso_url: "URL of single sign on endpoint" sso_overrides_email: "Overrides local email with external site email from SSO payload (WARNING: discrepancies can occur due to normalization of local emails)" sso_overrides_username: "Overrides local username with external site username from SSO payload (WARNING: discrepancies can occur due to differences in username length/requirements)" - sso_overrides_name: "Overrides local name with external site name from SSO payload (WARNING: discrepancies can occur due to normalization of local names)" sso_overrides_avatar: "Overrides user avatar with external site avatar from SSO payload. If enabled, disabling allow_uploaded_avatars is highly recommended" enable_local_logins: "Enable local username and password login based accounts. (Note: this must be enabled for invites to work)" allow_new_registrations: "Allow new user registrations. Uncheck this to prevent anyone from creating a new account." @@ -690,7 +674,6 @@ sq: max_bookmarks_per_day: "Maximum number of bookmarks per user per day." max_edits_per_day: "Maximum number of edits per user per day." max_topics_per_day: "Maximum number of topics a user can create per day." - max_private_messages_per_day: "Maximum number of private messages users can create per day." suggested_topics: "Number of suggested topics shown at the bottom of a topic." limit_suggested_to_category: "Only show topics from the current category in suggested topics." clean_up_uploads: "Remove orphan unreferenced uploads to prevent illegal hosting. WARNING: you may want to back up of your /uploads directory before enabling this setting." @@ -738,7 +721,6 @@ sq: email_time_window_mins: "Wait (n) minutes before sending any notification emails, to give users a chance to edit and finalize their posts." email_posts_context: "How many prior replies to include as context in notification emails." flush_timings_secs: "How frequently we flush timing data to the server, in seconds." - max_word_length: "The maximum allowed word length, in characters, in a topic title." title_min_entropy: "The minimum entropy (unique characters, non-english count for more) required for a topic title." body_min_entropy: "The minimum entropy (unique characters, non-english count for more) required for a post body." title_fancy_entities: "Convert common ASCII characters to fancy HTML entities in topic titles, ala SmartyPants http://daringfireball.net/projects/smartypants/" @@ -849,8 +831,6 @@ sq: edited: "%{display_username} edited your post in %{link}" posted: "%{display_username} posted in %{link}" moved_post: "%{display_username} moved your post to %{link}" - private_message: "%{display_username} sent you a private message: %{link}" - invited_to_private_message: "%{display_username} invited you to a private message: %{link}" invitee_accepted: "%{display_username} accepted your invitation" linked: "%{display_username} linked you in %{link}" granted_badge: "You earned %{link}" @@ -1087,19 +1067,16 @@ sq: %{logs} ``` email_reject_trust_level: - subject_template: "Email issue -- Insufficient Trust Level" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. Your account does not have the required trust level to post new topics to this email address. If you believe this is in error, contact a staff member. email_reject_no_account: - subject_template: "Email issue -- Unknown Account" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. There is no known user account with this email address. Try sending from a different email address, or contact a staff member. email_reject_empty: - subject_template: "Email issue -- No Content" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. @@ -1107,19 +1084,16 @@ sq: If you're getting this and you _did_ include content, try again with HTML content included in your email (not just plain text only). email_reject_parsing: - subject_template: "Email issue -- Content unrecognized" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. We couldn't find your reply in the provided email. **Make sure your reply is at the top of the email** -- we can't process inline replies. email_reject_post_error: - subject_template: "Email issue -- Posting error" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. Some possible causes are: complex formatting, message too large, message too small. Please try again, or post via the website if this continues. email_reject_post_error_specified: - subject_template: "Email issue -- Posting error" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. @@ -1129,31 +1103,26 @@ sq: If you can correct the problem, please try again. email_reject_reply_key: - subject_template: "Email issue -- Unknown Reply Key" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. The provided reply key is invalid or unknown, so we don't know what this email is in reply to. Contact a staff member. email_reject_destination: - subject_template: "Email issue -- Unknown To: Address" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. None of the destination addresses are recognized. Please make sure that the site address is in the To: line (not Cc: or Bcc:), and that you are sending to the correct email address provided by staff. email_reject_topic_not_found: - subject_template: "Email issue -- Topic Not Found" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. The topic is not found, it may have been deleted. If you believe this is in error, contact a staff member. email_reject_topic_closed: - subject_template: "Email issue -- Topic Closed" text_body_template: | We're sorry, but your email message to %{destination} (titled %{former_title}) didn't work. The topic is closed. If you believe this is in error, contact a staff member. email_error_notification: - subject_template: "Email issue -- POP authentication error" text_body_template: | There has been an authentication error while polling mails from the POP server. @@ -1226,12 +1195,6 @@ sq: reply_by_email: "To respond, reply to this email or visit %{base_url}%{url} in your browser." visit_link_to_respond: "To respond, visit %{base_url}%{url} in your browser." posted_by: "Posted by %{username} on %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} invited you to a private message '%{topic_title}'" - text_body_template: | - %{username} invited you to a private message '%{topic_title}' on %{site_name}: - - Please visit this link to view the topic: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1278,7 +1241,6 @@ sq: --- %{respond_instructions} digest: - subject_template: "[%{site_name}] Përmbledhja për %{date}" new_activity: "New activity on your topics and posts:" top_topics: "Popular posts" other_new_topics: "Popular topics" @@ -1362,7 +1324,6 @@ sq: spam_hosts: "This new user tried to create multiple posts with links to the same domain. See the newuser_spam_host_threshold site setting." email_log: no_user: "Can't find user with id %{user_id}" - suspended_not_pm: "User is suspended, not a private message" seen_recently: "User was seen recently" post_not_found: "Can't find a post with id %{post_id}" notification_already_read: "The notification this email is about has already been read" diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml index 9dd9105e35..3918c486fa 100644 --- a/config/locales/server.sv.yml +++ b/config/locales/server.sv.yml @@ -105,7 +105,6 @@ sv: num_posts: "Inlägg:" num_participants: "Deltagare" read_full_topic: "Läs hela ämnet" - private_message_abbrev: "PM" rss_description: latest: "Senaste trådar" hot: "Heta trådar" @@ -384,23 +383,18 @@ sv: user_to_user_private_messages: title: "Användare-till-användare" xaxis: "Dag" - yaxis: "Antal privata meddelanden" system_private_messages: title: "System" xaxis: "Dag" - yaxis: "Antal privata meddelanden" moderator_warning_private_messages: title: "Varning från moderator" xaxis: "Dag" - yaxis: "Antal privata meddelanden" notify_moderators_private_messages: title: "Notifiera Moderatorer" xaxis: "Dag" - yaxis: "Antal privata meddelanden" notify_user_private_messages: title: "Notifiera användare" xaxis: "Dag" - yaxis: "Antal privata meddelanden" top_referrers: title: "Toppreferenter" xaxis: "Användare" @@ -460,10 +454,8 @@ sv: description: "Pop up just-in-time guidance automatically displayed above the composer when new users begin typing their first two new topics." welcome_user: title: "Välkommen: Ny användare" - description: "A private message automatically sent to all new users when they sign up." welcome_invite: title: "Välkommen: Inbjuden användare" - description: "A private message automatically sent to all new invited users when they accept the invitation from another user to participate." login_required_welcome_message: title: "Inloggning krävs: Välkomstmeddelande" description: "Välkomstmeddelande som visas för utloggade användare när inställningen för 'inloggning krävs' är aktiv. " @@ -524,8 +516,6 @@ sv: edited: "%{display_username} edited your post in %{link}" posted: "%{display_username} posted in %{link}" moved_post: "%{display_username} moved your post to %{link}" - private_message: "%{display_username} sent you a private message: %{link}" - invited_to_private_message: "%{display_username} invited you to a private message: %{link}" invitee_accepted: "%{display_username} accepted your invitation" search: types: diff --git a/config/locales/server.te.yml b/config/locales/server.te.yml index 607fed1ad1..8b4c7486ff 100644 --- a/config/locales/server.te.yml +++ b/config/locales/server.te.yml @@ -126,7 +126,6 @@ te: num_posts: "టపాలు:" num_participants: "భాగస్వాములు:" read_full_topic: "పూర్తి విషయం చదువు" - private_message_abbrev: "PM" rss_description: latest: "తాజా విషయాలు" hot: "వేడివేడి విషయాలు" @@ -356,9 +355,7 @@ te: description: 'ఈ టపాలో విషయం కొంతమందికి అభ్యంతరకరమైనది, అగౌరవపరిచేది లేదా మా కమ్యునిటీ మార్గదర్శకాలకు లోబడినది కాదు.' long_form: 'దీన్ని అసమంజసమైనదిగా కేతనించాము' notify_user: - title: 'ప్రైవేటు సందేశము @{{username}}' description: 'ఈ టపా నేను సభ్యునితో వ్యక్తిగతంగా మాట్లాడాలనుకున్న విషయం కలిగి ఉంది. కేతనం అవ్వసరంలేదు.' - long_form: 'సభ్యుడికి ప్రైవేటు సందేశం పంపాము' email_title: '"%{title}" లో మీ టపా' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -395,7 +392,6 @@ te: email_title: '"%{title}" విషయం నిర్వాహకుల దృష్టిలో ఉంది.' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    మీ టపా సమూహం ద్వారా కేతనం చెందింది. దయచేసి మీ ఆంతరంగిక సందేశాలు చూడండి.

    ' user_must_edit: '

    ఈ టపా కమ్యునిటీ కేతనించింది. తాత్కాలికంగా దాచబడింది

    ' archetypes: regular: @@ -460,23 +456,18 @@ te: user_to_user_private_messages: title: "సభ్యుని నుండి సభ్యునికి" xaxis: "రోజు" - yaxis: "ప్రైవేటు సందేశాల సంఖ్య" system_private_messages: title: "వ్వవస్థ" xaxis: "రోజు" - yaxis: "ప్రైవేటు సందేశాల సంఖ్య" moderator_warning_private_messages: title: "నిర్వాహకుని హెచ్చరిక" xaxis: "రోజు" - yaxis: "ప్రైవేటు సందేశాల సంఖ్య" notify_moderators_private_messages: title: "నిర్వాహకుల దృష్టి" xaxis: "రోజు" - yaxis: "ప్రైవేటు సందేశాల సంఖ్య" notify_user_private_messages: title: "సభ్యుల దృష్టి" xaxis: "రోజు" - yaxis: "ప్రైవేటు సందేశాల సంఖ్య" top_referrers: title: "అగ్ర రిఫరరు" xaxis: "సభ్యుడు" @@ -540,7 +531,6 @@ te: contact_email_invalid: "సైట్ సంప్రదింపు ఈ-మెయిల్ చెల్లదు.సైట్ సెట్టింగ్స్‌ లో అప్‌డేట్ చేయండి." title_nag: "సైట్ పేరు నమోదు చేయండి.శీర్షికను సైట్ సెట్టింగ్స్‌ లో అప్‌డేట్ చేయండి" site_description_missing: "శోధన ఫలితాల్లో కనిపించడానికి మీ సైట్ యొక్క ఏకవాక్య వివరణ నమోదు చేయండి.సైట్ వివరణను సైట్ సెట్టింగ్స్‌ లో అప్‌డేట్ చేయండి." - site_contact_username_warning: "ముఖ్యమైన స్వయంసిధ్ధ సందేశాలు పంపడానికి ఒక స్నేహపూర్వక సిబ్బంది వాడుకదారు పేరును Update site_contact_username లో ప్రవేశపెట్టండి సైట్ సెట్టింగ్స్." notification_email_warning: "ఈ-మెయిల్ ప్రకటనలు మీ డొమైన్ లో ఒక చెల్లుబాటు అయ్యే ఈ-మెయిల్ చిరునామా నుండి పంపలేదు :ఈ-మెయిల్ బట్వాడా అనిశ్చిత మరియు నమ్మలేనిదిగా ఉంటుంది.దయచేసి ప్రకటనను ఉంచండి_ఒక చెల్లుబాటు అయ్యే స్థానిక ఈమెయిల్ చిరునామాకు ఈ-మెయిల్ చేయండిసైట్ సెట్టింగ్స్ లో." content_types: education_new_reply: @@ -554,10 +544,8 @@ te: description: "కొత్త వాడుకరుల కోసం మార్గదర్శకత్వం మరియు అవసరమైన సమాచారం" welcome_user: title: "సుస్వాగతం: కొత్త సభ్యుడు" - description: "కొత్త వినియోగదారులు సైన్ అప్ చేసినప్పుడు , ఒక ఆంతరంగిక సందేశం స్వయంచాలకంగా పంపుతుంది." welcome_invite: title: "స్వాగతం : ఆహ్వానించబడిన వాడుకరి" - description: "చర్చలో పాల్గొనేందుకు ఒక వినియోగదారుని నుండి ఆహ్వానం అంగీకరించినప్పుడు ఒక ప్రైవేట్ సందేశం స్వయంచాలకంగా కొత్తగా ఆహ్వానించిన వినియోగదారులందరికీ అందుతుంది." login_required_welcome_message: title: "లాగిన్ అవసరం: స్వాగత సందేశం" description: "'లాగిన్ అవసరం' సెట్టింగ్ ప్రారంభించబడి ఉన్నప్పుడు లాగ్ అవుట్ వినియోగదారులకు స్వాగతసందేశం ప్రదర్శించబడుతుంది." @@ -579,11 +567,9 @@ te: default_locale: "ఈ సంభాషణ సమయంలో అప్రమేయ భాష (ISO 639-1 Code)" allow_user_locale: "వినియోగదారులు వారి సొంత భాష ఇంటర్ఫేస్ ప్రాధాన్యతను ఎంచుకోవడానికి అనుమతించు" min_post_length: "టపా అనుమతించే అక్షరాల కనిష్ఠ పొడవు" - min_private_message_post_length: "ప్రైవేట్ సందేశాలకు కనిష్ఠంగా ఎన్ని అక్షరాలకు అనుమతి" max_post_length: "టపా అనుమతించే అక్షరాల గరిష్ఠ పొడవు" min_topic_title_length: "శీర్షిక కు అనుమతించే అక్షరాల కనిష్ఠ పొడవు" max_topic_title_length: "శీర్షిక కు అనుమతించే అక్షరాల గరిష్ఠ పొడవు" - min_private_message_title_length: "ఒక శీర్షికకు కనిష్ఠంగా ఎన్ని అక్షరాలకు అనుమతి" min_search_term_length: "శోధనకు అవసరమయ్యే అక్షరాల కనీస పొడవు" allow_uncategorized_topics: "అనుమతించే విషయాలు వర్గం లేకుండా సృష్టించబడుతున్నాయి." uncategorized_description: "వర్గీకరించని వర్గం యొక్క వివరణ. ఎటువంటి వివరణ లేని వాటిని ఖాళీగా వదిలివేయండి." @@ -610,7 +596,6 @@ te: max_bookmarks_per_day: "వినియోగదారులు గరిష్ఠంగా రోజుకు చేయగలిగే బుక్‌మార్క్‌ల సంఖ్య" max_edits_per_day: "వినియోగదారులు గరిష్ఠంగా రోజుకు చేయగలిగే సవరణల సంఖ్య" max_topics_per_day: "వినియోగదారులు గరిష్ఠంగా రోజుకు సృష్టించగలిగే విషయాలు" - max_private_messages_per_day: "వినియోగదారులు గరిష్ఠంగా రోజుకు సృష్టించగలిగే ప్రైవేటు సందేశాలు" max_invites_per_day: "వినియోగదారు గరిష్ఠంగా రోజుకు ఎన్ని ఆహ్వానాలు పంపవచ్చు." suggested_topics: "విషయం దిగువన చూపే సూచనల సంఖ్య" default_invitee_trust_level: "ఆహ్వానించబడిన వినియోగదారుల కొరకు నమ్మకపు స్థాయి (0-4)" @@ -677,10 +662,6 @@ te: subject_template: "%{site_name} కు సుస్వాగతం!" welcome_invite: subject_template: "%{site_name} కు సుస్వాగతం!" - email_reject_no_account: - subject_template: "ఈ-మెయిల్ విషయం -- తెలియని ఖాతా" - email_reject_topic_not_found: - subject_template: "ఈ-మెయిల్ విషయం -- అంశం కనుగొనలేదు" too_many_spam_flags: subject_template: "కొత్త ఖాతా బ్లాక్ చేశారు" user_notifications: @@ -715,7 +696,6 @@ te: unknown_image_type: "క్షమించండి, మీరు ఎగుమతి చేయడానికి ప్రయత్నించిన ఫైల్ చిత్రం వలె కనిపించడం లేదు." size_not_found: "క్షమించండి, కానీ మేము చిత్రం యొక్క పరిమాణం నిర్ణయించలేదు. బహుశా మీ చిత్రం పాడై ఉండవచ్చు?" email_log: - suspended_not_pm: "వినియోగదారుడు తొలగింపబడ్డారు, ఆంతరంగిక సందేశం కాదు" seen_recently: "వినియోగదారు కొత్తగా చూశారు" notification_already_read: "ఈ ఈమెయిల్ గురించి ప్రకటన ఇప్పటికే చదివబడింది" post_deleted: "టపా రచయితచే తొలగింపబడింది" diff --git a/config/locales/server.tr_TR.yml b/config/locales/server.tr_TR.yml index 801673573e..8c5b14b5d4 100644 --- a/config/locales/server.tr_TR.yml +++ b/config/locales/server.tr_TR.yml @@ -120,7 +120,6 @@ tr_TR: num_posts: "Gönderiler:" num_participants: "Katılımcılar:" read_full_topic: "Konunun tamamını okuyun" - private_message_abbrev: "Özel Mesaj" rss_description: latest: "En son konular" hot: "Sıcak konular" @@ -365,9 +364,7 @@ tr_TR: description: 'Bu gönderi saldırgan, kötüleyici ya da topluluk yönergelerini ihlal eden içerik barındırmaktadır. ' long_form: 'uygunsuz olarak bayraklanmış' notify_user: - title: 'Özel Mesaj @{{username}}' description: 'Bu gönderi, bu kişiyle doğrudan veya özel olarak konuşmamı gerektiren içeriğe sahip. Bayraklanacak bir durum yok.' - long_form: 'kullanıcıya özel mesaj yollandı' email_title: '"%{title}" başlıklı gönderiniz' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -404,7 +401,6 @@ tr_TR: email_title: '"%{title}" konu başlığının moderatör tarafından kontrol edilmesi gerekiyor' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    Gönderiniz topluluk tarafından bayraklandı. Lütfen özel mesajlarınıza göz atın.

    ' user_must_edit: '

    Bu gönderi topluluk tarafından bayraklandı ve geçici olarak gizlendi.

    ' archetypes: regular: @@ -469,23 +465,18 @@ tr_TR: user_to_user_private_messages: title: "Kullanıcıdan Kullanıcıya" xaxis: "Gün" - yaxis: "Özel mesajların sayısı" system_private_messages: title: "Sistem" xaxis: "Gün" - yaxis: "Özel mesajların sayısı" moderator_warning_private_messages: title: "Moderatör Uyarısı" xaxis: "Gün" - yaxis: "Özel mesajların sayısı" notify_moderators_private_messages: title: "Moderatörleri Bilgilendir" xaxis: "Gün" - yaxis: "Özel mesajların sayısı" notify_user_private_messages: title: "Kullanıcıyı Bilgilendir" xaxis: "Gün" - yaxis: "Özel mesajların sayısı" top_referrers: title: "En Çok Atıfta Bulunanlar" xaxis: "Kullanıcı" @@ -564,7 +555,6 @@ tr_TR: title_nag: "Sitenizin ismini girin. Site ismini Site Ayarları sayfasından güncelleyin." site_description_missing: "Arama sonuçlarında gözükecek, sitenizi açıklayan tek bir cümle girin. Site Ayarları sayfasından site açıklamasını güncelleyin." consumer_email_warning: "Sitenizde e-posta gönderimleri için Gmail (ya da başka bir e-posta hizmeti) kurulumu yapılmış. Gmail ile gönderebileceğiniz e-posta sayısı limitlidir. Onun yerine, emaillarınızın ulaştırılabildiğinden emin olmak için mandrill.com benzeri bir hizmet sağlayıcısını kullanın." - site_contact_username_warning: "Otomatik yollanan önemli özel mesajları gönderen kişi olarak gözükecek yardımsever adminin kullanıcı adını girin. Site Ayarları</a> sayfasından güncelleyin. " notification_email_warning: "Bildiri emaillari alan adınıza bağlı geçerli bir email adresinden yollanmıyor; emaillar düzenli ve güvenilir bir şekilde ulaşmayabilir. Lütfen Site Ayarları sayfasından notification_email değeri için geçerli bir yerel email adresi girin." content_types: education_new_reply: @@ -578,10 +568,8 @@ tr_TR: description: "Yeni kullanıcılar için kılavuz ve gerekli bilgiler." welcome_user: title: "Hoşgeldiniz: Yeni Kullanıcı" - description: "Tüm yeni kullanıcılara, ilk üye olduklarında otomatik olarak gönderilen özel mesaj. " welcome_invite: title: "Hoşgeldiniz: Davetli Kullanıcı" - description: "Bir başka kullanıcı tarafından davet edilen yeni kullanıcılara, daveti kabul ettiklerinde gönderilen otomatik özel mesaj." login_required_welcome_message: title: "Giriş Yapmak Zorunlu: Hoşgeldiniz Mesajı" description: "'Giriş yapmak zorunlu' ayarı etkinleştirildiğinde, sisteme giriş yapmamış olan ziyaretçilere gözüken hoşgeldiniz mesajı. " @@ -603,11 +591,9 @@ tr_TR: default_locale: "Bu Discourse yüklemesinin (ISO 639-1 Code) varsayılan dili" allow_user_locale: "Kullanıcıların arayüz için kendi istedikleri dili seçmesine izin ver" min_post_length: "Gönderide olması gereken en az karakter sayısı" - min_private_message_post_length: "Özel mesaj gönderilerinde olması gereken en az karakter sayısı" max_post_length: "Gönderide izin verilen en fazla karakter sayısı" min_topic_title_length: "Konuda olması gereken en az karakter sayısı" max_topic_title_length: "Konu başlığında izin verilen en fazla karakter sayısı" - min_private_message_title_length: "Özel mesajın başlığında olabilecek en az karakter sayısı" min_search_term_length: "Arama için girilecek kelimede olması gereken en az karakter sayısı" allow_uncategorized_topics: "Konuların kategori seçmeden oluşturulmasına izin ver." uncategorized_description: "Kategorisiz kategorisinin tanıtımı. Boş bırakabilirsiniz." @@ -640,7 +626,6 @@ tr_TR: digest_logo_url: "Sitenizin özet e-postalarının üst kısmında kullanılacak logo. Boş bırakılırsa `logo_url` kullanılacak. örn: http://example.com/logo.png" logo_small_url: "Sitenizin sol üstünde yer alacak, sayfayı aşağı kaydırdığınızda gözükecek küçük logo. Boş bırakılırsa, ana sayfa glifi gözükecek." favicon_url: "Site favikonunuz. Bakın; http://en.wikipedia.org/wiki/Favicon" - mobile_logo_url: "Mobil sitenizin sol üstünde yer alacak sabit pozisyonlu logo resmi. Boş bırakılırsa, sitenin ismi kullanılacak." apple_touch_icon_url: "Apple dokunmatik cihazları için kullanılan ikon. Önerilen boyut; 144 x 144 pixel." notification_email: "Tüm önemli sistem e-postaları için kullanılacak olan gönderen e-posta adresi. E-postaların başarıyla ulaşması için buraya girilen alan adının SPF, DKIM ve reverse PTR kayıtlarının doğru yapılması lazım." email_custom_headers: "Sınırlandırılmış özel e-posta başlıkları listesi" @@ -651,7 +636,6 @@ tr_TR: summary_likes_required: "'Bu Konuyu Özetle'nin etkinleştirilmesi için konuda olması gereken en az beğeni sayısı" summary_percent_filter: "Kullanıcı 'Bu Konuyu Özetle'ye tıkladığında, gönderinin ilk % kısmını göster" summary_max_results: "'Bu Konuyu Özetle'den dönen en fazla gönderi sayısı" - enable_private_messages: "Güven seviyesi 1 olan kullanıcıların özel mesaj oluşturmasına ve özel mesajlara cevap vermesine izin ver" enable_long_polling: "Bildiri için kullanılan message bus uzun sorgular yapabilir" long_polling_base_url: "Uzun sorgular için kullanılan baz URL (CDN dinamik içerik sunuyorsa, bunu origin olarak ayarladığına emin ol) ör: http://origin.site.com" long_polling_interval: "Gönderilecek bilgi olmadığı zaman sunucunun kullanıcılara geri dönmeden önce beklemesi gereken zaman (sadece giriş yapmış kullanıcın için)" @@ -684,8 +668,6 @@ tr_TR: post_menu_hidden_items: "Gönderi menüsündeki maddeler, genişletme üç noktasına tıklanmadığı takdirde otomatik olarak gizlenir. " share_links: "Paylaşım penceresinde hangi maddelerin ne sırada gözükeceğini belirleyin." track_external_right_clicks: "URL'leri tekrar yazdığı için, sağ tıklanan dış bağlantıların (ör: yeni bir sekmede aç) takibi varsayılan ayarlarda devre dışı bırakılmıştır." - site_contact_username: "Tüm otomatik özel mesajlar için gönderen kişi olarak gözükecek geçerli bir görevli kullanıcı adı. Boş bırakılırsa varsayılan Sistem hesabı kullanılacak." - send_welcome_message: "Tüm yeni kullanıcılara bir hoşgeldiniz özel mesajı ile beraber hızlı başlangıç kılavuzu gönderin." suppress_reply_directly_below: "Bu gönderinin direk altında sadece tek bir cevap varsa, gönderideki açılabilir cevap sayısı bölümünü gösterme." suppress_reply_directly_above: "Bu gönderinin direk üstünde sadece tek bir cevap varsa, gönderideki açılabilir hangi-cevaba-istinaden-cevapla bölümünü gösterme." suppress_reply_when_quoting: "Gönderi cevabı alıntılarsa, gönderideki açılabilir hangi-cevaba-istinaden-cevapla bölümünü gösterme." @@ -719,7 +701,6 @@ tr_TR: sso_secret: "TOA bilgisinin kritopgrafik şekilde doğrulanması için kullanılan gizli string, 10 karakter veya daha uzun olduğundan emin olun" sso_overrides_email: "SSO yararlı yükündeki dış site e-postasını yerel e-postanın üzerine yazar (DİKKAT: yerel e-postaların normalizasyon sürecinde uyuşmazlıklar doğabilir)" sso_overrides_username: "SSO yararlı yükündeki dış site kullanıcı adını yerel kullanıcı adının üzerine yazar (DİKKAT: kullanıcı adı uzunlukları/gereksinimleri arasındaki farklılıklardan ötürü uyuşmazlıklar yaşanabilir)" - sso_overrides_name: "SSO yararlı yükündeki dış site ismini yerel ismin üzerine yazar (DİKKAT: yerel isimlerin normalizasyon sürecinde uyuşmazlıklar doğabilir)" sso_overrides_avatar: "SSO yararlı yükündeki dış site avatarını kullanıcı avatarının üzerine yazar Eğer etkinleştirildiyse, allow_uploaded_avatars ayarının devre dışı bırakılması şiddetle önerilir" enable_local_logins: "Yerel kullanıcı adı ve parola bazlı hesap girişlerini etkinleştir. (Not: davetiyelerin çalışabilmesi için bu ayarın etkinleştirilmesi gerekli)" allow_new_registrations: "Yeni kayıtlara izin ver. Yeni hesap oluşturulmasını engellemek için burayı işaretlemeyin." @@ -754,7 +735,6 @@ tr_TR: max_bookmarks_per_day: "Kullanıcı başına düşen günlük en fazla işaretleme sayısı." max_edits_per_day: "Bir günde, bir kullanıcının yapabileceği en fazla düzenleme sayısı." max_topics_per_day: "Bir günde, bir kullanıcının oluşturabileceği en fazla konu sayısı." - max_private_messages_per_day: "Bir günde, bir kullanıcının oluşturabileceği en fazla özel mesaj sayısı." max_invites_per_day: "Bir günde, bir kullanıcının yollayabileceği maksimum davet sayısı." suggested_topics: "Konunun en altında yer alan, önerilen konu sayısı. " limit_suggested_to_category: "Önerilen konularda sadece kullanıcının bulunduğu kategoriye ait konuları göster." @@ -804,7 +784,6 @@ tr_TR: email_time_window_mins: "Kullanıcılara, gönderilerini düzenlemelerine ve tamamlamalarına fırsat vermek için herhangi bir bildiri e-postası göndermeden önce (n) dakika bekleyin." email_posts_context: "Genel durumu göstermek amaçlı, bildiri e-postalarında yer alacak önceki cevap sayısı." flush_timings_secs: "Zaman verisinin sunucuya atılma sıklığı, saniye olarak." - max_word_length: "Konu başlığında bulunabilecek en fazla karakter sayısı." title_min_entropy: "Konu başlığı için gereken en az entropi (tekil karakter, ingilizce-dışı karakterler daha fazla sayılır)" body_min_entropy: "Gönderi içeriği için gereken en az entropi (tekil karakter, ingilizce-dışı karakterler daha fazla sayılır)" title_fancy_entities: "SmartyPants tarzında, konu başlıklarında ASCII karakterlerini süslü HTML öğelerine çevir: http://daringfireball.net/projects/smartypants/" @@ -928,8 +907,6 @@ tr_TR: edited: "%{display_username} gönderinizi düzenledi: %{link}" posted: "%{display_username} gönderi oluşturdu %{link}" moved_post: "%{display_username} gönderinizi buraya taşıdı: %{link}" - private_message: "%{display_username} size özel mesaj gönderi: %{link}" - invited_to_private_message: "%{display_username} sizi özel mesaja davet etti: %{link}" invitee_accepted: "%{display_username} davetinizi kabul etti" linked: "%{display_username} size %{link} sayfasında bağlantı verdi" granted_badge: "%{link} kazandınız" @@ -1104,90 +1081,10 @@ tr_TR: post_hidden: subject_template: "Topluluk tarafından bayraklandığı için gönderiniz gizlendi" text_body_template: "Merhaba,\n\nBu, gönderinizin gizlendiğini haber vermek için %{site_name} sitesinden gönderilmiş otomatik bir mesajdır.\n\n%{base_url}%{url}\n\n%{flag_reason}\n\nGönderiniz gizlenmeden önce birden fazla kullanıcı tarafından bayraklandı. Lütfen, bu geri bildirimler doğrultusunda gönderinizi nasıl düzelteceğinizi düşünün. **Gönderinizi %{edit_delay} dakika sonra düzenleyebilirsiniz, otomatik olarak tekrar yayına alınacaktır.** Bu sistemdeki güven seviyenizi yükseltecektir. \n\nAncak, eğer gönderiniz kullanıcılar tarafından ikinci kere gizlenirse, görevliler tarafından incelenene kadar gizli kalacaktır - ve hesabınızın askıya alınması dahil olmak üzere farklı önlemler alınabilir.\n\nDaha fazla bilgi için, lütfen [topluluk yönergelerine bakın](%{base_url}/guidelines).\n\n" - usage_tips: - text_body_template: | - Bu özel mesaj, hemen harekete geçebilmeniz için bir kaç pratik tavsiye içerir. - - ## Sayfayı aşağı kaydırmaya devam edin - - Farkettiğiniz gibi sonraki herhangi bir sayfa butonu ya da sayfa sayısı yok - daha fazla okumak için, **sayfayı aşağı kaydırmanız yeterli!** - - Yeni gönderiler geldikçe, otomatik olarak görünürler. - - ## Neredeyim? - - - Arma, kullanıcı sayfanız, veya menü için **sağ üstteki ikonlu butona** tıklayın. - - - Herhangi bir konu başlığı sizi bir sonraki okunmamış gönderiye götürür. En üst veya en alta gitmek için son aktivite zamanı ve gönderi sayısını kullanın. - - - Bir konuyu okurken, konu başlığına tıklayarak en üste ↑ zıpla. Tüm navigasyonla ilgili kontroller için sağ alttaki yeşil ilerleme barını seç, veya home and end tuşlarını kullan. - - - - ## Nasıl cevaplarım? - - - Genel olarak konuya cevap vermek için, sayfanın en altındaki Cevapla butonunu kullanın. - - - Belirli bir gönderiye cevap vermek için, o gönderinin altında bulunan Cevapla butonunu kullanın. - - - Sohbeti bölmeden başka bir yöne çekmek için, bgönderinin sağındaki Bağlantılı Konu Oluştururarak Cevapla'ya tıklayın. - - Cevabınızda birinden alıntı yapmak için, alıntı yapmak istediğiniz metni seçin ve sonrasında herhangi bir Cevapla butonuma tıklayın. - - - - Cevabınızda birine ping atmak istiyorsanız, o kişinin isminden bahsedin. `@` yazdığınız an otomatik tamamlayıcı pop-up'ı belirecektir. - - - - [Standart Emoji](http://www.emoji.codes/) için, `:` yazın ya da gülücük `:)` atın :smile: - - ## Başka neler yapabilirim? - - Her gönderinin altında aksiyon butonları var. - - - - Birine gönderisini beğendiğinizi belirtmek istiyorsanız, **beğen** butonunu kullanın. Gönderiyle ilgili bir sorun görüyorsanız, görevlilere durumu bildirmek için **bayrakla** butonunu kullanın. - - **Paylaş** butonu aracılığıyla gönderiye bir bağlantı paylaşabilir, veya **işaretle** butonu ile gönderiyi işaretleyip sonrasında kullanıcı sayfanızdan kolayca ulaşabilirsiniz. - - ## Kim benimle konuşuyor? - - Biri gönderinize cevap verir, gönderinizi alıntılar, ya da `@kullanıcıadı` nızdan bahsederse, sayfanızın en sağ üstünde bir sayı hemen beliriverir. Bu sayıya tıklayarak **bildiriler**inize ulaşabilirsiniz. - - - - Bir cevabı kaçıracaksınız diye kaygılanmayın – çevrimiçi değilseniz direk cevaplar (ve özel mesajlar) geldikçe tarafınıza bilgilendirme emaili atılır. - - ## Hangi durumda sohbetler yeni sayılır? - - Varsayılan olarak, üzerinden henüz iki gün geçmemiş tüm sohbetler yeni sayılır. Katıldığınız (cevapladığınız, oluşturduğunuz, veya uzun bir süre okuduğunuz) tüm sohbetler otomatik olarak takip edilir. - - Bu konuların yanında mavi yeni ve sayı işaretlerini göreceksiniz. - - - - Herhangi bir konunun bildiri durumunu o konunun altın bulunan kontrol aracılığıyla değiştirebilirsiniz. (Bu ayar kategori bazında da yapılabilir.) Konuları nasıl takip ettiğinizi ya da yeninin tanımını değiştirmek için, [kullanıcı ayarlarınıza](/my/preferences) göz atın. - - ## Bazı şeyleri niye yapamıyorum? - - Güvenlik sebeplerin ötürü yeni kullanıcılar bazı kısıtlamalara tabidir. Burada sohbetlere katıldıkça, topluluğun güvenini kazanırsınız, onun tam bir parçası haline gelirsiniz ve bu limitler de otomatik olarak kalkar. En yüksek [güvenlik seviyelerinde](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924) ise topluluğumuzu birlikte yönetmemize yardımcı olabilmenizi sağlayacak yetkiler kazanırsınız. welcome_user: subject_template: "%{site_name} sitesine hoşgeldiniz!" - text_body_template: | - %{site_name} sitesine katıldığınız için teşekkür ederiz, hoşgeldiniz! - - %{new_user_tips} - - Biz her zaman [medeni topluluk davranışına](%{base_url}/guidelines) inanıyoruz. - - (Eğer yeni bir kullanıcı olarak [görevlilerle](/about) iletişim kurmak isterseniz, bu özel mesajı cevaplamanız yeterli.) - - Ziyaretinizin keyfini çıkarın! welcome_invite: subject_template: "%{site_name} sitesine hoşgeldiniz!" - text_body_template: "%{site_name} sitesine olan daveti kabul ettiğiniz için teşekkür ederiz -- hoşgeldiniz!\n\nSizin için otomatik olarak bir kullanıcı adı oluşturduk: **%{username}**, ancak [kullanıcı profil sayfasınızı][prefs] ziyaret ederek istediğiniz zaman değişiklik yapabilirsiniz.\n\nTekrar giriş yapmak için aşağıdaki seçeneklerden birini kullanabilirsiniz:\n\n1. İstediğiniz giriş seçeneğini kullanarak giriş yapın -- ancak davetiyenizin gönderildiği email adresiyle eşleşmiş olmalı. Yoksa giriş yapanın siz olduğunuzu anlamamız mümkün değil!\n\n2. [Kullanıcı profili sayfanızda][prefs] size özel parolanızı oluşturun ve bunu kullanarak giriş yapın. \n\n%{new_user_tips}\n\n[Sivil toplum davranışlarına](%{base_url}/guidelines) olan inancımız daimidir.\n\nKaldığınız sürenin keyfini çıkarın!\n\n[prefs]: %{user_preferences_url}\n" backup_succeeded: subject_template: "Yedekleme başarıyla tamamlandı" text_body_template: "Yedekleme başarıyla tamamlandı.\n\n[admin > backup section](/admin/backups) bölümünden yeni yedeği indirebilirsiniz." @@ -1238,16 +1135,13 @@ tr_TR: subject_template: "Dışarı veri aktarımı başarısız oldu" text_body_template: "Üzgünüz, dışarı veri aktarımı başarısız oldu. Lütfen kayıtları inceleyin veya bir görevli ile iletişime geçin." email_reject_trust_level: - subject_template: "E-posta sorunu -- Yetersiz Güven Seviyesi" text_body_template: "Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başarısız oldu.\n\nBu e-posta adresine yeni gönderiler oluşturmanız için, hesabınız yeterli güven seviyesine sahip değil. Bir hata olduğunu düşünüyorsanız, bir görevli ile iletişime geçin.\n \n" email_reject_no_account: - subject_template: "E-posta sorunu -- Bilinmeyen Hesap " text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başarısız oldu. Bu e-posta adresine sahip bir kullanıcı bulunamadı. Başka bir e-posta adresinden göndermeyi deneyin ya da bir görevli ile iletişime geçin. email_reject_empty: - subject_template: "E-posta sorunu -- İçerik Yok" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başarısız oldu. @@ -1255,19 +1149,16 @@ tr_TR: E-postanızda içerik olduğu halde bu mesajı aldıysanız, bir sefer de HTML içeriği ile göndermeyi deneyin (sadece düz metin olarak değil). email_reject_parsing: - subject_template: "E-posta sorunu -- Bilinmeyen içerik" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başırısız oldu. E-postada herhangi bir cevap bulamadık. **Cevabınızın e-posta'nın en üstünde yer aldığından emin olun** -- aralardaki cevapları işleyemiyoruz. email_reject_post_error: - subject_template: "E-posta sorunu -- Gönderim hatası" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başarısız oldu. Bir kaç muhtemel neden: karmaşık format, çok uzun mesaj, çok kısa mesaj. Lütfen tekrar deneyin, sorun devam ederse websitesi üzerinden gönderin. email_reject_post_error_specified: - subject_template: "E-posta sorunu -- Gönderim hatası" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başarısız oldu. @@ -1277,37 +1168,31 @@ tr_TR: Sorunu düzeltebilirseniz, lütfen tekrar deneyin. email_reject_reply_key: - subject_template: "E-posta sorunu -- Bilinmeyen Cevap Anahtarı" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başarısız oldu. Cevap anahtarı geçersiz ya da bulunamıyor, bu nedenle de bu mesajın neye cevaben gönderildiğini bilemiyoruz. Bir görevli ile iletişime geçin. email_reject_destination: - subject_template: "E-posta sorunu -- Bilinmeyen Alıcı Adresi" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermeye çalıştığınız e-posta başarısız oldu. Gönderilen adreslerinin hiçbiri bilinmiyor. Site adresinin To: kısmında olduğundan (Cc: ya da Bcc: değil) ve görevliler tarafından sağlanan doğru email adresine yolladığınızdan emin olun. email_reject_topic_not_found: - subject_template: "E-posta sorunu -- Konu Bulunamadı" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermek istediğiniz e-posta başarısız oldu. Konu bulunamadı, silinmiş olabilir. Yanlışlık olduğunu düşünüyorsanız, bir görevli ile iletişime geçin. email_reject_topic_closed: - subject_template: "E-posta sorunu -- Konu Kapatıldı" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermek istediğiniz e-posta başarısız oldu. Konu kapatılmış. Yanlışlık olduğunu düşünüyorsanız, bir görevli ile iletişime geçin. email_reject_auto_generated: - subject_template: "E-posta sorunu -- Bilinmeyen Cevap Anahtarı" text_body_template: | Üzgünüz, ama %{destination} (titled %{former_title}) adresine göndermek istediğiniz email başarısız oldu. Konu kapatılmış. Yanlışlık olduğunu düşünüyorsanız, bir görevli ile iletişime geçin. email_error_notification: - subject_template: "E-posta sorunu -- POP doğrulama hatası" text_body_template: | Mailler POP sunucusundan çağrılırken bir doğrulama hatası oluştu. @@ -1369,12 +1254,6 @@ tr_TR: reply_by_email: "Karşılık vermek için, bu e-postayı cevaplayın ya da %{base_url}%{url} sayfasını internet tarayıcınızda ziyaret edin." visit_link_to_respond: "Karşılık vermek için, %{base_url}%{url} sayfasını internet tarayıcınızda ziyaret edin." posted_by: "%{post_date} tarihinde %{username} tarafından gönderildi" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} sizi '%{topic_title}' başlıklı özel mesaja davet etti" - text_body_template: | - %{username} sizi %{site_name} sitesinde, '%{topic_title}' başlıklı bir özel mesaja davet etti: - - Konuyu görüntülemek için lütfen bu bağlantıyı ziyaret edin: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | @@ -1433,7 +1312,6 @@ tr_TR: %{respond_instructions} digest: why: "%{last_seen_at} tarihindeki son girişinizden beri %{site_link} sitesine olanların kısa bir özeti" - subject_template: "[%{site_name}] Özeti %{date}" new_activity: "Konu ve gönderilerinizdeki yeni aktiviteler:" top_topics: "Popüler gönderiler" other_new_topics: "Popüler konular" @@ -1478,22 +1356,6 @@ tr_TR: %{base_url}/users/authorize-email/%{email_token} signup_after_approval: subject_template: "%{site_name} sitesinde hesabınız onaylandı!" - text_body_template: |+ - %{site_name} sitesine hoşgeldiniz! - - %{site_name} sitesindeki hesabınız bir görevli tarafından onaylandı. - - Aşağıdaki linke tıklayın ve yeni hesabınızı aktive edin: - %{base_url}/users/activate-account/%{email_token} - - Eğer link tıklanabilir değilse, linki kopyalayıp tarayıcınızın adres çubuğuna yapıştırmayı deneyebilirsiniz. - - %{new_user_tips} - - Her zaman [civilized community behavior](%{base_url}/guidelines) olması gerektiğine inanıyoruz. - - Keyfinize bakın! - signup: subject_template: "[%{site_name}] Yeni hesabınızı etkinleştirin" text_body_template: | @@ -1535,7 +1397,6 @@ tr_TR: spam_hosts: "Bu yeni kullanıcı aynı alan adına bağlantı içeren birden fazla gönderi oluşturmaya çalıştı. Site ayarları sayfasındaki newuser_spam_host_threshold değerine göz atın." email_log: no_user: "%{user_id} id'sine sahip bir kullanıcı bulunamadı" - suspended_not_pm: "Kullanıcı uzaklaştırıldı, özel mesaj değil" seen_recently: "Kullanıcı kısa süre önce görüldü" post_not_found: "%{post_id} id'sine sahip bir gönderi bulunamadı" notification_already_read: "Bu e-postanın içerdiği bildiri önceden okundu" diff --git a/config/locales/server.uk.yml b/config/locales/server.uk.yml index e3c7d12a2a..b2a8b2d31d 100644 --- a/config/locales/server.uk.yml +++ b/config/locales/server.uk.yml @@ -59,7 +59,6 @@ uk: num_posts: "Дописи:" num_participants: "Учасники:" read_full_topic: "Читати тему цілком" - private_message_abbrev: "ПП" rss_description: latest: "Останні теми" hot: "Гарячі теми" @@ -252,23 +251,18 @@ uk: user_to_user_private_messages: title: "Користувач користувачу" xaxis: "День" - yaxis: "Кількість приватних повідомлень" system_private_messages: title: "Системні" xaxis: "День" - yaxis: "Кількість приватних повідомлень" moderator_warning_private_messages: title: "Попередження модератора" xaxis: "День" - yaxis: "Кількість приватних повідомлень" notify_moderators_private_messages: title: "Сповіщення модераторів" xaxis: "День" - yaxis: "Кількість приватних повідомлень" notify_user_private_messages: title: "Сповіщення користувача" xaxis: "День" - yaxis: "Кількість приватних повідомлень" top_referrers: title: "Дали найбільше посилань" xaxis: "Користувач" @@ -308,10 +302,8 @@ uk: description: "Спливні настанови, що одразу автоматично відображаються над редактором, коли новий користувач починає вводити свої перші дві нові теми." welcome_user: title: "Вітання: Новий користувач" - description: "Приватне повідомлення, що автоматично надсилається всім новим користувачам під час реєстрації." welcome_invite: title: "Вітання: Запрошений користувач" - description: "Приватне повідомлення, що автоматично надсилається всім новим запрошеним користувачам, коли вони приймають запрошення взяти участь від іншого користувача." login_required_welcome_message: title: "Потрібно увійти: Вітальне повідомлення" description: "Вітальне повідомлення, що відображається для користувачів, що вийшли, коли налаштування 'потрібен вхід' увімкнено." @@ -329,7 +321,6 @@ uk: site_settings: default_locale: "Мова за замовчуванням для цього екземпляра Discourse (Код ISO 639-1)" allow_user_locale: "Allow users to choose their own language interface preference" - min_private_message_title_length: "Мінімальна допустима довжина назви для приватного повідомлення в символах" min_search_term_length: "Мінімальна дозволена довжина пошукової фрази у символах" allow_uncategorized_topics: "Дозволити створювати теми без категорії." allow_duplicate_topic_titles: "Дозволити теми з однаковими, дублюючими назвами." @@ -365,7 +356,6 @@ uk: sso_url: "URL of single sign on endpoint" sso_overrides_email: "Overrides local email with external site email from SSO payload (WARNING: discrepancies can occur due to normalization of local emails)" sso_overrides_username: "Overrides local username with external site username from SSO payload (WARNING: discrepancies can occur due to differences in username length/requirements)" - sso_overrides_name: "Overrides local name with external site name from SSO payload (WARNING: discrepancies can occur due to normalization of local names)" enable_yahoo_logins: "Увімкнути вхід через Yahoo" enable_twitter_logins: "Увімкнути вхід через Twitter; потребує twitter_consumer_key та twitter_consumer_secret" twitter_consumer_key: "Consumer key для входу через Twitter, зареєстрований на http://dev.twitter.com" @@ -420,8 +410,6 @@ uk: edited: "%{display_username} edited your post in %{link}" posted: "%{display_username} posted in %{link}" moved_post: "%{display_username} moved your post to %{link}" - private_message: "%{display_username} sent you a private message: %{link}" - invited_to_private_message: "%{display_username} invited you to a private message: %{link}" invitee_accepted: "%{display_username} accepted your invitation" search: types: @@ -483,8 +471,6 @@ uk: subject_template: "Масове запрошення користувачів оброблено успішно" bulk_invite_failed: subject_template: "Масове запрошення користувачів оброблено з помилками" - email_reject_empty: - subject_template: "Питання з email -- Немає змісту" too_many_spam_flags: subject_template: "Новий обліковий запис заблоковано" blocked_by_staff: @@ -513,12 +499,6 @@ uk: reply_by_email: "Щоб відповісти, надішліть відповідь на цей лист або відвідайте %{base_url}%{url} у своєму веб-оглядачі." visit_link_to_respond: "Щоб відповісти, відвідайте %{base_url}%{url} у своєму веб-оглядачі." posted_by: "Опубліковано %{username} %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} invited you to a private message '%{topic_title}'" - text_body_template: | - %{username} invited you to a private message '%{topic_title}' on %{site_name}: - - Please visit this link to view the topic: %{base_url}%{url} user_replied: subject_template: "[%{site_name}] %{topic_title}" text_body_template: | diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index ef174bd383..b623a7afe9 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -20,6 +20,7 @@ zh_CN: is_reserved: "保留权利" purge_reason: "自动删除被遗弃、未激活账户" disable_remote_images_download_reason: "磁盘空间不足,远程图像下载已经被禁用。" + anonymous: "匿名" errors: format: '%{attribute} %{message}' messages: @@ -113,6 +114,7 @@ zh_CN: next_page: "下一页 →" prev_page: "← 上一页" page_num: "%{num} 页" + home_title: "主页" topics_in_category: "'%{category}'分类中的主题" rss_posts_in_topic: "'%{topic}' 的 RSS 内容聚合" rss_topics_in_category: "分类 '%{category}' 中主题的 RSS 内容聚合" @@ -120,7 +122,7 @@ zh_CN: num_posts: "帖子:" num_participants: "参与者:" read_full_topic: "阅读整个主题" - private_message_abbrev: "私信" + private_message_abbrev: "消息" rss_description: latest: "最新主题" hot: "最热主题" @@ -175,7 +177,7 @@ zh_CN: 与其接连回复主题几次,不如在一个单独的回复中引用相关内容或者@用户名引用前面的帖子。 - 您可以编辑您之前的回复以添加引用。添加引用需要选择文字并且点击出现的引用回复按钮。 + 你可以编辑你之前的回复以添加引用。添加引用需要选择文字并且点击出现的引用回复按钮。 当主题中的帖子的内容不是多个小且独立的回复,而是更少的更有深度的帖子时,我们会更认真地阅读这个主题。 dominating_topic: | @@ -382,9 +384,9 @@ zh_CN: description: '此帖内容包含对他人的攻击、侮辱、仇视语言或违反了我们的社群准则。' long_form: '标记为不当内容' notify_user: - title: '私信 @{{username}}' + title: '消息 @{{username}}' description: '此帖包含一些我想与该用户私下直接交流的内容。不能执行标记操作。' - long_form: '已私信用户' + long_form: '以发送消息给用户' email_title: '你在“%{title}”中的帖子' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -421,7 +423,7 @@ zh_CN: email_title: '"%{title}" 主题需要你的关注' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    你的帖子被社群成员标记了。请查看你的私信

    ' + you_must_edit: '

    你的帖子被社群成员标记了。请查看你的消息

    ' user_must_edit: '

    你的帖子已经被社群标记并被临时隐藏。

    ' archetypes: regular: @@ -486,23 +488,23 @@ zh_CN: user_to_user_private_messages: title: "用户至用户" xaxis: "天" - yaxis: "私信数" + yaxis: "消息数" system_private_messages: title: "系统" xaxis: "天" - yaxis: "私信数" + yaxis: "消息数" moderator_warning_private_messages: title: "版主警告" xaxis: "天" - yaxis: "私信数" + yaxis: "消息数" notify_moderators_private_messages: title: "版主通知" xaxis: "天" - yaxis: "私信数" + yaxis: "消息数" notify_user_private_messages: title: "用户通知" xaxis: "天" - yaxis: "私信数" + yaxis: "消息数" top_referrers: title: "最高引用" xaxis: "用户" @@ -566,6 +568,7 @@ zh_CN: sidekiq_warning: 'Sidekiq 不在运行。很多任务,例如发送电子邮件,是异步的被 sidekiq 调度执行的。请确保至少运行一个 sidekiq 进程。了解 Sidekiq。' queue_size_warning: '队列中的任务数为 %{queue_size},任务较多。这可能因为 Sidekiq 进程出问题导致,或者需要更多的 Sidekiq 进程。' memory_warning: '你的服务器环境内存少于 1GB,我们建议至少要有 1GB 内存。' + enable_google_logins_warning: "警告。Google 将在2015年4月20日停止支持 OpenID 登录。请使用新方法!" both_googles_warning: "你在站点设置中同时启用了 enable_google_logins 和 enable_google_oauth2_logins。禁用 enable_google_logins。" google_oauth2_config_warning: '服务器允许使用 Google Oauth2 登录(enable_google_oauth2_logins),但是 client id 和 client secret 没有被设定。 到站点设置更新此设定。 参考设定指南。' facebook_config_warning: '服务器允许使用 Facebook 账号登录(enable_facebook_logins),但是 app id 和 app secret 没有被设定。 到站点设置更新此设定。参考设定指南。' @@ -581,8 +584,9 @@ zh_CN: title_nag: "为站点指定一个名字。在站点设置中更新标题。" site_description_missing: "输入一句话作为你站点的简介,将出现在搜索结果中。在站点设置中更新 site_description。" consumer_email_warning: "你的站点被设置为使用 Gmail 或者其他客户邮箱服务发送邮件。Gmail 限制每日邮件发送数量。请考虑使用其他邮件服务商来保证邮件的成功发送,例如 mandrill.com。" - site_contact_username_warning: "输入一个友善的职员账户名,并以他的名义发送重要的自动私信。在站点设置中更新 site_contact_username。" + site_contact_username_warning: "输入一个友善的职员账户名,并以他的名义发送重要的自动消息。在站点设置中更新 site_contact_username。" notification_email_warning: "通知邮件不是从你域名的一个有效地址发出的;邮件分发将会变得危险和不可靠。请在站点设置中将 notification_email 设置为一个有效的本地邮件地址。" + s3_deprecation_warning: "警告!Amazon S3 将不再能作为图片/附件存储区了。请按照指引迁移至本地存储。" content_types: education_new_reply: title: "新用户培训:第一个回复" @@ -595,10 +599,10 @@ zh_CN: description: "新用户指引和重要信息" welcome_user: title: "欢迎:新用户" - description: "当新用户注册后自动发送给他们的欢迎私信。" + description: "当新用户注册后自动发送给他们的欢迎消息。" welcome_invite: title: "欢迎:受邀用户" - description: "当新用户通过接受用户邀请加入论坛后,自动发送给他们的欢迎私信。" + description: "当新用户通过接受用户邀请加入论坛后,自动发送给他们的欢迎消息。" login_required_welcome_message: title: "登录要求:欢迎信息" description: "欢迎信息只有 'login required' 设置项被启用后才会向登出的用户显示。" @@ -620,11 +624,12 @@ zh_CN: default_locale: "此论坛的缺省语言(ISO 639-1 代码)" allow_user_locale: "允许用户选择他们自己的语言界面" min_post_length: "帖子允许的最少字符数" - min_private_message_post_length: "私信允许的最小字符数" + min_first_post_length: "第一帖(主题内容)允许的最少字符数" + min_private_message_post_length: "消息允许的最小字符数" max_post_length: "帖子允许的最大字符数" min_topic_title_length: "标题允许的最少字符数" max_topic_title_length: "标题允许的最大字符数" - min_private_message_title_length: "私信标题允许的最小字符数" + min_private_message_title_length: "消息标题允许的最小字符数" min_search_term_length: "搜索条件允许的最少字符数" allow_uncategorized_topics: "允许发表未分类的帖子" uncategorized_description: "未分类分类的描述。留空则无描述。" @@ -654,11 +659,11 @@ zh_CN: post_excerpt_maxlength: "帖子摘要的最大字符长度" post_onebox_maxlength: "Onebox 处理后的 Discourse 帖子的最大字符长度" onebox_domains_whitelist: "对这些站点启用 Onebox 的域名列表;这些域名应该支持 OpenGraph 或 oEmbed。在此测试他们:http://iframely.com/debug" - logo_url: "出现在您站点左上角的标志图片;如果留空,将显示站点标题文字。" + logo_url: "出现在你站点左上角的标志图片;如果留空,将显示站点标题文字。" digest_logo_url: "站点邮件摘要使用的标志。如果留空,则使用 `logo_url`。例如:http://example.com/logo.png" - logo_small_url: "出现在您站点左上角的小号标志图片,当滚动后可见。如果留空,将显示主页图标。" + logo_small_url: "出现在你站点左上角的小号标志图片,当滚动后可见。如果留空,将显示主页图标。" favicon_url: "你的站点图标(favicon),参考 http://zh.wikipedia.org/wiki/Favicon" - mobile_logo_url: "移动浏览器左上角的固定标志图片。如果留空,将显示站点标题文字。" + mobile_logo_url: "移动浏览器左上角的固定标志图片。如果留空 `logo_url` 将被使用。" apple_touch_icon_url: "Apple 触摸设备使用的图标。推荐 144x144 大小。" notification_email: "这个表格:被用于发送所有重要系统邮件的邮箱地址。指定的域名必须正确设置 SPF、DKIM 和反向 PTR 记录以发送邮件。" email_custom_headers: "一个逗号分离的自定义邮件头部" @@ -669,7 +674,7 @@ zh_CN: summary_likes_required: "在一个主题启用'摘要模式'的最小赞的数量" summary_percent_filter: "当用户点击摘要,显示前 % 几的帖子" summary_max_results: "“概括主题”返回的最大帖子数量" - enable_private_messages: "允许信任等级1的用户创建私信或者以私信回复" + enable_private_messages: "允许信任等级1的用户创建消息或者以消息回复" enable_long_polling: "启用 Message bus 使通知功能可以使用长轮询(long polling)" long_polling_base_url: "长轮询的基本 URL(当用 CDN 分发动态能让时,请设置此至原始拉取地址)例如:http://origin.site.com" long_polling_interval: "当没有数据向客户端发送时服务器端应等待的时间(仅对已登录用户有效)" @@ -702,8 +707,8 @@ zh_CN: post_menu_hidden_items: "帖子菜单中默认隐藏的按钮,点击省略号后显示。" share_links: "决定分享对话框中出现的按钮及显示顺序。" track_external_right_clicks: "追踪外部链接的右键点击(例如:在浏览器新标签打开),缺省是禁用的,因为它会重写URL" - site_contact_username: "论坛给用户自动发送私信时使用的用户名;如果留空将使用默认的系统账户。" - send_welcome_message: "给所有用户发送快速开始指导的私信" + site_contact_username: "论坛给用户自动发送消息时使用的用户名;如果留空将使用默认的系统账户。" + send_welcome_message: "给所有用户发送快速开始指导的消息" suppress_reply_directly_below: "当一个帖子只有一个回复时,不显示帖子回复数量。" suppress_reply_directly_above: "当一个帖子只有一个回复时,不显示回复到该贴的回复。" suppress_reply_when_quoting: "当帖子引用回复时,不显示可展开的回复到某贴的标记。" @@ -739,7 +744,7 @@ zh_CN: sso_secret: "秘密字符串,用于验证秘密的 SSO 信息,请保证是 10 个字符或者更长" sso_overrides_email: "用 SSO 信息中的外部邮件地址覆盖本地邮件地址(警告:因为对本地邮件的统一处理,这个邮件地址可能不同)" sso_overrides_username: "用 SSO 信息中的外部用户名覆盖用户名(警告:因为对本地用户名的统一处理,用户名的长度或者要求可能不同)" - sso_overrides_name: "用 SSO 信息中的外部名字覆盖本地名字(警告:因为对本地名字的统一处理,这个名字可能不同)" + sso_overrides_name: "从 SSO 负荷中的外部站点全名中覆盖本地全名" sso_overrides_avatar: "用单点登录信息中的外部站点头像覆盖用户头像。如果启用,强烈建议禁用 allow_uploaded_avatars" enable_local_logins: "启用本地用户名和密码验证。(注意:邀请特性需要该选项)" allow_new_registrations: "允许新用户注册。取消选择将阻止任何人创建一个新账户。" @@ -774,7 +779,7 @@ zh_CN: max_bookmarks_per_day: "每个用户每天能做书签数量的最大值。" max_edits_per_day: "每个用户每天能编辑的次数的最大值。" max_topics_per_day: "每个用户每天能创建的主题数量的最大值。" - max_private_messages_per_day: "每个用户每天能发私信数量的最大值。" + max_private_messages_per_day: "每个用户每天能发消息数量的最大值。" max_invites_per_day: "每个用户每天能创建的邀请数量的最大值。" suggested_topics: "在一个主题底部显示的推荐主题的数量。" limit_suggested_to_category: "只在当前分类的推荐帖子列表中显示帖子。" @@ -824,7 +829,7 @@ zh_CN: email_time_window_mins: "等待多少(n)分钟才给用户发送通知电子邮件,好让他们有机会自己来编辑和完善他们的帖子。" email_posts_context: "在通知邮件中包含的作为上下文的回复数量。" flush_timings_secs: "向服务器刷新时间数据的频率,以秒为单位。" - max_word_length: "在主题的标题中,允许的词语长度的最大字符数。" + title_max_word_length: "在主题的标题中,允许的词语长度的最大字符数。" title_min_entropy: "在主题的标题中,允许的最低熵值(单个字符)。" body_min_entropy: "在一个帖子内文中,允许的最低熵值(单个字符)。" title_fancy_entities: "转换主题标题中的 HTML 实体,参考:SmartyPants http://daringfireball.net/projects/smartypants/" @@ -855,6 +860,7 @@ zh_CN: newuser_spam_host_threshold: "用户在一篇帖子中能添加多少此指向同一主机的链接,取决于之前该用户有`newuser_spam_host_threshold`篇帖子被认为是垃圾帖。" white_listed_spam_host_domains: "广告主机白名单域名列表。新用户可以任意链接至这些域名。" staff_like_weight: "职员赞时的额外权重。" + topic_view_duration_hours: "按照每 IP/用户每 N 小时来记录主题访问数" levenshtein_distance_spammer_emails: "当匹配广告邮件时,模糊匹配判断差异的字符数。" max_new_accounts_per_registration_ip: "如果已经有了从这个 IP 创建的(n)个信任等级0的账户(并且没有一个是职员或者是信任等级2以上的用户),不再允许来自该 IP 地址的注册请求。" min_ban_entries_for_roll_up: "当点击折叠按钮时,且至少 (N) 条记录时,将会创建一个子网封禁记录" @@ -862,6 +868,7 @@ zh_CN: max_age_unmatched_ips: "在 (N) 天后删除不匹配的 IP 记录。" num_flaggers_to_close_topic: "要自动终止一个主题的讨论并介入时所需的最小数量的独立标记者" num_flags_to_close_topic: "要自动终止一个主题的讨论并介入时所需的最小数量的有效标记" + auto_respond_to_flag_actions: "当处理标记时启用自动回复。" reply_by_email_enabled: "启用通过邮件回复。" reply_by_email_address: "通过邮件回复的回复地址模板,例如:%{reply_key}@reply.example.com 或 replies+%{reply_key}@example.com" disable_emails: "禁止 Discourse 发送任何邮件" @@ -888,6 +895,7 @@ zh_CN: allow_uploaded_avatars: "允许用户上传他们自己的自定义头像。" allow_animated_avatars: "允许用户使用 gif 动画头像。警告:更改后运行 avatars:refresh 这个 rake 任务。" allow_animated_thumbnails: "为动画 gif 生成动态缩略图。" + default_avatars: "在用户更改头像前的默认头像 URL" automatically_download_gravatars: "为注册或更改邮箱的用户下载 Gravatar 头像。" digest_topics: "邮件摘要中显示的最大主题数目。" digest_min_excerpt_length: "在邮件摘要中每个帖子最少显示的字符数量。" @@ -897,6 +905,12 @@ zh_CN: default_external_links_in_new_tab: "在新标签页中打开外部链接。用户可以在参数设置中更改这个设置。" detect_custom_avatars: "是否检测用户上传了自定义头像。" max_daily_gravatar_crawls: "一天内 Discourse 将自动检查 gravatar 自定义头像的次数" + public_user_custom_fields: "可公开显示的用户自定义属性白名单" + staff_user_custom_fields: "可给职员公开显示的用户自定义属性白名单。" + enable_user_directory: "提供可供浏览的用户目录" + allow_anonymous_posting: "允许用户切换至匿名模式" + anonymous_posting_min_trust_level: "启用匿名发帖所需的最小信任等级" + anonymous_account_duration_minutes: "为了匿名性,为每个用户每 N 分钟创建一个匿名账户。例如:如果设置为 600,只要发帖后 600 分钟到了,并且用户切换至了匿名模式,就会创建一个新的匿名账户。" allow_profile_backgrounds: "允许用户上传个人资料背景图片。" sequential_replies_threshold: "用户可以在一个主题内多次回复而不被提醒连续发送多个回复的通知。" enable_mobile_theme: "为移动设备启用移动友好的主题,但也能切换回完整站点。如果你想要使用自定义的响应式主题请禁用它。" @@ -904,6 +918,7 @@ zh_CN: suppress_uncategorized_badge: "不要为主题列表中的未分类主题显示徽章。" global_notice: "为所有访客显示“紧急的”全局横幅,留空隐藏它(可以使用 HTML)" disable_edit_notifications: "当 'download_remote_images_to_local' 启用时禁用系统编辑提醒。" + full_name_required: "全名是用户个人信息的必填项。" enable_names: "在用户的个人信息、用户卡片和邮件中显示全名。禁用将在所有地方隐藏全名。" display_name_on_posts: "在用户的帖子中显示他们的全名以及他们的 @username。" invites_per_page: "默认在用户页显示邀请。" @@ -911,6 +926,8 @@ zh_CN: default_code_lang: "默认语法高亮语言,使用 GitHub 代码块(lang-auto、ruby、python或者其他等等。)" warn_reviving_old_topic_age: "当有人开始回复最后一贴超过一定天数前的主题时,将有一个警告显示,不鼓励他们复活一个老的讨论。将其设置为 0 以禁用。" autohighlight_all_code: "即使未显式设定语言,仍为所有预编排代码块应用语法高亮。" + highlighted_languages: "包含语法高亮规则。(警告:包含太多的语言可能会印象性能)见:https://highlightjs.org/static/demo/ 查看演示" + embeddable_host: "能从这个 Discourse 论坛嵌入评论的主机。\n仅主机名,不要以 http:// 开头" feed_polling_enabled: "仅用于嵌入:是否将 RSS/ATOM 订阅为帖子。" feed_polling_url: "仅用于嵌入:RSS/ATOM 订阅的 URL。" embed_by_username: "创建嵌入主题的 Discourse 的用户名。" @@ -926,7 +943,7 @@ zh_CN: vacuum_db_days: "在数据库迁移后使用完整扫描回收数据库空间(设置 0 为禁用)" prevent_anons_from_downloading_files: "禁止匿名用户下载附件。警告:这将禁止他们访问任何发表在帖子中的非图片资源。" enable_emoji: "启用绘文字(emoji)" - emoji_set: "您喜欢哪一种 emoji?" + emoji_set: "你喜欢哪一种 emoji?" enforce_square_emoji: "强制为所有 emojis 设置正方形比例。" errors: invalid_email: "电子邮箱地址无效。" @@ -936,6 +953,7 @@ zh_CN: invalid_integer_max: "值不能大于 %{max}。" invalid_integer: "值必须是整数。" regex_mismatch: "值不符合需要的格式。" + must_include_latest: "顶部菜单必须包含“最新”标签。" invalid_string: "无效值。" invalid_string_min_max: "必须在 %{min} 和 %{max} 字符内。" invalid_string_min: "必须超过 %{min} 个字符。" @@ -949,8 +967,9 @@ zh_CN: edited: "%{display_username} 在 %{link} 编辑了你的帖子" posted: "%{display_username} 发表了 %{link}" moved_post: "%{display_username} 把你的帖子移动到了 %{link}" - private_message: "%{display_username} 发送给你一条私信:%{link}" - invited_to_private_message: "%{display_username} 邀请你进行私信:%{link}" + private_message: "%{display_username} 发送给你一条消息:%{link}" + invited_to_private_message: "%{display_username} 邀请你参与消息讨论:%{link}" + invited_to_topic: "%{display_username} 邀请你至主题:%{link}" invitee_accepted: "%{display_username} 接受了你的邀请" linked: "%{display_username} 在 %{link} 里链接了你" granted_badge: "你获得了 %{link}" @@ -1015,7 +1034,8 @@ zh_CN: active: "你的帐号已经被激活,可以使用了。" activate_email: "

    快完成了!我们发送了一封激活邮件到%{email}。请按照邮件中的步骤来激活你的帐号。

    如果你没有收到邮件,请检查你的垃圾邮件收件箱,或者试试再登录一次,看看能不能收到另一封激活邮件。

    " not_activated: "你还不能登录。我们发送了一封激活邮件给你,请按照邮件中的步骤来激活你的帐号。" - not_allowed_from_ip_address: "您不能以 %{username} 身份从该 IP 地址登陆。" + not_allowed_from_ip_address: "你不能以 %{username} 身份从该 IP 地址登陆。" + admin_not_allowed_from_ip_address: "你不能从该 IP 地址以管理员身份登录。" suspended: "你要等到 %{date} 之后才能登录。" suspended_with_reason: "你要等到 %{date} 之后才能登录。你被封禁的理由是 %{reason}" errors: "%{errors}" @@ -1082,6 +1102,44 @@ zh_CN: %{base_url}/users/password-reset/%{email_token} test_mailer: subject_template: "[%{site_name}] 电子邮件发送测试" + text_body_template: | + 这是一封测试电子邮件,发于: + + [**%{base_url}**][0] + + 电子邮件分发很复杂。以下是一些重要的你应该检查的内容: + + - 确定你设置了站点设置为 `notification email` 设置了正确的地址。**“来自”中指定的域名应和将要验证的域名一致。** + + - 确定你会使用你的邮件客户端查看*电子邮件源代码*,这样你可以通过查看邮件头来获取重要线索。在 Gmail 中,可以通过每一封邮件下拉菜单中的“显示原始消息”来查看。 + + - **重要:** 你的 ISP 是否对你发送邮件的域名和IP作了反向DNS解析?你可以在此[测试你的反向枚举指针(PTR)记录][2]。如果你的 ISP 没有正确的反向 DNS 记录,那么很可能你的任何电子邮件都不会被成功发送。 + + - 你的域名的[发件人策略框架(SPF)记录][8]是否正确?你可以在此[测试你的SPF记录][1]。注意 TXT 是一种正确的官方 SPF 记录。 + + - 你域名的[域名密钥身份识别邮件(DKIM)记录][3]正确?这将显著提高邮件分发的成功率。在此[测试你的 DKIM 记录]。 + + - 如果你自己运行邮件服务器,检查确认你发送电子邮件的服务器IP [不在任何邮件黑名单中][4]。验证你的 DNS 记录的 HELO 消息中*确定无疑地*发送了符合要求的主机名。如果没有,那么会导致很多邮件服务商拒绝你的邮件。 + + (最简单的方法是在[Mandrill][md]或[Mailgun][mg]或[Mailjet][mj]注册免费账户,他们的免费账户对一个小社群是足够的。如果你希望在中国大陆提供稳定的服务,你可以考虑[SendCloud][sc]不过你仍然需要在 DNS 设置中设定 SPF 和 DKIM 记录!) + + 我们衷心希望你收到这封邮件,成功完成邮件发送测试! + + 祝好运! + + 你的朋友,[Discourse](http://www.discourse.org) + + [0]: %{base_url} + [1]: http://www.kitterman.com/spf/validate.html + [2]: http://mxtoolbox.com/ReverseLookup.aspx + [3]: http://www.dkim.org/ + [4]: http://whatismyipaddress.com/blacklist-check + [7]: http://dkimcore.org/tools/dkimrecordcheck.html + [8]: http://www.openspf.org/SPF_Record_Syntax + [md]: http://mandrill.com + [mg]: http://www.mailgun.com/ + [mj]: http://www.mailjet.com/pricing + [sc]: http://sendcloud.sohu.com/ new_version_mailer: subject_template: "[%{site_name}] 有新的 Discourse 版本,可供升级" text_body_template: | @@ -1125,10 +1183,10 @@ zh_CN: subject_template: other: "%{count} 个标记需要被处理" flag_reasons: - off_topic: "您的帖子被标记为 **偏离主题**:鉴于当前的主题标题和第一个帖子,社群成员们感觉它不适合处于这个主题中。" - inappropriate: "您的帖子被标记为 **不恰当**:社群成员感觉它有冒犯或者侮辱的意味,亦或是它违反了[社群准则](/guidelines)。" - spam: "您的帖子被标记为 **广告**:社群成员觉得它是广告,像是在过度地推广着什么,而不是预期中与主题有关的内容。" - notify_moderators: "您的帖子被标记为 **需要版主关注**:社群成员感觉帖子需要职员的人工干预。" + off_topic: "你的帖子被标记为 **偏离主题**:鉴于当前的主题标题和第一个帖子,社群成员们感觉它不适合处于这个主题中。" + inappropriate: "你的帖子被标记为 **不恰当**:社群成员感觉它有冒犯或者侮辱的意味,亦或是它违反了[社群准则](/guidelines)。" + spam: "你的帖子被标记为 **广告**:社群成员觉得它是广告,像是在过度地推广着什么,而不是预期中与主题有关的内容。" + notify_moderators: "你的帖子被标记为 **需要版主关注**:社群成员感觉帖子需要职员的人工干预。" flags_dispositions: agreed: "感谢通知我们。我们认为这是一个问题,并且我们正在了解情况。" agreed_and_deleted: "感谢通知我们。我们认为这是一个问题,并且我们已经删除了帖子。" @@ -1155,7 +1213,7 @@ zh_CN: 需要了解更多,请查看我们的[社群指引](%{base_url}/guidelines)。 usage_tips: text_body_template: | - 这条私信包含了一些可以让您快速开始的技巧提示: + 这条消息包含了一些可以让你快速开始的技巧提示。 ## 保持滚动 @@ -1165,9 +1223,9 @@ zh_CN: ## 我在哪儿? - - 要搜索,访问您的用户页面或者菜单,使用**右上角的图标按钮**。 + - 要搜索,访问你的用户页面或者菜单,使用 **右上角的图标按钮**。 - - 任何主题标题点击后都将引导您至下一个未读的帖子。使用最后一次活动时间和帖子数量跳至主题顶部或底部。 + - 任何主题标题点击后都将引导你至下一个未读的帖子。使用最后一次活动时间和帖子数量跳至主题顶部或底部。 - 当在阅读主题时,通过点击帖子标题回到顶部 ↑。点击右下角的绿色进度条使用完整导航控制,或使用键盘上的 homeend键。 @@ -1179,9 +1237,9 @@ zh_CN: - 要回复特定的帖子,使用那个帖子的回复按钮 。 - - 如果您想把讨论导向另一个方向,但是保持讨论之间的联系,请使用帖子右侧的“回复为联结主题”。 + - 如果你想把讨论导向另一个方向,但是保持讨论之间的联系,请使用帖子右侧的“回复为联结主题”。 - 若想在您的回复中引用什么,选择想要引用的文字,然后点击任何回复按钮。 + 若想在你的回复中引用什么,选择想要引用的文字,然后点击任何回复按钮。 每一个帖子最下方有功能按钮。 @@ -1189,41 +1247,41 @@ zh_CN: (要引用整个帖子,使用编辑器工具栏的导入引用按钮。) - 要在您的回复中提到某人,键入 `@`,自动完成将会弹出。 + 要在你的回复中提到某人,键入 `@`,自动完成将会弹出。 - 要使用[标准绘文字(Emoji)](http://www.emoji.codes/),先键入`:`或传统表情符`:)` :smile + 要使用[标准绘文字(Emoji)](http://www.emoji.codes/),先键入`:`或传统表情符`:)` :smile: ## 我还能做什么? - 要让别人知道您喜欢他们的帖子,使用**赞**按钮。如果您觉得一个帖子有问题,请使用**标记**按钮以私下地让它们或者我们的职员了解情况。 + 要让别人知道你喜欢他们的帖子,使用 **赞** 按钮。如果你觉得一个帖子有问题,请使用 **标记** 按钮以私下地让它们或者我们的职员了解情况。 - 您可以分享一个帖子的链接,或者是收藏一个帖子以在用户也中引用他们。 + 你可以分享一个帖子的链接,或者是收藏一个帖子以在用户也中引用他们。 ## 谁在跟我交谈? - 当有人回复您的帖子,引用您的帖子或者使用`@用户名`提及到您的时候,一个数字将会立即出现在页面右上角。使用它查看**通知**。 + 当有人回复你的帖子,引用你的帖子或者使用`@用户名`提及到你的时候,一个数字将会立即出现在页面右上角。使用它查看 **通知**。 - 不用担心错过他人的回复 —— 当别人回复您的帖子(和私信)时您不在站点上,您将会收到邮件提醒。 + 不用担心错过他人的回复 —— 当别人回复你的帖子(和消息)时你不在站点上,你将会收到邮件提醒。 ## 哪一个是新讨论? - 默认情况,所有小于两天的对话被认为是心的,并且所有您参与的讨论(回复过的、创建的或阅读了很长一段时间的)将自动被追踪。 + 默认情况,小于两天的对话都是新对话。并且所有你参与的讨论(回复过的、创建的或阅读了很长一段时间的)将自动被追踪。 - 您将会在主题名字附近见到蓝色的新合数字指示: + 你将会在主题名字附近见到蓝底的数字指示: - 您可以通过帖子下方的控制选项改变每一个主题的通知状态(也可以设置每一个分类的状态)。要改变您跟踪帖子的方式,或新的定义,详见[您的用户设置](%{base_url}/my/preferences)。 + 你可以通过帖子下方的控制选项改变每一个主题的通知状态(也可以设置每一个分类的状态)。要改变你追踪帖子的方式,或近期主题的范围,查看[你的用户设置](%{base_url}/my/preferences)。 ## 为什么我不能做某些事? - 新用户因为某些安全原因被限制。只要您参与了讨论,您将会得到社群的信任,成为一个真正的成员,并且这些限制将自动被移除。当达到了一个足够的[信任等级](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924),您将会得到足够的权力来参与帮助社群管理。 + 新用户因为某些安全原因被限制。只要你参与了讨论,你将会得到社群的信任,成为一个真正的成员,并且这些限制将自动被移除。当达到了一个足够的[信任等级](https://meta.discourse.org/t/what-do-user-trust-levels-do/4924),你将会得到适当的权限帮助管理社群。 welcome_user: subject_template: "欢迎来到 %{site_name}!" text_body_template: | @@ -1235,10 +1293,10 @@ zh_CN: 好好享受你在论坛的时光吧! - (如果您在新用户级别需要和[职员](%{base_url}/about)私下沟通的话,直接回复这封私信。) + (如果你在新用户级别需要和[职员](%{base_url}/about)沟通的话,直接回复这个消息。) welcome_invite: subject_template: "欢迎来到 %{site_name}!" - text_body_template: "感谢你接受邀请加入%{site_name} —— 欢迎!\n\n我们为你创建了账号:**%{username}**,同时你已经登录了。你可以在任何时候访问[你的用户设置][prefs]来修改它。\n\n要再次登入,或者:\n\n1. 永远 **使用收到邀请的邮箱地址**登录,。否则我们就无法分辨是不是你本人!\n\n2. 在 %{site_name} 的[用户设置][prefs]页面创建一个密码,然后使用该密码来登入。 \n\n%{new_user_tips}\n\n我们始终相信[讨论应该文明](%{base_url}/guidelines)。\n\n好好享受您在论坛的时光吧!\n\n(如果您在新用户级别需要和[职员](%{base_url}/about)私下沟通的话,直接回复这封私信。)\n\n[prefs]: %{user_preferences_url}\n" + text_body_template: "感谢你接受邀请加入%{site_name} —— 欢迎!\n\n我们为你创建了账号:**%{username}**,同时你已经登录了。你可以在任何时候访问[你的用户设置][prefs]来修改它。\n\n要再次登入,或者:\n\n1. 永远 **使用收到邀请的邮箱地址**登录,。否则我们就无法分辨是不是你本人!\n\n2. 在 %{site_name} 的[用户设置][prefs]页面创建一个密码,然后使用该密码来登入。 \n\n%{new_user_tips}\n\n我们始终相信[讨论应该文明](%{base_url}/guidelines)。\n\n好好享受你在论坛的时光吧!\n\n(如果你在新用户级别需要和[职员](%{base_url}/about)沟通的话,直接回复这个消息。)\n\n[prefs]: %{user_preferences_url}\n" backup_succeeded: subject_template: "备份成功完成" text_body_template: "备份成功。\n访问[管理 > 备份](/admin/backups)下载你的新备份文件。" @@ -1290,19 +1348,19 @@ zh_CN: subject_template: "数据导出失败" text_body_template: "我们很抱歉,但是你的数据导出请求失败了。请检查日志或联系一位职员。" email_reject_trust_level: - subject_template: "电子邮件错误 -- 等级不足" + subject_template: "[%{site_name}] 电子邮件错误 -- 信任等级不足" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为 %{former_title})的邮件无法发送。 你的账户没有足够的信任等级向刚邮件地址发布新主题。如果你坚信这是一个错误,联系一个职员。 email_reject_no_account: - subject_template: "电子邮件错误 -- 未知账户" + subject_template: "[%{site_name}] 电子邮件错误 -- 未知账户" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为%{former_title}) 的邮件无法发送。 该邮件没有与已知的账户关联。试试从不同的邮件地址发送或联系一个职员。 email_reject_empty: - subject_template: "电子邮件错误 -- 空内容" + subject_template: "[%{site_name}] 电子邮件错误 -- 无内容" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为 %{former_title})的邮件无法发送。 @@ -1310,19 +1368,19 @@ zh_CN: 如果你确实包含了内容但还收到了这个通知,试试包含 HTML 内容(而非纯文本)。 email_reject_parsing: - subject_template: "电子邮件错误 -- 内容无法识别" + subject_template: "[%{site_name}] 电子邮件错误 -- 内容无法识别" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为 %{former_title})的邮件无法发送。 我们不能找到你邮件中的回复。**请确认将你的回复置于邮件顶端**——我们不能处理行内回复。 email_reject_post_error: - subject_template: "电子邮件错误 -- 发送出错" + subject_template: "[%{site_name}] 邮件问题 -- 发表错误" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为%{former_title}) 的邮件无法发送。 一些可能的原因是:复杂的格式、消息超长、消息太短。请再试一次,若还不行,使用网站发表。 email_reject_post_error_specified: - subject_template: "邮件问题——发表失败" + subject_template: "[%{site_name}] 邮件问题 -- 发表错误" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为%{former_title}) 的邮件消息无法发送。 @@ -1332,38 +1390,38 @@ zh_CN: 如果你能解决错误,请再试一次。 email_reject_reply_key: - subject_template: "电子邮件错误 -- 未知回复指纹" + subject_template: "[%{site_name}] 电子邮件错误 -- 未知回复指纹" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为%{former_title}) 的邮件无法发送。 提供的回复 key 是无效或者未知的,所以我们不知道邮件是回复给谁的。联系一个职员。 email_reject_destination: - subject_template: "电子邮件错误 -- 未知的回复至地址" + subject_template: "[%{site_name}] 电子邮件错误 -- 未知的回复至地址" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为 %{former_title})的邮件消息无法发送。 在论坛中找不到该地址。请确认在你的发送到(而非抄送或密送)中填写的是站点的地址,并且你正在将邮件发送至论坛职员提供的邮件地址。 email_reject_topic_not_found: - subject_template: "邮件问题——主题未找到" + subject_template: "[%{site_name}] 邮件问题 -- 主题未找到" text_body_template: |+ 十分抱歉,无法将你的信息发表到 %{destination} (titled %{former_title}) 。 我们没有找到该主题,可能其已被删除,如果你确认有问题,请与我们的工作人员联系。 email_reject_topic_closed: - subject_template: "邮件问题 —— 主题已关闭" + subject_template: "[%{site_name}] 邮件问题 -- 主题已关闭" text_body_template: | 我们很抱歉,但是你发送至 %{destination}(名为 %{former_title})的邮件无法发送。 主题已经关闭。如果你相信这其中有错误,联系一个职员成员。 email_reject_auto_generated: - subject_template: "邮件问题 —— 自动生成的回复" + subject_template: "[%{site_name}] 邮件问题 -- 自动生成的回复" text_body_template: | - 我们很抱歉,但是您发送至 %{destination}(名为 %{former_title})的邮件无法发送。 + 我们很抱歉,但是你发送至 %{destination}(名为 %{former_title})的邮件无法发送。 - 你的邮件回复是自动生成的,我们不接受这种内容。如果您相信这其中有错误,联系一个职员成员。 + 你的邮件回复是自动生成的,我们不接受这种内容。如果你相信这其中有错误,联系一个职员成员。 email_error_notification: - subject_template: "电子邮件错误 -- POP 验证错误" + subject_template: "[%{site_name}] 电子邮件错误 -- POP 验证错误" text_body_template: | 在从 POP 服务器查询邮件时遇到了一个验证错误。 @@ -1436,9 +1494,33 @@ zh_CN: visit_link_to_respond: "在浏览器中访问 %{base_url}%{url} 回复。" posted_by: "%{username}发表于%{post_date}" user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} 邀请你私下交流:'%{topic_title}'" - text_body_template: | - %{username} 邀请你在 %{site_name} 就 '%{topic_title}' 进行私下交流: + subject_template: "[%{site_name}] %{username} 邀请你加入消息交流:'%{topic_title}'" + text_body_template: |2 + + %{username} 邀请你至消息交流: + + > **%{topic_title}** + > + > %{topic_excerpt} + + 论坛: + + > %{site_title} -- %{site_description} + + 请访问 %{base_url}%{url} 来查看该主题。 + user_invited_to_topic: + subject_template: "[%{site_name}] %{username} 邀请你至主题:'%{topic_title}'" + text_body_template: |2 + + %{username} 邀请你参与讨论: + + > **%{topic_title}** + > + > %{topic_excerpt} + + 论坛: + + > %{site_title} -- %{site_description} 请访问 %{base_url}%{url} 来查看该主题。 user_replied: @@ -1488,7 +1570,7 @@ zh_CN: %{respond_instructions} digest: why: "在你上一次于 %{last_seen_at} 访问后,在 %{site_link} 上的简洁的摘要。" - subject_template: "[%{site_name}] %{date} 的摘要" + subject_template: "[%{site_name}] 摘要" new_activity: "在你的主题和帖子里的动态:" top_topics: "热门帖子" other_new_topics: "热门主题" @@ -1536,20 +1618,20 @@ zh_CN: text_body_template: | 欢迎加入%{site_name}! - 一个职员批准了您在%{site_name}的账户。 + 一个职员批准了你在%{site_name}的账户。 - 点击下面的链接来确认并激活您在 %{site_name} 上的新账号: + 点击下面的链接来确认并激活你在 %{site_name} 上的新账号: %{base_url}/users/activate-account/%{email_token} - 如果上面的链接无法点击,请拷贝该链接并粘贴到您的浏览器的地址栏里。 + 如果上面的链接无法点击,请拷贝该链接并粘贴到你的浏览器的地址栏里。 %{new_user_tips} 我们始终相信[讨论应该文明](%{base_url}/guidelines)。 - 好好享受您在论坛的时光吧! + 好好享受你在论坛的时光吧! - (如果您在新用户级别需要和[职员](%{base_url/about)私下沟通的话,直接回复这封私信。) + (如果你在新用户级别需要和[职员](%{base_url/about)沟通的话,直接回复这个消息。) signup: subject_template: "[%{site_name}] 激活你的新帐号" text_body_template: | @@ -1580,9 +1662,9 @@ zh_CN: pasted_image_filename: "粘贴的图像" store_failure: "用户#%{user_id} 上传的 #%{upload_id} 保存失败。" attachments: - too_large: "抱歉,您试图上传的文件太大了(最大限制为%{max_size_kb}%KB)。" + too_large: "抱歉,你试图上传的文件太大了(最大限制为%{max_size_kb}%KB)。" images: - too_large: "抱歉,您试图上传的图片太大了(最大限制为%{max_size_kb}%KB),请裁剪它并重试。" + too_large: "抱歉,你试图上传的图片太大了(最大限制为%{max_size_kb}%KB),请裁剪它并重试。" fetch_failure: "抱歉,获取图片时发生错误。" unknown_image_type: "抱歉,你上传的文件似乎不是一张图片。" size_not_found: "抱歉,我们无法获取图片大小,请检查你的图片是否已损坏。" @@ -1591,7 +1673,7 @@ zh_CN: spam_hosts: "新用户试图创建链接到同一个域名的多个帖子。查看站点设置的 newuser_spam_host_threshold。" email_log: no_user: "不能找到用户 ID 为 %{user_id} 的用户" - suspended_not_pm: "用户被封禁,这不是私信" + suspended_not_pm: "用户被封禁,这不是消息" seen_recently: "用户最近活跃" post_not_found: "不能找到帖子 ID 为 %{post_id} 的帖子" notification_already_read: "这封邮件中的通知已经被阅读了" @@ -1616,11 +1698,11 @@ zh_CN: 编辑本主题的第一帖以改变 %{page_name} 页面的内容。 guidelines_topic: title: "FAQ/指引" - body: "\n\n## [文明讨论的地方](#civilized)\n\n在论坛上请表现得像在公共公园一样得体。我们一群人共享着一个公共社群资源 — 一个通过不断进行讨论以分享我们技能、知识和兴趣的地方。\n\n这些都不是硬性规定,只是一些帮助社群的人们来判断的规定。试用这些指引来保持干净和充满灵感的公开论坛。\n\n\n\n## [改善讨论](#improve)\n\n帮助我们做一些帮助改善讨论的事,这样能帮助我们让这个地方变成一个参与讨论的好地方。\n\n这里被讨论的主题对我们很重要,并且如果他们对您也很重要,请和我们一样严肃对待他们。即使您不同意别人的话,但是也要尊重正在讨论这些主题的人们。\n\n改进讨论的一个方式是探索已经发生过的事。请在回复或者开始您自己的主题前花一些时间浏览,这样您更有机会遇见和您有共同爱好的人。\n\n\n\n## [尊重,当您不同意时](#agreeable)\n\n您可能想表达您的不同意。这没问题。但是,记住_批评观点,而不是人_。请避免:\n\n* 指名道姓。\n* 人生攻击。\n* 回应帖子的语气而不是它的真正内容。\n* 下意识的反驳。\n\n相反,提供合理的观点改善讨论。\n\n\n\n## [您的参与有价值](#participate)\n\n我们在这儿的讨论为大家树立了榜样。通过选择参与那些让论坛变成一个有意思的地方,来帮助我们改善社群的未来 — 并且避免那些没有帮助的行为。\n\nDiscourse 提供了让社群共同鉴别最棒(或最差)的贡献的工具:收藏、书签、赞、标记、回复、编辑或者其他。使用这些工具改善您自己的体验,和其他人的体验。\n\n让我们留下一个比发现它之前更好的社群。\n\n\n\n## [如果您看见了一个问题,标记它](#flag-problems)\n\n版主有特别的权力;他们对论坛负责。但是您也是。通过您的帮助,版主能促进社群的发展,而不是守卫或者警察。\n\n当您见到不合适的行为,不要回应它。这种承认变相鼓励了这种不合适的行为,浪费了您的经历,并且浪费了每一个人的时间。_是要标记它。_如果收到了足够的标记,会有相应的处理,无论是自动地或版主的介入。\n\n为了维护我们的社群,版主保留了任何情况下删除任何内容和其他用户的权力。版主不能预览任何新帖子;版主和站点维护人员对社群里发表的任何言论均不负责任。\n\n\n\n## [永远文明](#be-civil)\n\n粗鲁这样的行为会破坏健康的讨论:\n\n* 文明。不要发表任何理智的人会认为会冒犯、滥用或招致怨恨的言论。\n* 保持干净。不要发表任何淫秽或性暗示的东西。\n* 尊重其他人。不要骚扰或者让别人难过,检视别人,或暴露他们的个人信息。\n* 尊重我们的论坛。不要发表广告或者其他垃圾信息。\n\n这些条款没有准确的定义 — 避免任何_可能_的这些事。如果您不确定,问问自己这些是否能出现在纽约时报的头版头条上。\n\n这是一个公共论坛,并且搜索引擎会索引这些讨论。注意语言、链接和家庭和朋友的图片的安全。\n\n\n\n## [保持整洁](#keep-tidy)\n\n花一点时间让东西出现在正确的位置,这样我们能花更多的时间在讨论上而非清理格式。所以:\n\n* 不要在错误的分类开始一个新主题。\n* 不要在多个主题中回复同样的内容。\n* 不要发布没有内容的回复。\n* 不要在中途改变主题。\n* 不要在您的帖子中签名 — 每一贴都附有您的个人信息。\n\n比起发表“+1”或者“同意”,使用赞按钮。比起将帖子带向一个决然不同的方向,使用“回复为关联主题”。\n\n\n\n## [发表您自己的东西](#stealing)\n\n您不能在没有他人授权的情况下发表任何属于他人的数字信息。您可能不能发表关于窃据他人知识产权(软件、视频、音频和图像)的任何简介、链接或方法,或其他任何不符合其他法律的事。\n\n\n\n## [有你参与](#power) \n\n这个站点由[一群友善的职员](/about)、你和社群一起运营。如果你对这里的事情仍有疑问,在[站务](/c/meta)分类新建一个主题并且开始讨论!如果遇到了重要或紧急的事情,并且不能用站务分类的主题或标记解决,通过[职员页面](/about)联系我们。\n\n\n\n## [使用条款](#tos)\n\n是的,法律很无聊,但是我们必须保护我们自己 – 引申开来,您和您的数据 – 用于针对不友好的家伙们。我们有一个[使用条款](/tos)描述您的(或者我们)关于内容、隐私和法律的行为和权力。要使用我们的服务,您必须同意遵守[使用条款](/tos)。\n" + body: "\n\n## [文明讨论的地方](#civilized)\n\n在论坛上请表现得像在公共公园一样得体。我们一群人共享着一个公共社群资源 — 一个通过不断进行讨论以分享我们技能、知识和兴趣的地方。\n\n这些都不是硬性规定,只是一些帮助社群的人们来判断的规定。试用这些指引来保持干净和充满灵感的公开论坛。\n\n\n\n## [改善讨论](#improve)\n\n帮助我们做一些帮助改善讨论的事,这样能帮助我们让这个地方变成一个参与讨论的好地方。\n\n这里被讨论的主题对我们很重要,并且如果他们对你也很重要,请和我们一样严肃对待他们。即使你不同意别人的话,但是也要尊重正在讨论这些主题的人们。\n\n改进讨论的一个方式是探索已经发生过的事。请在回复或者开始你自己的主题前花一些时间浏览,这样你更有机会遇见和你有共同爱好的人。\n\n\n\n## [尊重,当你不同意时](#agreeable)\n\n你可能想表达你的不同意。这没问题。但是,记住_批评观点,而不是人_。请避免:\n\n* 指名道姓。\n* 人生攻击。\n* 回应帖子的语气而不是它的真正内容。\n* 下意识的反驳。\n\n相反,提供合理的观点改善讨论。\n\n\n\n## [你的参与有价值](#participate)\n\n我们在这儿的讨论为大家树立了榜样。通过选择参与那些让论坛变成一个有意思的地方,来帮助我们改善社群的未来 — 并且避免那些没有帮助的行为。\n\nDiscourse 提供了让社群共同鉴别最棒(或最差)的贡献的工具:收藏、书签、赞、标记、回复、编辑或者其他。使用这些工具改善你自己的体验,和其他人的体验。\n\n让我们留下一个比发现它之前更好的社群。\n\n\n\n## [如果你看见了一个问题,标记它](#flag-problems)\n\n版主有特别的权力;他们对论坛负责。但是你也是。通过你的帮助,版主能促进社群的发展,而不是守卫或者警察。\n\n当你见到不合适的行为,不要回应它。这种承认变相鼓励了这种不合适的行为,浪费了你的经历,并且浪费了每一个人的时间。_是要标记它。_如果收到了足够的标记,会有相应的处理,无论是自动地或版主的介入。\n\n为了维护我们的社群,版主保留了任何情况下删除任何内容和其他用户的权力。版主不能预览任何新帖子;版主和站点维护人员对社群里发表的任何言论均不负责任。\n\n\n\n## [永远文明](#be-civil)\n\n粗鲁这样的行为会破坏健康的讨论:\n\n* 文明。不要发表任何理智的人会认为会冒犯、滥用或招致怨恨的言论。\n* 保持干净。不要发表任何淫秽或性暗示的东西。\n* 尊重其他人。不要骚扰或者让别人难过,检视别人,或暴露他们的个人信息。\n* 尊重我们的论坛。不要发表广告或者其他垃圾信息。\n\n这些条款没有准确的定义 — 避免任何_可能_的这些事。如果你不确定,问问自己这些是否能出现在纽约时报的头版头条上。\n\n这是一个公共论坛,并且搜索引擎会索引这些讨论。注意语言、链接和家庭和朋友的图片的安全。\n\n\n\n## [保持整洁](#keep-tidy)\n\n花一点时间让东西出现在正确的位置,这样我们能花更多的时间在讨论上而非清理格式。所以:\n\n* 不要在错误的分类开始一个新主题。\n* 不要在多个主题中回复同样的内容。\n* 不要发布没有内容的回复。\n* 不要在中途改变主题。\n* 不要在你的帖子中签名 — 每一贴都附有你的个人信息。\n\n比起发表“+1”或者“同意”,使用赞按钮。比起将帖子带向一个决然不同的方向,使用“回复为关联主题”。\n\n\n\n## [发表你自己的东西](#stealing)\n\n你不能在没有他人授权的情况下发表任何属于他人的数字信息。你可能不能发表关于窃据他人知识产权(软件、视频、音频和图像)的任何简介、链接或方法,或其他任何不符合其他法律的事。\n\n\n\n## [有你参与](#power) \n\n这个站点由[一群友善的职员](/about)、你和社群一起运营。如果你对这里的事情仍有疑问,在[站务](/c/meta)分类新建一个主题并且开始讨论!如果遇到了重要或紧急的事情,并且不能用站务分类的主题或标记解决,通过[职员页面](/about)联系我们。\n\n\n\n## [使用条款](#tos)\n\n是的,法律很无聊,但是我们必须保护我们自己 – 引申开来,你和你的数据 – 用于针对不友好的家伙们。我们有一个[使用条款](/tos)描述你的(或者我们)关于内容、隐私和法律的行为和权力。要使用我们的服务,你必须同意遵守[使用条款](/tos)。\n" tos_topic: title: "服务条款" - body: "下面的条款及条件适用于 %{company_domain} 网站的所有内容、服务和产品,其方式通过网站,其中包括,但不限于 %{company_domain} 论坛软件、%{company_domain} 支持论坛和在 %{company_domain} 托管服务(“托管”)(一起称为,网站)。该网站属于 %{company_full_name}(“%{COMPANY_NAME}”)并由其运营。该网站要求你必须接受所有本文中所包含的条款和条件以及其他所有的规则、政策(包括修改,但不限于 %{company_domain} 的[隐私政策](/privacy)、[社群准则](/FAQ)和程序(统称“协议”),并可能不时由 %{COMPANY_NAME} 发布。\n\n访问或使用本网站之前,请仔细阅读本协议。访问或使用网站的任何部分,即代表你同意成为受本协议的条款和条件。如果你不同意所有的条款和本协议的条件,那么你可能无法访问网站或使用任何服务。若这些条款和条件被认为是与 %{COMPANY_NAME} 的合同,则你必须接受这些条款。本网站只提供给 13 岁以上个人。\n\n \n\n## [1. 你的 %{company_domain} 帐号](#1) \n\n如果你在网站上创建一个帐户,你有责任维护你的帐号安全,你对帐户下发生的所有活动完全负责。你必须立即通知 %{COMPANY_NAME} 关于你的帐户的任何未经授权或任何其他违反安全的使用。%{COMPANY_NAME} 不会对你的任何行或不作为,包括因该等作为或不作为而导致的任何种类的任何损失承担任何责任。 \n\n \n\n## [2. 提供者的责任](#2) \n\n如果你张贴的材料有关于别的网站的链接,或以其他方式(或允许任何第三方进行)张贴别的网站的材料(不论何等材料,“内容”),你需对此完全负责,包括使用因该内容所造成的任何损害。不管所讨论的内容是文字、图形、音频文件或计算机软件。你声明和保证: \n\n* 下载、复制和使用内容不会侵犯专有权利,包括但不限于著作权,专利,商标或商业秘密权利的任何第三方;\n* 如果你的雇主对你的创造拥有知识产权,你必须以(i)获准从你的雇主发布或提供的内容,包括但不限于任何软件,或(ii)由你的雇主放弃拥有内容的所有权利;\n* 你已完全遵守有关该内容的第三方条约,并同意了所有面向最终用户所需的任何条款;\n* 内容不包含或安装任何病毒、蠕虫、恶意软件、特洛伊木马或其他有害或破坏性的内容;\n* 内容不是垃圾,不是机器的或随机生成的,并且不包含设计来吸引流量到第三方网站或助推第三方网站的搜索引擎排名,或者进一步非法行为不道德或不想要的广告内容(诸如网络钓鱼)或误导接受者为对材料的来源(如欺骗);\n* 内容不色情,不包含威胁或煽动暴力,并没有侵犯任何第三方的隐私或公开权;\n* 你的内容不是不受欢迎的电子讯息,如新闻组垃圾链接、邮件列表、博客和网站,以及类似的不请自来的宣传方式宣传;\n* 你的内容不是在误导读者,以你是另外一个人或公司的方式;和 \n* 你应在内容中包含计算机代码,准确地分类和/或所描述的类型、性质、用途和材料的影响,是否请求 %{COMPANY_NAME} 或以其他方式这样做的情况下。 \n\n \n\n## [3.用户内容授权](#3) \n\n用户贡献使用 [知识共享 署名-非商业性使用-相同方式共享3.0 Unported之许可](http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh_CN)授权。在不限制任何该等陈述或保证的情况下,%{COMPANY_NAME} 有权利(但没有义务)在 %{COMPANY_NAME} 的全权酌情决定下(i)根据 %{COMPANY_NAME} 的合理意见,任何违反 %{COMPANY_NAME} 政策或以任何方式伤害或使他人反感的情况能拒绝或删除任何内容;或(ii)以任何理由终止或拒绝任何个人和组织访问和使用本网站。%{COMPANY_NAME} 有唯一裁量权。%{COMPANY_NAME} 没有义务退还先前支付的任何款项。 \n\n\n \n\n## [4. Payment and Renewal](#4)\n\n### General Terms\n\nOptional paid services or upgrades may be available on the Website. When utilizing an optional paid service or upgrade, you agree to pay %{company_name} the monthly or annual subscription fees indicated.\ + body: "下面的条款及条件适用于 %{company_domain} 网站的所有内容、服务和产品,其方式通过网站,其中包括,但不限于 %{company_domain} 论坛软件、%{company_domain} 支持论坛和在 %{company_domain} 托管服务(“托管”)(一起称为,网站)。该网站属于 %{company_full_name}(“%{company_name}”)并由其运营。该网站要求你必须接受所有本文中所包含的条款和条件以及其他所有的规则、政策(包括修改,但不限于 %{company_domain} 的[隐私政策](/privacy)、[社群准则](/FAQ)和程序(统称“协议”),并可能不时由 %{company_name} 发布。\n\n访问或使用本网站之前,请仔细阅读本协议。访问或使用网站的任何部分,即代表你同意成为受本协议的条款和条件。如果你不同意所有的条款和本协议的条件,那么你可能无法访问网站或使用任何服务。若这些条款和条件被认为是与 %{company_name} 的合同,则你必须接受这些条款。本网站只提供给 13 岁以上个人。\n\n \n\n## [1. 你的 %{company_domain} 帐号](#1) \n\n如果你在网站上创建一个帐户,你有责任维护你的帐号安全,你对帐户下发生的所有活动完全负责。你必须立即通知 %{company_name} 关于你的帐户的任何未经授权或任何其他违反安全的使用。%{company_name} 不会对你的任何行或不作为,包括因该等作为或不作为而导致的任何种类的任何损失承担任何责任。 \n\n \n\n## [2. 提供者的责任](#2) \n\n如果你张贴的材料有关于别的网站的链接,或以其他方式(或允许任何第三方进行)张贴别的网站的材料(不论何等材料,“内容”),你需对此完全负责,包括使用因该内容所造成的任何损害。不管所讨论的内容是文字、图形、音频文件或计算机软件。你声明和保证: \n\n* 下载、复制和使用内容不会侵犯专有权利,包括但不限于著作权,专利,商标或商业秘密权利的任何第三方;\n* 如果你的雇主对你的创造拥有知识产权,你必须以(i)获准从你的雇主发布或提供的内容,包括但不限于任何软件,或(ii)由你的雇主放弃拥有内容的所有权利;\n* 你已完全遵守有关该内容的第三方条约,并同意了所有面向最终用户所需的任何条款;\n* 内容不包含或安装任何病毒、蠕虫、恶意软件、特洛伊木马或其他有害或破坏性的内容;\n* 内容不是垃圾,不是机器的或随机生成的,并且不包含设计来吸引流量到第三方网站或助推第三方网站的搜索引擎排名,或者进一步非法行为不道德或不想要的广告内容(诸如网络钓鱼)或误导接受者为对材料的来源(如欺骗);\n* 内容不色情,不包含威胁或煽动暴力,并没有侵犯任何第三方的隐私或公开权;\n* 你的内容不是不受欢迎的电子讯息,如新闻组垃圾链接、邮件列表、博客和网站,以及类似的不请自来的宣传方式宣传;\n* 你的内容不是在误导读者,以你是另外一个人或公司的方式;和 \n* 你应在内容中包含计算机代码,准确地分类和/或所描述的类型、性质、用途和材料的影响,是否请求 %{company_name} 或以其他方式这样做的情况下。 \n\n \n\n## [3.用户内容授权](#3) \n\n用户贡献使用 [知识共享 署名-非商业性使用-相同方式共享3.0 Unported之许可](http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh_CN)授权。在不限制任何该等陈述或保证的情况下,%{company_name} 有权利(但没有义务)在 %{company_name} 的全权酌情决定下(i)根据 %{company_name} 的合理意见,任何违反 %{company_name} 政策或以任何方式伤害或使他人反感的情况能拒绝或删除任何内容;或(ii)以任何理由终止或拒绝任何个人和组织访问和使用本网站。%{company_name} 有唯一裁量权。%{company_name} 没有义务退还先前支付的任何款项。 \n\n\n \n\n## [4. Payment and Renewal](#4)\n\n### General Terms\n\nOptional paid services or upgrades may be available on the Website. When utilizing an optional paid service or upgrade, you agree to pay %{company_name} the monthly or annual subscription fees indicated.\ \ Payments will be charged on a pre-pay basis on the day you begin utilizing the service or upgrade and will cover the use of that service or upgrade for a monthly or annual subscription period as indicated. These fees are not refundable.\n\n### Automatic Renewal\n\nUnless you notify %{company_name} before the end of the applicable subscription period that you want to cancel a service or upgrade, your subscription will automatically renew and you authorize us to collect the then-applicable annual or monthly subscription fee (as well as any taxes) using any credit card or other payment mechanism we have on record for you. Subscriptions can be canceled at any time.\n\n\n\n## [5. Services](#5)\n\n### Hosting, Support Services\n\nOptional Hosting and Support services may be provided by %{company_name} under the terms and conditions for each such service. By signing up for a Hosting/Support or Support services account, you agree to abide by such terms and conditions.\n\n\n\n## [6. Responsibility of Website Visitors](#6)\n\n%{company_name} has not reviewed, and cannot review, all of the material, including computer software, posted to the Website, and cannot therefore be responsible for that material’s content, use or effects. By operating the Website, %{company_name} does not represent or imply that it endorses the material there posted, or that it believes such material to be accurate, useful or non-harmful. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. The Website may contain content that is offensive, indecent, or otherwise objectionable, as well as content containing technical inaccuracies, typographical mistakes, and other errors. The Website may also contain material that violates the privacy or publicity rights, or infringes the intellectual property and other proprietary rights, of third parties, or the downloading, copying or use of which is subject to additional terms and conditions,\ \ stated or unstated. %{company_name} disclaims any responsibility for any harm resulting from the use by visitors of the Website, or from any downloading by those visitors of content there posted.\n\n\n\n## [7. Content Posted on Other Websites](#7)\n\nWe have not reviewed, and cannot review, all of the material, including computer software, made available through the websites and webpages to which %{company_domain} links, and that link to %{company_domain}. %{company_name} does not have any control over those non-%{company_domain} websites and webpages, and is not responsible for their contents or their use. By linking to a non-%{company_domain} website or webpage, %{company_name} does not represent or imply that it endorses such website or webpage. You are responsible for taking precautions as necessary to protect yourself and your computer systems from viruses, worms, Trojan horses, and other harmful or destructive content. %{company_name} disclaims any responsibility for any harm resulting from your use of non-%{company_domain} websites and webpages.\n\n\n\n## [8. Copyright Infringement and DMCA Policy](#8)\n\nAs %{company_name} asks others to respect its intellectual property rights, it respects the intellectual property rights of others. If you believe that material located on or linked to by %{company_domain} violates your copyright, and if this website resides in the USA, you are encouraged to notify %{company_name} in accordance with %{company_name}’s [Digital Millennium Copyright Act](http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act) (\"DMCA\") Policy. %{company_name} will respond to all such notices, including as required or appropriate by removing the infringing material or disabling all links to the infringing material. %{company_name} will terminate a visitor’s access to and use of the Website if, under appropriate circumstances, the visitor is determined to be a repeat infringer of the copyrights or other intellectual property rights of %{company_name} or others. In the case of such termination,\ \ %{company_name} will have no obligation to provide a refund of any amounts previously paid to %{company_name}.\n\n\n\n## [9. Intellectual Property](#9)\n\nThis Agreement does not transfer from %{company_name} to you any %{company_name} or third party intellectual property, and all right, title and interest in and to such property will remain (as between the parties) solely with %{company_name}. %{company_name}, %{company_domain}, the %{company_domain} logo, and all other trademarks, service marks, graphics and logos used in connection with %{company_domain}, or the Website are trademarks or registered trademarks of %{company_name} or %{company_name}’s licensors. Other trademarks, service marks, graphics and logos used in connection with the Website may be the trademarks of other third parties. Your use of the Website grants you no right or license to reproduce or otherwise use any %{company_name} or third-party trademarks.\n\n\n\n## [10. Advertisements](#10)\n\n%{company_name} reserves the right to display advertisements on your content unless you have purchased an Ad-free Upgrade or a Services account.\n\n\n\n## [11. Attribution](#11)\n\n%{company_name} reserves the right to display attribution links such as ‘Powered by %{company_domain},’ theme author, and font attribution in your content footer or toolbar. Footer credits and the %{company_domain} toolbar may not be removed regardless of upgrades purchased.\n\n\n\n## [12. Changes](#12)\n\n%{company_name} reserves the right, at its sole discretion, to modify or replace any part of this Agreement. It is your responsibility to check this Agreement periodically for changes. Your continued use of or access to the Website following the posting of any changes to this Agreement constitutes acceptance of those changes. %{company_name} may also, in the future, offer new services and/or features through the Website (including, the release of new tools and resources). Such new features and/or services shall be subject to the terms and conditions\ @@ -1719,7 +1801,7 @@ zh_CN:
    • 匹配有优先级。所以有疑问时,搜索标题
    • 独一无二的、不常见的单词将总是产生最好的结果
    • -
    • 只要有可能,限制您的搜索范围至一个特定的分类、用户或主题
    • +
    • 只要有可能,限制你的搜索范围至一个特定的分类、用户或主题

    选项

    @@ -1735,3 +1817,76 @@ zh_CN:

    彩虹 category:公园 status:open order:latest 将搜索在“公园”分类中没有关闭或存档中的包含“彩虹”的主题,并按最后一个帖子的日期来排序。

    + badges: + long_descriptions: + autobiographer: | + 啦啦啦 + 啦啦啦 + first_like: | + 啦啦啦 + 啦啦啦 + first_link: | + 啦啦啦 + 啦啦啦 + first_quote: | + 啦啦啦 + 啦啦啦 + first_share: | + 啦啦啦 + 啦啦啦 + read_guidelines: | + 啦啦啦 + 啦啦啦 + reader: | + 啦啦啦 + 啦啦啦 + editor: | + 啦啦啦 + 啦啦啦 + first_flag: | + 标记对你社群的健康及其重要。如果你注意任何需要版主注意的帖子,请不要犹豫直接标记。当你达到信任等级 1 时,你也可以使用标记对话框发送消息给用户。 + nice_share: | + 啦啦啦 + 啦啦啦 + welcome: | + 啦啦啦 + 啦啦啦 + anniversary: | + 啦啦啦 + 啦啦啦 + good_share: | + 啦啦啦 + 啦啦啦 + great_share: | + 啦啦啦 + 啦啦啦 + nice_post: | + 啦啦啦 + 啦啦啦 + nice_topic: | + 啦啦啦 + 啦啦啦 + good_post: | + 啦啦啦 + 啦啦啦 + good_topic: | + 啦啦啦 + 啦啦啦 + great_post: | + 啦啦啦 + 啦啦啦 + great_topic: | + 啦啦啦 + 啦啦啦 + basic: | + 啦啦啦 + 啦啦啦 + member: | + 啦啦啦 + 啦啦啦 + regular: | + 啦啦啦 + 啦啦啦 + leader: | + 啦啦啦 + 啦啦啦 diff --git a/config/locales/server.zh_TW.yml b/config/locales/server.zh_TW.yml index 6fdf241915..5f93af3503 100644 --- a/config/locales/server.zh_TW.yml +++ b/config/locales/server.zh_TW.yml @@ -120,7 +120,6 @@ zh_TW: num_posts: "文章:" num_participants: "參與者:" read_full_topic: "閱讀整個話題" - private_message_abbrev: "私人訊息" rss_description: latest: "最新討論話題" hot: "熱門討論話題" @@ -325,9 +324,7 @@ zh_TW: description: '此帖內容包含對他人的攻擊、侮辱、仇視語言或違反了我們的社群准則。' long_form: '投訴為不當內容' notify_user: - title: '私人訊息 @{{username}}' description: '此帖包含一些我想與該用戶私下直接交流的內容。不能執行標記操作。' - long_form: '已私信用戶' email_title: '你的文章在"%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -364,7 +361,6 @@ zh_TW: email_title: '此討論話題 "%{title}" 需要板主注意' email_body: "%{link}\n\n%{message}" flagging: - you_must_edit: '

    你的文章已被社群投訴,請 閱讀你的私人訊息

    ' user_must_edit: '

    你的帖子已經被社群標記並被臨時隱藏。

    ' archetypes: regular: @@ -429,23 +425,18 @@ zh_TW: user_to_user_private_messages: title: "用戶對用戶" xaxis: "天" - yaxis: "私人訊息數量" system_private_messages: title: "系統" xaxis: "天" - yaxis: "訊息數量" moderator_warning_private_messages: title: "板主警告" xaxis: "天" - yaxis: "訊息數量" notify_moderators_private_messages: title: "板主通知" xaxis: "天" - yaxis: "訊息數量" notify_user_private_messages: title: "用戶通知" xaxis: "天" - yaxis: "訊息數量" top_referrers: title: "最高引用" xaxis: "用戶" @@ -525,7 +516,6 @@ zh_TW: title_nag: "為網站給予一個名字。在設定中更新標題。" site_description_missing: "輸入一句話作為網站的簡介,將出現在搜索結果中。在設定中更新 site_description。" consumer_email_warning: "您的網站正以Gmail或其他服務供應商郵件服務發送郵件。Gmail限制每日郵件發送數量. 請考慮使用其他電郵服務商來保證郵件能成功發送,例如 mandrill.com。" - site_contact_username_warning: "輸入一個友善的職員帳戶名稱,並以他的名義發送重要的自動私信。在設定中更新 site_contact_username。" notification_email_warning: "通知郵件不是從你域名的一個有效地址發出的;電郵發送將會變得危險和不可靠。請在設定中將 notification_email 設定一個有效的本機電郵地址。" content_types: education_new_reply: @@ -539,10 +529,8 @@ zh_TW: description: "新用戶指引和重要信息" welcome_user: title: "歡迎: 新用戶" - description: "當新用戶註冊後自動發送給他們的歡迎訊息。" welcome_invite: title: "歡迎: 受邀請用戶" - description: "當新用戶通過接受用戶邀請加入論壇後, 自動發送給他們的歡迎訊息。" login_required_welcome_message: title: "請登入:歡迎訊息" description: "歡迎資訊只會在已啟用'login required'時向未登入的用戶顯示" @@ -564,11 +552,10 @@ zh_TW: default_locale: "Discourse 執行個體 (instance) 的預設語言編碼 (ISO 639-1)" allow_user_locale: "允許用戶選擇自己的語言介面" min_post_length: "文章允許的最小文字數" - min_private_message_post_length: "私訊允許的最小文字數" + min_first_post_length: "第一篇文章允許的最少文字數" max_post_length: "文章允許的最大文字數" min_topic_title_length: "標題允許的最小文字數" max_topic_title_length: "標題允許的最大文字數" - min_private_message_title_length: "私信標題允許的最小文字數" min_search_term_length: "搜尋條件允許的最小文字數" allow_uncategorized_topics: "允許發表未分類的討論話題" uncategorized_description: "\"未分類\"的分類的描述,留空則無描述" @@ -602,7 +589,6 @@ zh_TW: digest_logo_url: "電郵摘要使用的標誌。如果留空,則使用 `logo_url`。例如:http://example.com/logo.png" logo_small_url: "出現在你網站左上角的小標誌圖片,當滾動後可見。如果留空,將顯示主頁圖標。" favicon_url: "你的網站圖示 (favicon),參考 http://zh.wikipedia.org/wiki/Favicon" - mobile_logo_url: "移動瀏覽器左上角的固定標誌圖片。如果留空,將顯示網站標題。" apple_touch_icon_url: "Apple 觸碰設備使用的圖示,建議 144 X 144px 大小" notification_email: "這個表格:被用於發送所有重要系統郵件的郵箱地址。指定的域名必須正確設置 SPF、DKIM 和反向 PTR 記錄以發送郵件。" email_custom_headers: "自定義的電子郵件標題的管道分隔列表" @@ -613,7 +599,6 @@ zh_TW: summary_likes_required: "如果使用了\"此話題的摘用\",話題顯示時需滿足最小得到\"讚\"的數量" summary_percent_filter: "當用戶點擊 \"此話題的摘要\",顯示前面多少 % 的文章" summary_max_results: "“概括主題”返回的最大帖子數量" - enable_private_messages: "允許信任等級 1 之用戶建立私人訊息和私下交流" enable_long_polling: "啟用消息匯流排使通知功能可以使用長輪詢(long polling)" long_polling_base_url: "長輪詢的基本 URL(當用 CDN 分發動態內容,請設置此至原始拉取地址)例如:http://origin.site.com" long_polling_interval: "當沒有數據向客戶端發送時伺服器端應等待的時間(僅對已登錄用戶有效)" @@ -646,8 +631,6 @@ zh_TW: post_menu_hidden_items: "帖子菜單中默認隱藏的按鈕,點擊省略號後顯示。" share_links: "決定在分享對話方塊裡顯示哪些項目、以什麼順序顯示。" track_external_right_clicks: "追蹤外部連結的右鍵點擊 ( 例如:開啟於瀏覽器的新頁面 ),預設是關閉的,因為它會重寫URLs" - site_contact_username: "系統給用戶發送自動私信時所使用的用戶名;如果留空將使用默認的系統帳戶。" - send_welcome_message: "給所有的新用戶發送一個快速引導的私訊" suppress_reply_directly_below: "當帖子只有一個回覆時,不顯示帖子的回覆數量。" suppress_reply_directly_above: "當帖子只有一個回覆時,不顯示回覆到該帖的回覆。" suppress_reply_when_quoting: "當帖子引用回覆時,不顯示可展開的回覆到某帖的標記。" @@ -683,7 +666,6 @@ zh_TW: sso_secret: "秘密字符串,用於驗證秘密的 SSO 訊息,請確保由 10 個字或以上組成" sso_overrides_email: "用 SSO 訊息中的外部電郵地址覆蓋本機電郵地址(警告:因為對本機電郵的統一處理,這個電郵地址可能不同)" sso_overrides_username: "用 SSO 訊息中的外部帳戶名覆蓋本機帳戶名(警告:因為對本機帳戶名的統一處理,帳戶名的長度或者要求可能不同)" - sso_overrides_name: "用 SSO 訊息中的外部網站名覆蓋本機名字(警告:因為對本機名字的統一處理,這個名字可能不同)" sso_overrides_avatar: "用 SSO 訊息中的外部網站頭像覆蓋用戶頭像。如果啟用,建議禁用 allow_uploaded_avatars" enable_local_logins: "啟用網站用戶名稱和密碼驗證 ( 注意:這必須啟用邀請才能有動作 )" allow_new_registrations: "允許新用戶註冊,如果取消選取,則沒有人能夠註冊" @@ -718,7 +700,6 @@ zh_TW: max_bookmarks_per_day: "每個用戶每天最多能建立\"書籤\"的數量" max_edits_per_day: "每個用戶每天最大的\"編輯次數\"的數量" max_topics_per_day: "每個用戶每天最多建立\"討論話題\"的數量" - max_private_messages_per_day: "每個用戶每天最多能發\"私訊\"的數量" max_invites_per_day: "每個用戶每天最多能邀請用戶的數量。" suggested_topics: "討論話題下的推薦話題數量" limit_suggested_to_category: "目前的話題下只顯示同分類的推薦話題" @@ -743,7 +724,7 @@ zh_TW: tl2_requires_time_spent_mins: "新用戶升級到信任等級2所需要閱讀帖子消耗的時間。(分鐘)" tl2_requires_days_visited: "一個初級用戶升級到信任等級2所需要訪問網站的累計天數。" tl2_requires_likes_received: "一個初級用戶升級到信任等級2所需要獲得的讚賞數。" - tl2_requires_likes_given: "一個初級用戶升級到信任等級2所需要付出的讚賞數。" + tl2_requires_likes_given: "初級用戶升級到信任等級2所需要付出的讚賞數。" tl2_requires_topic_reply_count: "一個初級用戶升級到信任等級2所需要回覆的主題數量。" tl3_requires_days_visited: "在最近 100 天內升至信任等級3所需的訪問網站的天數。(0到100)" tl3_requires_topics_replied_to: "在最近 100 天內升至信任等級3所需的回覆主題的最少數量。(0或更高)" @@ -753,33 +734,83 @@ zh_TW: tl3_requires_posts_read_all_time: "用戶升至信任等級3所需查看的最少帖子數量。" tl3_requires_max_flagged: "用戶在最近 100 天內升至信任等級3所需的必須沒有超過 x 個帖子被 x 個不同的用戶標記數量,x為數量。(0或更高)" tl3_promotion_min_duration: "信任等級3的用戶可被降級至信任等級2前最少持續天數。" + tl3_requires_likes_given: "升至信任等級3需要在最近 100 天內所給出最少的讚。" + tl3_requires_likes_received: "升至信任等級3需要在最近 100 天內所收到最少的讚。" tl3_links_no_follow: "禁止從信任等級 3 之用戶所發表的連結中刪除 rel=nofollow 標籤" min_trust_to_create_topic: "建立話題最低所需的信任等級" min_trust_to_edit_wiki_post: "編輯被標示為維基的文章所需之最低信任等級。" newuser_max_links: "新用戶可添加多少連結於一篇文章中" newuser_max_images: "新用戶可添加多少張圖片於一篇文章中" newuser_max_attachments: "新用戶可添加多少附件於一篇文章中" + newuser_max_mentions_per_post: "新用戶可以在一個帖子裡使用@name提及的最大數量。" + newuser_max_replies_per_topic: "直至有人回覆他們前,新用戶在一個帖子裡的最大回覆數量。" + max_mentions_per_post: "你可以在一個帖子裡使用 @name 提及的最大數量。" + create_thumbnails: "為太大而無法在帖子裡正常顯示的圖片創造縮略圖及 lightbox 圖片。" + email_time_window_mins: "等待多少 (n) 分鐘才給用戶發送通知電子郵件,好讓他們有機會自己來編輯和完善他們的帖子。" + email_posts_context: "在通知電郵中包含的作為上下文的回覆數量。" + flush_timings_secs: "刷新時間資料的頻率,以秒為單位" + title_min_entropy: "在主題的標題中,允許的最低熵值(單字)。" + body_min_entropy: "在一個帖子內文中,允許的最低熵值(單字)。" title_fancy_entities: "轉換討論話題標題中的 HTML 實體" + min_title_similar_length: "開始檢查相似主題的帖子標題的最少長度。" + min_body_similar_length: "開始檢查相似主題的帖子內容的最小長度。" + category_colors: "設定分類顏色的十六進制色彩值列表。" + category_style: "分類圖標的視覺樣式。" + max_image_size_kb: "允許用戶上傳的最大圖片大小(以kB為單位)。確保也在nginx(client_max_body_size),apache 或代理中進行限制文件大小的設定。" + max_attachment_size_kb: "允許用戶上傳的最大文件大小(以kB為單位)。確保也在nginx(client_max_body_size),apache 或代理中進行限制文件大小的設定。" + authorized_extensions: "允許上傳文件的副檔名列表('*' 表示允許所有文件類型)" + max_similar_results: "當用戶撰寫新主題時,顯示多少類似主題給用戶。比較根據標題和內容進行。" title_prettify: "防止常見標題裡的錯別字和錯誤,包括全部大寫,首字小寫,多個!和?,結尾多餘的. 等等。" + topic_views_heat_low: "多少次瀏覽後,該視圖將稍稍高亮。" + topic_views_heat_medium: "多少次瀏覽後,該視圖將明顯高亮。" + topic_views_heat_high: "多少次瀏覽後,該視圖將強烈高亮。" + cold_age_days_low: "在討論開始多少天後,最後活躍日期將輕微高亮。" + cold_age_days_medium: "在討論開始多少天後,最後活躍日期將明顯高亮。" + cold_age_days_high: "在討論開始多少天後,最後活躍日期將強烈高亮。" + history_hours_low: "帖子在編輯後編輯指示器輕微高亮的小時數" + history_hours_medium: "帖子在編輯後編輯指示器明顯高亮的小時數" + history_hours_high: "帖子在編輯後編輯指示器強烈高亮的小時數" + topic_post_like_heat_low: "在 likes:post 的比例超過此比例後,帖子數量一欄將稍稍高亮。" + topic_post_like_heat_medium: "在 likes:post 的比例超過此比例後,帖子數量一欄將明顯高亮。" + topic_post_like_heat_high: "在 likes:post 的比例超過此比例後,帖子數量一欄將強烈高亮。" + faq_url: "如果你的 FAQ 文件存放在外部,那麼請在此填寫其完整的 URL 地址。" tos_url: "如果你想要使用一個部署在某個地方的服務條款文檔,那麼請在此填寫其完整URL地址。" privacy_policy_url: "如果你想要使用一個部署在某個地方的隱私政策文檔,那麼請在此填寫其完整URL地址。" newuser_spam_host_threshold: "用戶在一篇文章中能添加多少此指向同一主機的連結,取決於之前該使用者有`newuser_spam_host_threshold`篇文章被認為是垃圾文章。" white_listed_spam_host_domains: "域名的白名單列表,新用戶可以任意連結到這些主機,而不會因防止廣告的測試過濾被檔下" + staff_like_weight: "管理員按讚時所給予的額外加權係數。" + topic_view_duration_hours: "計算每個IP/用戶每N小時一次新的查看話題" levenshtein_distance_spammer_emails: "當比對廣告Email時,數字與文字將仍使用模糊比對" + max_new_accounts_per_registration_ip: "如果已經有了從這個 IP 創建的 (n) 個信任等級0的賬戶(並且沒有一個是職員或者是信任等級2以上的用戶),不再允許來自該 IP 地址的註冊請求。" + min_ban_entries_for_roll_up: "當點擊折疊按鈕且不少於 (N) 條記錄時,將會創建一個子網禁止記錄。" + max_age_unmatched_emails: "在 (N) 天後刪除不匹配的電郵地址。" + max_age_unmatched_ips: "在 (N) 天後刪除不匹配的 IP 記錄。" + auto_respond_to_flag_actions: "啟用自動回覆當加入一個標籤。" + reply_by_email_enabled: "啟用通過電郵回覆。" email_in_min_trust: "能使用 EMail 發表新話題的最低的用戶信任等級" email_prefix: "EMail主題中使用的 [ 標籤 ],留空將預設使用 'title'" delete_user_max_post_age: "不允許刪除首發表文章超過 (x) 天的用戶" email_editable: "允許用戶在註冊後改變他們的 EMail" + logout_redirect: "登出後移到的網址。如:(http://somesite.com/logout)" allow_uploaded_avatars: "允許用戶上傳自定義的個人圖示" allow_animated_avatars: "允許使用者使用 GIF 動畫當個人圖示,警告:這會執行 avatars:refresh 這個 rake task" + allow_animated_thumbnails: "為 gif 動畫生成動態縮略圖。" + default_avatars: "新用戶將會使用的默認頭像的網址。" automatically_download_gravatars: "當用戶註冊或更改EMail時下載 Gravatars 圖片" digest_topics: "EMail 摘要中顯示的最大話題數量" digest_min_excerpt_length: "EMail 摘要中每篇文章最少顯示的字元數量" + default_digest_email_frequency: "用戶收到摘要郵件的默認間隔。用戶可以在設定中更改。" + suppress_digest_email_after_days: "不發送摘要郵件給超過 (n) 天閒置的用戶。" + disable_digest_emails: "禁用發送摘要郵件給所有用戶。" default_external_links_in_new_tab: "以新分頁開啟所有外部連結,用戶可於個人偏好設定更改設定。" detect_custom_avatars: "是否檢測用會上傳了自訂的個人圖示" max_daily_gravatar_crawls: "一天內 Discourse 將自動檢查 Gravatar 自訂個人圖示的次數" + public_user_custom_fields: "用戶可設定公開顯示的自定欄位白名單。" + staff_user_custom_fields: "用戶可設定只給管理員顯示的自定欄位白名單。" allow_profile_backgrounds: "允許使用者上傳個人檔案背景圖片" + sequential_replies_threshold: "用戶可以在一個主題內多次回覆而不被提醒連續發送多個回覆的通知。" suppress_uncategorized_badge: "不在\"無分類\"的話題列表內顯示徽章。" + invites_per_page: "默認在用戶頁顯示的邀請。" autohighlight_all_code: "即使未顯示特定語言,仍為所有預編排程式套用程式碼顏色提示" embed_truncate: "截斷 embed 過的文章" embed_category: "embedded 話題的分類" @@ -788,6 +819,9 @@ zh_TW: embed_blacklist_selector: "在 embeds 頁面移除 CSS 元件選擇器" enable_cdn_js_debugging: "允許 /logs 適當的顯示 crossorigin permissions 所有 js 的錯誤" show_create_topics_notice: "如果網站的公開討論話題少於 5 個,顯示通知要求管理員建立一些討論話題。" + enable_emoji: "啟用表情符號" + emoji_set: "你會如何喜歡你的表情符號?" + enforce_square_emoji: "強制為所有 emojis 設置的正方形比例。" errors: invalid_email: "無效的電子郵件地址" invalid_username: "沒有用戶使用該用戶名稱。" @@ -796,6 +830,7 @@ zh_TW: invalid_integer_max: "數值不能超過 %{max}." invalid_integer: "值必須為整數。" regex_mismatch: "內容值不符合要求的格式。" + must_include_latest: "頂級菜單必須包括“最新”標籤。" invalid_string: "無效的值。" invalid_string_min_max: "必須介於 %{min} 到 %{max} 字之間。" invalid_string_min: "必須至少 %{min} 個字。" @@ -808,15 +843,16 @@ zh_TW: edited: "%{display_username} 在 %{link} 編輯了你的文章" posted: "%{display_username} 發表了 %{link}" moved_post: "%{display_username} 把你的文章移動到了 %{link}" - private_message: "%{display_username} 發送給你一條訊息:%{link}" - invited_to_private_message: "%{display_username} 邀請你進行私人通訊:%{link}" invitee_accepted: "%{display_username} 接受了你的邀請" linked: "%{display_username} 在 %{link} 關連了你" + granted_badge: "你獲得了 %{link}" search: types: category: '分類' topic: '結果' user: '用戶' + sso: + account_not_approved: "帳戶正在等待驗證,完成後你將收到一封電郵提醒" original_poster: "原始作者" most_posts: "大部分文章" most_recent_poster: "當前大部分文章作者" @@ -842,6 +878,8 @@ zh_TW: wait_approval: "謝謝註冊帳號。我們會在你的帳號獲得批准之後通知你。" active: "你的帳號已經被啟用,可以使用了。" not_activated: "你還不能登入。我們發送了一封啟用郵件給你,請按照郵件中的步驟來啟用你的帳號。" + not_allowed_from_ip_address: "你無法透過此 IP 登入成為 %{username}。" + admin_not_allowed_from_ip_address: "你無法透過此 IP 登入成為管理員。" suspended: "你在 %{date} 之前無法登入。" suspended_with_reason: "你在 %{date} 之前無法登入。你被停權的理由:%{reason}" errors: "%{errors}" @@ -849,7 +887,11 @@ zh_TW: something_already_taken: "出了一些問題,可能此用戶名或電子郵箱已經被註冊。試試 忘記密碼 連結吧。" omniauth_error_unknown: "在處理你的登入過程中發生了錯誤,請重試。" new_registrations_disabled: "現在不允許註冊新的帳戶" + password_too_long: "密碼不能超過 200 個字符。" + missing_user_field: "你還沒有填寫完所有用戶字段" + close_window: "驗證已經完成。關閉視窗以繼續。" user: + no_accounts_associated: "無關聯的帳戶" username: short: "必須至少 %{min} 個字" long: "不能超過 %{max} 個字" @@ -862,7 +904,10 @@ zh_TW: blocked: "不被允許。" ip_address: blocked: "被封鎖。" + invite_mailer: + subject_template: "%{invitee_name} 邀請你參與在 %{site_domain_name} 討論的話題 '%{topic_title}'" invite_forum_mailer: + subject_template: "%{invitee_name} 邀請你加入 %{site_domain_name}" text_body_template: | %{invitee_name} 邀請你加入 @@ -875,6 +920,8 @@ zh_TW: %{invite_link} 此邀請是由一位受信任的用戶所發出,所以你不需要登入。 + invite_password_instructions: + subject_template: "為 %{site_name} 的帳戶設置密碼" test_mailer: subject_template: "[%{site_name}] 電子郵件發送測試" new_version_mailer: @@ -882,8 +929,13 @@ zh_TW: new_version_mailer_with_notes: subject_template: "[%{site_name}] 可以升級" flags_reminder: + flags_were_submitted: + other: "這些標記在過去 %{count} 小時內被提交。" please_review: "請再次確認。" post_number: "文章" + flags_dispositions: + disagreed: "感謝你讓我們知道。我們正在調查。" + deferred: "感謝你讓我們知道。我們正在調查。" system_messages: post_hidden: subject_template: "因為社群投訴而被隱藏的文章" @@ -891,8 +943,13 @@ zh_TW: subject_template: "歡迎來到 %{site_name}!" welcome_invite: subject_template: "歡迎來到 %{site_name}!" + backup_succeeded: + subject_template: "備份成功完成" backup_failed: subject_template: "備份失敗" + restore_succeeded: + subject_template: "恢復成功完成" + text_body_template: "這次恢復成功。" restore_failed: subject_template: "復原失敗" bulk_invite_succeeded: @@ -903,18 +960,6 @@ zh_TW: subject_template: "資料匯出完成" csv_export_failed: subject_template: "資料匯出失敗" - email_reject_trust_level: - subject_template: "EMail 錯誤 -- 尚未達到信任等級" - email_reject_no_account: - subject_template: "EMail 錯誤 -- 未知的帳戶" - email_reject_empty: - subject_template: "EMail 錯誤 -- 沒有內文" - email_reject_parsing: - subject_template: "EMail 錯誤 -- 內容無法識別" - email_reject_post_error: - subject_template: "EMail 錯誤 -- 發送錯誤" - email_error_notification: - subject_template: "EMail 錯誤 -- POP 驗證錯誤" too_many_spam_flags: subject_template: "新帳號已封鎖" blocked_by_staff: @@ -957,12 +1002,6 @@ zh_TW: reply_by_email: "要回應時,請回覆這封郵件,或在瀏覽器裡開啟 %{base_url}%{url} 網址。" visit_link_to_respond: "要回應時,請在瀏覽器裡開啟 %{base_url}%{url} 網址。" posted_by: "由 %{username} 張貼於 %{post_date}" - user_invited_to_private_message_pm: - subject_template: "[%{site_name}] %{username} 邀請你進行私人對話 '%{topic_title}'" - text_body_template: | - %{username} 邀請你在 %{site_name} 就 '%{topic_title}' 進行私下交流: - - 請訪問 %{base_url}%{url} 來查看該主題。 user_replied: subject_template: "[%{site_name}] %{username} 在 '%{topic_title}' 討論話題回覆了你的文章" text_body_template: | @@ -1014,7 +1053,6 @@ zh_TW: %{respond_instructions} digest: why: "在你上一次於 %{last_seen_at} 訪問後,在 %{site_link} 上的摘要。" - subject_template: "[%{site_name}] 於 %{date} 的摘要" new_activity: "在你的討論話題和文章裡的動態:" top_topics: "熱門文章" other_new_topics: "熱門討論話題" @@ -1079,7 +1117,6 @@ zh_TW: spam_hosts: "此新用戶嘗試發表多篇含有指向相同網域之連結的文章。請見網站設定中的 newuser_spam_host_threshold。" email_log: no_user: "無法找到 ID 為 %{user_id} 的使用者" - suspended_not_pm: "用戶被封鎖,這不是私信" seen_recently: "用戶最近活躍" post_not_found: "無法找到 ID 為 %{post_id} 的文章" notification_already_read: "這封通知 EMail 已被讀取" diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf index 7ff30b9dfd..0e6a6c5f54 100644 --- a/config/nginx.sample.conf +++ b/config/nginx.sample.conf @@ -80,7 +80,7 @@ server { root $public; add_header ETag ""; - location ~* \.(eot|ttf|woff|ico)$ { + location ~* \.(eot|ttf|woff|woff2|ico)$ { expires 1y; add_header Cache-Control public; add_header Access-Control-Allow-Origin *; diff --git a/config/routes.rb b/config/routes.rb index ccf716477d..731838d2e7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -8,7 +8,7 @@ require_dependency "permalink_constraint" # This used to be User#username_format, but that causes a preload of the User object # and makes Guard not work properly. USERNAME_ROUTE_FORMAT = /[A-Za-z0-9\_]+/ unless defined? USERNAME_ROUTE_FORMAT -BACKUP_ROUTE_FORMAT = /[a-zA-Z0-9\-_]*\d{4}(-\d{2}){2}-\d{6}\.tar\.gz/i unless defined? BACKUP_ROUTE_FORMAT +BACKUP_ROUTE_FORMAT = /[a-zA-Z0-9\-_]*\d{4}(-\d{2}){2}-\d{6}\.(tar\.gz|t?gz)/i unless defined? BACKUP_ROUTE_FORMAT Discourse::Application.routes.draw do @@ -224,11 +224,12 @@ Discourse::Application.routes.draw do get "login" => "static#show", id: "login" get "password-reset" => "static#show", id: "password_reset" get "faq" => "static#show", id: "faq" - get "guidelines" => "static#show", id: "guidelines" - get "tos" => "static#show", id: "tos" - get "privacy" => "static#show", id: "privacy" + get "guidelines" => "static#show", id: "guidelines", as: 'guidelines' + get "tos" => "static#show", id: "tos", as: 'tos' + get "privacy" => "static#show", id: "privacy", as: 'privacy' get "signup" => "list#latest" + post "users/toggle-anon" => "users#toggle_anon" post "users/read-faq" => "users#read_faq" get "users/search/users" => "users#search_users" get "users/account-created/" => "users#account_created" @@ -346,6 +347,9 @@ Discourse::Application.routes.draw do get "/badges/:id(/:slug)" => "badges#show" resources :user_badges, only: [:index, :create, :destroy] + + get '/c', to: redirect('/categories') + resources :categories, :except => :show post "category/uploads" => "categories#upload" post "category/:category_id/move" => "categories#move" @@ -384,7 +388,7 @@ Discourse::Application.routes.draw do get "category/*path" => "categories#redirect" get "top" => "list#top" - get "search" => "search#query" + get "search/query" => "search#query" # Topics resource get "t/:id" => "topics#show" diff --git a/config/site_settings.yml b/config/site_settings.yml index d6f3a041c6..f7ccfda3ce 100644 --- a/config/site_settings.yml +++ b/config/site_settings.yml @@ -276,6 +276,9 @@ users: logout_redirect: client: true default: '' + full_name_required: + client: true + default: false enable_names: client: true default: true @@ -303,6 +306,17 @@ users: staff_user_custom_fields: type: list default: '' + enable_user_directory: + client: true + default: true + allow_anonymous_posting: + default: false + client: true + anonymous_posting_min_trust_level: + default: 1 + client: true + anonymous_account_duration_minutes: + default: 10080 posting: min_post_length: @@ -382,7 +396,7 @@ posting: max_mentions_per_post: 10 newuser_max_replies_per_topic: 3 newuser_max_mentions_per_post: 2 - max_word_length: 30 + title_max_word_length: 30 newuser_max_links: 2 newuser_max_images: client: true @@ -475,7 +489,7 @@ files: default: 3072 max_attachment_size_kb: client: true - default: 1024 + default: 3072 authorized_extensions: client: true default: 'jpg|jpeg|png|gif' @@ -506,7 +520,9 @@ files: prevent_anons_from_downloading_files: default: false client: true - enable_s3_uploads: false + enable_s3_uploads: + default: false + client: true s3_use_iam_profile: false s3_access_key_id: '' s3_secret_access_key: '' @@ -526,7 +542,7 @@ files: allow_animated_avatars: client: true default: false - allow_animated_thumbnails: false + allow_animated_thumbnails: true default_avatars: default: '' type: url_list diff --git a/config/unicorn.conf.rb b/config/unicorn.conf.rb index 3f97c4742a..8d47c86821 100644 --- a/config/unicorn.conf.rb +++ b/config/unicorn.conf.rb @@ -80,19 +80,46 @@ before_fork do |server, worker| class ::Unicorn::HttpServer alias :master_sleep_orig :master_sleep + def max_rss + rss = `ps -eo rss,args | grep sidekiq | grep -v grep | awk '{print $1}'` + .split("\n") + .map(&:to_i) + .max + + rss ||= 0 + + rss * 1024 + end + + def out_of_memory? + max_allowed_size = [ENV['UNICORN_SIDEKIQ_MAX_RSS'].to_i, 500].max.megabytes; + max_rss > max_allowed_size + end + def check_sidekiq_heartbeat @sidekiq_heartbeat_interval ||= 30.minutes @sidekiq_next_heartbeat_check ||= Time.new.to_i + @sidekiq_heartbeat_interval if @sidekiq_next_heartbeat_check < Time.new.to_i + last_heartbeat = Jobs::RunHeartbeat.last_heartbeat + restart = false + + if out_of_memory? + Rails.logger.warn("Sidekiq is consuming too much memory (using: %0.2fM), restarting" % (max_rss.to_f / 1.megabyte)) + restart = true + end + if last_heartbeat < Time.new.to_i - @sidekiq_heartbeat_interval STDERR.puts "Sidekiq heartbeat test failed, restarting" - puts "Sidekiq heartbeat test failed, restarting" + Rails.logger.warn "Sidekiq heartbeat test failed, restarting" - Demon::Sidekiq.restart + restart = true end @sidekiq_next_heartbeat_check = Time.new.to_i + @sidekiq_heartbeat_interval + + Demon::Sidekiq.restart if restart + $redis.client.disconnect end end diff --git a/db/migrate/20150324184222_add_more_to_directory_items.rb b/db/migrate/20150324184222_add_more_to_directory_items.rb new file mode 100644 index 0000000000..efc7e9477f --- /dev/null +++ b/db/migrate/20150324184222_add_more_to_directory_items.rb @@ -0,0 +1,6 @@ +class AddMoreToDirectoryItems < ActiveRecord::Migration + def change + add_column :directory_items, :days_visited, :integer, null: false, default: 0 + add_column :directory_items, :posts_read, :integer, null: false, default: 0 + end +end diff --git a/db/migrate/20150325183400_fix_group_user_count.rb b/db/migrate/20150325183400_fix_group_user_count.rb new file mode 100644 index 0000000000..96988a6287 --- /dev/null +++ b/db/migrate/20150325183400_fix_group_user_count.rb @@ -0,0 +1,5 @@ +class FixGroupUserCount < ActiveRecord::Migration + def change + execute "UPDATE groups g SET user_count = (SELECT COUNT(user_id) FROM group_users gu WHERE gu.group_id = g.id)" + end +end diff --git a/db/migrate/20150410002033_add_primary_group_to_groups.rb b/db/migrate/20150410002033_add_primary_group_to_groups.rb new file mode 100644 index 0000000000..23e4e87138 --- /dev/null +++ b/db/migrate/20150410002033_add_primary_group_to_groups.rb @@ -0,0 +1,5 @@ +class AddPrimaryGroupToGroups < ActiveRecord::Migration + def change + add_column :groups, :primary_group, :boolean, default: false, null: false + end +end diff --git a/db/migrate/20150410002551_add_title_to_groups.rb b/db/migrate/20150410002551_add_title_to_groups.rb new file mode 100644 index 0000000000..eb90e98efa --- /dev/null +++ b/db/migrate/20150410002551_add_title_to_groups.rb @@ -0,0 +1,5 @@ +class AddTitleToGroups < ActiveRecord::Migration + def change + add_column :groups, :title, :string + end +end diff --git a/docs/INSTALL-cloud.md b/docs/INSTALL-cloud.md new file mode 100644 index 0000000000..da0903add0 --- /dev/null +++ b/docs/INSTALL-cloud.md @@ -0,0 +1,186 @@ +**Set up Discourse in the cloud in under 30 minutes** with zero knowledge of Rails or Linux shell using our [Discourse Docker image][dd]. We recommend [Digital Ocean][do], but these steps will work on any Docker-compatible cloud provider or local server. + +# Create New Cloud Server + +[Sign up for Digital Ocean][do], update billing info, then create your new cloud server (Droplet). + +- Enter your domain `discourse.example.com` as the name. + +- The default of **1 GB** RAM works fine for small Discourse communities. We do recommend 2 GB RAM for medium communities. + +- The default of **Ubuntu 14.04 LTS x64** works fine. The latest 64-bit [LTS distribution][lts] is recommended. + +- The default of **New York** is a good choice for most US and European audiences. Or select a region that is geographically closer to your audience. + +Create your new Droplet. You will receive a mail from Digital Ocean with the root password to your Droplet. (However, if you know [how to use SSH keys](https://www.google.com/search?q=digitalocean+ssh+keys), you may not need a password to log in.) + +# Access Your Cloud Server + +Connect to your Droplet via SSH, or use [Putty][put] on Windows: + + ssh root@192.168.1.1 + +Replace `192.168.1.1` with the IP address of your Droplet. + + + +You will be asked for permission to connect, type `yes`, then enter the root password from the email Digital Ocean sent you when the Droplet was set up. You may be prompted to change the root password, too. + + + +# Set up Swap (if needed) + +- If you're using the minimum 1 GB install, you *must* [set up a swap file](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880). + +- If you're using 2 GB+ memory, you can probably get by without a swap file. + +# Install Docker / Git + + wget -qO- https://get.docker.io/ | sh + + + +# Install Discourse + +Create a `/var/discourse` folder, clone the [Official Discourse Docker Image][dd] into it, and make a copy of the config file as `app.yml`: + + mkdir /var/discourse + git clone https://github.com/discourse/discourse_docker.git /var/discourse + cd /var/discourse + cp samples/standalone.yml containers/app.yml + + + +# Edit Discourse Configuration + +Edit the Discourse configuration at `app.yml`: + + nano containers/app.yml + +We recommend Nano because it works like a typical GUI text editor, just use your arrow keys. + +- Set `DISCOURSE_DEVELOPER_EMAILS` to your email address. + +- Set `DISCOURSE_HOSTNAME` to `discourse.example.com`, this means you want your Discourse available at `http://discourse.example.com/`. You'll need to update the DNS A record for this domain with the IP address of your server. + +- Place your mail credentials in `DISCOURSE_SMTP_ADDRESS`, `DISCOURSE_SMTP_PORT`, `DISCOURSE_SMTP_USER_NAME`, `DISCOURSE_SMTP_PASSWORD`. Be sure you remove the comment `#` character and space from the front of these lines as necessary. + +- If you are using a 1 GB instance, set `UNICORN_WORKERS` to 2 and `db_shared_buffers` to 128MB so you have more memory room. + + + +After completing your edits, press CtrlO then Enter to save and CtrlX to exit. + +# Email Is Important + +**Email is CRITICAL for account creation and notifications in Discourse. If you do not properly configure email before bootstrapping YOU WILL HAVE A BROKEN SITE!** + +- Already have a mail server? Great. Use your existing mail server credentials. + +- No existing mail server, or you don't know what it is? No problem, create a free account on [**Mandrill**][man] (or [Mailgun][gun], or [Mailjet][jet]), and use the credentials provided in the dashboard. + +- For proper email deliverability, you must set the [SPF and DKIM records](http://help.mandrill.com/entries/21751322-What-are-SPF-and-DKIM-and-do-I-need-to-set-them-up-) in your DNS. In Mandrill, that's under Sending Domains, View DKIM/SPF setup instructions. + +# Bootstrap Discourse + +Save the `app.yml` file, and begin bootstrapping Discourse: + + ./launcher bootstrap app + +This command takes about 8 minutes. It is automagically configuring your Discourse environment. + +After that completes, start Discourse: + + ./launcher start app + + + +Congratulations! You now have your own instance of Discourse! + +It should be accessible via the domain name `discourse.example.com` you entered earlier, provided you configured DNS. If not, you can also visit the server IP directly, e.g. `http://192.168.1.1`. + + + +# Register New Account and Become Admin + +There is a reminder at the top about `DISCOURSE_DEVELOPER_EMAILS`; register a new account via one of those email addresses, and your account will automatically be made an Admin. + +(If you *don't* get any email from your install, and are unable to register a new admin account, please see our [Email Troubleshooting checklist](https://meta.discourse.org/t/troubleshooting-email-on-a-new-discourse-install/16326).) + + + +You should see Staff topics and the [Admin Quick Start Guide](https://github.com/discourse/discourse/blob/master/docs/ADMIN-QUICK-START-GUIDE.md). It contains the next steps for further configuring and customizing your Discourse install. + +(If you are still unable to register a new admin account via email, see [Create Admin Account from Console](https://meta.discourse.org/t/create-admin-account-from-console/17274), but please note that *you will have a broken site* unless you get email working on your instance.) + + +# Post-Install Maintenance + +We strongly suggest you: + +- turn on automatic security updates via the `dpkg-reconfigure -plow unattended-upgrades` command +- enable stronger passwords via the `apt-get install libpam-cracklib` package + +To **upgrade Discourse to the latest version**, visit `/admin/upgrade` and follow the instructions. + +The `launcher` command in the `/var/discourse` folder can be used for various kinds of maintenance: + +``` +Usage: launcher COMMAND CONFIG [--skip-prereqs] +Commands: + start: Start/initialize a container + stop: Stop a running container + restart: Restart a container + destroy: Stop and remove a container + enter: Use nsenter to enter a container + ssh: Start a bash shell in a running container + logs: Docker logs for container + mailtest: Test the mail settings in a container + bootstrap: Bootstrap a container for the config based on a template + rebuild: Rebuild a container (destroy old, bootstrap, start new) + cleanup: Remove all containers that have stopped for > 24 hours + +Options: + --skip-prereqs Don't check prerequisites + --docker-args Extra arguments to pass when running docker +``` + +# Add More Discourse Features + +Do you want... + +* Users to log in *only* via your pre-existing website's registration system? [Configure Single-Sign-On](https://meta.discourse.org/t/official-single-sign-on-for-discourse/13045). + +- Users to log in via Google? (new Oauth2 authentication) [Configure Google logins](https://meta.discourse.org/t/configuring-google-login-for-discourse/15858). + +- Users to log in via Facebook? [Configure Facebook logins](https://meta.discourse.org/t/configuring-facebook-login-for-discourse/13394). + +- Users to log in via Twitter? [Configure Twitter logins](https://meta.discourse.org/t/configuring-twitter-login-for-discourse/13395/last). + +- Users to post replies via email? [Configure reply via email](https://meta.discourse.org/t/set-up-reply-via-email-support/14003). + +- Automatic daily backups? [Configure backups](https://meta.discourse.org/t/configure-automatic-backups-for-discourse/14855). + +- HTTPS / SSL support? [Configure SSL](https://meta.discourse.org/t/allowing-ssl-for-your-discourse-docker-setup/13847). + +- Multiple Discourse sites on the same server? [Configure multisite](https://meta.discourse.org/t/multisite-configuration-with-docker/14084). + +- A Content Delivery Network to speed up worldwide access? [Configure a CDN](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857). We recommend [Fastly](http://www.fastly.com/). + +- Import old content from vBulletin, PHPbb, Vanilla, Drupal, BBPress, etc? [See our open source importers](https://github.com/discourse/discourse/tree/master/script/import_scripts) + +- A firewall on your server? [Configure firewall](https://meta.discourse.org/t/configure-a-firewall-for-discourse/20584) + +- To embed Discourse [in your WordPress install](https://github.com/discourse/wp-discourse), or [on your static HTML site](http://eviltrout.com/2014/01/22/embedding-discourse.html)? + +If anything needs to be improved in this guide, feel free to ask on [meta.discourse.org][meta], or even better, submit a pull request. + + [dd]: https://github.com/discourse/discourse_docker + [man]: https://mandrillapp.com + [ssh]: https://help.github.com/articles/generating-ssh-keys + [meta]: https://meta.discourse.org + [do]: https://www.digitalocean.com/?refcode=5fa48ac82415 + [lts]: https://wiki.ubuntu.com/LTS + [jet]: https://www.mailjet.com/pricing + [gun]: http://www.mailgun.com/ + [put]: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html diff --git a/docs/INSTALL-digital-ocean.md b/docs/INSTALL-digital-ocean.md index 042c921012..8c46e0cdf1 100644 --- a/docs/INSTALL-digital-ocean.md +++ b/docs/INSTALL-digital-ocean.md @@ -1,176 +1 @@ -**Set up Discourse on a cloud server in under 30 minutes** with zero knowledge of Ruby, Rails or Linux shell using our [Discourse Docker image][dd]. While this guide uses [Digital Ocean][do], these steps will work on other cloud providers and local installs that also support Docker. Let's begin! - -# Create New Digital Ocean Droplet - -[Sign up for Digital Ocean][do], update billing info, then begin creating your new cloud server (Droplet). - -- Enter your domain `discourse.example.com` as the Droplet name. - -- The default of **1GB** RAM works fine for small Discourse communities. We do recommend 2 GB RAM for medium communities. - -- The default of **Ubuntu 14.04 LTS x64** works fine. Always select the latest 64-bit [LTS distribution][lts]. - -Create your new Droplet. You will receive a mail from Digital Ocean with the root password to your Droplet. (However, if you know [how to use SSH keys](https://www.google.com/search?q=digitalocean+ssh+keys), you may not need a password to log in.) - -# Access Your Droplet - -Connect to your Droplet via SSH, or use [Putty][put] on Windows: - - ssh root@192.168.1.1 - -Replace `192.168.1.1` with the IP address of your Droplet. - - - -You will be asked for permission to connect, type `yes`, then enter the root password from the email Digital Ocean sent you when the Droplet was set up. You may be prompted to change the root password, too. - - - -# Set up Swap (if needed) - -- If you're using the minimum 1 GB install, you *must* [set up a swap file](https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880). - -- If you're using 2 GB+ memory, you can probably get by without a swap file. - -# Install Docker / Git - - wget -qO- https://get.docker.io/ | sh - - - -# Install Discourse - -Create a `/var/discourse` folder, clone the [Official Discourse Docker Image][dd] into it, and make a copy of the config file as `app.yml`: - - mkdir /var/discourse - git clone https://github.com/discourse/discourse_docker.git /var/discourse - cd /var/discourse - cp samples/standalone.yml containers/app.yml - - - -# Edit Discourse Configuration - -Edit the Discourse configuration at `app.yml`: - - nano containers/app.yml - -We recommend Nano because it works like a typical GUI text editor, just use your arrow keys. - -- Set `DISCOURSE_DEVELOPER_EMAILS` to your email address. - -- Set `DISCOURSE_HOSTNAME` to `discourse.example.com`, this means you want your Discourse available at `http://discourse.example.com/`. You'll need to update the DNS A record for this domain with the IP address of your server. - -- Place your mail credentials in `DISCOURSE_SMTP_ADDRESS`, `DISCOURSE_SMTP_PORT`, `DISCOURSE_SMTP_USER_NAME`, `DISCOURSE_SMTP_PASSWORD`. Be sure you remove the comment `#` character and space from the front of these lines as necessary. - -- If you are using a 1 GB instance, set `UNICORN_WORKERS` to 2 and `db_shared_buffers` to 128MB so you have more memory room. - - - -After completing your edits, press CtrlO then Enter to save and CtrlX to exit. - -# Email Is Important - -**Email is CRITICAL for account creation and notifications in Discourse. If you do not properly configure email before bootstrapping YOU WILL HAVE A BROKEN SITE!** - -- Already have a mail server? Great. Use your existing mail server credentials. - -- No existing mail server, or you don't know what it is? No problem, create a free account on [**Mandrill**][man] (or [Mailgun][gun], or [Mailjet][jet]), and use the credentials provided in the dashboard. - -- For proper email deliverability, you must set the [SPF and DKIM records](http://help.mandrill.com/entries/21751322-What-are-SPF-and-DKIM-and-do-I-need-to-set-them-up-) in your DNS. In Mandrill, that's under Sending Domains, View DKIM/SPF setup instructions. - -# Bootstrap Discourse - -Save the `app.yml` file, and begin bootstrapping Discourse: - - ./launcher bootstrap app - -This command takes about 8 minutes. It is automagically configuring your Discourse environment. - -After that completes, start Discourse: - - ./launcher start app - - - -Congratulations! You now have your own instance of Discourse! - -It should be accessible via the domain name `discourse.example.com` you entered earlier, provided you configured DNS. If not, you can also visit the server IP directly, e.g. `http://192.168.1.1`. - - - -# Register New Account and Become Admin - -There is a reminder at the top about `DISCOURSE_DEVELOPER_EMAILS`; register a new account via one of those email addresses, and your account will automatically be made an Admin. - -(If you *don't* get any email from your install, and are unable to register a new admin account, please see our [Email Troubleshooting checklist](https://meta.discourse.org/t/troubleshooting-email-on-a-new-discourse-install/16326).) - - - -You should see Staff topics and the [Admin Quick Start Guide](https://github.com/discourse/discourse/blob/master/docs/ADMIN-QUICK-START-GUIDE.md). It contains the next steps for further configuring and customizing your Discourse install. - -(If you are still unable to register a new admin account via email, see [Create Admin Account from Console](https://meta.discourse.org/t/create-admin-account-from-console/17274), but please note that *you will have a broken site* unless you get email working on your instance.) - - -# Post-Install Maintenance - -We strongly suggest you turn on automatic security updates for Ubuntu via the `dpkg-reconfigure -plow unattended-upgrades` command. - -To **upgrade Discourse to the latest version**, visit `/admin/upgrade` and follow the instructions. - -The `launcher` command in the `/var/discourse` folder can be used for various kinds of maintenance: - -``` -Usage: launcher COMMAND CONFIG [--skip-prereqs] -Commands: - start: Start/initialize a container - stop: Stop a running container - restart: Restart a container - destroy: Stop and remove a container - enter: Use nsenter to enter a container - ssh: Start a bash shell in a running container - logs: Docker logs for container - mailtest: Test the mail settings in a container - bootstrap: Bootstrap a container for the config based on a template - rebuild: Rebuild a container (destroy old, bootstrap, start new) -``` - -# Add More Discourse Features - -Do you want... - -* Users to log in *only* via your pre-existing website's registration system? [Configure Single-Sign-On](https://meta.discourse.org/t/official-single-sign-on-for-discourse/13045). - -- Users to log in via Google? (new Oauth2 authentication) [Configure Google logins](https://meta.discourse.org/t/configuring-google-login-for-discourse/15858). - -- Users to log in via Facebook? [Configure Facebook logins](https://meta.discourse.org/t/configuring-facebook-login-for-discourse/13394). - -- Users to log in via Twitter? [Configure Twitter logins](https://meta.discourse.org/t/configuring-twitter-login-for-discourse/13395/last). - -- Users to post replies via email? [Configure reply via email](https://meta.discourse.org/t/set-up-reply-via-email-support/14003). - -- Automatic daily backups? [Configure backups](https://meta.discourse.org/t/configure-automatic-backups-for-discourse/14855). - -- HTTPS / SSL support? [Configure SSL](https://meta.discourse.org/t/allowing-ssl-for-your-discourse-docker-setup/13847). - -- Multiple Discourse sites on the same server? [Configure multisite](https://meta.discourse.org/t/multisite-configuration-with-docker/14084). - -- A Content Delivery Network to speed up worldwide access? [Configure a CDN](https://meta.discourse.org/t/enable-a-cdn-for-your-discourse/14857). We recommend [Fastly](http://www.fastly.com/). - -- Import old content from vBulletin, PHPbb, Vanilla, Drupal, BBPress, etc? [See our open source importers](https://github.com/discourse/discourse/tree/master/script/import_scripts) - -- A firewall on your server? [Configure firewall](https://meta.discourse.org/t/configure-a-firewall-for-discourse/20584) - -- To embed Discourse [in your WordPress install](https://github.com/discourse/wp-discourse), or [on your static HTML site](http://eviltrout.com/2014/01/22/embedding-discourse.html)? - -If anything needs to be improved in this guide, feel free to ask on [meta.discourse.org][meta], or even better, submit a pull request. - - [dd]: https://github.com/discourse/discourse_docker - [man]: https://mandrillapp.com - [ssh]: https://help.github.com/articles/generating-ssh-keys - [meta]: https://meta.discourse.org - [do]: https://www.digitalocean.com/?refcode=5fa48ac82415 - [lts]: https://wiki.ubuntu.com/LTS - [jet]: https://www.mailjet.com/pricing - [gun]: http://www.mailgun.com/ - [put]: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html +This file has moved; please navigate to https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md diff --git a/docs/INSTALL.md b/docs/INSTALL.md index ca051f42bd..7f03fcb35b 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -28,6 +28,6 @@ Hosting Rails applications is complicated. Even if you already have Postgres, Re We take security very seriously at Discourse, and all our code is 100% open source and peer reviewed. Please read [our security guide](https://github.com/discourse/discourse/blob/master/docs/SECURITY.md) for an overview of security measures in Discourse. -[basic]: https://github.com/discourse/discourse/blob/master/docs/INSTALL-digital-ocean.md +[basic]: https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md [advanced]: https://github.com/discourse/discourse_docker [swap]: https://meta.discourse.org/t/create-a-swapfile-for-your-linux-server/13880 diff --git a/lib/backup_restore/backuper.rb b/lib/backup_restore/backuper.rb index 02b1c48811..a1eff02210 100644 --- a/lib/backup_restore/backuper.rb +++ b/lib/backup_restore/backuper.rb @@ -258,7 +258,7 @@ module BackupRestore end log "Gzipping archive..." - `gzip --best #{tar_filename}` + `gzip #{tar_filename}` end def after_create_hook diff --git a/lib/crawler_detection.rb b/lib/crawler_detection.rb index d4bdac727d..3b8b20ce4e 100644 --- a/lib/crawler_detection.rb +++ b/lib/crawler_detection.rb @@ -1,7 +1,8 @@ module CrawlerDetection # added 'ia_archiver' based on https://meta.discourse.org/t/unable-to-archive-discourse-pages-with-the-internet-archive/21232 # added 'Wayback Save Page' based on https://meta.discourse.org/t/unable-to-archive-discourse-with-the-internet-archive-save-page-now-button/22875 + def self.crawler?(user_agent) - !/Googlebot|Mediapartners|AdsBot|curl|Twitterbot|facebookexternalhit|bingbot|Baiduspider|ia_archiver|Wayback Save Page/.match(user_agent).nil? + !/Googlebot|Mediapartners|AdsBot|curl|Twitterbot|facebookexternalhit|bingbot|Baiduspider|ia_archiver|Wayback Save Page|360Spider/.match(user_agent).nil? end end diff --git a/lib/demon/base.rb b/lib/demon/base.rb index 254a17baaf..e7cffd419b 100644 --- a/lib/demon/base.rb +++ b/lib/demon/base.rb @@ -154,7 +154,8 @@ class Demon::Base begin delete_pid_file ensure - exit + # TERM is way cleaner than exit + Process.kill("TERM", Process.pid) end end diff --git a/lib/discourse.rb b/lib/discourse.rb index 3c42c12ea1..9c37ed3505 100644 --- a/lib/discourse.rb +++ b/lib/discourse.rb @@ -56,7 +56,7 @@ module Discourse class CSRF < StandardError; end def self.filters - @filters ||= [:latest, :unread, :new, :read, :posted, :bookmarks] + @filters ||= [:latest, :unread, :new, :read, :posted, :bookmarks, :search] end def self.feed_filters @@ -64,7 +64,7 @@ module Discourse end def self.anonymous_filters - @anonymous_filters ||= [:latest, :top, :categories] + @anonymous_filters ||= [:latest, :top, :categories, :search] end def self.logged_in_filters diff --git a/lib/freedom_patches/fix_rubyracer_memory_leak.rb b/lib/freedom_patches/fix_rubyracer_memory_leak.rb new file mode 100644 index 0000000000..2971797b84 --- /dev/null +++ b/lib/freedom_patches/fix_rubyracer_memory_leak.rb @@ -0,0 +1,33 @@ +## TODO: DELETE ME WHEN https://github.com/cowboyd/therubyracer/pull/336 +# is upstreamed and released +# +module V8 + module Weak + class WeakValueMap + def initialize + @values = {} + end + + def [](key) + if ref = @values[key] + ref.object + end + end + + def []=(key, value) + ref = V8::Weak::Ref.new(value) + ObjectSpace.define_finalizer(value, self.class.ensure_cleanup(@values, key, ref)) + + @values[key] = ref + end + + private + + def self.ensure_cleanup(values,key,ref) + proc { + values.delete(key) if values[key] == ref + } + end + end + end +end diff --git a/lib/freedom_patches/translate_accelerator.rb b/lib/freedom_patches/translate_accelerator.rb index af237e9b6f..95f9f9d0b1 100644 --- a/lib/freedom_patches/translate_accelerator.rb +++ b/lib/freedom_patches/translate_accelerator.rb @@ -34,7 +34,7 @@ module I18n class << self alias_method :translate_no_cache, :translate alias_method :reload_no_cache!, :reload! - LRU_CACHE_SIZE = 2000 + LRU_CACHE_SIZE = 300 def reload! @loaded_locales = [] @@ -59,25 +59,16 @@ module I18n end end - def translate(*args) + def translate(key, *args) + load_locale(config.locale) unless @loaded_locales.include?(config.locale) + return translate_no_cache(key, *args) if args.length > 0 + @cache ||= LruRedux::ThreadSafeCache.new(LRU_CACHE_SIZE) - found = true - k = [args, config.locale, config.backend.object_id] - t = @cache.fetch(k) { found = false } - unless found - load_locale(config.locale) unless @loaded_locales.include?(config.locale) - begin - t = translate_no_cache(*args) - rescue MissingInterpolationArgument - options = args.last.is_a?(Hash) ? args.pop.dup : {} - options.merge!(locale: config.default_locale) - key = args.shift - t = translate_no_cache(key, options) - ensure - t = @cache[k] = t.freeze - end + k = "#{key}#{config.locale}#{config.backend.object_id}" + + @cache.getset(k) do + translate_no_cache(key).freeze end - t end alias_method :t, :translate diff --git a/lib/guardian.rb b/lib/guardian.rb index d3e2911ee1..51cedb1e93 100644 --- a/lib/guardian.rb +++ b/lib/guardian.rb @@ -114,6 +114,7 @@ class Guardian alias :can_move_posts? :can_moderate? alias :can_see_flags? :can_moderate? alias :can_send_activation_email? :can_moderate? + alias :can_close? :can_moderate? def can_grant_badges?(_user) SiteSetting.enable_badges && is_staff? @@ -197,12 +198,6 @@ class Guardian is_me?(user) end - def invitations_allowed? - !SiteSetting.enable_sso && - SiteSetting.enable_local_logins && - (!SiteSetting.must_approve_users? || is_staff?) - end - def can_invite_to_forum?(groups=nil) authenticated? && !SiteSetting.enable_sso && @@ -216,7 +211,7 @@ class Guardian def can_invite_to?(object, group_ids=nil) return false if ! authenticated? - return false if ! invitations_allowed? + return false unless ( SiteSetting.enable_local_logins && (!SiteSetting.must_approve_users? || is_staff?) ) return true if is_admin? return false if ! can_see?(object) diff --git a/lib/guardian/post_guardian.rb b/lib/guardian/post_guardian.rb index 4e6c579540..2e8031be78 100644 --- a/lib/guardian/post_guardian.rb +++ b/lib/guardian/post_guardian.rb @@ -8,7 +8,7 @@ module PostGuardian already_taken_this_action = taken.any? && taken.include?(PostActionType.types[action_key]) already_did_flagging = taken.any? && (taken & PostActionType.flag_types.values).any? - if authenticated? && post + result = if authenticated? && post && !@user.anonymous? return false if action_key == :notify_moderators && !SiteSetting.enable_private_messages @@ -37,6 +37,8 @@ module PostGuardian # no voting more than once on single vote topics not(action_key == :vote && opts[:voted_in_topic] && post.topic.has_meta_data_boolean?(:single_vote)) end + + !!result end def can_defer_flags?(post) diff --git a/lib/letter_avatar.rb b/lib/letter_avatar.rb index ecb0317273..a9288be339 100644 --- a/lib/letter_avatar.rb +++ b/lib/letter_avatar.rb @@ -1,7 +1,7 @@ class LetterAvatar # BUMP UP if avatar algorithm changes - VERSION = 2 + VERSION = 3 # Largest avatar generated, one day when pixel ratio hit 3 # we will need to change this @@ -23,8 +23,12 @@ class LetterAvatar end end + def version + "#{VERSION}_#{image_magick_version}" + end + def cache_path - "public/uploads/letter_avatars/#{VERSION}" + "public/uploads/letter_avatars/#{version}" end def generate(username, size, opts = nil) @@ -64,21 +68,21 @@ class LetterAvatar stroke = darken(color, 0.8) instructions = %W{ - -size 240x240 + -size #{FULLSIZE}x#{FULLSIZE} xc:#{to_rgb(color)} - -pointsize 200 + -pointsize 180 -fill white -gravity Center -font 'Helvetica' -stroke #{to_rgb(stroke)} -strokewidth 2 - -annotate -5+25 '#{letter}' + -annotate -0+20 '#{letter}' '#{filename}' } `convert #{instructions.join(" ")}` - ImageOptim.new.optimize_image(filename) rescue nil + ImageOptim.new.optimize_image!(filename) rescue nil filename end @@ -93,6 +97,27 @@ class LetterAvatar r,g,b = color "'rgb(#{r},#{g},#{b})'" end + + def image_magick_version + @image_magick_version ||= + begin + Thread.new do + sleep 2 + cleanup_old + end + Digest::MD5.hexdigest(`convert --version` << `convert -list font`) + end + end + + def cleanup_old + skip = File.basename(cache_path) + parent_path = File.dirname(cache_path) + Dir.entries(parent_path).each do |path| + unless ['.','..'].include?(path) || path == skip + FileUtils.rm_rf(parent_path + "/" + path) + end + end + end end # palette of optimally disctinct colors diff --git a/lib/memory_diagnostics.rb b/lib/memory_diagnostics.rb new file mode 100644 index 0000000000..d79d84407b --- /dev/null +++ b/lib/memory_diagnostics.rb @@ -0,0 +1,172 @@ +module MemoryDiagnostics + + def self.snapshot_exists? + File.exists?(snapshot_filename) + end + + def self.compare(from=nil, to=nil) + + from ||= snapshot_filename + if !to + filename = snapshot_filename + ".new" + snapshot_current_process(filename) + to = filename + end + + from = Marshal::load(IO.binread(from)); + to = Marshal::load(IO.binread(to)); + + diff = from - to + + require 'objspace' + diff = diff.map do |id| + ObjectSpace._id2ref(id) rescue nil + end.compact! + + report = "#{diff.length} objects have leaked\n" + + report << "Summary:\n" + + summary = {} + diff.each do |obj| + begin + summary[obj.class] ||= 0 + summary[obj.class] += 1 + rescue + # don't care + end + end + + report << summary.sort{|a,b| b[1] <=> a[1]}[0..50].map{|k,v| + "#{k}: #{v}" + }.join("\n") + + report << "\n\nSample Items:\n" + + diff[0..5000].each do |v| + report << "#{v.class}: #{String === v ? v[0..300] : (40 + ObjectSpace.memsize_of(v)).to_s + " bytes"}\n" rescue nil + end + + report + end + + def self.snapshot_path + "#{Rails.root}/tmp/mem_snapshots" + end + + def self.snapshot_filename + "#{snapshot_path}/#{Process.pid}.snapshot" + end + + def self.snapshot_current_process(filename=nil) + filename ||= snapshot_filename + pid=fork do + snapshot(filename) + end + + Process.wait(pid) + end + + def self.snapshot(filename) + require 'objspace' + FileUtils.mkdir_p snapshot_path + object_ids = [] + + full_gc + + ObjectSpace.each_object do |o| + begin + object_ids << o.object_id + rescue + # skip + end + end + + IO.binwrite(filename, Marshal::dump(object_ids)) + end + + def self.memory_report(opts={}) + begin + # ruby 2.1 + GC.start(full_mark: true) + rescue + GC.start + end + + + classes = {} + large_objects = [] + + if opts[:class_report] + require 'objspace' + ObjectSpace.each_object do |o| + begin + classes[o.class] ||= 0 + classes[o.class] += 1 + if (size = ObjectSpace.memsize_of(o)) > 200 + large_objects << [size, o] + end + rescue + # all sorts of stuff can happen here BasicObject etc. + classes[:unknown] ||= 0 + classes[:unknown] += 1 + end + end + classes = classes.sort{|a,b| b[1] <=> a[1]}[0..40].map{|klass, count| "#{klass}: #{count}"} + + classes << "\nLarge Objects (#{large_objects.length} larger than 200 bytes total size #{large_objects.map{|x,_| x}.sum}):\n" + + classes += large_objects.sort{|a,b| b[0] <=> a[0]}[0..800].map do |size,object| + rval = "#{object.class}: size #{size}" + rval << " " << object.to_s[0..500].gsub("\n", "") if (String === object) || (Regexp === object) + rval << "\n" + rval + end + end + + stats = GC.stat.map{|k,v| "#{k}: #{v}"} + counts = ObjectSpace.count_objects.sort{|a,b| b[1] <=> a[1] }.map{|k,v| "#{k}: #{v}"} + + + + < 0 ? classes.join("\n") : "Class report omitted use ?full=1 to include it"} + +TEXT + + end + + + def self.full_gc + # gc start may not collect everything + GC.start while new_count = decreased_count(new_count) + end + + def self.decreased_count(old) + count = count_objects + if !old || count < old + count + else + nil + end + end + + def self.count_objects + i = 0 + ObjectSpace.each_object do |obj| + i += 1 + end + end +end diff --git a/lib/post_creator.rb b/lib/post_creator.rb index fb001810c7..d4627ca2ee 100644 --- a/lib/post_creator.rb +++ b/lib/post_creator.rb @@ -97,7 +97,7 @@ class PostCreator if @post && @post.errors.empty? publish - PostAlerter.post_created(@post) unless @opts[:import_mode] || @opts[:skip_notifications] + PostAlerter.post_created(@post) unless @opts[:import_mode] track_latest_on_category enqueue_jobs diff --git a/lib/post_destroyer.rb b/lib/post_destroyer.rb index fe99b6c9fe..42be744991 100644 --- a/lib/post_destroyer.rb +++ b/lib/post_destroyer.rb @@ -72,7 +72,6 @@ class PostDestroyer if @post.topic make_previous_post_the_last_one clear_user_posted_flag - feature_users_in_the_topic Topic.reset_highest(@post.topic_id) end trash_public_post_actions @@ -92,6 +91,7 @@ class PostDestroyer TopicUser.update_post_action_cache(topic_id: @post.topic_id) end + feature_users_in_the_topic if @post.topic @post.publish_change_to_clients! :deleted if @post.topic end @@ -136,7 +136,7 @@ class PostDestroyer end def feature_users_in_the_topic - Jobs.enqueue(:feature_topic_users, topic_id: @post.topic_id, except_post_id: @post.id) + Jobs.enqueue(:feature_topic_users, topic_id: @post.topic_id) end def trash_public_post_actions diff --git a/lib/pretty_text.rb b/lib/pretty_text.rb index 9e0c9672a5..e298ca9e8b 100644 --- a/lib/pretty_text.rb +++ b/lib/pretty_text.rb @@ -12,11 +12,11 @@ module PrettyText def t(key, opts) key = "js." + key unless opts - return I18n.t(key) + I18n.t(key) else str = I18n.t(key, Hash[opts.entries].symbolize_keys).dup - opts.each {|k,v| str.gsub!("{{#{k.to_s}}}", v.to_s) } - return str + opts.each { |k,v| str.gsub!("{{#{k.to_s}}}", v.to_s) } + str end end @@ -26,7 +26,6 @@ module PrettyText user = User.find_by(username_lower: username.downcase) return "" unless user.present? - # TODO: Add support for ES6 and call `avatar-template` directly if !user.uploaded_avatar_id && SiteSetting.default_avatars.present? split_avatars = SiteSetting.default_avatars.split("\n") @@ -147,7 +146,6 @@ module PrettyText context.eval("Discourse.SiteSettings = #{SiteSetting.client_settings_json};") context.eval("Discourse.CDN = '#{Rails.configuration.action_controller.asset_host}';") context.eval("Discourse.BaseUrl = 'http://#{RailsMultisite::ConnectionManagement.current_hostname}';") - context.eval("Discourse.getURL = function(url) { return '#{Discourse::base_uri}' + url };") context.eval("Discourse.getURLWithCDN = function(url) { url = Discourse.getURL(url); if (Discourse.CDN) { url = Discourse.CDN + url; } return url; };") end @@ -166,7 +164,6 @@ module PrettyText context_opts = opts || {} context_opts[:sanitize] ||= true context['opts'] = context_opts - context['raw'] = text if Post.white_listed_image_classes.present? diff --git a/lib/tasks/posts.rake b/lib/tasks/posts.rake index 082c9d23db..5f661e5500 100644 --- a/lib/tasks/posts.rake +++ b/lib/tasks/posts.rake @@ -17,6 +17,9 @@ end def rebake_posts(opts = {}) puts "Rebaking post markdown for '#{RailsMultisite::ConnectionManagement.current_db}'" + disable_edit_notifications = SiteSetting.disable_edit_notifications + SiteSetting.disable_edit_notifications = true + total = Post.count rebaked = 0 @@ -25,6 +28,8 @@ def rebake_posts(opts = {}) print_status(rebaked += 1, total) end + SiteSetting.disable_edit_notifications = disable_edit_notifications + puts "", "#{rebaked} posts done!", "-" * 50 end diff --git a/lib/text_cleaner.rb b/lib/text_cleaner.rb index da12624bc9..6d621ec9fb 100644 --- a/lib/text_cleaner.rb +++ b/lib/text_cleaner.rb @@ -44,7 +44,7 @@ class TextCleaner text end - @@whitespaces_regexp = Regexp.new("(\u00A0|\u1680|\u180E|[\u2000-\u200B]|\u2028|\u2029|\u202F|\u205F|\u3000|\uFEFF)", "u").freeze + @@whitespaces_regexp = Regexp.new("(\u00A0|\u1680|\u180E|[\u2000-\u200A]|\u2028|\u2029|\u202F|\u205F|\u3000)", "u").freeze def self.normalize_whitespaces(text) text.gsub(@@whitespaces_regexp, ' ') diff --git a/lib/text_sentinel.rb b/lib/text_sentinel.rb index e59bc32763..f5b2cf1fd6 100644 --- a/lib/text_sentinel.rb +++ b/lib/text_sentinel.rb @@ -30,7 +30,7 @@ class TextSentinel else (SiteSetting.min_topic_title_length.to_f * ENTROPY_SCALE).to_i end - TextSentinel.new(text, min_entropy: entropy, max_word_length: SiteSetting.max_word_length) + TextSentinel.new(text, min_entropy: entropy, max_word_length: SiteSetting.title_max_word_length) end # Entropy is a number of how many unique characters the string needs. diff --git a/lib/topic_query.rb b/lib/topic_query.rb index c19e01b961..4d0ba83c16 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -70,6 +70,10 @@ class TopicQuery create_list(:latest, {}, latest_results) end + def list_search + create_list(:latest, {}, latest_results) + end + def list_read create_list(:read, unordered: true) do |topics| topics.order('COALESCE(tu.last_visited_at, topics.bumped_at) DESC') @@ -189,7 +193,7 @@ class TopicQuery end topics = topics.to_a.each do |t| - t.allowed_user_ids = filter == :private_messags ? t.allowed_users.map{|u| u.id} : [] + t.allowed_user_ids = filter == :private_messages ? t.allowed_users.map{|u| u.id} : [] end list = TopicList.new(filter, @user, topics.to_a, options.merge(@options)) diff --git a/lib/user_name_suggester.rb b/lib/user_name_suggester.rb index 3da14fdb8e..09e4db698b 100644 --- a/lib/user_name_suggester.rb +++ b/lib/user_name_suggester.rb @@ -1,9 +1,9 @@ module UserNameSuggester - def self.suggest(name) + def self.suggest(name, allow_username = nil) return unless name.present? name = parse_name_from_email(name) - find_available_username_based_on(name) + find_available_username_based_on(name, allow_username) end def self.parse_name_from_email(name) @@ -16,11 +16,11 @@ module UserNameSuggester name end - def self.find_available_username_based_on(name) + def self.find_available_username_based_on(name, allow_username = nil) name = fix_username(name) i = 1 attempt = name - until User.username_available?(attempt) + until attempt == allow_username || User.username_available?(attempt) suffix = i.to_s max_length = User.username_length.end - suffix.length - 1 attempt = "#{name[0..max_length]}#{suffix}" diff --git a/lib/validators/user_full_name_validator.rb b/lib/validators/user_full_name_validator.rb new file mode 100644 index 0000000000..ec994c5c37 --- /dev/null +++ b/lib/validators/user_full_name_validator.rb @@ -0,0 +1,8 @@ +class UserFullNameValidator < ActiveModel::EachValidator + + def validate_each(record, attribute, value) + if SiteSetting.full_name_required && !record.name.present? + record.errors.add(attribute, :blank) + end + end +end diff --git a/lib/version.rb b/lib/version.rb index f85bc57a0c..ade36a11ff 100644 --- a/lib/version.rb +++ b/lib/version.rb @@ -5,7 +5,7 @@ module Discourse MAJOR = 1 MINOR = 3 TINY = 0 - PRE = 'beta4' + PRE = 'beta5' STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.') end diff --git a/plugins/poll/config/locales/client.fa_IR.yml b/plugins/poll/config/locales/client.fa_IR.yml new file mode 100644 index 0000000000..73b8c0869a --- /dev/null +++ b/plugins/poll/config/locales/client.fa_IR.yml @@ -0,0 +1,17 @@ +# encoding: utf-8 +# +# Never edit this file. It will be overwritten when translations are pulled from Transifex. +# +# To work with us on translations, join this project: +# https://www.transifex.com/projects/p/discourse-org/ + +fa_IR: + js: + poll: + voteCount: + other: "%{count} آرا" + results: + show: نمایش نتایج + hide: پنهان کرد نتایج + close_poll: "بستن نظرسنجی" + open_poll: "باز کردن نظرسنجی" diff --git a/plugins/poll/config/locales/server.fa_IR.yml b/plugins/poll/config/locales/server.fa_IR.yml new file mode 100644 index 0000000000..bfcb72fcb4 --- /dev/null +++ b/plugins/poll/config/locales/server.fa_IR.yml @@ -0,0 +1,18 @@ +# encoding: utf-8 +# +# Never edit this file. It will be overwritten when translations are pulled from Transifex. +# +# To work with us on translations, join this project: +# https://www.transifex.com/projects/p/discourse-org/ + +fa_IR: + activerecord: + attributes: + post: + poll_options: "گزینه‌های نظرسنجی" + poll: + must_contain_poll_options: "باید فهرستی شامل گزینه‌های نظرسنجی باشد" + cannot_have_modified_options: "پس از گذشت ۵ دقیقه دیگر نمی‌توان ویرایش کرد. اگر تغییری در آن‌ها نیاز است با یکی از ناظمان تماس بگیرید." + cannot_add_or_remove_options: "تنها می‌تواند ویرایش شود، نه افزودنی و نه پاک کردنی. اگر به گزینه‌های اضافه و پاک کردن نیاز دارید، باید این جستار را قفل کنید و یکی دیگر بسازید." + prefix: "نظرسنجی" + closed_prefix: "اتمام نظرسنجی" diff --git a/public/403.fa_IR.html b/public/403.fa_IR.html new file mode 100644 index 0000000000..2faad4a8be --- /dev/null +++ b/public/403.fa_IR.html @@ -0,0 +1,26 @@ + + +نمی‌توانید این کار را بکنید (403) + + + + +
    +

    403

    +

    شما نمی‌توانید این منابع را ببینید!

    + +

    این با یک صفحه 403 Discourse شخصی‌سازی شده جایگزین خواهد شد.

    +
    + + diff --git a/public/422.fa_IR.html b/public/422.fa_IR.html new file mode 100644 index 0000000000..2aa2352011 --- /dev/null +++ b/public/422.fa_IR.html @@ -0,0 +1,25 @@ + + +تغییری که خواستید، رد شد (422) + + + + + +
    +

    تغییری که خواستید، رد شد.

    +

    شاید شما تلاش کردید چیزی را تغییر دهید که مجوز دسترسی به آن را نداشتید.

    +
    + + diff --git a/public/500.fa_IR.html b/public/500.fa_IR.html new file mode 100644 index 0000000000..1ee8a48c80 --- /dev/null +++ b/public/500.fa_IR.html @@ -0,0 +1,12 @@ + + +اووپس - خطای 500 + + + +

    اووپس

    +

    نرم‌افزاری که ا به ین انجمن گفتگو را قدرت می‌دهد، با مشکلی غیرمنتظره روبرو شده است. از اینکه به زحمت افتادید پوزش میخواهیم.

    +

    اطلاعات کامل در مورد این خطا، به سیستم ارسال شد و اطلاع رسانی به صورت خودکار تولید شد. ما آن را برسی می نماییم.

    +

    هیچ اقدام دیگری لازم نیست انجام دهید، به هر حال اگر خطا مانع انجام کار های شما می شود ، شما می توانید یک نوشته ارسال کنید با جزئیات خطا در دسته بندی اصلی.

    + + diff --git a/public/503.fa_IR.html b/public/503.fa_IR.html new file mode 100644 index 0000000000..c584976cd5 --- /dev/null +++ b/public/503.fa_IR.html @@ -0,0 +1,11 @@ + + +سایت در دست تعمیر و نگهداری است - Discourse.org + + + +

    طبق برنامه‌ ریزی، هم‌اکنون سایت برای تعمیر و نگهداری در دسترس نیست.

    +

    لطفاً دوباره برسی کنید چند دقیقهٔ دیگر.

    +

    پوزش برای این آزردگی!

    + + diff --git a/script/import_scripts/base.rb b/script/import_scripts/base.rb index 2e8c8d3336..201117721a 100644 --- a/script/import_scripts/base.rb +++ b/script/import_scripts/base.rb @@ -644,6 +644,12 @@ class ImportScripts::Base print "\r%9d / %d (%5.1f%%) " % [current, max, ((current.to_f / max.to_f) * 100).round(1)] end + def print_spinner + @spinner_chars ||= %w{ | / - \\ } + @spinner_chars.push @spinner_chars.shift + print "\b#{@spinner_chars[0]}" + end + def batches(batch_size) offset = 0 loop do diff --git a/script/import_scripts/drupal.rb b/script/import_scripts/drupal.rb index 3660761350..82266d77ca 100644 --- a/script/import_scripts/drupal.rb +++ b/script/import_scripts/drupal.rb @@ -3,7 +3,8 @@ require File.expand_path(File.dirname(__FILE__) + "/base.rb") class ImportScripts::Drupal < ImportScripts::Base - DRUPAL_DB = "newsite3" + DRUPAL_DB = ENV['DRUPAL_DB'] || "newsite3" + VID = ENV['DRUPAL_VID'] || 1 def initialize super @@ -17,7 +18,7 @@ class ImportScripts::Drupal < ImportScripts::Base end def categories_query - @client.query("SELECT tid, name, description FROM taxonomy_term_data WHERE vid = 1") + @client.query("SELECT tid, name, description FROM taxonomy_term_data WHERE vid = #{VID}") end def execute @@ -37,7 +38,10 @@ class ImportScripts::Drupal < ImportScripts::Base # "Nodes" in Drupal are divided into types. Here we import two types, # and will later import all the comments/replies for each node. # You will need to figure out what the type names are on your install and edit the queries to match. - create_blog_topics + if ENV['DRUPAL_IMPORT_BLOG'] + create_blog_topics + end + create_forum_topics create_replies diff --git a/script/import_scripts/smf2.rb b/script/import_scripts/smf2.rb index 076824a56e..c2b0ea08ce 100644 --- a/script/import_scripts/smf2.rb +++ b/script/import_scripts/smf2.rb @@ -100,20 +100,25 @@ class ImportScripts::Smf2 < ImportScripts::Base LEFT JOIN {prefix}attachments AS b ON a.id_member = b.id_member SQL group_ids = [ member[:id_group], *member[:additional_groups].split(',').map(&:to_i) ] + create_time = Time.zone.at(member[:date_registered]) rescue Time.now + last_seen_time = Time.zone.at(member[:last_login]) rescue nil + ip_addr = IPAddr.new(member[:member_ip]) rescue nil { id: member[:id_member], username: member[:member_name], - created_at: Time.zone.at(member[:date_registered]), + created_at: create_time, name: member[:real_name], email: member[:email_address], active: member[:is_activated] == 1, approved: member[:is_activated] == 1, - last_seen_at: Time.zone.at(member[:last_login]), + last_seen_at: last_seen_time, date_of_birth: member[:birthdate], - ip_address: IPAddr.new(member[:member_ip]), + ip_address: ip_addr, admin: group_ids.include?(ADMIN_GROUP), moderator: group_ids.include?(MODERATORS_GROUP), + post_create_action: proc do |user| + user.update(created_at: create_time) if create_time < user.created_at GroupUser.transaction do group_ids.each do |gid| group_id = group_id_from_imported_group_id(gid) and diff --git a/spec/components/email/receiver_spec.rb b/spec/components/email/receiver_spec.rb index dedb2a8635..ec0d69e0ba 100644 --- a/spec/components/email/receiver_spec.rb +++ b/spec/components/email/receiver_spec.rb @@ -562,6 +562,25 @@ greatest show ever created. Everyone should watch it. expect(e.message).to include("too short") end + + it "blocks user in restricted group from creating topic" do + to = "some@email.com" + + restricted_user = Fabricate(:user, trust_level: 4) + restricted_group = Fabricate(:group) + restricted_group.add(restricted_user) + restricted_group.save + + category = Fabricate(:category, email_in_allow_strangers: false, email_in: to) + category.set_permissions(restricted_group => :readonly) + category.save + + expect{ + process_email(from: restricted_user.email, to: to) + }.to raise_error(Discourse::InvalidAccess) + end + + end diff --git a/spec/components/letter_avatar_spec.rb b/spec/components/letter_avatar_spec.rb new file mode 100644 index 0000000000..9f5574b998 --- /dev/null +++ b/spec/components/letter_avatar_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' +require 'letter_avatar' + +describe LetterAvatar do + it "can cleanup correctly" do + path = LetterAvatar.cache_path + + FileUtils.mkdir_p(path + "junk") + LetterAvatar.generate("test", 100) + + LetterAvatar.cleanup_old + + Dir.entries(File.dirname(path)).length.should == 3 + end +end diff --git a/spec/components/post_destroyer_spec.rb b/spec/components/post_destroyer_spec.rb index aca69e2e2a..53e8015cb4 100644 --- a/spec/components/post_destroyer_spec.rb +++ b/spec/components/post_destroyer_spec.rb @@ -291,7 +291,7 @@ describe PostDestroyer do let!(:post) { Fabricate(:post, raw: "Hello @CodingHorror") } it "should feature the users again (in case they've changed)" do - Jobs.expects(:enqueue).with(:feature_topic_users, has_entries(topic_id: post.topic_id, except_post_id: post.id)) + Jobs.expects(:enqueue).with(:feature_topic_users, has_entries(topic_id: post.topic_id)) PostDestroyer.new(moderator, post).destroy end diff --git a/spec/components/text_cleaner_spec.rb b/spec/components/text_cleaner_spec.rb index edcdccca6b..278177a292 100644 --- a/spec/components/text_cleaner_spec.rb +++ b/spec/components/text_cleaner_spec.rb @@ -193,10 +193,17 @@ describe TextCleaner do describe "#normalize_whitespaces" do it "normalize whitespaces" do - whitespaces = "\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u2028\u2029\u202F\u205F\u3000\uFEFF" + whitespaces = "\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000" expect(whitespaces.strip).not_to eq("") expect(TextCleaner.normalize_whitespaces(whitespaces).strip).to eq("") end + + it "does not muck with zero width white space" do + # this is used for khmer, dont mess with it + expect(TextCleaner.normalize_whitespaces("hello\u200Bworld").strip).to eq("hello\u200Bworld") + expect(TextCleaner.normalize_whitespaces("hello\uFEFFworld").strip).to eq("hello\uFEFFworld") + + end end end diff --git a/spec/components/validators/user_full_name_validator_spec.rb b/spec/components/validators/user_full_name_validator_spec.rb new file mode 100644 index 0000000000..1b06d00ed8 --- /dev/null +++ b/spec/components/validators/user_full_name_validator_spec.rb @@ -0,0 +1,45 @@ +require "spec_helper" + +describe UserFullNameValidator do + let(:validator) { described_class.new({attributes: :name}) } + subject(:validate) { validator.validate_each(record,:name,@name) } + let(:record) { Fabricate.build(:user, name: @name) } + + context "name not required" do + before { SiteSetting.stubs(:full_name_required).returns(false) } + + it "allows no name" do + @name = nil + validate + expect(record.errors[:name]).not_to be_present + end + + it "allows name being set" do + @name = "Bigfoot" + validate + expect(record.errors[:name]).not_to be_present + end + end + + context "name required" do + before { SiteSetting.stubs(:full_name_required).returns(true) } + + it "adds error for nil name" do + @name = nil + validate + expect(record.errors[:name]).to be_present + end + + it "adds error for empty string name" do + @name = "" + validate + expect(record.errors[:name]).to be_present + end + + it "allows name being set" do + @name = "Bigfoot" + validate + expect(record.errors[:name]).not_to be_present + end + end +end diff --git a/spec/controllers/admin/groups_controller_spec.rb b/spec/controllers/admin/groups_controller_spec.rb index 2e362fd23a..b8c543f4cc 100644 --- a/spec/controllers/admin/groups_controller_spec.rb +++ b/spec/controllers/admin/groups_controller_spec.rb @@ -27,7 +27,9 @@ describe Admin::GroupsController do "alias_level"=>0, "visible"=>true, "automatic_membership_email_domains"=>nil, - "automatic_membership_retroactive"=>false + "automatic_membership_retroactive"=>false, + "title"=>nil, + "primary_group"=>false }]) end @@ -61,13 +63,15 @@ describe Admin::GroupsController do it "doesn't launch the 'automatic group membership' job when it's not retroactive" do Jobs.expects(:enqueue).never - xhr :put, :update, id: 1, automatic_membership_retroactive: "false" + group = Fabricate(:group) + xhr :put, :update, id: group.id, automatic_membership_retroactive: "false" expect(response).to be_success end it "launches the 'automatic group membership' job when it's retroactive" do - Jobs.expects(:enqueue).with(:automatic_group_membership, group_id: 1) - xhr :put, :update, id: 1, automatic_membership_retroactive: "true" + group = Fabricate(:group) + Jobs.expects(:enqueue).with(:automatic_group_membership, group_id: group.id) + xhr :put, :update, id: group.id, automatic_membership_retroactive: "true" expect(response).to be_success end diff --git a/spec/controllers/directory_items_controller_spec.rb b/spec/controllers/directory_items_controller_spec.rb index 8f46747d8f..d8bf479104 100644 --- a/spec/controllers/directory_items_controller_spec.rb +++ b/spec/controllers/directory_items_controller_spec.rb @@ -11,6 +11,22 @@ describe DirectoryItemsController do response.should_not be_success end + + context "without data" do + + context "and a logged in user" do + let!(:user) { log_in } + + it "succeeds" do + xhr :get, :index, period: 'all' + response.should be_success + json = ::JSON.parse(response.body) + end + end + + end + + context "with data" do before do Fabricate(:user) @@ -27,5 +43,12 @@ describe DirectoryItemsController do json['total_rows_directory_items'].should be_present json['load_more_directory_items'].should be_present end + + it "fails when the directory is disabled" do + SiteSetting.enable_user_directory = false + + xhr :get, :index, period: 'all' + response.should_not be_success + end end end diff --git a/spec/controllers/list_controller_spec.rb b/spec/controllers/list_controller_spec.rb index 05ec93c3a8..6f55de5b60 100644 --- a/spec/controllers/list_controller_spec.rb +++ b/spec/controllers/list_controller_spec.rb @@ -11,6 +11,18 @@ describe ListController do SiteSetting.stubs(:top_menu).returns('latest,-video|new|unread|categories|category/beer') end + describe 'titles for crawler layout' do + it 'has no title for the default URL' do + xhr :get, Discourse.anonymous_filters[0], _escaped_fragment_: 'true' + expect(assigns(:title)).to be_blank + end + + it 'has a title for non-default URLs' do + xhr :get, Discourse.anonymous_filters[1], _escaped_fragment_: 'true' + expect(assigns(:title)).to be_present + end + end + describe 'indexes' do (Discourse.anonymous_filters - [:categories]).each do |filter| diff --git a/spec/controllers/posts_controller_spec.rb b/spec/controllers/posts_controller_spec.rb index 14210d0a64..3faf22d2ae 100644 --- a/spec/controllers/posts_controller_spec.rb +++ b/spec/controllers/posts_controller_spec.rb @@ -774,6 +774,43 @@ describe PostsController do expect(response).to be_success end + it "doesn't return secured categories for moderators if they don't have access" do + user = Fabricate(:user) + admin = Fabricate(:admin) + moderator = Fabricate(:moderator) + + group = Fabricate(:group) + group.add(user) + group.appoint_manager(user) + + secured_category = Fabricate(:private_category, group: group) + secured_post = create_post(user: user, category: secured_category) + PostDestroyer.new(admin, secured_post).destroy + + log_in(:moderator) + xhr :get, :deleted_posts, username: user.username + expect(response).to be_success + + data = JSON.parse(response.body) + expect(data.length).to eq(0) + end + + it "doesn't return PMs for moderators" do + user = Fabricate(:user) + admin = Fabricate(:admin) + moderator = Fabricate(:moderator) + + pm_post = create_post(user: user, archetype: 'private_message', target_usernames: [admin.username]) + PostDestroyer.new(admin, pm_post).destroy + + log_in(:moderator) + xhr :get, :deleted_posts, username: user.username + expect(response).to be_success + + data = JSON.parse(response.body) + expect(data.length).to eq(0) + end + it "only shows posts deleted by other users" do user = Fabricate(:user) admin = Fabricate(:admin) diff --git a/spec/controllers/session_controller_spec.rb b/spec/controllers/session_controller_spec.rb index b14e5506da..309152e9da 100644 --- a/spec/controllers/session_controller_spec.rb +++ b/spec/controllers/session_controller_spec.rb @@ -89,7 +89,7 @@ describe SessionController do it 'respects IP restrictions on login' do sso = sso_for_ip_specs - user = DiscourseSingleSignOn.parse(sso.payload).lookup_or_create_user(request.remote_ip) + _user = DiscourseSingleSignOn.parse(sso.payload).lookup_or_create_user(request.remote_ip) sso = sso_for_ip_specs screened_ip = Fabricate(:screened_ip_address) @@ -288,7 +288,7 @@ describe SessionController do logged_on_user = Discourse.current_user_provider.new(request.env).current_user expect(logged_on_user.username).to eq(@suggested_username) expect(logged_on_user.email).to eq("#{@reversed_username}@garbage.org") - expect(logged_on_user.name).to eq(@suggested_name) + expect(logged_on_user.name).to eq(@sso.name) end it 'does not change matching attributes for an existing account' do @@ -304,18 +304,6 @@ describe SessionController do expect(logged_on_user.email).to eq(@user.email) end - it 'does not change attributes for unchanged external attributes' do - @user.single_sign_on_record.external_username = @sso.username - @user.single_sign_on_record.external_email = @sso.email - @user.single_sign_on_record.external_name = @sso.name - @user.single_sign_on_record.save - - get :sso_login, Rack::Utils.parse_query(@sso.payload) - logged_on_user = Discourse.current_user_provider.new(request.env).current_user - expect(logged_on_user.username).to eq(@user.username) - expect(logged_on_user.email).to eq(@user.email) - expect(logged_on_user.name).to eq(@user.name) - end end end diff --git a/spec/controllers/users_controller_spec.rb b/spec/controllers/users_controller_spec.rb index cbd2d81659..159e007c71 100644 --- a/spec/controllers/users_controller_spec.rb +++ b/spec/controllers/users_controller_spec.rb @@ -309,6 +309,25 @@ describe UsersController do end end + describe '#toggle_anon' do + it 'allows you to toggle anon if enabled' do + SiteSetting.allow_anonymous_posting = true + + user = log_in + user.trust_level = 1 + user.save + + post :toggle_anon + expect(response).to be_success + expect(session[:current_user_id]).to eq(AnonymousShadowCreator.get(user).id) + + post :toggle_anon + expect(response).to be_success + expect(session[:current_user_id]).to eq(user.id) + + end + end + describe '#create' do before do diff --git a/spec/fabricators/category_fabricator.rb b/spec/fabricators/category_fabricator.rb index 5a23366276..a37f5b4c8b 100644 --- a/spec/fabricators/category_fabricator.rb +++ b/spec/fabricators/category_fabricator.rb @@ -22,6 +22,6 @@ Fabricator(:private_category, from: :category) do user after_build do |cat, transients| cat.update!(read_restricted: true) - cat.category_groups.build(group_id: transients[:group].id, permission_type: :full) + cat.category_groups.build(group_id: transients[:group].id, permission_type: CategoryGroup.permission_types[:full]) end end diff --git a/spec/jobs/create_backup_spec.rb b/spec/jobs/create_daily_backup_spec.rb similarity index 69% rename from spec/jobs/create_backup_spec.rb rename to spec/jobs/create_daily_backup_spec.rb index 5d6649da43..0430f367d0 100644 --- a/spec/jobs/create_backup_spec.rb +++ b/spec/jobs/create_daily_backup_spec.rb @@ -1,18 +1,18 @@ require 'spec_helper' -require_dependency 'jobs/scheduled/create_backup' +require_dependency 'jobs/regular/create_daily_backup' -describe Jobs::CreateBackup do +describe Jobs::CreateDailyBackup do it "does nothing when daily backups are disabled" do SiteSetting.stubs(:backup_daily?).returns(false) BackupRestore.expects(:backup!).never - Jobs::CreateBackup.new.execute({}) + Jobs::CreateDailyBackup.new.execute({}) end it "calls `backup!` when the daily backups are enabled" do SiteSetting.stubs(:backup_daily?).returns(true) BackupRestore.expects(:backup!).with(Discourse.system_user.id, { publish_to_message_bus: false }).once - Jobs::CreateBackup.new.execute({}) + Jobs::CreateDailyBackup.new.execute({}) end end diff --git a/spec/jobs/feature_topic_users_spec.rb b/spec/jobs/feature_topic_users_spec.rb index be0bc69843..5bd04a1f27 100644 --- a/spec/jobs/feature_topic_users_spec.rb +++ b/spec/jobs/feature_topic_users_spec.rb @@ -30,11 +30,6 @@ describe Jobs::FeatureTopicUsers do expect(topic.reload.featured_user_ids.include?(coding_horror.id)).to eq(true) end - it "will not feature the second poster if we supply their post to be ignored" do - Jobs::FeatureTopicUsers.new.execute(topic_id: topic.id, except_post_id: second_post.id) - expect(topic.reload.featured_user_ids.include?(coding_horror.id)).to eq(false) - end - it "won't feature the last poster" do Jobs::FeatureTopicUsers.new.execute(topic_id: topic.id) expect(topic.reload.featured_user_ids.include?(evil_trout.id)).to eq(false) diff --git a/spec/jobs/poll_mailbox_spec.rb b/spec/jobs/poll_mailbox_spec.rb index 6c1423a8d8..fc009bfb21 100644 --- a/spec/jobs/poll_mailbox_spec.rb +++ b/spec/jobs/poll_mailbox_spec.rb @@ -152,6 +152,23 @@ describe Jobs::PollMailbox do end end end + + describe "user in restricted group" do + + it "raises InvalidAccess error" do + restricted_group = Fabricate(:group) + restricted_group.add(user) + restricted_group.save + + category.set_permissions(restricted_group => :readonly) + category.save + + expect_exception Discourse::InvalidAccess + + poller.handle_mail(email) + expect(email).to be_deleted + end + end end describe "a valid reply" do diff --git a/spec/mailers/user_notifications_spec.rb b/spec/mailers/user_notifications_spec.rb index 18921cfb97..100b5cfb17 100644 --- a/spec/mailers/user_notifications_spec.rb +++ b/spec/mailers/user_notifications_spec.rb @@ -326,4 +326,11 @@ describe UserNotifications do end end + describe "user invited to a topic" do + include_examples "notification email building" do + let(:notification_type) { :invited_to_topic } + include_examples "no reply by email" + end + end + end diff --git a/spec/models/admin_dashboard_data_spec.rb b/spec/models/admin_dashboard_data_spec.rb index d26d088300..794910ff02 100644 --- a/spec/models/admin_dashboard_data_spec.rb +++ b/spec/models/admin_dashboard_data_spec.rb @@ -244,4 +244,20 @@ describe AdminDashboardData do end end + describe 's3_deprecation_warning' do + subject { described_class.new.s3_deprecation_warning } + + it 'returns nil when using local storage' do + SiteSetting.stubs(:enable_s3_uploads).returns(false) + ENV.stubs(:[]).with('RUBY_GC_MALLOC_LIMIT').returns(90000000) + expect(subject).to be_nil + end + + it 'returns a string when s3 storage' do + SiteSetting.stubs(:enable_s3_uploads).returns(true) + expect(subject).to_not be_nil + end + + end + end diff --git a/spec/models/directory_item_spec.rb b/spec/models/directory_item_spec.rb index f6008fddc0..a21211d68b 100644 --- a/spec/models/directory_item_spec.rb +++ b/spec/models/directory_item_spec.rb @@ -8,7 +8,7 @@ describe DirectoryItem do DirectoryItem.refresh! expect(DirectoryItem.where(period_type: DirectoryItem.period_types[:all]) .where(user_id: post.user.id) - .exists?).to be_true + .exists?).to be_truthy end end diff --git a/spec/models/discourse_single_sign_on_spec.rb b/spec/models/discourse_single_sign_on_spec.rb index 8c5017bf97..d102e291cc 100644 --- a/spec/models/discourse_single_sign_on_spec.rb +++ b/spec/models/discourse_single_sign_on_spec.rb @@ -62,6 +62,40 @@ describe DiscourseSingleSignOn do expect(user).to_not be_nil end + it "can override name / email / username" do + admin = Fabricate(:admin) + + SiteSetting.sso_overrides_name = true + SiteSetting.sso_overrides_email = true + SiteSetting.sso_overrides_username = true + + sso = DiscourseSingleSignOn.new + sso.username = "bob%the$admin" + sso.name = "Bob Admin" + sso.email = admin.email + sso.external_id = "A" + + sso.lookup_or_create_user(ip_address) + + admin.reload + + expect(admin.name).to eq "Bob Admin" + expect(admin.username).to eq "bob_the_admin" + expect(admin.email).to eq admin.email + + sso.email = "TEST@bob.com" + + sso.name = "Louis C.K." + + sso.lookup_or_create_user(ip_address) + + admin.reload + + expect(admin.email).to eq("test@bob.com") + expect(admin.username).to eq "bob_the_admin" + expect(admin.name).to eq "Louis C.K." + end + it "can fill in data on way back" do sso = make_sso diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index f5fc34e942..6941e90cf9 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -47,7 +47,73 @@ describe Group do Group[:staff].user_ids - [-1] end - it "Correctly handles primary group" do + it "Correctly handles primary groups" do + group = Fabricate(:group, primary_group: true) + user = Fabricate(:user) + + group.add(user) + + user.reload + expect(user.primary_group_id).to eq group.id + + group.remove(user) + + user.reload + expect(user.primary_group_id).to eq nil + + group.add(user) + group.primary_group = false + group.save + + user.reload + expect(user.primary_group_id).to eq nil + + end + + it "Correctly handles title" do + + group = Fabricate(:group, title: 'Super Awesome') + user = Fabricate(:user) + + expect(user.title).to eq nil + + group.add(user) + user.reload + + expect(user.title).to eq 'Super Awesome' + + group.title = 'BOOM' + group.save + + user.reload + expect(user.title).to eq 'BOOM' + + group.title = nil + group.save + + user.reload + expect(user.title).to eq nil + + group.title = "BOB" + group.save + + user.reload + expect(user.title).to eq "BOB" + + group.remove(user) + + user.reload + expect(user.title).to eq nil + + group.add(user) + group.destroy + + user.reload + expect(user.title).to eq nil + + end + + it "Correctly handles removal of primary group" do group = Fabricate(:group) user = Fabricate(:user) group.add(user) diff --git a/spec/models/invite_spec.rb b/spec/models/invite_spec.rb index 9430203306..8c538b7094 100644 --- a/spec/models/invite_spec.rb +++ b/spec/models/invite_spec.rb @@ -188,6 +188,25 @@ describe Invite do expect(invite.redeem).to be_blank end + context "deletes duplicate invites" do + let(:another_user) { Fabricate(:user) } + + it 'delete duplicate invite' do + another_invite = Fabricate(:invite, email: invite.email, invited_by: another_user) + invite.redeem + duplicate_invite = Invite.find_by(id: another_invite.id) + expect(duplicate_invite).to be_nil + end + + it 'does not delete already redeemed invite' do + redeemed_invite = Fabricate(:invite, email: invite.email, invited_by: another_user, redeemed_at: 1.day.ago) + invite.redeem + used_invite = Invite.find_by(id: redeemed_invite.id) + expect(used_invite).not_to be_nil + end + + end + context 'enqueues a job to email "set password" instructions' do it 'does not enqueue an email if sso is enabled' do @@ -329,17 +348,14 @@ describe Invite do it 'adds the user to the topic_users of the first topic' do expect(topic.allowed_users.include?(user)).to eq(true) expect(another_topic.allowed_users.include?(user)).to eq(true) - another_invite.reload - expect(another_invite).not_to be_redeemed + duplicate_invite = Invite.find_by(id: another_invite.id) + expect(duplicate_invite).to be_nil end context 'if they redeem the other invite afterwards' do - it 'returns the same user' do - result = another_invite.redeem - expect(result).to eq(user) - another_invite.reload - expect(another_invite).to be_redeemed + it 'wont redeem a duplicate invite' do + expect(another_invite.redeem).to be_blank end end diff --git a/spec/models/post_action_spec.rb b/spec/models/post_action_spec.rb index 3dc1d3b107..bb364def59 100644 --- a/spec/models/post_action_spec.rb +++ b/spec/models/post_action_spec.rb @@ -198,6 +198,28 @@ describe PostAction do end describe 'when a user likes something' do + + it 'should generate notifications correctly' do + ActiveRecord::Base.observers.enable :all + PostAction.act(codinghorror, post, PostActionType.types[:like]) + Notification.count.should == 1 + + mutee = Fabricate(:user) + + post = Fabricate(:post) + MutedUser.create!(user_id: post.user.id, muted_user_id: mutee.id) + PostAction.act(mutee, post, PostActionType.types[:like]) + + Notification.count.should == 1 + + # you can not mute admin, sorry + MutedUser.create!(user_id: post.user.id, muted_user_id: admin.id) + PostAction.act(admin, post, PostActionType.types[:like]) + + Notification.count.should == 2 + + end + it 'should increase the `like_count` and `like_score` when a user likes something' do PostAction.act(codinghorror, post, PostActionType.types[:like]) post.reload @@ -265,7 +287,7 @@ describe PostAction do # A post with no flags has 0 for flag counts expect(PostAction.flag_counts_for(post.id)).to eq([0, 0]) - flag = PostAction.act(eviltrout, post, PostActionType.types[:spam]) + _flag = PostAction.act(eviltrout, post, PostActionType.types[:spam]) expect(PostAction.flag_counts_for(post.id)).to eq([0, 1]) # If staff takes action, it is ranked higher @@ -367,7 +389,7 @@ describe PostAction do it "can flag the topic instead of a post" do post1 = create_post - post2 = create_post(topic: post1.topic) + _post2 = create_post(topic: post1.topic) post_action = PostAction.act(Fabricate(:user), post1, PostActionType.types[:spam], { flag_topic: true }) expect(post_action.targets_topic).to eq(true) end @@ -485,15 +507,6 @@ describe PostAction do expect(topic.posts.count).to eq(1) end - it "should not generate a notification for auto-message" do - post = create_post - PostAction.act(moderator, post, PostActionType.types[:spam], message: "WAT") - - PostAlerter.expects(:post_created).never - - PostAction.agree_flags!(post, admin) - end - end end diff --git a/spec/models/report_spec.rb b/spec/models/report_spec.rb index 2f626f8952..6edb767429 100644 --- a/spec/models/report_spec.rb +++ b/spec/models/report_spec.rb @@ -89,6 +89,56 @@ describe Report do end end + [:http_total, :http_2xx, :http_background, :http_3xx, :http_4xx, :http_5xx, :page_view_crawler, :page_view_logged_in, :page_view_anon].each do |request_type| + describe "#{request_type} request reports" do + let(:report) { Report.find("#{request_type}_reqs", start_date: 10.days.ago.to_time, end_date: Date.today.to_time) } + + context "with no #{request_type} records" do + it 'returns an empty report' do + expect(report.data).to be_blank + end + end + + context "with #{request_type}" do + before(:each) do + Timecop.freeze + ApplicationRequest.create(date: 35.days.ago.to_time, req_type: ApplicationRequest.req_types[request_type.to_s], count: 35) + ApplicationRequest.create(date: 7.days.ago.to_time, req_type: ApplicationRequest.req_types[request_type.to_s], count: 8) + ApplicationRequest.create(date: Date.today.to_time, req_type: ApplicationRequest.req_types[request_type.to_s], count: 1) + ApplicationRequest.create(date: 1.day.ago.to_time, req_type: ApplicationRequest.req_types[request_type.to_s], count: 2) + ApplicationRequest.create(date: 2.days.ago.to_time, req_type: ApplicationRequest.req_types[request_type.to_s], count: 3) + end + after(:each) { Timecop.return } + + + context 'returns a report with data' do + it "returns expected number of recoords" do + expect(report.data.count).to eq 4 + end + + it 'sorts the data from oldest to latest dates' do + expect(report.data[0][:y]).to eq(8) # 7 days ago + expect(report.data[1][:y]).to eq(3) # 2 days ago + expect(report.data[2][:y]).to eq(2) # 1 day ago + expect(report.data[3][:y]).to eq(1) # today + end + + it "returns today's data" do + expect(report.data.select { |value| value[:x] == Date.today }).to be_present + end + + it 'returns total data' do + expect(report.total).to eq 49 + end + + it 'returns previous 30 days of data' do + expect(report.prev30Days).to eq 14 + end + end + end + end + end + describe 'private messages' do let(:report) { Report.find('user_to_user_private_messages') } diff --git a/spec/models/topic_link_click_spec.rb b/spec/models/topic_link_click_spec.rb index 2fd11c063e..2330ec3d28 100644 --- a/spec/models/topic_link_click_spec.rb +++ b/spec/models/topic_link_click_spec.rb @@ -45,11 +45,16 @@ describe TopicLinkClick do context 'create_from' do context 'without a url' do - let(:click) { TopicLinkClick.create_from(url: "url that doesn't exist", post_id: @post.id, ip: '127.0.0.1') } - it "returns nil" do + it "returns nil to prevent redirect exploit" do + click = TopicLinkClick.create_from(url: "http://url-that-doesnt-exist.com", post_id: @post.id, ip: '127.0.0.1') expect(click).to eq(nil) end + + it "redirect to whitelisted hostnames" do + click = TopicLinkClick.create_from(url: "https://www.youtube.com/watch?v=jYd_5aggzd4", post_id: @post.id, ip: '127.0.0.1') + expect(click).to eq("https://www.youtube.com/watch?v=jYd_5aggzd4") + end end context 'clicking on your own link' do diff --git a/spec/models/user_email_observer_spec.rb b/spec/models/user_email_observer_spec.rb index 331d6eb636..20c632e129 100644 --- a/spec/models/user_email_observer_spec.rb +++ b/spec/models/user_email_observer_spec.rb @@ -98,4 +98,22 @@ describe UserEmailObserver do end + context 'user_invited_to_topic' do + + let(:user) { Fabricate(:user) } + let!(:notification) { Fabricate(:notification, user: user, notification_type: 13) } + + it "enqueues a job for the email" do + Jobs.expects(:enqueue_in).with(SiteSetting.email_time_window_mins.minutes, :user_email, type: :user_invited_to_topic, user_id: notification.user_id, notification_id: notification.id) + UserEmailObserver.send(:new).after_commit(notification) + end + + it "doesn't enqueue an email if the user has mention emails disabled" do + user.expects(:email_direct?).returns(false) + Jobs.expects(:enqueue_in).with(SiteSetting.email_time_window_mins.minutes, :user_email, has_entry(type: :user_invited_to_topic)).never + UserEmailObserver.send(:new).after_commit(notification) + end + + end + end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 6b63af0d68..5c58b5a714 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -722,21 +722,17 @@ describe User do end - describe "#added_a_day_ago?" do - context "when user is more than a day old" do - subject(:user) { Fabricate(:user, created_at: Date.today - 2.days) } + describe "#first_day_user?" do - it "returns false" do - expect(user).to_not be_added_a_day_ago - end + def test_user?(opts={}) + Fabricate.build(:user, {created_at: Time.now}.merge(opts)).first_day_user? end - context "is less than a day old" do - subject(:user) { Fabricate(:user) } - - it "returns true" do - expect(user).to be_added_a_day_ago - end + it "works" do + expect(test_user?).to eq(true) + expect(test_user?(moderator: true)).to eq(false) + expect(test_user?(trust_level: TrustLevel[2])).to eq(false) + expect(test_user?(created_at: 2.days.ago)).to eq(false) end end @@ -1180,4 +1176,25 @@ describe User do end + describe "new_user?" do + it "correctly detects new user" do + user = User.new(created_at: Time.now, trust_level: TrustLevel[0]) + + expect(user.new_user?).to eq(true) + + user.trust_level = TrustLevel[1] + + expect(user.new_user?).to eq(true) + + user.trust_level = TrustLevel[2] + + expect(user.new_user?).to eq(false) + + user.trust_level = TrustLevel[0] + user.moderator = true + + expect(user.new_user?).to eq(false) + end + end + end diff --git a/spec/services/anonymous_shadow_creator_spec.rb b/spec/services/anonymous_shadow_creator_spec.rb new file mode 100644 index 0000000000..1c6b58c1d3 --- /dev/null +++ b/spec/services/anonymous_shadow_creator_spec.rb @@ -0,0 +1,57 @@ +require 'spec_helper' + +describe AnonymousShadowCreator do + + it "returns no shadow by default" do + AnonymousShadowCreator.get(Fabricate.build(:user)).should == nil + end + + it "returns no shadow if trust level is not met" do + SiteSetting.allow_anonymous_posting = true + AnonymousShadowCreator.get(Fabricate.build(:user, trust_level: 0)).should == nil + end + + it "returns a new shadow once time expires" do + SiteSetting.allow_anonymous_posting = true + SiteSetting.anonymous_account_duration_minutes = 1 + + user = Fabricate(:user, trust_level: 3) + shadow = AnonymousShadowCreator.get(user) + + freeze_time 2.minutes.from_now + shadow2 = AnonymousShadowCreator.get(user) + + shadow.id.should == shadow2.id + create_post(user: shadow) + + freeze_time 4.minutes.from_now + shadow3 = AnonymousShadowCreator.get(user) + + shadow2.id.should_not == shadow3.id + + end + + it "returns a shadow for a legit user" do + SiteSetting.allow_anonymous_posting = true + user = Fabricate(:user, trust_level: 3) + + shadow = AnonymousShadowCreator.get(user) + shadow2 = AnonymousShadowCreator.get(user) + + shadow.id.should == shadow2.id + + shadow.trust_level.should == 1 + shadow.username.should == "anonymous" + + shadow.created_at.should_not == user.created_at + + + p = create_post + Guardian.new(shadow).post_can_act?(p, :like).should == false + Guardian.new(user).post_can_act?(p, :like).should == true + + user.anonymous?.should == false + shadow.anonymous?.should == true + end + +end diff --git a/spec/services/user_updater_spec.rb b/spec/services/user_updater_spec.rb index 3ba8f25c30..e937fd1fa6 100644 --- a/spec/services/user_updater_spec.rb +++ b/spec/services/user_updater_spec.rb @@ -4,6 +4,31 @@ describe UserUpdater do let(:acting_user) { Fabricate.build(:user) } + describe '#update_muted_users' do + it 'has no cross talk' do + u1 = Fabricate(:user) + u2 = Fabricate(:user) + u3 = Fabricate(:user) + + + updater = UserUpdater.new(u1, u1) + updater.update_muted_users("#{u2.username},#{u3.username}") + + updater = UserUpdater.new(u2, u2) + updater.update_muted_users("#{u3.username},#{u1.username}") + + + updater = UserUpdater.new(u3, u3) + updater.update_muted_users("") + + + expect(MutedUser.where(user_id: u2.id).count).to eq 2 + expect(MutedUser.where(user_id: u1.id).count).to eq 2 + expect(MutedUser.where(user_id: u3.id).count).to eq 0 + + end + end + describe '#update' do it 'saves user' do user = Fabricate(:user, name: 'Billy Bob') diff --git a/test/javascripts/integration/about-test.js.es6 b/test/javascripts/acceptance/about-test.js.es6 similarity index 77% rename from test/javascripts/integration/about-test.js.es6 rename to test/javascripts/acceptance/about-test.js.es6 index 586195ac11..b45675f1aa 100644 --- a/test/javascripts/integration/about-test.js.es6 +++ b/test/javascripts/acceptance/about-test.js.es6 @@ -1,4 +1,5 @@ -integration("About"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("About"); test("viewing", () => { visit("/about"); diff --git a/test/javascripts/integration/badges-test.js.es6 b/test/javascripts/acceptance/badges-test.js.es6 similarity index 82% rename from test/javascripts/integration/badges-test.js.es6 rename to test/javascripts/acceptance/badges-test.js.es6 index 6ff2b3bf8c..31f8bec3b8 100644 --- a/test/javascripts/integration/badges-test.js.es6 +++ b/test/javascripts/acceptance/badges-test.js.es6 @@ -1,4 +1,6 @@ -integration("Badges"); +import { acceptance } from "helpers/qunit-helpers"; + +acceptance("Badges"); test("Visit Badge Pages", () => { visit("/badges"); diff --git a/test/javascripts/integration/create-account-user-fields-test.js.es6 b/test/javascripts/acceptance/create-account-user-fields-test.js.es6 similarity index 94% rename from test/javascripts/integration/create-account-user-fields-test.js.es6 rename to test/javascripts/acceptance/create-account-user-fields-test.js.es6 index a3822f62bc..0b6fec4da4 100644 --- a/test/javascripts/integration/create-account-user-fields-test.js.es6 +++ b/test/javascripts/acceptance/create-account-user-fields-test.js.es6 @@ -1,6 +1,6 @@ -import { integration } from "helpers/qunit-helpers"; +import { acceptance } from "helpers/qunit-helpers"; -integration("Create Account - User Fields", { +acceptance("Create Account - User Fields", { site: { user_fields: [{"id":34,"name":"I've read the terms of service","field_type":"confirm","required":true}, {"id":35,"name":"What is your pet's name?","field_type":"text","required":true}, diff --git a/test/javascripts/integration/groups-test.js.es6 b/test/javascripts/acceptance/groups-test.js.es6 similarity index 79% rename from test/javascripts/integration/groups-test.js.es6 rename to test/javascripts/acceptance/groups-test.js.es6 index 2f40696812..92010b24d8 100644 --- a/test/javascripts/integration/groups-test.js.es6 +++ b/test/javascripts/acceptance/groups-test.js.es6 @@ -1,4 +1,5 @@ -integration("Groups"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Groups"); test("Browsing Groups", () => { visit("/groups/discourse"); diff --git a/test/javascripts/integration/header-anonymous-test.js.es6 b/test/javascripts/acceptance/header-anonymous-test.js.es6 similarity index 72% rename from test/javascripts/integration/header-anonymous-test.js.es6 rename to test/javascripts/acceptance/header-anonymous-test.js.es6 index 97cf0b8ac8..ae6ca34d7c 100644 --- a/test/javascripts/integration/header-anonymous-test.js.es6 +++ b/test/javascripts/acceptance/header-anonymous-test.js.es6 @@ -1,4 +1,5 @@ -integration("Header (Anonymous)"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Header (Anonymous)"); test("header", () => { visit("/"); @@ -36,9 +37,10 @@ test("header", () => { }); // Perform Search - fillIn("#search-term", "hello"); - andThen(() => { - ok(exists("#search-dropdown .heading"), "when user completes a search, search box shows search results"); - equal(find("#search-dropdown .results a:first").attr("href"), "/t/hello-bar-integration-issues/17638", "there is a search result"); - }); + // TODO how do I fix the fixture to be a POST instead of a GET @eviltrout + // fillIn("#search-term", "hello"); + // andThen(() => { + // ok(exists("#search-dropdown .heading"), "when user completes a search, search box shows search results"); + // equal(find("#search-dropdown .results a:first").attr("href"), "/t/hello-bar-integration-issues/17638", "there is a search result"); + // }); }); diff --git a/test/javascripts/integration/header-test-staff.js.es6 b/test/javascripts/acceptance/header-test-staff.js.es6 similarity index 91% rename from test/javascripts/integration/header-test-staff.js.es6 rename to test/javascripts/acceptance/header-test-staff.js.es6 index bd126c0c3c..2f4db1aa2f 100644 --- a/test/javascripts/integration/header-test-staff.js.es6 +++ b/test/javascripts/acceptance/header-test-staff.js.es6 @@ -1,4 +1,6 @@ -integration("Header (Staff)", { +import { acceptance } from "helpers/qunit-helpers"; + +acceptance("Header (Staff)", { user: { username: 'test', staff: true, site_flagged_posts_count: 1 } diff --git a/test/javascripts/integration/login-required-test.js.es6 b/test/javascripts/acceptance/login-required-test.js.es6 similarity index 78% rename from test/javascripts/integration/login-required-test.js.es6 rename to test/javascripts/acceptance/login-required-test.js.es6 index c860418d0d..c3904b3911 100644 --- a/test/javascripts/integration/login-required-test.js.es6 +++ b/test/javascripts/acceptance/login-required-test.js.es6 @@ -1,4 +1,6 @@ -integration("Login Required", { +import { acceptance } from "helpers/qunit-helpers"; + +acceptance("Login Required", { settings: { login_required: true } @@ -22,7 +24,7 @@ test("redirect", () => { click('.modal-header .close'); andThen(() => { - ok(!exists('.login-modal'), "it closes the login modal"); + ok(invisible('.login-modal'), "it closes the login modal"); }); click('#search-button'); @@ -32,7 +34,7 @@ test("redirect", () => { click('.modal-header .close'); andThen(() => { - ok(!exists('.login-modal'), "it closes the login modal"); + ok(invisible('.login-modal'), "it closes the login modal"); }); click('#site-map'); diff --git a/test/javascripts/integration/modal-test.js.es6 b/test/javascripts/acceptance/modal-test.js.es6 similarity index 85% rename from test/javascripts/integration/modal-test.js.es6 rename to test/javascripts/acceptance/modal-test.js.es6 index 6eeb6da103..e3f0986f01 100644 --- a/test/javascripts/integration/modal-test.js.es6 +++ b/test/javascripts/acceptance/modal-test.js.es6 @@ -1,4 +1,5 @@ -integration("Modal"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Modal"); test("modal", () => { visit('/'); @@ -22,7 +23,7 @@ test("modal", () => { ok(find('#discourse-modal:visible').length === 1, 'modal should reappear'); }); - keyEvent('#main-outlet', 'keyup', 27); + keyEvent('#main-outlet', 'keydown', 27); andThen(() => { ok(find('#discourse-modal:visible').length === 0, 'ESC should close the modal'); }); diff --git a/test/javascripts/integration/sign-in-test.js.es6 b/test/javascripts/acceptance/sign-in-test.js.es6 similarity index 95% rename from test/javascripts/integration/sign-in-test.js.es6 rename to test/javascripts/acceptance/sign-in-test.js.es6 index 0d665b4e6c..32ee35b031 100644 --- a/test/javascripts/integration/sign-in-test.js.es6 +++ b/test/javascripts/acceptance/sign-in-test.js.es6 @@ -1,4 +1,5 @@ -integration("Signing In"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Signing In"); test("sign in", () => { visit("/"); diff --git a/test/javascripts/integration/static-test.js.es6 b/test/javascripts/acceptance/static-test.js.es6 similarity index 88% rename from test/javascripts/integration/static-test.js.es6 rename to test/javascripts/acceptance/static-test.js.es6 index 8b1b184e9c..e3ad8afa38 100644 --- a/test/javascripts/integration/static-test.js.es6 +++ b/test/javascripts/acceptance/static-test.js.es6 @@ -1,4 +1,5 @@ -integration("Static"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Static"); test("Static Pages", () => { visit("/faq"); diff --git a/test/javascripts/integration/topic-discovery-test.js.es6 b/test/javascripts/acceptance/topic-discovery-test.js.es6 similarity index 91% rename from test/javascripts/integration/topic-discovery-test.js.es6 rename to test/javascripts/acceptance/topic-discovery-test.js.es6 index 729680336c..6ee69623d8 100644 --- a/test/javascripts/integration/topic-discovery-test.js.es6 +++ b/test/javascripts/acceptance/topic-discovery-test.js.es6 @@ -1,4 +1,5 @@ -integration("Topic Discovery"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Topic Discovery"); test("Visit Discovery Pages", () => { visit("/"); diff --git a/test/javascripts/integration/topic-test.js.es6 b/test/javascripts/acceptance/topic-test.js.es6 similarity index 83% rename from test/javascripts/integration/topic-test.js.es6 rename to test/javascripts/acceptance/topic-test.js.es6 index 5757d4091a..53bf0c3391 100644 --- a/test/javascripts/integration/topic-test.js.es6 +++ b/test/javascripts/acceptance/topic-test.js.es6 @@ -1,4 +1,5 @@ -integration("View Topic"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("View Topic"); test("Enter a Topic", () => { visit("/t/internationalization-localization/280"); diff --git a/test/javascripts/integration/unknown-test.js.es6 b/test/javascripts/acceptance/unknown-test.js.es6 similarity index 70% rename from test/javascripts/integration/unknown-test.js.es6 rename to test/javascripts/acceptance/unknown-test.js.es6 index c2b96f81a2..148d8d2eef 100644 --- a/test/javascripts/integration/unknown-test.js.es6 +++ b/test/javascripts/acceptance/unknown-test.js.es6 @@ -1,4 +1,5 @@ -integration("Unknown"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("Unknown"); test("Unknown URL", () => { expect(1); diff --git a/test/javascripts/integration/user-card-test.js.es6 b/test/javascripts/acceptance/user-card-test.js.es6 similarity index 75% rename from test/javascripts/integration/user-card-test.js.es6 rename to test/javascripts/acceptance/user-card-test.js.es6 index 98a76828ae..4a4d7288bf 100644 --- a/test/javascripts/integration/user-card-test.js.es6 +++ b/test/javascripts/acceptance/user-card-test.js.es6 @@ -1,4 +1,5 @@ -integration("User Card"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("User Card"); test("card", () => { visit('/'); diff --git a/test/javascripts/integration/user-test.js.es6 b/test/javascripts/acceptance/user-test.js.es6 similarity index 92% rename from test/javascripts/integration/user-test.js.es6 rename to test/javascripts/acceptance/user-test.js.es6 index ef8cd9aa30..9d38301ff1 100644 --- a/test/javascripts/integration/user-test.js.es6 +++ b/test/javascripts/acceptance/user-test.js.es6 @@ -1,4 +1,5 @@ -integration("User"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("User"); function hasStream() { andThen(() => { diff --git a/test/javascripts/integration/users-test.js.es6 b/test/javascripts/acceptance/users-test.js.es6 similarity index 63% rename from test/javascripts/integration/users-test.js.es6 rename to test/javascripts/acceptance/users-test.js.es6 index 96f27623d1..8ae9cfb28f 100644 --- a/test/javascripts/integration/users-test.js.es6 +++ b/test/javascripts/acceptance/users-test.js.es6 @@ -1,4 +1,5 @@ -integration("User Directory"); +import { acceptance } from "helpers/qunit-helpers"; +acceptance("User Directory"); test("Visit Page", function() { visit("/users"); diff --git a/test/javascripts/helpers/qunit-helpers.js.es6 b/test/javascripts/helpers/qunit-helpers.js.es6 index 111180cc52..17b82bd171 100644 --- a/test/javascripts/helpers/qunit-helpers.js.es6 +++ b/test/javascripts/helpers/qunit-helpers.js.es6 @@ -2,8 +2,8 @@ import siteFixtures from 'fixtures/site_fixtures'; -function integration(name, options) { - module("Integration: " + name, { +function acceptance(name, options) { + module("Acceptance: " + name, { setup: function() { Ember.run(Discourse, Discourse.advanceReadiness); @@ -61,4 +61,4 @@ function fixture(selector) { return $("#qunit-fixture"); } -export { integration, controllerFor, asyncTestDiscourse, fixture }; +export { acceptance, controllerFor, asyncTestDiscourse, fixture }; diff --git a/test/javascripts/lib/click-track-test.js.es6 b/test/javascripts/lib/click-track-test.js.es6 index dff00e9368..f79b87cdaa 100644 --- a/test/javascripts/lib/click-track-test.js.es6 +++ b/test/javascripts/lib/click-track-test.js.es6 @@ -1,8 +1,10 @@ +import ClickTrack from "discourse/lib/click-track"; + var windowOpen, win, redirectTo; -module("Discourse.ClickTrack", { +module("ClickTrack", { setup: function() { // Prevent any of these tests from navigating away @@ -30,7 +32,7 @@ module("Discourse.ClickTrack", { } }); -var track = Discourse.ClickTrack.trackClick; +var track = ClickTrack.trackClick; // test var generateClickEventOn = function(selector) { diff --git a/test/javascripts/test_helper.js b/test/javascripts/test_helper.js index bf87e3d254..87c2812f06 100644 --- a/test/javascripts/test_helper.js +++ b/test/javascripts/test_helper.js @@ -127,8 +127,6 @@ var helpers = require("helpers/qunit-helpers"); window.asyncTestDiscourse = helpers.asyncTestDiscourse; window.controllerFor = helpers.controllerFor; window.fixture = helpers.fixture; -window.integration = helpers.integration; - Ember.keys(requirejs.entries).forEach(function(entry) { if ((/\-test/).test(entry)) { diff --git a/vendor/gems/discourse_imgur/lib/discourse_imgur/locale/server.fa_IR.yml b/vendor/gems/discourse_imgur/lib/discourse_imgur/locale/server.fa_IR.yml new file mode 100644 index 0000000000..e82fa1955d --- /dev/null +++ b/vendor/gems/discourse_imgur/lib/discourse_imgur/locale/server.fa_IR.yml @@ -0,0 +1,12 @@ +# encoding: utf-8 +# +# Never edit this file. It will be overwritten when translations are pulled from Transifex. +# +# To work with us on translations, join this project: +# https://www.transifex.com/projects/p/discourse-org/ + +fa_IR: + site_settings: + enable_imgur: "API Iimgur را برای بارگذاری فعال کنید. فایل ها را بصورت محلی میزبانی نکنید." + imgur_client_id: "شناسه مشتری imgur.com شما٬ برای آپلود تصویر به عملکرد مورد نیاز است " + imgur_client_secret: "سرویس مشتری imgur شما در حالت مخفی است . در حال حاضر برای اپلود کردن عکس به عملکرد نیاز نیست٬ ولی ممکن است بعدا نیاز به آن باشد"