diff --git a/Gemfile b/Gemfile index 03750100f4..539bc0d34c 100644 --- a/Gemfile +++ b/Gemfile @@ -25,8 +25,6 @@ else gem 'seed-fu', '~> 2.3.3' end -gem 'actionpack-action_caching' - # Rails 4.1.6+ will relax the mail gem version requirement to `~> 2.5, >= 2.5.4`. # However, mail gem 2.6.x currently does not work with discourse because of the # reference to `Mail::RFC2822Parser` in `lib/email.rb`. This ensure discourse diff --git a/Gemfile.lock b/Gemfile.lock index 154d660bc2..abbaf8458c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -15,8 +15,6 @@ GEM activesupport (= 4.1.10) rack (~> 1.5.2) rack-test (~> 0.6.2) - actionpack-action_caching (1.1.1) - actionpack (>= 4.0.0, < 5.0) actionview (4.1.10) activesupport (= 4.1.10) builder (~> 3.1) @@ -208,7 +206,7 @@ GEM omniauth-twitter (1.0.1) multi_json (~> 1.3) omniauth-oauth (~> 1.0) - onebox (1.5.20) + onebox (1.5.21) moneta (~> 0.7) multi_json (~> 1.7) mustache (~> 0.99) @@ -392,7 +390,6 @@ PLATFORMS ruby DEPENDENCIES - actionpack-action_caching active_model_serializers (~> 0.8.3) annotate aws-sdk diff --git a/app/assets/javascripts/admin/controllers/admin-customize-css-html.js.es6 b/app/assets/javascripts/admin/controllers/admin-customize-css-html.js.es6 index 266f06c3e8..be6834333d 100644 --- a/app/assets/javascripts/admin/controllers/admin-customize-css-html.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-customize-css-html.js.es6 @@ -1,3 +1,5 @@ +import showModal from 'discourse/lib/show-modal'; + /** This controller supports interface for creating custom CSS skins in Discourse. @@ -21,6 +23,10 @@ export default Ember.ArrayController.extend({ this.set('selectedItem', item); }, + importModal: function() { + showModal('upload-customization'); + }, + /** Select a given style diff --git a/app/assets/javascripts/admin/controllers/admin-reports.js.es6 b/app/assets/javascripts/admin/controllers/admin-reports.js.es6 index 6bb36989b7..0430e8a180 100644 --- a/app/assets/javascripts/admin/controllers/admin-reports.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-reports.js.es6 @@ -4,24 +4,26 @@ export default Ember.ObjectController.extend({ viewingBarChart: Em.computed.equal('viewMode', 'barChart'), startDate: null, endDate: null, + categoryId: null, refreshing: false, actions: { - refreshReport: function() { - var self = this; - this.set('refreshing', true); - Discourse.Report.find(this.get('type'), this.get('startDate'), this.get('endDate')).then(function(r) { - self.set('model', r); - }).finally(function() { - self.set('refreshing', false); - }); + refreshReport() { + this.set("refreshing", true); + Discourse.Report.find( + this.get("type"), + this.get("startDate"), + this.get("endDate"), + this.get("categoryId") + ).then(m => this.set("model", m) + ).finally(() => this.set("refreshing", false)); }, - viewAsTable: function() { + viewAsTable() { this.set('viewMode', 'table'); }, - viewAsBarChart: function() { + viewAsBarChart() { this.set('viewMode', 'barChart'); } } diff --git a/app/assets/javascripts/admin/models/report.js b/app/assets/javascripts/admin/models/report.js.es6 similarity index 83% rename from app/assets/javascripts/admin/models/report.js rename to app/assets/javascripts/admin/models/report.js.es6 index 6f8bfdfff3..ebb63486d2 100644 --- a/app/assets/javascripts/admin/models/report.js +++ b/app/assets/javascripts/admin/models/report.js.es6 @@ -1,9 +1,11 @@ -Discourse.Report = Discourse.Model.extend({ +import round from "discourse/lib/round"; + +const Report = Discourse.Model.extend({ reportUrl: function() { return("/admin/reports/" + this.get('type')); }.property('type'), - valueAt: function(numDaysAgo) { + valueAt(numDaysAgo) { if (this.data) { var wantedDate = moment().subtract(numDaysAgo, 'days').format('YYYY-MM-DD'); var item = this.data.find( function(d) { return d.x === wantedDate; } ); @@ -14,7 +16,7 @@ Discourse.Report = Discourse.Model.extend({ return 0; }, - sumDays: function(startDaysAgo, endDaysAgo) { + sumDays(startDaysAgo, endDaysAgo) { if (this.data) { var earliestDate = moment().subtract(endDaysAgo, 'days').startOf('day'); var latestDate = moment().subtract(startDaysAgo, 'days').startOf('day'); @@ -25,7 +27,7 @@ Discourse.Report = Discourse.Model.extend({ sum += datum.y; } }); - return sum; + return round(sum, -2); } }, @@ -100,7 +102,7 @@ Discourse.Report = Discourse.Model.extend({ } }.property('type'), - percentChangeString: function(val1, val2) { + percentChangeString(val1, val2) { var val = ((val1 - val2) / val2) * 100; if( isNaN(val) || !isFinite(val) ) { return null; @@ -111,7 +113,7 @@ Discourse.Report = Discourse.Model.extend({ } }, - changeTitle: function(val1, val2, prevPeriodString) { + changeTitle(val1, val2, prevPeriodString) { var title = ''; var percentChange = this.percentChangeString(val1, val2); if( percentChange ) { @@ -139,26 +141,29 @@ Discourse.Report = Discourse.Model.extend({ }); -Discourse.Report.reopenClass({ - find: function(type, startDate, endDate) { +Report.reopenClass({ - return Discourse.ajax("/admin/reports/" + type, {data: { - start_date: startDate, - end_date: endDate - }}).then(function (json) { + find(type, startDate, endDate, categoryId) { + return Discourse.ajax("/admin/reports/" + type, { + data: { + start_date: startDate, + end_date: endDate, + category_id: categoryId + } + }).then(json => { // Add a percent field to each tuple - var maxY = 0; - json.report.data.forEach(function (row) { + let maxY = 0; + json.report.data.forEach(row => { if (row.y > maxY) maxY = row.y; }); if (maxY > 0) { - json.report.data.forEach(function (row) { - row.percentage = Math.round((row.y / maxY) * 100); - }); + json.report.data.forEach(row => row.percentage = Math.round((row.y / maxY) * 100)); } - var model = Discourse.Report.create({type: type}); + const model = Discourse.Report.create({ type: type }); model.setProperties(json.report); return model; }); } }); + +export default Report; diff --git a/app/assets/javascripts/admin/models/site_customization.js b/app/assets/javascripts/admin/models/site_customization.js index 27b6ddbdd9..f7b6346a95 100644 --- a/app/assets/javascripts/admin/models/site_customization.js +++ b/app/assets/javascripts/admin/models/site_customization.js @@ -78,13 +78,18 @@ Discourse.SiteCustomization = Discourse.Model.extend({ siteCustomization.set('savingStatus', I18n.t('saved')); siteCustomization.set('saving',false); siteCustomization.startTrackingChanges(); + return siteCustomization; }); }, destroy: function() { if (!this.id) return; return Discourse.ajax("/admin/site_customizations/" + this.id, { type: 'DELETE' }); - } + }, + + download_url: function() { + return Discourse.getURL('/admin/site_customizations/' + this.id); + }.property('id') }); var SiteCustomizations = Ember.ArrayProxy.extend({ diff --git a/app/assets/javascripts/admin/routes/admin-dashboard.js.es6 b/app/assets/javascripts/admin/routes/admin-dashboard.js.es6 index bbe4c79845..5f2c6abd8e 100644 --- a/app/assets/javascripts/admin/routes/admin-dashboard.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-dashboard.js.es6 @@ -12,8 +12,9 @@ export default Discourse.Route.extend({ if (versionChecks) { c.set('versionCheck', Discourse.VersionCheck.create(d.version_check)); } - _.each(d.reports,function(report){ - c.set(report.type, Discourse.Report.create(report)); + + ['global_reports', 'page_view_reports', 'private_message_reports', 'http_reports', 'user_reports'].forEach(name => { + c.set(name, d[name].map(r => Discourse.Report.create(r))); }); var topReferrers = d.top_referrers; diff --git a/app/assets/javascripts/admin/templates/customize_css_html.hbs b/app/assets/javascripts/admin/templates/customize_css_html.hbs index 004318e1eb..e2cc7951a0 100644 --- a/app/assets/javascripts/admin/templates/customize_css_html.hbs +++ b/app/assets/javascripts/admin/templates/customize_css_html.hbs @@ -8,12 +8,14 @@ + {{d-button action="importModal" icon="upload" label="admin.customize.import"}} {{#if selectedItem}}
" title: "HTML that will be inserted before the tag" override_default: "Do not include standard style sheet" - enabled: "تفعيل؟" + enabled: "مفعل؟" preview: "معاينة" undo_preview: "ازالة المعاينة" rescue_preview: "الشكل الافتراضي" - explain_preview: "مشاهدة الموقع مع الثيم الجديد" - explain_undo_preview: "الرجوع الى الثيم السابق" - explain_rescue_preview: "مشاهدة الموقع مع الثيم الافتراضي" + explain_preview: "مشاهدة الموقع بهذا الشكل المخصص" + explain_undo_preview: "الرجوع الى الشكل السابق" + explain_rescue_preview: "مشاهدة الموقع بالشكل الافتراضي" save: "حفظ" new: "جديد" new_style: "ثيم جديد" + import: "استيراد" delete: "حذف" delete_confirm: "حذف هذا التخصيص؟" about: "Modify CSS stylesheets and HTML headers on the site. Add a customization to start." @@ -1603,7 +1901,7 @@ ar: name: 'ثانوي' description: 'اللون الاساسي للخلفية, والنص للايقونة' tertiary: - name: 'tertiary' + name: 'ثلاثي' description: 'الروابط، الأزرار، الإشعارات و أشياء أخرى.' quaternary: name: "رباعي" @@ -1652,10 +1950,17 @@ ar: html: "html" text: "نص" last_seen_user: "آخر مستخدم تواجد:" + skipped_reason: "تجاوز السبب" logs: filters: + title: "المنقي" user_placeholder: "اسم المستخدم" + address_placeholder: "name@example.com" + skipped_reason_placeholder: "السبب" logs: + created_at: "مكتوبة" + ip_address: "IP" + post_id: "رقم المشاركة" delete: 'حذف' edit: 'تعديل' save: 'حفظ' @@ -1664,7 +1969,10 @@ ar: do_nothing: "لا تفعل شيء" staff_actions: title: "عمليات المشرفين" - clear_filters: "إظهار الكل" + instructions: "إضغط على أسماء الإعضاء والإجراءات لتصفيه القائمة . إضغط على صورة العرض للإنتقال لصفحة العضو" + clear_filters: "إظهار كل شيء" + staff_user: "عضو إداري" + target_user: "عضو مستهدف" subject: "الموضوع" when: "متى" context: "السياق" @@ -1685,9 +1993,11 @@ ar: delete_site_customization: "حذف هذا التخصيص؟" suspend_user: "حظر المستخدم" unsuspend_user: "رفع الحظر " + revoke_badge: "حذف الشعار" check_email: "التحقق من البريد" delete_topic: "حذف الموضوع" delete_post: "حذف المشاركة" + impersonate: "إنتحال" anonymize_user: "مستخدم مجهول" screened_emails: description: "عندما تتم محاول انشاء حساب جديد, سيتم التحقق من قائمة البريد الالكتروني وسيتم حظر التسجيل لهذا البريد واتخاذ اي اجراء متبع" @@ -1695,6 +2005,7 @@ ar: actions: allow: "سماح" screened_urls: + title: "عناوين مواقع محجوبة" description: "الروابط الالكترونية الموجودة هنا تم استخدامها في مشاركات من قيل مستخدمين سبام " url: "رابط" domain: "عنوان" @@ -1713,18 +2024,28 @@ ar: create: 'اضافة مدير' last_emailed: "آخر بريد الكتروني" not_found: "نعتذر، لا يوجد اسم المستخدم هذا في نظامنا." + id_not_found: "خطاء !! , إسم المستخدم غير موجود" active: "نشط" + show_emails: "عرض الرسائل" nav: new: "جديد" active: "نشط" + pending: "قيد الانتظار" + staff: 'الإدارة' + suspended: 'موقوف' + blocked: 'محظور' titles: active: 'مستخدمين نشطين' new: 'مستخدمين جدد ' admins: 'مستخدمين مدراء' moderators: 'مراقبين' blocked: 'مستخدمين محظورين:' + check_email: + text: "إظهار" user: + suspended_by: "محظور من قبل" delete_all_posts: "حذف جميع المشاركات" + delete_all_posts_confirm: "هل أنت متأكد من أنك تريد حذف %{posts} مشاركات و %{topics} مواضيع ؟" moderator: "مراقب؟" admin: "مدير؟" blocked: "محظور؟" @@ -1732,17 +2053,31 @@ ar: edit_title: "تعديل العنوان" save_title: "حفظ العنوان" refresh_browsers: "تحديث المتصفحات اجبارياً" + log_out: "تسجيل الخروج" unblock: 'إلغاء حظر' block: 'حظر' 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: "وقت القراءة" delete: "حذف المستخدم" + delete_forbidden_because_staff: "لا يمكن حذف مدراء والمشرفين." + delete_posts_forbidden_because_staff: "لا يمكن حذف جميع المشاركات للمدراء والمشرفين. " + delete_and_block: "حذف و حظر this email and IP address" + delete_dont_block: "حذفه فقط" deleted: "تم حذف المستخدم." delete_failed: "حدث خطأ عند حذف المستخدم. يجب التاكد من انك حذفت جميع مشاركات المستخدم قبل محاولة حذف المستخدم." send_activation_email: "ارسل رسالة تفعيل" @@ -1758,7 +2093,17 @@ ar: suspended_explanation: "المستخدم الموقوف لايملك صلاحية تسجيل الدخول" block_explanation: "المستخدم الموقوف لايستطيع أن يشارك" trust_level_change_failed: "هناك مشكلة في تغيير مستوى ثقة المستخدم " + suspend_modal_title: "حظر المستخدم" + trust_level_unlocked_tip: "مستوى الثقة غير مؤمن، والنظام قد ترقية أو تخفيض المستعمل " + lock_trust_level: "قفل مستوى الثقة" + unlock_trust_level: "فتح مستوى الثقة " tl3_requirements: + table_title: "في آخر 100 يوم" + visits: "الزيارات" + days: "أيام" + topics_replied_to: "مواضيع للردود" + topics_viewed: "المواضيع شوهدت" + posts_read: "المنشورات المقروءة" posts_read_all_time: "المشاركات المقروءة (جميع الاوقات)" flagged_posts: "المشاركات المبلغ عنها " flagged_by_users: "المستخدمين الذين بلغوا" @@ -1773,23 +2118,225 @@ ar: locked_will_not_be_promoted: "مستوى الثفة هذا لن يتم الترقية له نهائيا" locked_will_not_be_demoted: "مستوى الثفة هذا لن يتم الخفض له نهائيا" sso: - external_username: "اسم المستخدم" - external_name: "الاسم" + external_id: "ID الخارجي" + external_username: "أسم المستخدم" + external_name: "الأسم" external_email: "البريد الإلكتروني" external_avatar_url: "رابط الملف الشخصي" + user_fields: + title: "حقول المستخدم" + name: "اسم الحقل" + type: "نوع الحقل " + description: "حقل الوصف" + save: "حفظ" + edit: "تعديل" + delete: "حذف" + cancel: "إلغاء" + delete_confirm: "هل انت متأكد من انك تريد حذف هذا الحقل ؟" + required: + title: "المطلوب للأشتراك ؟" + enabled: "مطلوب" site_settings: + title: 'اعدادات' + reset: 'إعادة تعيين' none: 'لا شيء' + clear_filter: "مسح" + add_url: "أضافة رابط" + add_host: "أضافة نطاق" + categories: + all_results: 'كل' + required: 'مطلوب' + users: 'مستخدمون' + email: 'البريد الإلكتروني' + files: 'ملفات' + trust: 'المستويات الموثوقة' + security: 'أمن' + spam: 'سخام' + 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: السبب + edit_badges: 'تعديل الشعارات ' + granted_badges: شارات ممنوحة. + no_user_badges: "%{name} لم يمنح أي شارة." + no_badges: لا يوجد أي شارة يمكن منحها. + multiple_grant: 'يمكن منحه عدة مرات. ' + enabled: تفعيل الشعار + icon: أيقونة + image: صورة + icon_help: "إستخدم فئة الخط او رابط الى صورة" + target_posts: إستعلام يستهدف المشاركات + auto_revoke: إلغاء الاستعلام اليومي + preview: + link_text: "معاينة الشارات الممنوحة." + bad_count_warning: + header: "تحذير !!" + emoji: + title: "الوجه التعبيري" + help: "أضف رموز تعبيرية جديدة التي سوف تكون متاحة للكل . (PROTIP: drag & drop multiple files at once)" + 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 الأعلى' + bookmarks: 'g, b الإشارات المرجعية' + navigation: + back: 'uخلف' + application: + title: 'التطبيقات' + create: 'c انشاء موضوع جديد' + notifications: 'n فتح الإشعارات' + site_map_menu: '= أفتح قائمة الموقع' + user_profile_menu: 'pأفتح قائمة المستخدم' + show_incoming_updated_topics: '. عرض المواضيع المحدثة' + search: '/ البحث' + help: 'pأفتح قائمة المستخدم' + dismiss_topics: 'x, t رفض المواضيع' + actions: + bookmark_topic: 'f تبديل علامة مرجعية الموضوع' + share_post: 's مشاركة الموضوع' + reply_post: 'r الرد على الموضوع' + like: 'l الأعجاب بالموضوع' + bookmark: 'b الإشارات المرجعية الخاصة بالموضوع' + edit: 'l تعديل الموضوع' + delete: 'd حذف الموضوع' badges: + title: شارات + allow_title: "يمكن استخدامه كعنوان" + multiple_grant: "يمكن منحه عدة مرات. " + badge_count: + zero: "%{count} شاره" + one: "%{count} شاره" + two: "%{count} شاراتين" + few: "%{count} شارات" + many: "%{count} شارات" + other: "%{count} شارات" + more_badges: + zero: "+%{count} المزيد" + one: "+%{count} المزيد" + two: "+%{count} المزيد" + few: "+%{count} المزيد" + many: "+%{count} المزيد" + other: "+%{count} المزيد" + granted: + zero: "ﻻيوجد ممنوحات." + one: "ممنوح واحد." + two: "ممنوحان." + few: "%{count} ممنوحات." + many: "%{count} ممنوحات." + 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: أساسي + member: + name: عضو + description: مُنح دعوات + regular: + name: منتظم + description: منح اعادة تصنيف, اعادة تسمية, اتباع الروابط + 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: مشاركة مبلغ عنها + promoter: + name: متعهد + description: دعوة مستخدم + campaigner: + name: ناشط + description: تم دعوة 3 أعضاء (مستوى الثقة 1) + champion: + name: بطل + description: تم دعوة 5 أعضاء (مستوى الثقة 2) first_share: name: اول مشاركة description: مشاركة تعليق @@ -1804,3 +2351,13 @@ ar: description: اطلع على توجيهات المجتمع reader: name: قارئ + description: قراءة أكثر من 100 تعليق في الموضوع + google_search: | +
+
+
+
diff --git a/config/locales/client.bs_BA.yml b/config/locales/client.bs_BA.yml
index 7b75d5a126..fa3bb099bc 100644
--- a/config/locales/client.bs_BA.yml
+++ b/config/locales/client.bs_BA.yml
@@ -8,14 +8,24 @@
bs_BA:
js:
number:
+ format:
+ separator: "."
+ delimiter: ","
human:
storage_units:
format: '%n %u'
units:
+ byte:
+ one: Bajt
+ few: Bajta
+ other: Bajta
gb: GB
kb: KB
mb: MB
tb: TB
+ short:
+ thousands: "{{number}}k"
+ millions: "{{number}}M"
dates:
time: "h:mm a"
long_no_year: "MMM D h:mm a"
@@ -29,10 +39,60 @@ bs_BA:
long_date_with_year_with_linebreak: "MMM D, 'YY Guadagnato '{{description}}' Dina nya trådar hamnar här. Som standard är trådar sedda som nya och kommer att visa en ny indikator om de skapats de senaste 2 dagarna. Du kan ändra detta i dina inställningar. Dina olästa trådar hamnar här Som standard är trådar sedda som olästa och kommer att visa antal olästa 1 om du: Eller om du explicit har satt tråden till Följd eller Sedd via notifieringspanelen längst ned i varje tråd. Du kan ändra detta i dina inställningar. Dina nya ämnen hamnar här. Som standard är ämnen sedda som nya och kommer att visa en ny indikator om de skapats de senaste 2 dagarna. Du kan ändra detta i dina inställningar. Dina olästa ämnen hamnar här Som standard är ämnen sedda som olästa och kommer att visa antal olästa 1 om du: Eller om du explicit har satt ämnet till Följd eller Sedd via notifieringspanelen längst ned i varje ämne. Du kan ändra detta i dina inställningar. {{username}} {{description}} {{username}} {{description}} {{username}} {{description}}
LT"
tiny:
half_a_minute: "< 1m"
+ less_than_x_seconds:
+ one: "< 1 sekunda"
+ few: "< %{count} sekundi"
+ other: "< %{count} sekundi"
+ x_seconds:
+ one: "1 sekunda"
+ few: "%{count} sekundi"
+ other: "%{count} sekundi"
+ less_than_x_minutes:
+ one: "<1 minuta"
+ few: "%{count} minuta"
+ other: "%{count} minuta"
date_month: "MMM D"
date_year: "MMM 'YY"
medium:
+ x_minutes:
+ one: "1 minuta"
+ few: "Par minuta"
+ other: "%{count} minuta"
+ x_hours:
+ one: "1 sahat"
+ few: "Par sahati"
+ other: "%{count} sahati"
+ x_days:
+ one: "1 dan"
+ few: "Par dana"
+ other: "%{count} dana"
date_year: "MMM D, 'YY"
+ medium_with_ago:
+ x_minutes:
+ one: "Prije 1 minutu"
+ few: "Prije par minuta"
+ other: "%{count} minuta prije"
+ x_hours:
+ one: "Prije 1 sahat "
+ few: "Prije par sahati"
+ other: "%{count} sahati prije"
+ x_days:
+ one: "prije 1 dan "
+ few: "Prije par dana "
+ other: "%{count} dana prije"
+ later:
+ x_days:
+ one: "Prije 1 dan"
+ few: "Prije par dana"
+ other: "%{count} dana prije"
+ x_months:
+ one: "Prije 1 mjesec"
+ few: "Prije par mjeseci"
+ other: "%{count} mjeseci prije"
+ x_years:
+ one: "Prije 1 godinu"
+ few: "Prije par godina"
+ other: "%{count} godine/a prije"
share:
topic: 'podjeli link ka ovoj temi'
post: 'podjeli link ka ovom postu #%{postNumber}'
@@ -55,7 +115,12 @@ bs_BA:
admin_title: "Admin"
flags_title: "Opomene"
show_more: "pokaži još"
+ show_help: "Pomoć"
links: "Linkovi"
+ links_lowercase:
+ one: "Link"
+ few: "Link"
+ other: "Linkovi"
faq: "Upoznavanje Foruma"
guidelines: "Guidelines"
privacy_policy: "Privacy Policy"
@@ -73,7 +138,13 @@ bs_BA:
daily: "dnevno"
weekly: "nedeljno"
every_two_weeks: "svake dvije nedelje"
+ every_three_days: "Svako 3 dana"
max_of_count: "maksimalno {{count}}"
+ alternation: "ili"
+ character_count:
+ one: "{{count}} karakter"
+ few: "{{count}} karaktera"
+ other: "{{count}} karaktera"
suggested_topics:
title: "Savetujemo Teme"
about:
@@ -85,16 +156,39 @@ bs_BA:
stat:
all_time: "Svih Vremena"
last_7_days: "Zadnjih 7 Dana"
+ last_30_days: "Zadnjih 30 dana"
like_count: "Broj Lajkova"
topic_count: "Broj Tema"
post_count: "Broj Postova"
user_count: "Broj Članova"
+ active_user_count: "Aktivnih korisnika"
+ contact: "Kontaktirajte nas"
+ contact_info: "U slučaju da forum ne radi, molimo kontaktirajte nas na %{contact_info}."
+ bookmarked:
+ title: "Bookmark"
+ clear_bookmarks: "Očisti bookmark"
+ help:
+ bookmark: "Klikni da bookmarkuješ prvi post u temi"
+ unbookmark: "Klikni da ukloniš sve bookmarke iz ove teme"
bookmarks:
not_logged_in: "sorry, you must be logged in to bookmark posts"
created: "you've bookmarked this post"
not_bookmarked: "you've read this post; click to bookmark it"
last_read: "this is the last post you've read; click to bookmark it"
remove: "Remove Bookmark"
+ confirm_clear: "Jeste li sigurni da želite očistiti sve bookmarke iz ove kategorije?"
+ topic_count_latest:
+ one: "{{count}} nova ili tema sa editovanim postom."
+ few: "{{count}} novih ili tema sa editovanim postovima."
+ other: "{{count}} novih ili tema sa editovanim postovima."
+ topic_count_unread:
+ one: "{{count}} nepročitana tema."
+ few: "{{count}} nepročitanih tema."
+ other: "{{count}} nepročitanih tema."
+ topic_count_new:
+ one: "{{count}} nova tema."
+ few: "{{count}} novih tema."
+ other: "{{count}} novih tema."
click_to_show: "Klikni da pokažeš."
preview: "pregledaj"
cancel: "otkaži"
@@ -109,13 +203,40 @@ bs_BA:
undo: "Undo"
revert: "Revert"
failed: "Failed"
+ switch_to_anon: "Anonimni mod"
+ switch_from_anon: "Napustite anonimni mod"
banner:
close: "Dismiss this banner."
+ edit: "Uredite ovaj baner >>"
choose_topic:
none_found: "Nema pronađenih tema."
title:
search: "Search for a Topic by name, url or id:"
placeholder: "type the topic title here"
+ queue:
+ topic: "Tema:"
+ approve: 'Odobri'
+ reject: 'Odbij'
+ delete_user: 'Izbriši korisnika'
+ title: "Potrebno odobrenje"
+ none: "Nema postova za pregled."
+ edit: "Uredi"
+ cancel: "Odustani"
+ view_pending: "Vidi postove na čekanju"
+ has_pending_posts:
+ one: "Ova tema ima 1 post koji čeka odobrenje"
+ few: "Ova tema ima {{count}} postova koji čekaju odobrenje"
+ other: "Ova tema ima {{count}} postova koji čekaju odobrenje"
+ confirm: "Sačuvaj promjene"
+ delete_prompt: "Jeste li sigurni da želite izbrisati %{username}? Ovo će izbrisati sve njihove postove i blokirati njihovu email i IP adresu."
+ approval:
+ title: "Post treba odobrenje"
+ description: "Primili smo Vaš novi post ali on treba biti odobren od strane moderatora prije nego bude javno dostupan. Molimo budite strpljivi."
+ pending_posts:
+ one: "Imate 1 post na čekanju."
+ few: "Imate {{count}} postova na čekanju."
+ other: "Imate {{count}} postova na čekanju."
+ ok: "OK"
user_action:
user_posted_topic: "{{user}} posted the topic"
you_posted_topic: "You posted the topic"
@@ -1004,7 +1125,6 @@ bs_BA:
with_topics: "%{filter} teme"
with_category: "%{filter} %{category} teme"
latest:
- title: "Najnovije"
help: "teme sa nedavnim postovima"
hot:
title: "Popularne"
@@ -1708,6 +1828,7 @@ bs_BA:
allow_title: "allow badge as title?"
multiple_grant: "awarded multiple times?"
select_badge_for_title: Izaveri bedž za svoj naslov
+ none: "
{{count}} inläggen till."
+ one: "Välj vilket ämne du vill flytta det inlägget till."
+ other: "Välj vilket ämne du vill flytta de
{{count}} inläggen till."
change_owner:
title: "Ändra ägare av inlägg"
action: "ändra ägare"
@@ -1008,7 +1080,7 @@ sv:
edit_reason: "Anledning:"
post_number: "inlägg {{number}}"
last_edited_on: "inlägg senast ändrat den"
- reply_as_new_topic: "Svara i ny tråd"
+ reply_as_new_topic: "Svara som länkat ämne"
continue_discussion: "Fortsätter diskussionen från {{postLink}}:"
follow_quote: "gå till det citerade inlägget"
show_full: "Via hela inlägget"
@@ -1195,17 +1267,18 @@ sv:
choose: 'Välj en kategori…'
edit: 'ändra'
edit_long: "Redigera"
- view: 'Visa Trådar i Kategori'
+ view: 'Visa ämnen i kategori'
general: 'Allmänt'
settings: 'Inställningar'
delete: 'Radera Kategori'
create: 'Ny Kategori'
save: 'Spara kategori'
+ slug_placeholder: '(Valfritt) streckade ord för url'
creation_error: Det uppstod ett fel när kategorin skulle skapas.
save_error: Ett fel inträffade då kategorin skulle sparas.
name: "Kategorinamn"
description: "Beskrivning"
- topic: "Kategoritråd"
+ topic: "kategoriämne"
logo: "Kategori Logotypbild"
background_image: "Kategori Bakgrundsbild"
badge_colors: "Emblemsfärg"
@@ -1217,11 +1290,11 @@ sv:
delete_error: "Ett fel inträffade vid borttagning av kategorin."
list: "Lista Kategorier"
no_description: "Lägg till en beskrivning för den här kategorin."
- change_in_category_topic: "besök kategorins tråd för att ändra beskrivning"
+ change_in_category_topic: "Redigera beskrivning"
already_used: 'Den här färgen används redan av en annan kategori'
security: "Säkerhet"
images: "Bilder"
- auto_close_label: "Stäng automatiskt tråden efter:"
+ auto_close_label: "Stäng automatiskt ämnet efter:"
auto_close_units: "timmar"
email_in: "Egenvald inkommande e-postadress:"
email_in_allow_strangers: "Acceptera e-post från anonyma användare utan konton"
@@ -1239,6 +1312,7 @@ sv:
notifications:
watching:
title: "Bevakar"
+ description: "Du kommer automatiskt bevaka alla nya ämnen i dessa kategorier. Du notifieras om alla nya inlägg och ämnen, och en räknare över antalet nya svar visas för dessa ämnen."
tracking:
title: "Följer"
description: "Du kommer automatiskt att följa alla nya ämnen i dessa kategorier. Antalet olästa inlägg kommer att synas för dessa ämnen."
@@ -1255,7 +1329,7 @@ sv:
take_action: "Åtgärda"
notify_action: '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?"
+ delete_confirm: "Du håller på att radera %{posts} inlägg och %{topics} ämnen från denna användare, 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 denna användare verkligen är en spammare?"
yes_delete_spammer: "Ja, radera spammare"
ip_address_missing: "(N/A)"
hidden_email_address: "(gömd)"
@@ -1274,10 +1348,11 @@ sv:
left: "{{n}} kvar"
flagging_topic:
title: "Tack för att du hjälper oss hålla gemenskapen civiliserad!"
- action: "Flagga tråd"
+ action: "Flagga ämne"
notify_action: "Meddelande"
topic_map:
- title: "Sammanfattning av tråd"
+ title: "Sammanfattning av ämne"
+ participants_title: "Flitiga skribenter"
links_title: "Populära länkar"
links_shown: "visa alla {{totalLinks}} länkar..."
clicks:
@@ -1292,31 +1367,39 @@ sv:
help: "Det här ämnet är stängt; det går inte längre att svara på inlägg"
unpinned:
title: "Avklistrat"
+ help: "Detta ämne är oklistrat för dig. Det visas i vanlig ordning"
pinned_globally:
title: "Klistrat Globalt"
help: "Det här ämnet är klistrat globalt; det kommer att visas högst upp i alla listor"
pinned:
title: "Klistrat"
+ help: "Detta ämne är klistrat för dig. Det visas i toppen av dess kategori"
archived:
help: "Det här ämnet är arkiverat; det är fryst och kan inte ändras"
invisible:
help: "Det här ämnet är olistat; det kommer inte visas i ämneslistorna och kan bara nås via en direktlänk"
posts: "Inlägg"
posts_lowercase: "inlägg"
- posts_long: "{{number}} inlägg i den här tråden"
+ posts_long: "det finns {{number}} inlägg i detta ämne"
+ posts_likes_MF: |
+ Detta ämne har {count, plural, one {1 svar} other {# svar}} {ratio, select,
+ low {med ett högt förhållande mellan gilla och inlägg}
+ med {med ett väldigt högt förhållande mellan gilla och inlägg}
+ high {med ett extremt högt förhållande mellan gilla och inlägg}
+ other {}}
original_post: "Originalinlägg"
views: "Visningar"
views_lowercase:
one: "visning"
other: "visningar"
replies: "Svar"
- views_long: "denna tråd har visats {{number}} gånger"
+ views_long: "detta ämne har visats {{number}} gånger"
activity: "Aktivitet"
likes: "Gillningar"
likes_lowercase:
one: "gillar"
other: "gillar"
- likes_long: "det finns {{number}} gillningar i den här tråden"
+ likes_long: "det finns {{number}} gillningar i detta ämne"
users: "Användare"
users_lowercase:
one: "användare"
@@ -1332,27 +1415,30 @@ sv:
with_topics: "%{filter} ämnen"
with_category: "%{filter} %{category} ämnen"
latest:
- title: "Senaste"
- help: "Trådar med nya inlägg"
+ title:
+ zero: "Senaste"
+ one: "Senaste (1)"
+ other: "Senaste ({{count}})"
+ help: "ämnen med nya inlägg"
hot:
title: "Hett"
- help: "ett urval av de hetaste trådarna"
+ help: "ett urval av de hetaste ämnena"
read:
title: "Lästa"
- help: "trådar du har läst, i den ordningen du senast läste dem"
+ help: "ämnen du har läst, i den ordningen du senast läste dem"
search:
title: "Sök"
help: "sök alla ämnen"
categories:
title: "Kategorier"
title_in: "Kategori - {{categoryName}}"
- help: "alla trådar grupperade efter kategori"
+ help: "alla ämnen grupperade efter kategori"
unread:
title:
zero: "Olästa"
one: "Olästa (1)"
other: "Olästa ({{count}})"
- help: "Trådar du tittar på eller följer med olästa inlägg"
+ help: "ämnen som du bevakar eller följer med olästa inlägg"
lower_title_with_count:
one: "1 oläst"
other: "{{count}} olästa"
@@ -1368,7 +1454,7 @@ sv:
help: "ämnen skapade de senaste dagarna"
posted:
title: "Mina Inlägg"
- help: "trådar som du har postat i"
+ help: "ämnen som du har postat i"
bookmarks:
title: "Bokmärken"
help: "Ämnen du har bokmärkt"
@@ -1377,10 +1463,12 @@ sv:
zero: "{{categoryName}}"
one: "{{categoryName}} (1)"
other: "{{categoryName}} ({{count}})"
- help: "senaste trådarna i {{categoryName}}-kategorin"
+ help: "senaste ämnena i kategorin {{categoryName}}"
top:
title: "Topp"
help: "de mest aktiva ämnena det senaste året, månaden, veckan och dagen"
+ all:
+ title: "All tid"
yearly:
title: "Årsvis"
monthly:
@@ -1389,10 +1477,12 @@ sv:
title: "Veckovis"
daily:
title: "Dagligen"
- this_year: "I år"
- this_month: "Den här månaden"
- this_week: "Den här veckan"
+ all_time: "All tid"
+ this_year: "År"
+ this_month: "Månad"
+ this_week: "Vecka"
today: "Idag"
+ other_periods: "se toppen"
browser_update: 'Tyvärr, din webbläsare är för gammal för att fungera på den här sidan. Vänligenuppgradera din webbläsare.'
permission_types:
full: "Skapa / svara / se"
@@ -1472,13 +1562,13 @@ sv:
delete_post_agree_flag_title: "Ta bort inlägg; om det är det första inlägget, ta bort ämnet"
delete_flag_modal_title: "Ta bort och..."
delete_spammer: "Radera spammare"
- delete_spammer_title: "Radera användaren och alla hens inlägg och trådar."
+ delete_spammer_title: "Radera användaren och alla hans/hennes inlägg och ämnen."
disagree_flag_unhide_post: "Håll inte med (avgöm inlägg)"
disagree_flag_unhide_post_title: "Ta bort alla flaggor från detta inlägg och gör det synligt igen"
disagree_flag: "Håll inte med"
disagree_flag_title: "Neka den här flaggningen som ogiltig eller inkorrekt"
clear_topic_flags: "Klar"
- clear_topic_flags_title: "Tråden har undersökts och eventuella problem har lösts. Klicka på klar för att ta bort flaggorna."
+ clear_topic_flags_title: "Ämnet har undersökts och eventuella problem har lösts. Klicka på klar för att ta bort flaggorna."
more: "(mer svar...)"
dispositions:
agreed: "Godkände"
@@ -1491,7 +1581,7 @@ sv:
error: "Någonting gick snett"
reply_message: "Svara"
no_results: "Det finns inga flaggor."
- topic_flagged: "Denna tråd har blivit flaggad."
+ topic_flagged: "Detta ämne har blivit flaggad."
visit_topic: "Besök ämnet för att vidta åtgärder"
was_edited: "Inlägget redigerades efter den första flaggningen"
previous_flags_count: "Det här inlägget har redan flaggats {{count}} gånger."
@@ -1533,6 +1623,8 @@ sv:
automatic: "Automatisk"
automatic_membership_email_domains: "Användare som registrerar sig med en email där domänen liknar exact en av dom ovanstående domänerna kommer automatiskt att bli tillagd i den här gruppen:"
automatic_membership_retroactive: "Avänd samma email domän regel för att lägga till nya avändare"
+ default_title: "Standardtitel för alla användare i denna grupp"
+ primary_group: "Automatiskt inställd som primär grupp"
api:
generate_master: "Generera API-huvudnyckel"
none: "Det finns inga aktiva API-nycklar just nu."
@@ -1619,6 +1711,8 @@ sv:
screened_email: "Exportera hela e-postlistan i CSV-format."
screened_ip: "Exportera hela IP-listan i CSV-format."
screened_url: "Exportera hela URL-listan i CSV-format."
+ export_json:
+ button_text: "Exportera"
invite:
button_text: "Skicka inbjudningar"
button_title: "Skicka inbjudan"
@@ -1627,6 +1721,7 @@ sv:
long_title: "Sidanpassningar"
css: "CSS"
header: "Sidhuvud"
+ top: "Toppen"
footer: "Footer"
head_tag:
text: ""
@@ -1645,6 +1740,8 @@ sv:
save: "Spara"
new: "Ny"
new_style: "Ny Stil"
+ import: "Importera"
+ import_title: "Välj en fil eller klistra in text"
delete: "Radera"
delete_confirm: "Radera denna anpassning?"
about: "Modifiera CSS stilmallar och HTML sidhuvuden på sidan. Lägg till en anpassning för att börja."
@@ -1741,7 +1838,7 @@ sv:
last_match_at: "Senast matchad"
match_count: "Träffar"
ip_address: "IP"
- topic_id: "Tråd ID"
+ topic_id: "Ämnes-ID"
post_id: "Inlägg ID"
delete: 'Radera'
edit: 'Redigera'
@@ -1778,7 +1875,7 @@ sv:
grant_badge: "ge utmärkelse"
revoke_badge: "upphäv utmärkelse"
check_email: "kolla epost"
- delete_topic: "ta bort tråd"
+ delete_topic: "ta bort ämne"
delete_post: "ta bort inlägg"
impersonate: "imitera"
anonymize_user: "Anonymisera användare"
@@ -1872,7 +1969,7 @@ sv:
suspend_reason: "Anledning"
suspended_by: "Avstängd av"
delete_all_posts: "Radera alla inlägg"
- delete_all_posts_confirm: "Du är påväg att radera %{posts} inlägg och %{topics} trådar. Är du säker?"
+ delete_all_posts_confirm: "Du är påväg att radera %{posts} inlägg och %{topics} ämnen. Är du säker?"
suspend: "Stäng av användare"
unsuspend: "Lås upp användare"
suspended: "Avstängd?"
@@ -1900,10 +1997,10 @@ sv:
activity: Aktivitet
like_count: Gillningar Gedda / Mottagna
last_100_days: 'de senaste 100 dagarna'
- private_topics_count: Antal Privata Trådar
+ private_topics_count: Privata ämnen
posts_read_count: Inlägg Lästa
post_count: Inlägg Skapade
- topics_entered: Besökta trådar
+ topics_entered: Besökta ämnen
flags_given_count: Givna Flaggnignar
flags_received_count: Mottagna Flaggningar
warnings_received_count: Varningar Mottagningar
@@ -1945,7 +2042,7 @@ sv:
block_failed: 'Ett problem uppstod då användaren skulle blockeras.'
deactivate_explanation: "En avaktiverad användare måste bekräfta sin emailadress igen."
suspended_explanation: "En avstängd användare kan inte logga in."
- block_explanation: "En blockerad användare kan inte posta inlägg eller starta trådar."
+ block_explanation: "En blockerad användare kan inte posta inlägg eller starta ämnen."
trust_level_change_failed: "Ett problem uppstod då användarens förtroendenivå skulle ändras."
suspend_modal_title: "Stäng av användare"
trust_level_2_users: "Användare med Förtroendenivå 2"
@@ -1961,7 +2058,7 @@ sv:
requirement_heading: "krav"
visits: "besök"
days: "dagar"
- topics_replied_to: "Trådar svarade på"
+ topics_replied_to: "Ämnen svarade på"
topics_viewed: "Besökta Ämnen"
topics_viewed_all_time: "Besökta Ämnen (totalt)"
posts_read: "Lästa Inlägg"
@@ -2040,6 +2137,7 @@ sv:
developer: 'Utvecklare'
embedding: "Inbäddning"
uncategorized: 'Övrigt'
+ backups: "Säkerhetskopior"
login: "Inloggning"
plugins: "Tillägg"
badges:
@@ -2049,7 +2147,7 @@ sv:
name: Namn
badge: Utmärkelse
display_name: Visa namn
- description: beskrivning
+ description: Beskrivning
badge_type: Utmärkelsetyp
badge_grouping: Grupp
badge_groupings:
@@ -2057,8 +2155,8 @@ sv:
granted_by: Utfärdad av
granted_at: Utfärdad vid
reason_help: (En länk till ett inlägg eller ämne)
- save: spara
- delete: ta bort
+ save: Spara
+ delete: Ta bort
delete_confirm: Är du säker på att du vill ta bort den utmärkelsen?
revoke: Upphäv
reason: Anledning
@@ -2070,19 +2168,34 @@ sv:
grant: Utfärda
no_user_badges: "%{name} har inte beviljats några utmärkelser."
no_badges: Det finns inga utmärkelser som kan utfärdas.
+ none_selected: "Välj en utmärkelse för att komma igång"
allow_title: Tillåt att utmärkelse används som titel
multiple_grant: Kan utfärdas flera gånger
listable: Visa utmärkelse på den offentliga utmärkelsesidan
enabled: Aktivera utmärkelse
icon: Ikon
image: Bild
+ icon_help: "Använd antingen en Font Awesome-klass eller en URL till en bild"
+ trigger: Trigger
trigger_type:
none: "Uppdatera dagligen"
+ post_revision: "När en användare redigerar eller skapar ett inlägg"
+ trust_level_change: "När en användare byter förtroendenivå"
+ user_change: "När en användare redigeras eller skapas"
preview:
+ link_text: "Förhandsvisa utfärdade utmärkelser"
bad_count_warning:
header: "VARNING!"
+ grant_count:
+ zero: "Inga utmärkelser som ska tilldelas."
+ one: "1 utmärkelse som ska tilldelas."
+ other: "%{count} utmärkelser som ska tilldelas."
+ sample: "Exempel:"
grant:
with: %{username}
+ with_post: %{username} för inlägg i %{link}
+ with_post_time: %{username} för inlägg i %{link} vid kl. %{time}
+ with_time: %{username} vid kl. %{time}
emoji:
title: "Emoji"
help: "Lägg till en ny emoji för andra att använda. (TIPS: dra och släpp flera filer på en och samma gång)"
@@ -2103,23 +2216,28 @@ sv:
new: 'g, n Ny'
unread: 'g, u Olästa'
categories: 'g, c Kategorier'
+ top: 'g, t Upp till toppen'
bookmarks: 'g, b Bokmärken'
navigation:
title: 'Navigering'
jump: '# Gå till inlägg #'
back: 'Tillbaka'
- open: 'ö eller Välj Öppna vald tråd'
+ up_down: 'k/j Flytta markering ↑ ↓'
+ open: 'ö eller Välj Öppna valt ämne'
next_prev: 'shift+j/shift+k Nästa/föregående avsnitt'
application:
- create: 's Skapa en ny tråd'
+ create: 's Skapa ett nytt ämne'
notifications: 'n Öppna notifikationer'
site_map_menu: '= Öppna webbplatsmeny'
user_profile_menu: 'p Öppna användarmeny'
show_incoming_updated_topics: '. Visa uppdaterade ämnen'
search: 'Sök'
help: '? Öppna tangentbordshjälp'
+ dismiss_new_posts: 'x, r Avfärda nya/inlägg'
+ dismiss_topics: 'x, t Avfärda ämnen'
actions:
title: 'Åtgärder'
+ pin_unpin_topic: 'shift+p Klistra/oklistra ämne'
share_topic: 'shift+s Dela ämne'
share_post: 's Dela inlägg'
reply_as_new_topic: 't Svara med länkat ämne'
@@ -2127,21 +2245,45 @@ sv:
reply_post: 'r Svara på inlägg'
quote_post: 'q Citera inlägg'
like: 'Gilla inlägg'
- flag: '! flagga inlägg'
- bookmark: 'b bokmärk inlägg'
- edit: 'e redigera inlägg'
- delete: 'd radera inlägg'
+ flag: '! Flagga inlägg'
+ bookmark: 'b Bokmärk inlägg'
+ edit: 'e Redigera inlägg'
+ delete: 'd Radera inlägg'
mark_muted: 'm, m Tysta ämne'
+ mark_regular: 'm, r Vanligt (standard) ämne'
mark_tracking: 'm, t Följd diskussion'
mark_watching: 'm, w Bevaka ämne'
badges:
title: Utmärkelser
allow_title: "kan användas som titel"
+ multiple_grant: "kan tilldelas flera gånger"
+ badge_count:
+ one: "1 Utmärkelse"
+ other: "%{count} Utmärkelser"
+ more_badges:
+ one: "+1 till"
+ other: "+%{count} till"
+ granted:
+ one: "1 utfärdad"
+ other: "%{count} utfärdade"
+ select_badge_for_title: Välj en utmärkelse som används som din titel
+ none: "
+
- While reading a topic, select the progress bar at the bottom right for full navigation controls. Quickly jump back to the top by selecting the topic title. Press ? for a list of super-speedy keyboard shortcuts.
-
+
## Replying
- - To reply to the **topic in general**, use
at the very bottom of the topic.
+ - To reply to the **topic in general**, use
at the very bottom of the topic.
- - To reply to a **specific person**, use
on their post.
+ - To reply to a **specific person**, use
on their post.
- - To reply with **a new topic**, use
to the right of the post. Both old and new topics will be automatically linked together.
+ - To reply with **a new topic**, use
to the right of the post. Both old and new topics will be automatically linked together.
To insert a quote, select the text you wish to quote, then press any Reply button. Repeat for multiple quotes!
-
+
To notify someone about your reply, mention their name. Type `@` to begin selecting a username.
-
+
To use [standard Emoji](http://www.emoji.codes/), just type `:` to match by name, or use the traditional smileys `;)`
-
+
## Actions
There are action buttons at the bottom of each post:
-
+
To let someone know that you enjoyed and appreciated their post, use the **like** button. Share the love!
- If you see a problem with someone's post, privately let them, or [our staff](/about), know about it with the **flag** button. You can also **share** a link to a post, or **bookmark** it for later reference on your user page.
+ If you see a problem with someone's post, privately let them, or [our staff](%{base_url}/about), know about it with the **flag** button. You can also **share** a link to a post, or **bookmark** it for later reference on your user page.
## Notifications
When someone replies to you, quotes your post, or mentions your `@username`, a number will immediately appear at the top right of the page. Use it to access your **notifications**.
-
+
Don't worry about missing a reply – you'll be emailed any notifications that arrive when you are away.
@@ -1536,11 +1547,11 @@ en:
You will see the blue new and unread number indicators next to these topics:
-
+
You can change your notifications for any topic via the notification control at the bottom of the topic.
-
+
You can also set notification state per category, if you want to watch every new topic in a specific category.
@@ -1590,7 +1601,7 @@ en:
subject_template: "Backup completed successfully"
text_body_template: "The backup was successful.
- Visit the [admin > backup section](/admin/backups) to download your new backup."
+ Visit the [admin > backup section](%{base_url}/admin/backups) to download your new backup."
backup_failed:
subject_template: "Backup failed"
@@ -2400,10 +2411,11 @@ en:
- order:viewsorder:latest
+ status:openstatus:closedstatus:archivedstatus:norepliesstatus:singleuserstatus:openstatus:closedstatus:archivedstatus:norepliesstatus:single_usercategory:foouser:foo
- in:likesin:postedin:watchingin:trackingin:private
+ in:bookmarks
+ in:bookmarksin:firstposts_count:nummin_age:daysmax_age:days
@@ -2494,3 +2506,7 @@ en: discourse_hub: access_token_problem: "Tell an admin: Please update the site settings to include the correct discourse_org_access_key." + + performance_report: + initial_post_raw: This topic includes daily performance reports for your site. + initial_topic_title: Website performance reports diff --git a/config/locales/server.fr.yml b/config/locales/server.fr.yml index 0d04125421..2a65f5f882 100644 --- a/config/locales/server.fr.yml +++ b/config/locales/server.fr.yml @@ -382,7 +382,7 @@ fr: one: "il y a presque un an" other: "il y a presque %{count} ans" password_reset: - no_token: "Désolé, ce lien de modification de mot de passe est trop vieux. Connectez-vous à nouveau et sélectionnez \"J'ai oublié mon mot de passe\" afin d'obtenir un nouveau lien." + no_token: "Désolé, ce lien de changement de mot de passe est trop vieux. Sélectionnez 'J'ai oublié mon mot de passe' pour obtenir un nouveau lien." choose_new: "Veuillez choisir un nouveau mot de passe" choose: "Veuillez choisir un mot de passe" update: 'Mettre à jour le mot de passe ' @@ -595,6 +595,14 @@ fr: title: "Total" xaxis: "Jour" yaxis: "Total des requêtes" + time_to_first_response: + title: "Délai de première réponse" + xaxis: "Jour" + yaxis: "Temps moyen (heures)" + topics_with_no_response: + title: "Sujets sans réponses" + xaxis: "Jour" + yaxis: "Total" dashboard: rails_env_warning: "Votre serveur fonctionne dans l'environnement de %{env}." ruby_version_warning: "Vous exécutez une version de Ruby 2.0.0 qui est connu pour avoir des problèmes. Migrez vers le patch 247 ou supérieur." @@ -685,6 +693,7 @@ fr: category_featured_topics: "Nombre de sujets affichés par catégorie sur la page /categories. Après avoir modifié cette valeur, il faut jusqu'à 15 minutes pour que la page des catégories soit mise à jour." show_subcategory_list: "Voir les sous-catégories à la place de la liste des sujets lorsqu'on entre dans la catégorie." fixed_category_positions: "Si coché, vous pourrez modifier l'ordre des catégories. Si décoché, elle seront triées par ordre d'activité." + fixed_category_positions_on_create: "Si coché, le classement des catégories sera maintenu dans la fenêtre de création de sujet (nécessite fixed_category_positions)." add_rel_nofollow_to_user_content: "Ajouter rel nofollow à tous les contenus des utilisateurs, sauf les liens internes (incluant les domaines parents). Si vous modifier ceci, vous devez exécuter la commande \"rake posts:rebake\"" exclude_rel_nofollow_domains: "Une liste de domaines pour lesquels l'attribut nofollow ne sera pas ajouté aux liens. tld.com autorisera automatiquement sub.tld.com également. Au minimum, vous devriez ajouter le domaine de premier niveau (TLD) de ce site pour aider les robots d'indexation à trouver tout le contenu. Si d'autres parties du site sont sur d'autre domaines, ajoutez-les aussi." post_excerpt_maxlength: "Longueur maximale d'un extrait / résumé de message." @@ -952,12 +961,14 @@ fr: 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." dominating_topic_minimum_percent: "Quel est le pourcentage de messages un utilisateur doit poster dans un sujet avant d'être rappelé à l'ordre pour laissé la communauté répondre." + daily_performance_report: "Analyser les logs de NGINX quotidiennement et poster un sujet Responsables Uniquement avec les détails" suppress_uncategorized_badge: "Ne pas afficher le badge pour les sujets non catégorisés dans les listes des sujets." global_notice: "Affiche un bandeau global URGENT pour tout les utilisateurs du site, laissez vide pour le cacher (HTML autorisé)." disable_edit_notifications: "Désactiver les notifications de modifications par l'utilisateur système lorsque l'option 'download_remote_images_to_local' est activée." full_name_required: "Le nom complet est requis dans le profil utilisateur." enable_names: "Autoriser l'affichage des noms complets des utilisateurs dans leur profil, sur leur carte d'utilisateur et dans les courriels. Décocher pour cacher les noms complets partout." display_name_on_posts: "Afficher le nom complet de l'utilisateur dans ses messages en plus de son @pseudo." + show_time_gap_days: "Si deux messages sont publiés à ce nombre de jours d'écart, affichez cette durée dans le sujet." invites_per_page: "Afficher les invitations sur la page de l'utilisateur." short_progress_text_threshold: "Si le nombre de messages dans un sujet dépasse ce nombre, la barre de progression affichera uniquement le numéro de message actuel. Si vous modifiez la largeur de la barre de progression, vous devrez peut-être modifier cette valeur." default_code_lang: "Coloration syntaxique par défaut appliquée à la syntaxe des langages de programmation des blocs de code GitHub (lang-auto, Ruby, Python, etc)" @@ -986,6 +997,7 @@ fr: enforce_square_emoji: "Forcer tous les emojiis à être carrés." approve_post_count: "Le nombre de messages d'un nouvel utilisateur qui doivent être approuvés" approve_unless_trust_level: "Les messages des utilisateurs qui n'ont pas atteint ce niveau de confiance doivent être approuvés" + notify_about_queued_posts_after: "Si des messages sont en attente de modération depuis ce nombre d'heures, un email sera envoyé à l'email de contact. Désactivez ces emails en indiquant 0." errors: invalid_email: "Adresse de courriel invalide." invalid_username: "Il n'y a pas d'utilisateur ayant ce pseudo." @@ -1193,8 +1205,38 @@ fr: [mj]: https://www.mailjet.com/pricing new_version_mailer: subject_template: "[%{site_name}] Nouvelle version de Discourse, mise à jour disponible" + text_body_template: | + Une nouvelle version de [Discourse](http://www.discourse.org) est disponible. + + Votre version: %{installed_version} + Nouvelle version: **%{new_version}** + + Vous voulez peut-être: + + - Voir les nouveautés sur le [changelog de GitHub](https://github.com/discourse/discourse/commits/master). + + - Mettre à jour depuis votre navigateur en allant sur [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade) + + - Visiter [meta.discourse.org](http://meta.discourse.org) pour vous tenir au courant, discuter et avoir de l'aide à propos de Discourse. new_version_mailer_with_notes: subject_template: "[%{site_name}] mise à jour disponible" + text_body_template: | + Une nouvelle version de [Discourse](http://www.discourse.org) est disponible. + + Votre version: %{installed_version} + Nouvelle version: **%{new_version}** + + Vous voulez peut-être: + + - Voir les nouveautés sur le [changelog de GitHub](https://github.com/discourse/discourse/commits/master). + + - Mettre à jour depuis votre navigateur en allant sur [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade) + + - Visiter [meta.discourse.org](http://meta.discourse.org) pour vous tenir au courant, discuter et avoir de l'aide à propos de Discourse. + + ### Notes de mise à jour + + %{notes} flags_reminder: flags_were_submitted: one: "Il y a un signalement qui a été soumis il y a plus de %{count} heures." @@ -1205,6 +1247,14 @@ fr: subject_template: one: "un signalement en attente de traitement" other: "%{count} signalements en attente de traitement." + queued_posts_reminder: + subject_template: + one: "[%{site_name}] 1 message en attente de modération" + other: "[%{site_name}] %{count} messages en attente de modération" + text_body_template: | + Bonjour, + + Des messages de nouveaux utilisateurs sont en attente de modération. [Ils peuvent être approuvés ou rejetés ici](%{base_url}/queued-posts). flag_reasons: off_topic: "Votre message a été signalé comme étant **hors sujet**: la communauté considère qu'il ne correspond au sujet en discussion, qui est fixé par son titre et son premier message." inappropriate: "Votre message a été signalé comme étant **inapproprié**: la communauté considère que son contenu est offensif, abusif ou enfreint notre [règlement interne](/guidelines)." @@ -1216,7 +1266,7 @@ fr: disagreed: "Merci de nous en informer. Nous travaillons à sa résolution." deferred: "Merci de nous en informer. Nous travaillons à sa résolution." deferred_and_deleted: "Merci de nous en informer. Nous avons supprimé le message." - temporarily_closed_due_to_flags: "Ce sujet est temporairement clos dû à un trop grand nombre de signalements" + temporarily_closed_due_to_flags: "Ce sujet est temporairement fermé à cause d'un grand nombre de signalements de la communauté." system_messages: post_hidden: subject_template: "Message caché suite à un signalement par la communauté" @@ -1243,7 +1293,7 @@ fr: 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." + text_body_template: "La sauvegarde a bien réussie.\nVisitez [la section admin > sauvegarde](%{base_url}/admin/backups) pour télécharger votre nouvelle sauvegarde." backup_failed: subject_template: "Échec de la sauvegarde" text_body_template: | @@ -1907,29 +1957,6 @@ fr: \ ?](#cookies)\n\nOui. Les cookies sont de petits fichiers qu'un site ou son prestataire de services transfert sur le disque dur de votre ordinateur via votre navigateur Web (si vous permettez). Ces cookies permettent au site de reconnaître votre navigateur et, si vous avez un compte enregistré, l'associer à votre compte enregistré.\n\nNous utilisons des cookies pour comprendre et sauvegarder vos préférences pour de futures visites et compiler des données globales sur le trafic du site et les interactions avec le site afin que nous puissions offrir de meilleures expériences de navigation et de meilleurs outils à l'avenir. Nous pouvons conclure des contrats avec des fournisseurs de services tiers pour nous aider à mieux comprendre les visiteurs du site. Ces fournisseurs de services ne sont pas autorisés à utiliser les renseignements recueillis en notre nom, sauf pour nous aider à mener et à améliorer notre entreprise.\n\n\n\n## [Divulguons-nous des informations à des tiers?](#disclose)\n\nNous ne vendons pas, ni échangeons, ou même transférerons vos renseignements personnelles à des tiers. Ceci n'inclut pas les tiers de confiance qui nous aident à exploiter notre site, la conduite de nos affaires, ou vous servir, tant que ces parties conviennent à garder ces informations\ \ confidentiels. Nous pouvons également divulguer vos informations lorsque nous croyons nécessaire de se conformer à la loi, appliquer nos politiques de site, ou la nôtre ou d'autres droits, la propriété ou la sécurité. Toutefois, des informations non personnelles des visiteurs peuvent être fournis à d'autres parties pour le marketing, la publicité, ou d'autres utilisations.\n\n\n\n## [Liens vers des tiers](#third-party)\n\nParfois, à notre discrétion, nous pouvons inclure ou offrir des produits ou services de tiers sur notre site. Ces sites tiers ont des politiques de confidentialité distinctes et indépendantes. Nous n'avons donc aucune responsabilité pour le contenu et les activités de ces sites. Néanmoins, nous cherchons à protéger l'intégrité de notre site et sommes disposés à accueillir tous les commentaires au sujet de ces sites. \n\n\n\n## [Protection des mineurs](#coppa)\n\nNotre site, produits et services sont dirigés vers les personnes qui ont au moins 13 ans ou plus. Si ce serveur est aux Etats-Unis, et que vous êtes sous l'âge de 13 ans, conformément aux exigences de la COPPA ([Children's Online Privacy Protection Act](http://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act)), n'utiliser pas ce site. ## [Politique de confidentialité en ligne](#online) Cette politique de confidentialité en ligne s'applique uniquement aux informations collectées sur notre site et non aux informations recueillies hors connexion. ## [Votre consentement](#consent) En utilisant notre site, vous consentez à la Politique de confidentialité de notre site web.\n\n\n\n## [Changements à notre politique de confidentialité](#changes)\n\nSi nous décidons de changer notre politique de confidentialité, nous afficherons ces modifications sur cette page.\n\nCe document est soumis à la licence creative commons CC-BY-SA.\n" - static: - search_help: | -
-
-
-
-
-
-
order:views | order:latest | |||
status:open | status:closed | status:archived | status:noreplies | status:singleuser |
category:foo | user:foo | |||
in:likes | in:posted | in:watching | in:tracking | in:private |
in:bookmarks | ||||
-
-
- rainbows category:parks status:open order:latest recherchera les sujets qui contiennent le mot "rainbows", qui sont dans la catégorie "parks" et qui ne sont ni fermés ni archivé. Les résultats seront triés par la date du dernier message publié.
-
badges: long_descriptions: autobiographer: | @@ -2011,3 +2038,6 @@ fr: submit_button: "Envoyer un courriel" discourse_hub: access_token_problem: "En informer un administrateur : Veuillez mettre à jour les paramètres du site afin de renseigner une clé discourse_org_access_key correcte." + performance_report: + initial_post_raw: Ce sujet comprend des rapports de performance journaliers concernant votre site. + initial_topic_title: Rapports de performances du site diff --git a/config/locales/server.it.yml b/config/locales/server.it.yml index 1a5b7f3e08..ac4d2733d7 100644 --- a/config/locales/server.it.yml +++ b/config/locales/server.it.yml @@ -344,7 +344,7 @@ it: one: "quasi 1 anno fa" other: "quasi %{count} anni fa" password_reset: - no_token: "Siamo spiacenti ma il collegamento per il cambio password è troppo vecchio. Collegati di nuovo e seleziona 'Ho dimenticato la password' per ottenere un nuovo collegamento." + no_token: "Spiacenti, il collegamento per il cambio password è scaduto. Seleziona 'Ho dimenticato la password' per ottenere un nuovo collegamento." choose_new: "Per favore scegli una nuova password." choose: "Per favore scegli una password" update: 'Aggiorna Password' @@ -557,6 +557,14 @@ it: title: "Totali" xaxis: "Giorno" yaxis: "Richieste totali" + time_to_first_response: + title: "Tempo per la prima risposta" + xaxis: "Giorno" + yaxis: "Tempo medio (ore)" + topics_with_no_response: + title: "Argomenti senza risposta" + xaxis: "Giorno" + yaxis: "Totali" dashboard: rails_env_warning: "Il tuo server è in modalità %{env}." ruby_version_warning: "Stai eseguendo la versione 2.0.0 di Ruby che ha problemi noti. Effettua l'upgrade alla patch livello 247 o seguenti." @@ -647,7 +655,9 @@ it: category_featured_topics: "Numero di argomenti mostrati per categoria nella pagina /categories. Dopo il cambiamento di questo valore, la pagina delle categorie impiega fino a 14 minuti per aggiornarsi." show_subcategory_list: "Quando si accede ad una categoria, mostra l'elenco di sottocategorie anziché l'elenco di argomenti. " fixed_category_positions: "Se attivo, potrai ordinare le categorie. Se non attivo, le categorie vengono elencate in ordine di attività." + fixed_category_positions_on_create: "Se spuntato, verrà mantenuto l'ordinamento delle categorie nella finestra di creazione argomenti (richiede fixed_category_positions)." add_rel_nofollow_to_user_content: "Aggiungi l'attributo rel nofollow a tutti i contenuti degli utenti, tranne per i link interni (compresi i domini di livello superiore). Se modifichi questa opzione devi aggiornare tutti i messaggi con il comando \"rake posts:rebake\"" + exclude_rel_nofollow_domains: "Una lista di domini a cui non aggiungere \"nofollow\" ai collegamenti. Inoltre tld.com autorizzerà automaticamente sub.tld.com. Dovresti perlomeno aggiungere il dominio di primo livello di questo sito, per aiutare i motori di ricerca a trovare tutto il contenuto. Se parti del tuo sito si trovano su altri domini, aggiungi anche quelli." post_excerpt_maxlength: "Lunghezza massima dell'estratto / riassunto di un messaggio." post_onebox_maxlength: "Lunghezza massima in caratteri di un messaggio Discourse in Onebox." onebox_domains_whitelist: "Lista di domini per i quali consentire la funzione di onebox; questi domini devono supportare OpenGraph o oEmbed. Testali su http://iframely.com/debug" @@ -679,6 +689,9 @@ it: cooldown_minutes_after_hiding_posts: "Quanti minuti l'utente deve attendere prima di poter modificare un messaggio che è stato nascosto a causa di segnalazioni" max_topics_in_first_day: "Numero massimo di argomenti che l'utente può creare nel suo primo giorno di forum" max_replies_in_first_day: "Numero massimo di risposte che un utente può pubblicare nel suo primo giorno sul sito" + tl2_additional_likes_per_day_multiplier: "Aumenta il limite di \"Mi piace\" al giorno ammessi per gli utenti con livello di esperienza 2 (Assiduo), moltiplicando per questo numero" + tl3_additional_likes_per_day_multiplier: "Aumenta il limite di \"Mi piace\" al giorno ammessi per gli utenti con livello di esperienza 3 (Esperto) moltiplicando per questo numero" + tl4_additional_likes_per_day_multiplier: "Aumenta il limite di \"Mi piace\" al giorno ammessi per gli utenti con livello di esperienza 4 (Veterano), moltiplicando per questo numero" num_flags_to_block_new_user: "Se i messaggi di un nuovo utente ricevono segnalazioni di spam da num_users_to_block_new_user diversi utenti, nascondi tutti i messaggi dell'utente e impediscigli ulteriori invii. 0 per disabilitare questa funzionalità." num_users_to_block_new_user: "Se i messaggi di un nuovo utente ricevono num_flags_to_block_new_user segnalazioni di spam da così tanti utenti diversi, nascondi tutti i messaggi dell'utente e impediscigli ulteriori invii. 0 per disabilitare questa funzionalità." notify_mods_when_user_blocked: "Se un utente è bloccato automaticamente, manda un messaggio ai moderatori." @@ -713,6 +726,7 @@ it: email_token_grace_period_hours: "I messaggi di password dimenticata / attivazione account sono ancora validi per un periodo di grazia di (n) ore dopo essere stati convalidati." enable_badges: "Attiva il sistema a targhette" allow_index_in_robots_txt: "Specifica nel file robots.txt che questo sito permette l'indicizzazione da parte dei motori di ricerca." + email_domains_blacklist: "Una lista di domini email separati dal carattere pipe \"|\" con cui gli utenti non possono registrare un account. Ad esempio: mailinator.com/trashmail.net" forgot_password_strict: "Non informare gli utenti dell'esistenza dell'account quando richiamano la finestra per la password dimenticata." log_out_strict: "Quando si fa logout, esci da TUTTE le sessioni dell'utente su tutti i dispositivi" version_checks: "Verifica su Discourse Hub l'esistenza di aggiornamenti e mostra i messaggi per le nuove versioni nel cruscotto /admin" @@ -1208,6 +1222,8 @@ it: set_password: subject_template: "[%{site_name}] Imposta Password" text_body_template: "Qualcuno ha richiesto di aggiungere una password al tuo account su [%{site_name}](%{base_url}). In alternativa, puoi collegarti usando uno dei servizi online supportati (Google, Facebook ecc.) associato con questo indirizzo email validato. \n\nSe non hai fatto tu questa richiesta, ignora tranquillamente questa email.\n\nClicca sul seguente collegamento per scegliere una password:\n%{base_url}/users/password-reset/%{email_token}\n" + admin_login: + subject_template: "[%{site_name}] Login" account_created: subject_template: "[%{site_name}] Il Tuo Nuovo Account " text_body_template: | @@ -1265,6 +1281,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}" + anonymous_user: "L'utente è anonimo" 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}" @@ -1349,6 +1366,33 @@ it: 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" + 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 admin_login: success: "email Inviata" error: "Errore!" diff --git a/config/locales/server.pl_PL.yml b/config/locales/server.pl_PL.yml index 0aa196677d..57df510e94 100644 --- a/config/locales/server.pl_PL.yml +++ b/config/locales/server.pl_PL.yml @@ -259,6 +259,7 @@ pl_PL: uncategorized_parent: "Inne nie mogą być podkategorią innej kategorii." self_parent: "Podkategoria nie może być swoim rodzicem" depth: "Nie możesz umieścić subkategorii w innej subkategorii" + email_in_already_exist: "Przychodzący adres email '%{email_in}' jest teraz używany w tej '%{category_name}' kategorii. " cannot_delete: uncategorized: "Nie można usunąć kategorii Inne" has_subcategories: "Nie można usunąć tej kategorii ponieważ posiada podkategorie. " @@ -388,6 +389,7 @@ pl_PL: few: "prawie %{count} lata temu" other: "prawie %{count} lat temu" password_reset: + no_token: "Przepraszamy, link do zmiany hasła jest już nieaktualny. Wybierz opcje 'Zapomniałem hasła', aby otrzymać nowy link. " choose_new: "Wybierz nowe hasło" choose: "Wprowadź hasło" update: 'Zmień hasło' @@ -407,9 +409,10 @@ pl_PL: continue_button: "Przejdź do %{site_name}" welcome_to: "Witamy na forum %{site_name}!" approval_required: "Moderator musi zaakceptować Twoje nowe konto zanim uzyskasz dostęp do forum. O aktywacji zostaniesz poinformowanym mailem." + missing_session: "Nie wiemy, czy twoje konto zostało utworzone, upewnij się, że masz włączone pliki cookies." post_action_types: off_topic: - title: 'Nie-na-temat' + title: 'Nie na temat' description: 'Ten post jest niezwiązany z obecną dyskusją zdefiniowaną przez tytuł i pierwszy post, i powinien zostać przeniesiony gdzieś indziej.' long_form: 'oflagowano jako nie-na-temat' spam: @@ -423,7 +426,9 @@ 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: 'Powiadom @{{username}}' description: 'Ten wpis zawiera coś o czym chciałbym porozmawiać z tą osobą bezpośrednio i prywatnie. Bez oflagowania.' + long_form: 'użytkownik został powiadomiony' email_title: 'Twój wpis w "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: @@ -460,6 +465,7 @@ 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: @@ -596,6 +602,14 @@ pl_PL: title: "Łącznie" xaxis: "Dzień" yaxis: "Razem zapytań" + time_to_first_response: + title: "Czas na pierwszą odpowiedź. " + xaxis: "Dzień" + yaxis: "Średni czas (w godzinach)" + topics_with_no_response: + title: "Tematy bez odpowiedzi" + xaxis: "Dzień" + yaxis: "Łącznie" dashboard: rails_env_warning: "Twój serwer działa w trybie %{env}" ruby_version_warning: "Używasz Ruby w wersji 2.0.0, która może powodować problemy. Zaktualizuj się do patch level 247 lub późniejszej. " @@ -608,6 +622,7 @@ pl_PL: twitter_config_warning: 'Serwer jest skonfigurowany by pozwalać na rejestrację i logowanie za pomocą Twittera (enable_twitter_logins), ale klucz i sekret nie są ustawione. Przejdź do ustawień serwisu i zmień ustawienia. Zobacz ten poradnik by dowiedzieć się więcej.' github_config_warning: 'Serwer jest skonfigurowany by pozwalać na rejestrację i logowanie za pomocą GitHuba (enable_github_logins), ale id klienta i sekret nie są ustawione. Przejdź do ustawień serwisu i zmień ustawienia. Zobacz ten poradnik by dowiedzieć się więcej.' s3_config_warning: 'Serwer jest skonfigurowany by przesyłać pliki na s3, ale przynajmniej jedno z następujących ustawień nie jest ustawione: s3_access_key_id, s3_secret_access_key or s3_upload_bucket. Przejdź do ustawień serwisu i zmień ustawienia. Zobacz ten poradnik by dowiedzieć się więcej.' + s3_backup_config_warning: 'Serwer jest skonfigurowany tak, aby wysyłać kopie zapasowe do s3, ale jedno z ustawień nie jest ustawione prawidłowo: s3_access_key_id, s3_secret_access_key or s3_backup_bucket. Idź do ustawień strony i zaktualizuj ustawienia. Zobacz Jak ustawić wysyłanie zdjęć do S3 .' image_magick_warning: 'Serwer jest skonfigurowany by tworzyć miniaturki dużych obrazów, ale ImageMagick nie jest zainstalowany. Zainstaluj ImageMagick za pomocą ulubionego menedżera pakietów lub pobierz najnowszą wersję.' failing_emails_warning: '%{num_failed_jobs} prac emailowych nie powiodło się. Sprawdź plik config/discourse.conf i upewnij się, że ustawienia serwera poczty są poprawne. Zobacz nieudane prace w Sidekiqu.' default_logo_warning: "Ustaw logo dla swojej strony. Zaktualizuj logo_url, logo_small_url i favicon_url tutaj: ustawienia strony." @@ -616,6 +631,8 @@ pl_PL: title_nag: "Wprowadź nazwę swojej strony. Zaktualizuj tytuł w Ustawieniach strony." site_description_missing: "Wprowadź jedno zdanie opisujące Twoją stronę, które pojawi się w wynikach wyszukiwania. Zaktualizuj opis strony w Ustawieniach strony." consumer_email_warning: "Twój serwis jest skonfigurowany by używać Gmaila (lub innego konsumenckiego serwisu poczty) do wysyłania emaili. Gmail ogranicza jak dużo wiadomości możesz wysłać. Rozważ wykorzystanie dostawcy serwisu pocztowego jak mandrill.com by zagwarantować dostarczanie poczty." + site_contact_username_warning: "Wprowadź nazwę użytkownika zespołu, aby wysłać ważny szablon automatycznej wiadomości. Zaktualizuj site_contact_username w Ustawieniach Strony " + notification_email_warning: "Emaile z powiadomieniami nie zostały wysłane z prawidłowego adresu email na twojej domenie; dostawca usługi email może być niekonsekwentny i nierzetelny. Ustaw prawidłowy email w notification_email w Ustawieniach Strony." content_types: education_new_reply: title: "Edukacja nowych użytkowników: Pierwsze odpowiedzi" @@ -667,6 +684,7 @@ pl_PL: educate_until_posts: "Wyświetlaj okno edukacyjne po rozpoczęciu pisania dopóki nowy użytkownik nie napisze tylu wpisów." title: "Nazwa tej strony używana w tagu title." site_description: "Opis strony w jednym zdaniu, wykorzystywany w meta tagu description." + contact_email: "Adres email kogoś, z kim należy się kontaktować w kwestii serwisu. Istotne informacje z discourse.org dotyczące krytycznych aktualizacji mogą być wysyłane pod ten adres." contact_url: "URL kontaktowy dla tego serwisu. Używany na podstronie /about." queue_jobs: "DEVELOPER ONLY! WARNING! By default, queue jobs in sidekiq. If disabled, your site will be broken." crawl_images: "Pobieraj grafiki ze zdalnych URLi aby ustawić poprawną wysokość i szerokość w tagu img." @@ -676,11 +694,13 @@ pl_PL: ninja_edit_window: "Przez tyle sekund po utworzeniu nowego wpisu jego kolejne edycje nie będą tworzyć nowych wersji w historii wpisu." post_edit_time_limit: "Autor może edytować lub usunąć swój wpis przez tyle minut po jego utworzeniu. Ustawienie 0 oznacza 'zawsze'." edit_history_visible_to_public: "Pozwól wszystkim przeglądać poprzednie wersje edytowanych wpisów. Gdy wyłączone, jedynie obsługa/staff może." + delete_removed_posts_after: "Wpisy usunięte przez autora będą automatycznie zlikwidowane po (n) godzinach. Jeżeli liczba godzin będzie wynosić 0, to zostaną usunięte natychmiast. " max_image_width: "Maksymalna szerokość miniaturki grafiki we wpisie. " max_image_height: "Maksymalna wysokość miniaturki grafiki we wpisie. " category_featured_topics: "Number of topics displayed per category on the /categories page. After changing this value, it takes up to 15 minutes for the categories page to update." show_subcategory_list: "Po wejściu do kategorii, zamiast listy tematów wyświetlaj listę podkategorii." fixed_category_positions: "Zaznacz, aby ręcznie ustawiać kolejność kategorii. Odznacz, aby kategorie były sortowane na podstawie aktywności. " + fixed_category_positions_on_create: "Jeżeli jest sprawdzone to porządkowanie kategorii będzie zależało od stworzonego tematu (requires fixed_category_positions). " post_excerpt_maxlength: "Maksymalna długość podsumowania / streszczenia wpisu." post_onebox_maxlength: "Maksymalna długość (ilość znaków) treści wpisu osadzonego via Onebox" onebox_domains_whitelist: "Lista domen dla których włączony jest oneboxing; te domeny powinny wspierać OpenGraph lub oEmbed. Można to sprawdzić na http://iframely.com/debug" @@ -907,7 +927,6 @@ pl_PL: subject_template: "Witaj na %{site_name}!" backup_succeeded: subject_template: "Kopia zapasowa jest gotowa" - text_body_template: "Kopia zapasowa została wykonana pomyślnie.\nOdwiedź [admin > kopie zapasowe](/admin/backups) aby ją pobrać." backup_failed: subject_template: "Kopia zapasowa nieudana" text_body_template: | @@ -1091,3 +1110,119 @@ pl_PL: title: "FAQ" tos_topic: title: "Warunki użytkowania" + privacy_topic: + body: "\n\n## [Jakie dane o Tobie zbieramy?](#collect)\n\nZbieramy takie informacje jak: kiedy zarejestrowałeś się na naszej stronie; kiedy uczestniczyłeś w życiu forum poprzez czytanie, pisanie oraz udoskolananie zawartości tu udostępnianej.\n\nPodczas rejestracji na naszej stronie mogłeś być zapytany o twoje imię i nazwisko oraz adres email. Możesz też przeglądać naszą stronę bez konieczności rejestracji. Twój adres email będzie weryfikowany poprzez przesłanie na niego unikalnego linku. Jeżeli kilknołeś ten link, wiemy że ten adres email należy do Ciebie. \n\nPodczas rejestracji oraz pisania treści zbieramy dane o twoim adresie IP. Możemy też zachowywać logi serwera, które\ + \ pobierają dane o twoim adresie IP zawsze kiedy logujesz się na nasz serwer. \n\n\n\n## [Do czego używamy twoich danych?](#use)\n\nKażda z informacji jakie od Ciebie zbieramy może być wykorzystana w następujący sposób:\n\n* Aby przystosować naszą stronę dla Ciebie — twoje informacje pomagają nam lepiej odpowiadać na twoje indywidualne potrzeby. \n* Aby ulepszyć naszą strone — cały czas ulepszamy naszą stronę na podstawie informacji otrzymanych od Ciebie.\n* Aby ulepszyć obsługę klienta — twoje informacje pomagają nam na efektywniejsze obsługiwanie twoich prośb. \n* Aby wysyłać Tobie okresowe wiadomości email — Adres email, który podałeś może być użyty\ + \ aby wysyłać Tobie informację o stronie, powiadomienia, odpowiedzi, wiadomości i wątki skierowane do Ciebie. \n\n\n\n## [Jak chronimy twoje dane?](#protect)\n\nWdrażamy różne środki bezpieczeństwa, aby podnosić poziom bezpieczeństwa twoich danych osobowych, kiedy podajesz, potwierdzasz albo udzielasz dostępu do informacji osobistych. \n\n\n\n## [Jaką mamy politykę przechowywania danych?](#data-retention)\n\nDokładamy wszelkich starań, aby:\n\n* Nie przechowywać danych o twoim adresie IP dłużej niż 90 dni. \n* Nie przechowywać danych o adresie IP przypisanym do twojego konta dłużej niż 5 lat.\n\n\n\n\n## [Czy używamy\ + \ plików cookies?](#cookies)\n\nTak. Cookies to małe pliki, wysyłane przez serwis internetowy, który odwiedzamy i zapisywane na urządzeniu końcowym (komputerze, laptopie, smartfonie), z którego korzystamy podczas przeglądania stron internetowych. Pozwalają naszej stronie na rozpoznanie czy jesteś naszym użytkownikiem.\n\nUżywamy ich, aby zrozumieć i zapisać twoje preferencje. Dzięki nim możemy zapewnić Tobie lepszą jakość dostarczanych usług. Możemy teżudostępniać je firmom trzecim, aby mogły rozpoznawać twoje zachowania. \n\n\n\n## [Czy udostępniamy jakiekolwiek informacje osobom trzecim?](#disclose)\n\nNie sprzedajemy, anie nie oddajemy żadnych informacji naszym partnerom.\ + \ emy używa do celów komercyjnych, marketingowych i innych. \n\n\n\n## [Linki osób trzecich](#third-party)\n\nNa naszej stronie możemy promować linki osób trzecich. Strony te mają swoją oddzielną politykę prywatności. Nie bierzemy żadnej odpowiedzialności za te strony. \n\n\n\n## [Children's Online Privacy Protection Act Compliance](#coppa)\n\nOur 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.\n\n\n\n## [Online Privacy Policy Only](#online)\n\nTa polityka prywatności odnosi się tylko do danych zbieranych przez przez naszą strone, nie odnosi się ona do informacji zbieranych w trybie offline. \n\n\n\n## [Twoja Zgoda](#consent)\n\nKorzystając z tej strony zgadzasz się na jej politykę prywatności.\n\n\n\n## [Zmiany w polityce prywatności](#changes)\n\nJeżeli zostaną zmienione zasady polityki prywatności, zostaną one opublikowane na tej stronie. \n\nThis document is CC-BY-SA. It was last updated May 31, 2013.\n" + static: + search_help: |+ +
+
+
+
+
+
+
order:views | order:latest | |||
status:open | status:closed | status:archived | status:noreplies | status:single_user |
category:foo | user:foo | |||
in:likes | in:posted | in:watching | in:tracking | in:private |
in:bookmarks | in:first | |||
posts_count:num | min_age:days | max_age:days | ||
+
+
+ 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: |
+ Bla bla bla
+ Bla bla bla
+ first_like: |
+ Bla bla bla
+ Bla bla bla
+ first_link: |
+ Bla bla bla
+ Bla bla bla
+ first_quote: |
+ Bla bla bla
+ Bla bla bla
+ first_share: |
+ Bla bla bla
+ Bla bla bla
+ read_guidelines: |
+ Bla bla bla
+ Bla bla bla
+ reader: |
+ Bla bla bla
+ Bla bla bla
+ editor: |
+ Bla bla bla
+ Bla bla bla
+ first_flag: "Flagowanie jest bardzo ważne dla twojego forum. Jeżeli zauważysz jakieś posty, które potrzebują moderacji\nnie wahaj się, aby je oflagować. Możesz użyć też okna do flagowania, aby wysłać wiadomość do użytkowników, jak osiągniesz\n1. poziom zaufania. \n"
+ nice_share: |+
+ Bla bla bla
+ Bla bla bla
+
+ welcome: |
+ Bla bla bla
+ Bla bla bla
+ anniversary: |
+ Bla bla bla
+ Bla bla bla
+ good_share: |
+ Bla bla bla
+ Bla bla bla
+ great_share: |
+ Bla bla bla
+ Bla bla bla
+ nice_post: |
+ Bla bla bla
+ Bla bla bla
+ nice_topic: |
+ Bla bla bla
+ Bla bla bla
+ good_post: |
+ Bla bla bla
+ Bla bla bla
+ good_topic: |
+ Bla bla bla
+ Bla bla bla
+ great_post: |
+ Bla bla bla
+ Bla bla bla
+ great_topic: |
+ Bla bla bla
+ Bla bla bla
+ basic: |
+ Bla bla bla
+ Bla bla bla
+ member: |+
+ Bla bla bla
+ Bla bla bla
+
+ regular: |
+ Bla bla bla
+ Bla bla bla
+ leader: |
+ Bla bla bla
+ Bla bla bla
+ admin_login:
+ success: "Email wysłany"
+ error: "Błąd!"
+ email_input: "Email administratora. "
+ submit_button: "Wyślij Email. "
+ discourse_hub:
+ access_token_problem: "Powiedz administratorowi tej witryny: Zaktualizuj na poprawne ustawienia discourse_org_access_key."
+ performance_report:
+ initial_post_raw: 'Ten temat zawiera codzienne raporty wydajności dla twojej witryny. '
+ initial_topic_title: 'Testy wydajności witryny. '
diff --git a/config/locales/server.pt.yml b/config/locales/server.pt.yml
index 51b153d192..1307537756 100644
--- a/config/locales/server.pt.yml
+++ b/config/locales/server.pt.yml
@@ -383,7 +383,7 @@ pt:
one: "há quase 1 ano atrás"
other: "há quase %{count} anos atrás"
password_reset:
- no_token: "Desculpe, essa hiperligação para mudar a palavra-passe é muito antiga. Inicie sessão novamente e selecione 'Esqueci a minha palavra-passe' para receber uma nova hiperligação."
+ no_token: "Desculpe, essa hiperligação para mudar a palavra-passe é muito antiga. Selecione 'Esqueci a minha palavra-passe' para receber uma nova hiperligação."
choose_new: "Por favor escolha uma nova palavra-passe"
choose: "Por favor escolha uma palavra-passe"
update: 'Atualizar Palavra-passe'
@@ -596,6 +596,14 @@ pt:
title: "Total"
xaxis: "Dia"
yaxis: "Total de pedidos"
+ time_to_first_response:
+ title: "Tempo para a próxima resposta"
+ xaxis: "Dia"
+ yaxis: "Tempo médio (horas)"
+ topics_with_no_response:
+ title: "Tópicos sem resposta"
+ xaxis: "Dia"
+ yaxis: "Total"
dashboard:
rails_env_warning: "O seu servidor está a executar em modo %{env}."
ruby_version_warning: "Está a utilizar uma versão do Ruby 2.0.0 que é conhecida por ter alguns problemas. Por favor atualize para o nível 247 ou posterior."
@@ -686,6 +694,7 @@ pt:
category_featured_topics: "Número de tópicos visíveis por categoria na página de /categorias. Após a alteração deste valor, irá demorar até 15 minutos para que a página de categorias fique atualizada."
show_subcategory_list: "Mostrar lista de subcategorias em vez de lista de tópicos quando inserida uma categoria."
fixed_category_positions: "Se estiver marcado, irá conseguir organizar as categorias por uma ordem fixa. Se não estiver marcado, as categorias são listadas por ordem de actividade."
+ fixed_category_positions_on_create: "Se marcado, a ordenação de categorias irá ser mantida no diálogo de criação do tópico (requere fixed_category_positions)"
add_rel_nofollow_to_user_content: "Adicionar a etiqueta rel nofollow em todos os conteúdos submetidos pelo utilizador, excepto para hiperligações internas (incluindo domínios pai). Se mudar isto, terá que atualizar todas as suas mensagens com: \"rake posts:rebake\""
exclude_rel_nofollow_domains: "Uma lista de domínios em que nofollow não deve ser adicionado a linkls.tld.com irá permitir automaticamente sub.tld.com. Como mínimo, deve adicionar o domínio de alto nível deste sítio para ajudar os rastreadores da internet a encontrarem todo o conteúdo. Se outras partes do seu sítio estão em outros domínicios, adicione-os também."
post_excerpt_maxlength: "Tamanho máximo do excerto/sumário de uma mensagem."
@@ -953,12 +962,14 @@ pt:
sequential_replies_threshold: "Número de mensagens que um utilizador tem que fazer em linha num tópico antes de ser relembrado acerca de demasiadas respostas sequenciais."
enable_mobile_theme: "Os dispositivos móveis usam um tema mobile-friendly, com a possibilidade de mudar para o sítio completo. Desative isto se quer usar um estilo personalizado que é totalmente responsivo."
dominating_topic_minimum_percent: "Que percentagem de mensagens um utilizador tem que fazer num tópico antes de ser relembrado sobre dominar demasiado um tópico."
+ daily_performance_report: "Analise os logs diários NGINX e publique um tópico visível apenas para o pessoal com detalhes"
suppress_uncategorized_badge: "Não mostrar distintivos para tópicos sem categoria nas listagens de tópicos."
global_notice: "Exibir um banner global URGENTE, EMERGÊNCIA a todos os visitantes, mudar para branco para esconder (HTML permitido)."
disable_edit_notifications: "Desativa notificações de edição do sistema quando 'download_remote_images_to_local' está ativo."
full_name_required: "O nome completo é um campo obrigatório no perfil de utilizador."
enable_names: "Mostrar o nome completo do utilizador no seu perfil, cartão de utilizador, e emails. Desativar para esconder o nome completo em todos os locais."
display_name_on_posts: "Mostrar o nome completo de um utilizador nas suas mensagens em adição ao seu @nome-de-utilizador."
+ show_time_gap_days: "Se duas mensagens são feitas com todos estes dias de diferença, exibir a diferença de tempo no tópico."
invites_per_page: "Convites por defeito exibidos na página do utilizador."
short_progress_text_threshold: "Após o número de mensagens num tópico passar acima deste número, a barra de progresso irá apenas mostrar o número da mensagem atual. Se alterar a largura da barra de progresso, poderá ter que mudar este valor."
default_code_lang: "Linguagem de programação por defeito a aplicar no destaque da sintaxe em blocos de código GitHub (lang-auto, ruby, python, etc.)"
@@ -987,6 +998,7 @@ pt:
enforce_square_emoji: "Forçar uma relação de aspecto quadrado para todos os emojis."
approve_post_count: "A quantidade de mensagens de um novo utilizador que devem ser aprovadas"
approve_unless_trust_level: "Mensagens para utilizadores abaixo deste nível de confiança devem ser aprovados"
+ notify_about_queued_posts_after: "Se não houver mensagens que estiveram à espera de revisão por mais do que estas horas, um email será enviado para o email de contacto. Configure para 0 para desativar estes emails."
errors:
invalid_email: "Endereço de email inválido."
invalid_username: "Não existe nenhum utilizador com esse nome de utilizador."
@@ -1173,6 +1185,14 @@ pt:
subject_template:
one: "1 sinalização à espera de ser tratada"
other: "%{count} sinalizações à espera de serem tratadas"
+ queued_posts_reminder:
+ subject_template:
+ one: "[%{site_name}] 1 mensagem à espera de revisão"
+ other: "[%{site_name}] %{count} mensagens à espera de revisão"
+ text_body_template: |
+ Olá,
+
+ Existem mensagens de novos utilizadores que estão à espera de revisão. [Podem ser aprovadas ou rejeitadas aqui](%{base_url}/queued-posts).
flag_reasons:
off_topic: "A sua mensagem foi marcada como **fora do contexto**: a comunidade sente que não se enquadra neste tópico, conforme o seu título e a sua primeira mensagem."
inappropriate: "A sua mensagem foi sinalizada como **inapropriada**: a comunidade sente que é ofensiva, abusiva ou que é uma violação das nossas [diretrizes da comunidade](/guidelines)."
@@ -1184,16 +1204,16 @@ pt:
disagreed: "Obrigado por nos informar. Estamos a analisá-lo."
deferred: "Obrigado por nos informar. Estamos a analisá-lo."
deferred_and_deleted: "Obrigado por nos informar. Removemos a mensagem."
- temporarily_closed_due_to_flags: "O tópico está temporariamente fechado devido a um grande número de sinalizações da comunidade."
+ temporarily_closed_due_to_flags: "Este tópico está fechado temporariamente devido a um grande número de bandeiras da comunidade. "
system_messages:
post_hidden:
subject_template: "Mensagem oculta devido a sinalizações da comunidade"
text_body_template: "Olá,\n\nEsta é uma mensagem automática de %{site_name} para informá-lo que a sua mensagem foi oculta. \n\n%{base_url}%{url} \n\n%{flag_reason}\n\nMúltiplos membros da comunidade sinalizaram esta mensagem antes de ser escondida, por isso considere como poderá rever a sua mensagem para refletir o seu feedback. **Pode editar a sua mensagem após %{edit_delay} minutos, e esta será automaticamente exibida.**\n\nContudo, se a mensagem for escondida pela comunidade uma segunda vez, irá manter-se escondida até ser tratada pelo pessoal – e poderão ainda ocorrer ações, incluindo uma possível suspensão da sua conta.\n\nPara orientação adicional, por favor consulte as [diretrizes da comunidade](%{base_url}/guidelines).\n"
usage_tips:
- text_body_template: "Aqui ficam algumas dicas para que possa começar: \n\n## Leitura \n\nPara ler mais, **simplesmente continue a arrastar para baixo!** \n\nÀ medida que novas mensagens ou novos tópicos vão surgindo, estes irão surgir automaticamente – não é necessário atualizar a página. \n\n## Navegação \n\n- Para pesquisar, a sua página de utilizador, ou o menu ☰, utilize **o ícone no canto superior direito**. \n\n- Selecionar o título de um tópico irá levá-lo sempre à **próxima mensagem não lida** no tópico. Para inserir no início ou no final, selecione a contagem de respostas ou a data da última resposta.\n\n
\n\n- Ao ler um tópico, selecione a barra de progresso no canto inferior direito para controlos de navegação completos. Salte rapidamente para o topo ao selecionar o título do tópico. Pressione ? para uma lista rápida de atalhos do teclado. \n\n
\n\n## Responder \n\n- Para responder ao **tópico em geral**, utilize
no final de cada tópico. \n\n- Para responder a uma **pessoa específica**, utilize
nas suas mensagens. \n\n- Para responder com um **novo tópico**, utilize
à direita desta mensagem. Tanto os tópicos antigos como os novos serão ligados automaticamente.\n\nPara inserir uma citação, selecione o texto que deseja citar, e de seguida pressione qualquer botão de Resposta. Repita para múltiplas citações!\n
\n\nPara notificar alguém da sua resposta, mencione o seu nome. Digite `@` para começar a selecionar um nome de utilizador.\n\n
\n\nPara utilizar [Emoji padrão](http://www.emoji.codes/), simplesmente digite `:` para encontrar por nome, ou os tradicionais risonhos `;)` \n\n
\n\n## Ações \n\nExistem botões de ação no final de cada mensagem. \n\n<
\n\nPara deixar alguém saber que gostou e apreciou as suas mensagens, utilize o botão **gosto**. Partilhe o amor!\n\nSe vir um problema com uma mensagem de alguém, avise a pessoa em privado, ou avise [o nosso pessoal](/about) sobre a mesma utilizando o botão **sinalizar**. Pode também **partilhar** uma hiperligação para uma mensagem, ou **marcá-la** para mais tarde ter a referência na sua página de utilizador. \n\n## Notificações \n\nQuando alguém responde à sua mensagem, cita a sua mensagem\
- \ ou menciona o seu `@nome-de-utilizador`, um número irá aparecer imediatamente no canto superior direito na página. Utilize-o para aceder às suas **notificações**. \n\n
\n\nNão se preocupe em falhar uma resposta – irá receber notificações por email que chegam quando está ausente. \n\n## As Suas Preferências \n\n- Todos os tópicos com menos de **dois dias** são considerados novos.\n\n- Qualquer tópico em que tenha **participado ativamente** (respondido, criado, ou lido por um extenso período) será acompanhado automaticamente.\n\n Verá o indicador numérico e o indicador azul (novo) junto desses tópicos: \n\n
\n\nPode alterar as suas notificações para qualquer tópico através do controlo de notificaçõesno final do tópico \n\n
\n\nPode também alterar as configurações de estados de notificação por categoria, se quer observar cada novo tópico numa categoria específica.\n\nPara alterar qualquer uma destas configurações, consulte [as suas preferências] (%{base_url}/my/preferences). \n\n##Confiança da Comunidade \n\nÀ medida que for participando, irá ganhar confiança por parte da comunidade, tornar-se um cidadão completo e limitações de novos utilizadores serão automaticamente removidas.\
- \ Com um [nível de confiança] suficientemente alto (https://meta.discourse.org/t/what-do-user-trust-levels-do/4924), irá ganhar novas capacidades para ajudar-nos a gerir a comunidade em conjunto.\n"
+ text_body_template: "Aqui ficam algumas dicas para que possa começar: \n\n## Leitura \n\nPara ler mais, **simplesmente continue a arrastar para baixo!**\n\nÀ medida que novas mensagens ou novos tópicos vão surgindo, estes irão surgir automaticamente – não é necessário atualizar a página. \n\n## Navegação \n\n- Para pesquisar, a sua página de utilizador, ou o menu ☰, utilize **o ícone no canto superior direito**. \n\n- Selecionar o título de um tópico irá levá-lo sempre à **próxima mensagem não lida** no tópico. Para inserir no início ou no final, selecione a contagem de respostas ou alternativamente, a data da última resposta. \n\n
\n\n- Ao ler um tópico, selecione a barra de progresso no canto inferior direito para controlos de navegação completos. Salte rapidamente para o topo ao selecionar o título do tópico. Pressione ? para uma lista rápida de atalhos do teclado. \n\n
\n\n## Responder \n\n– Para responder ao **tópico em geral**, utilize
no final de cada tópico. \n\n- Para responder a uma **pessoa específica**, utilize
nas suas mensagens. \n\n- Para\
+ \ responder com um **novo tópico**, utilize
à direita desta mensagem. Tanto os tópicos antigos como os novos serão ligados automaticamente.\n\nPara inserir uma citação, selecione o texto que deseja citar, e de seguida pressione qualquer botão de Resposta. Repetir para múltiplas citações! \n\n
\n\nPara notificar alguém da sua resposta, mencione o seu nome. Digite `@` para começar a selecionar um nome de utilizador. \n\n
\n\t\nPara utilizar [Emoji padrão](http://www.emoji.codes/), simplesmente digite `:` para encontrar por nome, ou os tradicionais risonhos `;)`\n\n
\n\n## Ações\n\nExistem botões de ação no final de cada mensagem. \n\n
\n\nPara deixar alguém saber que gostou e apreciou as suas mensagens, utilize o botão **gosto**. Partilhe o amor! \n\nSe vir um problema com uma mensagem de alguém, avise a pessoa em privado, ou avise [o nosso pessoal](%{base_url}/about), sobre a mesma utilizando o botão **sinalizar**. Pode também **partilhar** uma hiperligação para uma\
+ \ mensagem, ou **marcá-la** para mais tarde ter a referência na sua página de utilizador. \n\n## Notificações\n\nQuando alguém lhe responde, cita a sua mensagem ou menciona o seu `@nome-de-utilizador`, um número irá aparecer imediatamente no canto superior direito na página. Utilize-o para aceder às suas **notificações**. \n
\n\nNão se preocupe em falhar uma resposta – irá receber notificações por email que chegamquando está ausente. \n\n## As Suas Preferências \n\n- Todos os tópicos com menos de **dois dias** são considerados novos. \n\n- Qualquer tópico em que tenha **participado ativamente** (respondido, criado, ou lido por um extenso período) será acompanhado automaticamente. \n\nVerá o indicador numérico e o indicador azul (novo) junto desses tópicos: \n\n
\n\nPode alterar as suas notificações para qualquer tópico através do controlo de notificações no final do tópico \n\n
\n\nPode também alterar as configurações de estados de notificação por categoria, se quer observar cada novo tópico numa categoria específica.\n\nPara alterar qualquer uma destas configurações, consulte [as suas preferências] (%{base_url}/my/preferences). \n\n##Confiança\
+ \ da Comunidade \n\nÀ medida que for participando, irá ganhar confiança por parte da comunidade, tornar-se um cidadão completo e limitações de novos utilizadores serão automaticamente removidas. Com um [nível de confiança] suficientemente alto (https://meta.discourse.org/t/what-do-user-trust-levels-do/4924), irá ganhar novas capacidades para ajudar-nos a gerir a comunidade em conjunto.\n"
welcome_user:
subject_template: "Bem-vindo a %{site_name}!"
text_body_template: |
@@ -1230,7 +1250,7 @@ pt:
[prefs]: %{user_preferences_url}
backup_succeeded:
subject_template: "Cópia de segurança completa corretamente"
- text_body_template: "A cópia de segurança foi feita corretamente.\nVisite a [admin > secção de cópias de segurança](/admin/backups) para descarregar a sua nova cópia de segurança."
+ text_body_template: "A cópia de segurança foi bem-sucedida.\nVisite [admin > secção de cópias de segurança](%{base_url}/admin/backups) para descarregar a sua nova cópia de segurança."
backup_failed:
subject_template: "A cópia de segurança falhou"
text_body_template: |
@@ -1752,7 +1772,7 @@ pt:
@@ -1761,15 +1781,15 @@ pt:
order:views | order:latest | |||
status:open | status:closed | status:archived | status:noreplies | status:singleuser |
status:open | status:closed | status:archived | status:noreplies | status:single_user |
category:foo | user:foo | |||
in:likes | in:posted | in:watching | in:tracking | in:private |
in:bookmarks | ||||
in:bookmarks | in:first | |||
posts_count:num | min_age:days | max_age:days | ||
- rainbows category:parks status:open order:latest
- irá retornar uma pesquisa por tópicos que contém a palavra "rainbows" na categoria "parks" que não estão fechados ou arquivados, ordenados pela data da última mensagem.
+ rainbows category:parks status:open order:latest irá retornar uma pesquisa por tópicos que contém a palavra "rainbows" na categoria "parks" que não estão fechados ou arquivados, ordenados pela data da última mensagem.
badges: long_descriptions: @@ -1853,3 +1873,6 @@ pt: submit_button: "Enviar Email" discourse_hub: access_token_problem: "Dizer a um administrador: Por favor atualize as configurações do sítio para incluir a discourse_org_access_key correta." + performance_report: + initial_post_raw: Este tópico inclui relatórios diários de desempenho para o seu sítio. + initial_topic_title: Relatórios de desempenho do sítio diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index 29473bc707..3e36d1e7f7 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -143,6 +143,7 @@ ru: rss_description: latest: "Последние темы" hot: "Популярные темы" + posts: "Последние сообщения" too_late_to_edit: "Это сообщение нельзя изменить или удалить, т.к. оно было создано очень давно." excerpt_image: "изображение" queue: @@ -317,62 +318,62 @@ ru: other: "%{count} секунд" datetime: distance_in_words: - half_a_minute: "< 1мин" + half_a_minute: "< 1 мин" less_than_x_seconds: - one: "< 1с" - few: "< %{count}с" - many: "< %{count}с" - other: "< %{count}с" + one: "< 1 сек" + few: "< %{count} сек" + many: "< %{count} сек" + other: "< %{count} сек" x_seconds: - one: "1с" - few: "%{count}с" - many: "%{count}с" - other: "%{count}с" + one: "1 сек" + few: "%{count} сек" + many: "%{count} сек" + other: "%{count} сек" less_than_x_minutes: - one: "< 1м" - few: "< %{count}м" - many: "< %{count}м" - other: "< %{count}м" + one: "< 1 мин" + few: "< %{count} мин" + many: "< %{count} мин" + other: "< %{count} мин" x_minutes: - one: "1м" - few: "%{count}м" - many: "%{count}м" - other: "%{count}м" + one: "1 мин" + few: "%{count} мин" + many: "%{count} мин" + other: "%{count} мин" about_x_hours: - one: "1ч" - few: "%{count}ч" - many: "%{count}ч" - other: "%{count}ч" + one: "1 ч" + few: "%{count} ч" + many: "%{count} ч" + other: "%{count} ч" x_days: - one: "1д" - few: "%{count}д" - many: "%{count}д" - other: "%{count}д" + one: "1 дн" + few: "%{count} дн" + many: "%{count} дн" + other: "%{count} дн" about_x_months: - one: "1мес" - few: "%{count}мес" - many: "%{count}мес" - other: "%{count}мес" + one: "1 мес" + few: "%{count} мес" + many: "%{count} мес" + other: "%{count} мес" x_months: - one: "1мес" - few: "%{count}мес" - many: "%{count}мес" - other: "%{count}мес" + one: "1 мес" + few: "%{count} мес" + many: "%{count} мес" + other: "%{count} мес" about_x_years: - one: "1г" - few: "1г" - many: "%{count}г" - other: "%{count}г" + one: "1 год" + few: "%{count} года" + many: "%{count} лет" + other: "%{count} лет" over_x_years: - one: "> 1г" - few: "> 1г" - many: "> %{count}г" - other: "> %{count}г" + one: "> 1 года" + few: "> %{count} года" + many: "> %{count} лет" + other: "> %{count} лет" almost_x_years: - one: "1г" - few: "1г" - many: "%{count}г" - other: "%{count}г" + one: "1 год" + few: "%{count} года" + many: "%{count} лет" + other: "%{count} лет" distance_in_words_verbose: half_a_minute: "только что" less_than_x_seconds: @@ -381,13 +382,13 @@ ru: many: "только что" other: "только что" x_seconds: - one: "1 секунда назад" - few: "1 секунда назад" + one: "1 секунду назад" + few: "%{count} секунды назад" many: "%{count} секунд назад" other: "%{count} секунд назад" less_than_x_minutes: one: "менее 1 минуты назад" - few: "менее %{count} минуты назад" + few: "менее %{count} минут назад" many: "менее %{count} минут назад" other: "менее %{count} минут назад" x_minutes: @@ -402,17 +403,17 @@ ru: other: "%{count} часов назад" x_days: one: "1 день назад" - few: "1 день назад" - many: "%{count} дня назад" - other: "%{count} дня назад" + few: "%{count} дня назад" + many: "%{count} дней назад" + other: "%{count} дней назад" about_x_months: one: "около 1 месяца назад" - few: "около 1 месяца назад" + few: "около %{count} месяцев назад" many: "около %{count} месяцев назад" other: "около %{count} месяцев назад" x_months: one: "1 месяц назад" - few: "1 месяц назад" + few: "%{count} месяца назад" many: "%{count} месяцев назад" other: "%{count} месяцев назад" about_x_years: @@ -431,9 +432,9 @@ ru: many: "почти %{count} лет назад" other: "почти %{count} лет назад" password_reset: - no_token: "К сожалению данная ссылка на изменение пароля устарела. Нажмите на Вход, затем выберите \"Я забыл мой пароль\" для получения новой ссылки для восстановления пароля." - choose_new: "Пожалуйста, введите новый пароль" - choose: "Пожалуйста, выберите пароль" + no_token: "К сожалению, данная ссылка на восстановление пароля устарела. Чтобы получить новую ссылку, нажмите на кнопку \"Вход\", затем \"Я забыл мой пароль\"." + choose_new: "Придумайте новый пароль" + choose: "Придумайте пароль" update: 'Обновить пароль' save: 'Установить пароль' title: 'Сбросить пароль' @@ -530,119 +531,127 @@ ru: description: "Вы снова подписаны на рассылку." reports: visits: - title: "Посещения пользователей" - xaxis: "День" + title: "Визиты форумчан" + xaxis: "Дата" yaxis: "Количество визитов" signups: - title: "Новые пользователи" - xaxis: "День" - yaxis: "Количество новых пользователей" + title: "Регистрации" + xaxis: "Дата" + yaxis: "Количество регистраций" topics: - title: "Новые темы" - xaxis: "День" + title: "Темы" + xaxis: "Дата" yaxis: "Количество новых тем" posts: title: "Сообщения" - xaxis: "День" + xaxis: "Дата" yaxis: "Количество новых сообщений" likes: title: "Симпатии" - xaxis: "День" - yaxis: "Количество новых симпатий" + xaxis: "Дата" + yaxis: "Количество выраженных симпатий" flags: title: "Жалобы" - xaxis: "День" - yaxis: "Количество жалоб" + xaxis: "Дата" + yaxis: "Количество поданных жалоб" bookmarks: title: "Закладки" - xaxis: "День" + xaxis: "Дата" yaxis: "Количество новых закладок" starred: - title: "Отмечено" - xaxis: "День" - yaxis: "Количество отмеченных тем" + title: "Избранное" + xaxis: "Дата" + yaxis: "Тем добавлено в избранное" users_by_trust_level: - title: "Пользователей по уровню доверия" + title: "Пользователи по уровню доверия" xaxis: "Уровень доверия" yaxis: "Количество пользователей" emails: title: "Электронные письма" - xaxis: "День" - yaxis: "Количество электронных сообщений" + xaxis: "Дата" + yaxis: "Количество электронных писем" user_to_user_private_messages: title: "Личные сообщения" - xaxis: "День" + xaxis: "Дата" yaxis: "Количество сообщений" system_private_messages: title: "Системные сообщения" - xaxis: "День" + xaxis: "Дата" yaxis: "Количество сообщений" moderator_warning_private_messages: title: "Предупреждения модераторов" - xaxis: "День" - yaxis: "Количество сообщений" + xaxis: "Дата" + yaxis: "Количество предупреждений" notify_moderators_private_messages: - title: "Оповещений модераторам" - xaxis: "День" - yaxis: "Количество сообщений" + title: "Жалобы модераторам" + xaxis: "Дата" + yaxis: "Количество жалоб" notify_user_private_messages: - title: "Оповещение пользователю" + title: "Жалобы пользователям" xaxis: "День" - yaxis: "Количество сообщений" + yaxis: "Количество жалоб" top_referrers: - title: "Топ ссылающихся" + title: "Топ распространителей" xaxis: "Пользователь" - num_clicks: "Переходов" + num_clicks: "Заходов" num_topics: "Тем" top_traffic_sources: - title: "Топ источников траффика" + title: "Топ источников трафика" xaxis: "Домен" num_clicks: "Переходов" num_topics: "Тем" - num_users: "Количество пользователей" + num_users: "Пользователей" top_referred_topics: - title: "Топ ссылающихся тем" + title: "Топ тем, на которые ссылаются" xaxis: "Тема" - num_clicks: "Переходов" + num_clicks: "Заходов" page_view_anon_reqs: title: "Анонимы" xaxis: "Дата" - yaxis: "Анонимные запросы API" + yaxis: "Анонимные API запросы" page_view_logged_in_reqs: - title: "Пользователи" + title: "Форумчане" xaxis: "Дата" - yaxis: "Авторизованные запросы API" + yaxis: "Авторизованные API запросы" page_view_crawler_reqs: title: "Поисковики" xaxis: "Дата" - yaxis: "Запросы API поисковиков и кравлеров" + yaxis: "API запросы поисковиков" page_view_total_reqs: title: "Всего" xaxis: "Дата" - yaxis: "Всего запросов API" + yaxis: "Всего API запросов" http_background_reqs: title: "Фоновые" xaxis: "Дата" - yaxis: "Просмотров" + yaxis: "Запросы для обновлений в режиме реального времени" http_2xx_reqs: - title: "Статус 2xx (OK)" + title: "HTTP 2xx (OK)" xaxis: "Дата" - yaxis: "Запросов" + yaxis: "Успешные запросы (статус 2xx)" http_3xx_reqs: - title: "HTTP 3xx (Переадресация)" - xaxis: "День" - yaxis: "Переадресация (статус 3xx)" + title: "HTTP 3xx (переадресация)" + xaxis: "Дата" + yaxis: "Запросы с переадресацией (статус 3xx)" http_4xx_reqs: title: "HTTP 4xx (ошибка клиента)" - xaxis: "День" - yaxis: "Ошибки клиента (статус 4xx)" + xaxis: "Дата" + yaxis: "Запросы с ошибкой клиента (статус 4xx)" http_5xx_reqs: title: "HTTP 5xx (ошибка сервера)" - xaxis: "День" - yaxis: "Ошибки сервера (статус 5xx)" + xaxis: "Дата" + yaxis: "Запросы с ошибкой сервера (статус 5xx)" http_total_reqs: title: "Всего" - xaxis: "День" + xaxis: "Дата" + yaxis: "Всего" + time_to_first_response: + title: "Время до первого ответа" + xaxis: "Дата" + yaxis: "Среднее время, часов" + topics_with_no_response: + title: "Темы без ответов" + xaxis: "Дата" yaxis: "Всего" dashboard: rails_env_warning: "Ваш сервер работает в режиме %{env}." @@ -927,6 +936,9 @@ ru: 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: "Колличество часов по истечению которого, пометка о редактировании данного поста будет сильно подсвечена. " @@ -1252,35 +1264,31 @@ ru: new_version_mailer: subject_template: "[%{site_name}] Ихууу, доступна новая версия Discourse!" text_body_template: | - Доступна новая версия [Discourse](http://www.discourse.org). + Доступна новая версия [движка вашего форума](http://www.discourse.org). - Установленная версия: %{installed_version} + Ваша версия: %{installed_version} Новая версия: **%{new_version}** - Что дальше: + - Узнать, что нового (на английском) - на сайте [GitHub changelog](https://github.com/discourse/discourse/commits/master). - - Узнать, что нового в [GitHub](https://github.com/discourse/discourse/commits/master). + - Обновить движок прямо из браузера - по ссылке [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade). - - Запустить обновление. Для этого перейдите по ссылке [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade) и нажмите на кнопку "Обновить". - - - Посетить сайт англоязычного сообщества Discourse [meta.discourse.org](http://meta.discourse.org), чтобы узнать о новостях, почитать интересные дискуссии или спросить о помощи или совете. + - Посетить сайт [англоязычного сообщества Discourse](http://meta.discourse.org), где можно почитать новости и задать вопросы. new_version_mailer_with_notes: subject_template: "[%{site_name}] новые обновления" text_body_template: | - Доступна новая версия [Discourse](http://www.discourse.org). + Доступна новая версия [движка вашего форума](http://www.discourse.org). - Установленная версия: %{installed_version} + Ваша версия: %{installed_version} Новая версия: **%{new_version}** - Что дальше: + - Узнать, что нового (на английском) - на сайте [GitHub changelog](https://github.com/discourse/discourse/commits/master). - - Узнать, что нового в [GitHub](https://github.com/discourse/discourse/commits/master). + - Обновить движок прямо из браузера - по ссылке [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade). - - Запустить обновление. Для этого перейдите по ссылке [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade) и нажмите на кнопку "Обновить". + - Посетить сайт [англоязычного сообщества Discourse](http://meta.discourse.org), где можно почитать новости и задать вопросы. - - Посетить сайт англоязычного сообщества Discourse [meta.discourse.org](http://meta.discourse.org), чтобы узнать о новостях, почитать интересные дискуссии или спросить о помощи или совете. - - ### Release notes + ### Что новенького %{notes} flags_reminder: @@ -1297,6 +1305,16 @@ ru: few: "%{count} жалобы ожидают рассмотрения" many: "%{count} жалоб ожидают рассмотрения" other: "%{count} жалоб ожидают рассмотрения" + queued_posts_reminder: + subject_template: + one: "[%{site_name}] 1 сообщение ожидает проверки" + few: "[%{site_name}] %{count} сообщения ожидают проверки" + many: "[%{site_name}] %{count} сообщений ожидают проверки" + other: "[%{site_name}] %{count} сообщений ожидают проверки" + text_body_template: | + Привет, + + Поступили новые сообщения, требующие проверки. [Проверку можно выполнить тут](%{base_url}/queued-posts). flag_reasons: off_topic: "Сообщество считает, что ваше сообщение **не относится к теме**, учитывая ее заголовок и первое сообщение." inappropriate: "Сообщество считает ваше сообщение **неприемлемым**, т.е. оскорбительным, непристойным или нурашающим [кодекс чести](/guidelines)." @@ -1308,7 +1326,7 @@ ru: disagreed: "Спасибо за информацию. Уже рассматриваем." deferred: "Спасибо за информацию. Уже рассматриваем." deferred_and_deleted: "Спасибо за информацию. Сообщение удалено." - temporarily_closed_due_to_flags: "Эта тема временно закрыта из-за большого количества жалоб" + temporarily_closed_due_to_flags: "Эта тема временно закрыта из-за большого количества жалоб." system_messages: post_hidden: subject_template: "Сообщение скрыто по причине поступления множественных жалоб" @@ -1364,7 +1382,7 @@ ru: [prefs]: %{user_preferences_url} backup_succeeded: subject_template: "Резервное копирование успешно завершено" - text_body_template: "Резервная копия создана.\nПерейдите в [Админку > Резервные копии](/admin/backups), чтобы скачать её." + text_body_template: "Резервная копия создана.\nПерейдите в [Админку > Резервные копии](%{base_url}/admin/backups), чтобы её скачать." backup_failed: subject_template: "Резервное копирование не удалось" text_body_template: | @@ -1430,8 +1448,18 @@ ru: Попробуйте отправить с другого почтового ящика, или, если вы считаете, что произошла ошибка, свяжитесь с персоналом - модератором или администратором. email_reject_empty: subject_template: "[%{site_name}] Неполадки с письмом - отсутствует текст" + text_body_template: | + К сожалению, ваше письмо к %{destination} с заголовком %{former_title} не может быть обработано. + + Система не смогла обнаружить тект сообщения в теле письма. Советуем убедится в том, что вы написали желаемый текст в самом верху письма. + + Если ошибка все равно осталась, но вы уверены, что составили письмо верно, проверьте, чтобы в письме были и текстовая, и HTML весрии текста. email_reject_parsing: subject_template: "[%{site_name}] Неполадки с письмом - Недопустимый контент." + text_body_template: | + К сожалению, ваше письмо к %{destination} с заголовком %{former_title} не может быть обработано. + + Система не смогла обнаружить тект сообщения в теле письма. Советуем убедится в том, что вы написали желаемый текст **в самом верху письма**. email_reject_invalid_access: subject_template: "[%{site_name}] Системное сообщение -- Доступ запрещен" text_body_template: | @@ -1473,10 +1501,24 @@ ru: Мы не смогли найти адресата. Убедитесь что адресат указан в поле To: (а не в Cc: или Bcc:), и то что имейл указа верно. email_reject_topic_not_found: subject_template: "[%{site_name}] Системное сообщение -- Тема не найдена" + text_body_template: | + К сожалению, ваше письмо к %{destination} с заголовком %{former_title} не может быть обработано. + + Тема, в которую вы пишите, не существует. Возможно, она была удалена. Если вы считаете, что произошла ошибка при обработке письма, обратитесь к модератору или администратору. email_reject_topic_closed: subject_template: "[%{site_name}] Неполадки с письмом - Топик закрыт" + text_body_template: | + К сожалению, ваше письмо к %{destination} с заголовком %{former_title} не может быть обработано. + + Тема, в которую вы пишите, была закрыта, и поэтому новые сообщения не разрешены. Если вы считаете, что произошла ошибка при обработке письма, обратитесь к модератору или администратору. email_reject_auto_generated: subject_template: "[%{site_name}] системное сообщение - Автоматически сгенерирован ответ" + text_body_template: | + К сожалению, ваше письмо к %{destination} с заголовком %{former_title} не может быть обработано. + + Система обнаружила, что оно было сгенерировано автоматически, а такие письма не допустимы для автоматической отправки сообщений в форуме через электронную почту. + + Если вы считаете, что произошла ошибка при обработке письма, обратитесь к модератору или администратору. email_error_notification: subject_template: "[%{site_name}] Системное сообщение -- ошибка POP аутентификации" text_body_template: | @@ -1964,23 +2006,24 @@ ru:
-
+
-
order:views | order:latest | |||
status:open | status:closed | status:archived | status:noreplies | status:singleuser |
category:foo | user:foo | |||
in:likes | in:posted | in:watching | in:tracking | in:private |
in:bookmarks | ||||
+
order:views | order:latest | |||
status:open | status:closed | status:archived | status:noreplies | status:single_user |
category:foo | user:foo | |||
in:likes | in:posted | in:watching | in:tracking | in:private |
in:bookmarks | in:first | |||
posts_count:num | min_age:days | max_age:days | ||
- rainbows category:parks status:open order:latest будет искать в открытых темах, не из архива, с содержанием слова "rainbows" в категории "parks" и отсортирует результаты по дате последнего сообщенияt.
+ Пример: радуга category:парки status:open order:latest. Такой поиск выдаст незакрытые и незаархивированные темы со словом "радуга", отсортированные по дате последнего сообщения.
badges: long_descriptions: @@ -2062,3 +2105,6 @@ ru: submit_button: "отправить письмо" discourse_hub: access_token_problem: "Пожалуйста, обновите настройки сайта, чтобы задать верный discourse_org_access_key." + performance_report: + initial_post_raw: Эта тема содержит ежедневные отчеты активности форума. + initial_topic_title: Отчеты активности форума diff --git a/config/locales/server.sv.yml b/config/locales/server.sv.yml index ab112f0e4f..b92ea32898 100644 --- a/config/locales/server.sv.yml +++ b/config/locales/server.sv.yml @@ -83,7 +83,7 @@ sv: other: "%{count} till svar" loading: "Laddar Discussion..." permalink: "Permalänk" - imported_from: "Detta är ett syskon diskussions ämne för det ursprungliga inlägget på %{link}" + imported_from: "Detta är ett kopplat diskussionsämne till det ursprungliga inlägget på %{link}" in_reply_to: "▶ %{username}" replies: one: "1 svar" @@ -119,16 +119,16 @@ sv: prev_page: "← föregående sida" page_num: "Sida %{num}" home_title: "Hem" - topics_in_category: "Trådar i kategorin '%{category}'" + topics_in_category: "Ämnen i kategorin '%{category}'" rss_posts_in_topic: "RSS-flöde för '%{topic}'" - rss_topics_in_category: "RSS-flöde för trådar i kategorin '%{category}'" + rss_topics_in_category: "RSS-flöde för ämnen i kategorin '%{category}'" author_wrote: "%{author} skrev:" num_posts: "Inlägg:" num_participants: "Deltagare" read_full_topic: "Läs hela ämnet" rss_description: - latest: "Senaste trådar" - hot: "Heta trådar" + latest: "Aktuella ämnen" + hot: "Heta ämnen" posts: "Senaste inläggen" too_late_to_edit: "Inlägget skapades för långt tillbaka i tiden. Det kan inte lägre redigeras eller tas bort." excerpt_image: "bild" @@ -159,9 +159,53 @@ sv: - Vem skulle kunna vara intresserad av detta? Varför är det viktigt? Vad för typ av svar förväntar du dig? - - Inkludera vanligt förekommande ord i din tråd så att andra kan *hitta* det. För att gruppera din tråd med relaterade trådar, välj en kategori. + - Inkludera vanligt förekommande ord i ditt ämne så att andra kan *hitta* det. För att gruppera ditt ämne med relaterade ämnen, välj en kategori. - För mer, [see our community guidelines](/guidelines). This panel will only appear for your first %{education_posts_text}. + För mer, [see our community guidelines](/guidelines). + new-reply: | + Välkommen till %{site_name} — **tack för att du bidrar!** + + - Bidrar ditt svar något till konversationen på något sätt? + + - Var snäll mot andra medlemmar. + + - Konstruktiv kritik välkomnas, men kritisera då *idéer* och inte personer. + + För mer, [läs våra riktlinjer](/guidelines). Detta meddelande syns enbart vid dina första %{education_posts_text}. + avatar: | + ### Vad sägs om en ny bild för ditt konto? + + Du har skapat några ämnen och postat några svar, men din profilbild är inte lika unik som dig - det är samma standardbild som alla nya användare får. + + Har du inte funderat på att **[besöka din användarprofil](%{profile_path})** och ladda upp ett eget foto som representerar dig? + + Det är lättare att följa diskussioner och hitta intressanta personer i konversationer när alla har en unik profilbild! + sequential_replies: | + ### Överväg att svara på flera inlägg på en och samma gång + + Istället för flera svar i följd till ett ämne, kan du överväga ett enda svar som innehåller citat från tidigare inlägg eller @namn-referenser. + + Du kan redigera ditt tidigare svar och lägga till ett citat genom att markera text och välja knappen citera som dyker upp. + + Det blir lättare för alla att läsa ämnen som har färre in-på-djupet-svar istället för flera små, individuella svar. + dominating_topic: | + ### Låt andra gå med i konversationen + + Detta ämne är uppenbarligen viktigt för dig – du har postat mer än %{percent}% av alla svar här. + + Är du säker på att du ger tillräckligt med tid till andra personer att också få dela med sig av deras synpunkt? + too_many_replies: | + ### Du har nått svarsgränsen för detta ämne + + Tyvärr, men nya användare är tillfälligt begränsade till %{newuser_max_replies_per_topic} svar i samma ämne. + + Istället för att lägga till ytterligare ett svar, vänligen överväg att redigera dina tidigare svar, eller besök andra ämnen. + reviving_old_topic: | + ### Återuppliva detta ämne? + + Senaste svaret i detta ämne är nu över %{days} dagar gammalt. Ditt svar kommer att lyfta upp ämnet till toppen av listan och notifiera alla tidigare involverade i ämnet. + + Är du säker på att du vill fortsätta denna gamla konversation? activerecord: attributes: category: @@ -201,7 +245,8 @@ sv: vip_category_description: "En kategori exklusiv för medlemmar med en pålitlighetsnivå av 3 eller högre." meta_category_description: "Diskussion om den här webbplatsen, dess organisation, hur den fungerar och hur vi kan förbättra den." staff_category_name: "Personal" - staff_category_description: "Privat kategori för personal diskussioner. Ämnen här är bara synliga till administratörer och moderatorer." + staff_category_description: "Privat kategori för personaldiskussioner. Ämnen är bara synliga för administratörer och moderatorer." + assets_topic_body: "Detta är ett permanent ämne, endast synligt för personal, med syfte att lagra bilder och filer som ska användas till webbplatsens design. Radera ej detta ämne!\n\n\nSå här fungerar det:\n\n\n1. Svara på detta ämne.\n2. Ladda upp alla bilder du vill använda som logotyp, favicon och så vidare här. (Använd verktygfältets uppladdningsikon i inläggsredigeraren, eller dra-och-släpp eller klistra in bilder)\n3. Skicka ditt svar för att posta det.\n4. Högerklicka på bilderna i ditt nya inlägg för att få sökvägen till de uppladdade bilderna, eller klicka på redigera-ikonen för att redigera inlägget och på så sätt hämta sökvägen till bilderna. Kopiera bildernas sökväg. \n5. Klistra in bildernas sökvägar i de [grundläggande inställningarna](/admin/site_settings/category/required).\n\n\nOm du behöver möjliggöra uppladdning av flera olika filtyper, redigera `authorized_extensions` i [inställningarna för filer](/admin/site_settings/category/files)." lounge_welcome: title: "Välkommen till loungen" category: @@ -315,13 +360,13 @@ sv: other: "nästan %{count} år sedan" password_reset: choose_new: "Var god välj ett nytt lösenord" - choose: "Var god välj ett nytt lösenord" + choose: "Var god välj ett lösenord" update: 'Uppdatera Lösenord' save: 'Välj lösenord' title: 'Återställ Lösenord' success: "Du har lyckats med att byta ditt lösenord och är nu inloggad." success_unapproved: "Du lyckades med att byta ditt lösenord." - continue: "Continue to %{site_name}" + continue: "Fortsätt till %{site_name}" change_email: confirmed: "Din e-post har uppdaterats." please_continue: "Fortsätt till %{site_name}" @@ -333,6 +378,7 @@ sv: continue_button: "Fortsätt till %{site_name}" welcome_to: "Välkommen till %{site_name}!" approval_required: "En moderator måste manuellt godkänna ditt nya konto innan du kan komma åt detta forum. Du kommer få ett mail när ditt konto har godkänts!" + missing_session: "Vi kan inte upptäcka om ditt konto skapades. Se till att ha cookies aktiverade." post_action_types: off_topic: title: 'Off-Topic' @@ -343,15 +389,19 @@ sv: description: 'Detta inlägg är en annons. Den bidrar inte till eller är inte relevant för det aktuella ämnet, utan är promotion.' long_form: 'flagga detta som spam' email_title: '"%{title}" flaggades som skräp' + email_body: "%{link}\n\n%{message}" inappropriate: title: 'Olämpligt' description: 'Detta inläggs innehåll är inkluderar saker som som en förnuftig person skulle betrakta som stötande, kränkande eller överträdelse av våra community riktlinjerr.' long_form: 'flagga detta som olämpligt' notify_user: title: 'Meddela @{{username}}' + description: 'Detta inlägg innehåller något som jag, direkt och privat, vill tala med denna person om. Detta ger ingen flagga.' email_title: 'Du postade i "%{title}"' email_body: "%{link}\n\n%{message}" notify_moderators: + title: "Övrigt" + description: 'Detta inlägg kräver en moderators uppmärksamhet av ett annat skäl än de som nämns ovan.' long_form: 'flaggade det här för granskning av moderator' email_title: 'Ett inlägg i "%{title}" kräver uppmärksamhet från en moderator' email_body: "%{link}\n\n%{message}" @@ -374,16 +424,30 @@ sv: long_form: 'flaggad som spam' inappropriate: title: 'Olämpligt' + description: 'Detta ämne har innehåll som en förnuftig person skulle anse som stötande, kränkande eller våldsamt gentemot våra riktlinjer.' long_form: 'flaggad som olämplig' notify_moderators: + title: "Annat" + description: 'Detta ämne kräver en moderators uppmärksamhet baserat på riktlinjerna, användarvillkoren, eller an annat skäl som inte nämns ovan.' long_form: 'flaggade det här för granskning av moderator' + email_title: 'Ämnet "%{title}" kräver moderators uppmärksamhet' + email_body: "%{link}\n\n%{message}" + flagging: + you_must_edit: '
Ditt inlägg blev flaggat av commynityn. Vänligen läs dina meddelanden.
' + user_must_edit: '
Detta inlägg blev flaggat av communityn och är dolt för tillfället.
' archetypes: regular: - title: "Vanlig Tråd" + title: "Vanligt ämne" + banner: + message: + make: "Detta ämne är nu en banner. Den dyker upp i toppen av alla sidor tills den blir avfärdad av användaren." + remove: "Detta ämne är inte längre en banner. Den kommer inte att dyka upp i toppen av varje sida." unsubscribed: title: 'Avprenumererad' description: "Du har blivit avprenumererad. Vi kommer inte att kontakta dig igen!" oops: "Om du inte menade att göra detta, klicka nedan." + error: "Fel vid avprenumeration" + preferences_link: "Du kan också avprenumerera från sammanfattningsmejlen via dinainställningar" not_found_description: "Tyvärr, vi kunde inte avprenumerera dig. Det är möjligt att länken i ditt mail har löpt ut." resubscribe: action: "Återprenumerera" @@ -396,24 +460,24 @@ sv: yaxis: "Besök" signups: title: "Nya användare" - xaxis: "Day" - yaxis: "Number of new users" + xaxis: "Dag" + yaxis: "Antalet nya användare" topics: - title: "Topics" - xaxis: "Day" - yaxis: "Number of new topics" + title: "Ämnen" + xaxis: "Dag" + yaxis: "Antalet nya ämnen" posts: - title: "Posts" - xaxis: "Day" - yaxis: "Number of new posts" + title: "Inlägg" + xaxis: "Dag" + yaxis: "Antalet nya inlägg" likes: - title: "Likes" - xaxis: "Day" - yaxis: "Number of new likes" + title: "Gillningar" + xaxis: "Dag" + yaxis: "Antalet nya gillningar" flags: - title: "Flags" - xaxis: "Day" - yaxis: "Number of flags" + title: "Flaggor" + xaxis: "Dag" + yaxis: "Antalet flaggor" bookmarks: title: "Bokmärken" xaxis: "Dag" @@ -421,15 +485,15 @@ sv: starred: title: "Favoriserad" xaxis: "Dag" - yaxis: "Antal favoriserade trådar" + yaxis: "Antal favoriserade ämnen" users_by_trust_level: - title: "Users per Trust Level" - xaxis: "Trust Level" - yaxis: "Number of Users" + title: "Användare per förtroendenivå" + xaxis: "Förtroendenivå" + yaxis: "Antal användare" emails: - title: "Emails Sent" - xaxis: "Day" - yaxis: "Number of Emails" + title: "E-post skickade" + xaxis: "Dag" + yaxis: "Antalet mejl" user_to_user_private_messages: title: "Användare-till-användare" xaxis: "Dag" @@ -454,16 +518,16 @@ sv: title: "Toppreferenter" xaxis: "Användare" num_clicks: "Klick" - num_topics: "Trådar" + num_topics: "Ämnen" top_traffic_sources: title: "Vanligaste trafikkällor" xaxis: "Domän" num_clicks: "Klick" - num_topics: "Trådar" + num_topics: "Ämnen" num_users: "Användare" top_referred_topics: - title: "Mest refererade trådar" - xaxis: "Tråd" + title: "Mest refererade ämnen" + xaxis: "Ämne" num_clicks: "Klick" page_view_anon_reqs: title: "Anonym" @@ -495,15 +559,23 @@ sv: http_total_reqs: title: "Totala" xaxis: "Dag" + time_to_first_response: + title: "Tid till första respons" + xaxis: "Dag" + topics_with_no_response: + title: "Ämnen med ingen respons" + xaxis: "Dag" + yaxis: "Totalt" dashboard: rails_env_warning: "Your server is running in %{env} mode." ruby_version_warning: "Du använder en version av Ruby 2.0.0 som är känd för att ha problem. Uppgradera till patch-nivå 247 eller senare." host_names_warning: "Your config/database.yml file is using the default localhost hostname. Update it to use your site's hostname." gc_warning: 'Your server is using default ruby garbage collection parameters, which will not give you the best performance. Read this topic on performance tuning: Tuning Ruby and Rails for Discourse.' 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.' - memory_warning: 'Your server is running with less than 1 GB of total memory. At least 1 GB of memory is recommended.' + memory_warning: 'Din server körs med mindre än 1 GB minne. Minne på minst 1 GB är rekommenderat.' s3_config_warning: 'Servern är konfigurerad till att ladda upp filer till s3, men minst en av följande inställningar är inte satt: s3_access_key_id, s3_secret_access_key eller s3_upload_bucket. Gå till Inställningar och uppdatera dem. Se "How to set up image uploads to S3?" för att lära dig mer.' default_logo_warning: "Ange de grafiska logotyperna för din webbplats. Uppdatera logo_url, logo_small och favicon_url i Inställningar." + contact_email_missing: "Ange en e-postadress för webbplatsen så att du kan nås vid brådskande ärenden. Uppdatera i webbplatsinställningar." contact_email_invalid: "Webbplatsens e-postadress för kontakt är ogiltig. Uppdatera den i Inställningar." title_nag: "Ange namnet på webbplatsen. Uppdatera titel i Inställningar." site_description_missing: "Ange en beskrivning om din webbplats i en mening, som dyker upp i sökresultat. Uppdatera site_description i Inställningar." @@ -540,14 +612,21 @@ sv: description: "HTML som läggs till före taggen ." site_settings: censored_words: "Ord som automatiskt ersätts med ■■■■" + delete_old_hidden_posts: "Auto-radera alla dolda inlägg som varit dolda i mer än 30 dagar." default_locale: "Standardspråk för den här instansen av Discourse (ISO 639-1-kod)" allow_user_locale: "Tillåt användare att själva välja språk" min_post_length: "Minsta tillåtna inläggslängd i antal tecken" + min_first_post_length: "Minst antal tillåtna tecken i första inlägget (ämnestext)" + min_private_message_post_length: "Minst antal tillåtna tecken i inlägg för meddelanden" + min_search_term_length: "Minsta giltiga teckenlängd på sökterm" + allow_uncategorized_topics: "Tillåt att ämnen kan skapas utan en kategori." + uncategorized_description: "Beskrivningen av den okategoriserade kategorin. Lämna tomt för ingen beskrivning." allow_duplicate_topic_titles: "Tillåt ämnen med identiska rubriker." unique_posts_mins: "Hur många minuter innan en användare kan göra ett inlägg med precis samma innehåll igen" title: "Namnet på denna webbplats som används i titel-taggen." site_description: "Beskriv denna webbplats i en mening, som sedan används i meta-description-taggen." queue_jobs: "Köa diverse jobb i sidekiq, om urkryssat så körs köer infogat" + fixed_category_positions: "Om markerad, kommer du kunna ordna kategorier i en bestämd ordning. Om omarkerad, sorteras kategorierna baserat på aktivitet." favicon_url: "En favicon för till webbplats, se http://en.wikipedia.org/wiki/Favicon" apple_touch_icon_url: "Ikon som används för Apples touch-enheter. Rekommenderad storlek är 144*144 pixlar." enable_long_polling: "Message bus used for notification can use long polling" @@ -555,14 +634,23 @@ sv: auto_track_topics_after: "Global default milliseconds before a topic is automatically tracked, users can override (0 for always, -1 for never)" new_topic_duration_minutes: "Global default number of minutes a topic is considered new, users can override (-1 for always, -2 for last visit)" flags_required_to_hide_post: "Number of flags that cause a post to be automatically hidden and PM sent to the user (0 for never)" - max_topics_in_first_day: "Maximalt antal trådar en användare får skapa under sin första dag på sidan" + max_topics_in_first_day: "Max antal ämnen en användare får skapa under sin första dag på webbplatsen" max_replies_in_first_day: "Maximalt antal svar en användare får skapa under sin första dag på sidan" notify_mods_when_user_blocked: "Om en användare blockeras automatiskt, skicka ett meddelande till alla moderatorer." + ga_tracking_code: "Google analytics (ga.js) spårningskod, exempelvis: UA-12345678-9; se http://google.com/analytics" + allow_moderators_to_create_categories: "Tillåt moderatorer att skapa nya kategorier" + top_menu: "Bestäm vilka objekt som visas i hemsidans navigation, och i vilken ordning. Exempel: latest|new|unread|categories|top|read|posted|bookmarks" post_menu: "Determine which items appear on the post menu, and in what order. Example like|edit|flag|delete|share|bookmark|reply" 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: "Ett giltigt personalanvändarnamn att skicka alla automatiserade meddelanden ifrån. Om lämnad blank används det System-kontot." + send_welcome_message: "Skicka ett välkomstmeddelande till alla nya användare tillsammans med en snabbstartsguide." + show_email_on_profile: "Visa en användares e-postadress på deras profil (endast synlig för de själva och för personal)" + enable_badges: "Aktivera utmärkelsesystemet" + new_version_emails: "Skicka ett mejl till contact_email när en ny version av Discourse finns tillgängligt." port: "DEVELOPER ONLY! WARNING! Use this HTTP port rather than the default of port 80. Leave blank for default of 80." force_hostname: "DEVELOPER ONLY! WARNING! Specify a hostname in the URL. Leave blank for default." invite_expiry_days: "How long user invitation keys are valid, in days" + min_password_length: "Minsta lösenordslängd." enable_yahoo_logins: "Enable Yahoo authentication" enable_twitter_logins: "Enable Twitter authentication, requires twitter_consumer_key and twitter_consumer_secret" twitter_consumer_key: "Consumer key for Twitter authentication, registered at http://dev.twitter.com" @@ -573,16 +661,79 @@ sv: enable_github_logins: "Enable Github authentication, requires github_client_id and github_client_secret" github_client_id: "Client id for Github authentication, registered at https://github.com/settings/applications" github_client_secret: "Client secret for Github authentication, registered at https://github.com/settings/applications" + backup_daily: "Automatiskt skapa en säkerhetskopia av webbplatsen en gång per dag." active_user_rate_limit_secs: "How frequently we update the 'last_seen_at' field, in seconds" previous_visit_timeout_hours: "How long a visit lasts before we consider it the 'previous' visit, in hours" - min_trust_to_create_topic: "Minsta förtroendenivå som krävs för att skapa en ny tråd" + rate_limit_create_topic: "Efter att ha skapat ett ämne, måste användare vänta (n) sekunder innan de kan skapa ett nytt." + rate_limit_create_post: "Efter att ha skrivit ett inlägg, måste användare vänta (n) sekunder innan de skriver ett nytt." + rate_limit_new_user_create_topic: "Efter att ha skapat ett ämne, måste nya användare vänta (n) sekunder innan de kan skapa ett nytt." + rate_limit_new_user_create_post: "Efter att ha skrivit ett inlägg, måste nya användare vänta (n) sekunder innan de kan skriva ett nytt." + max_likes_per_day: "Max antal gilla per användare och dag." + max_flags_per_day: "Max antal flaggningar per användare och dag." + max_bookmarks_per_day: "Max antal bokmärken per användare och dag." + max_edits_per_day: "Max antal redigeringar per användare och dag." + max_topics_per_day: "Max antal ämnen en användare kan skapa per dag." + max_private_messages_per_day: "Max antal meddelanden användare kan skapa per dag." + max_invites_per_day: "Max antal inbjudningar en användare kan skicka per dag." + max_topic_invitations_per_day: "Max antal ämnesinbjudningar en användare kan skicka per dag." + suggested_topics: "Antal föreslagna ämnen som visas i botten av ett ämne." + limit_suggested_to_category: "Visa bara ämnen från den aktuella kategorin bland föreslagna ämnen." + avatar_sizes: "Lista på automatiskt genererade avatar-storlekar." + default_invitee_trust_level: "Förvald förtroendenivå (0-4) för inbjudna användare." + default_trust_level: "Förvald förtroendenivå (0-4) för alla nya användare. VARNING! En ändring av detta sätter dig i stor risk för skräppost." + tl1_requires_topics_entered: "Antal ämnen en användare måste öppna innan en befordran till förtroendenivå 1." + tl1_requires_read_posts: "Antal inlägg en ny användare måste läsa innan en befordran till förtroendenivå 1." + tl1_requires_time_spent_mins: "Antal minuter en ny användare måste läsa inlägg innan en befordran till förtroendenivå 1." + tl2_requires_topics_entered: "Antal ämnen en användare måste besöka innan en befordran till förtroendenivå 2." + tl2_requires_read_posts: "Antal inlägg en användare måste läsa innan en befordran till förtroendenivå 2." + tl2_requires_time_spent_mins: "Antalet minuter en användare måste läsa inlägg innan en befordran till förtroendenivå 2." + tl2_requires_days_visited: "Antalet dagar en användare måste besöka webbplatsen innan en befordran till förtroendenivå 2." + tl2_requires_likes_received: "Antalet gillningar en användare måste mottaga innan en befordran till förtroendenivå 2." + tl2_requires_likes_given: "Antalet gillningar en användare måste ge innan en befordran till förtroendenivå 2." + tl2_requires_topic_reply_count: "Antalet ämnen en användare måste svara på innan en befordran till förtroendenivå 2." + tl3_requires_days_visited: "Minsta antal dagar en användare måste ha besökt webbplatsen de senaste 100 dagarna för att bli kvalificerad till en befordran till förtroendenivå 3. (0 till 100)" + tl3_requires_topics_replied_to: "Minsta antalet ämnen en användare behöver ha svarat på de senaste 100 dagarna för att bli kvalificerad till en befordran till förtroendenivå 3. (0 eller högre)" + tl3_requires_topics_viewed_all_time: "Minsta antalet ämnen en användare måste ha tittat på för att bli kvalificerad för förtroendenivå 3." + tl3_requires_posts_read_all_time: "Minsta antalet inlägg en användare måste ha läst för att bli kvalificerad för förtroendenivå 3." + tl3_requires_likes_received: "Minsta antalet mottagna gillningar under de senaste 100 dagarna för att bli kvalificerad för en befordran till förtroendenivå 3." + min_trust_to_create_topic: "Lägsta förtroendenivå som krävs för att skapa ett nytt ämne." + newuser_max_links: "Antalet länkar en ny användare kan lägga till i ett inlägg." + newuser_max_images: "Antalet bilder en ny användare kan lägga till i ett inlägg." + newuser_max_attachments: "Antalet bilagor en ny användare kan lägga till i ett inlägg." + newuser_max_mentions_per_post: "Max antal @namn-omnämningar en ny användare kan göra i ett inlägg." + newuser_max_replies_per_topic: "Max antal svar en ny användare kan göra i ett enda ämne innan någon svarar dem." + max_mentions_per_post: "Max antal @namn-omnämningar vem som helst kan göra i ett inlägg." + create_thumbnails: "Skapa miniatyrer och \"lightboxa\" bilder som är för stora för att passa in i ett inlägg." + email_time_window_mins: "Vänta (n) minuter innan något notifikationsmejl skickas ut, för att ge användare chansen att redigera och slutföra deras inlägg." + title_max_word_length: "Den maximala tillåtna ordlängden, i tecken, i ett ämnes titel." title_fancy_entities: "Convert common ASCII characters to fancy HTML entities in topic titles, ala SmartyPants http://daringfireball.net/projects/smartypants/" + category_colors: "En lista över tillåtna hexadecimala färgvärden för kategorier." + category_style: "Visuell still för kategori-utmärkelser." + topic_views_heat_low: "Efter så här många visningar, blir visningsfältet något betonat." + topic_views_heat_medium: "Efter så här många visningar, blir visningsfältet måttligt betonat." + topic_views_heat_high: "Efter så här många visningar, blir visningsfältet starkt betonat." + cold_age_days_low: "Efter så här många dagars konversation, blir sista aktivitetsdatumet något nedtonat." + cold_age_days_medium: "Efter så här många dagars konversation, blir datumet för sista aktiviteten måttligt nedtonat." + cold_age_days_high: "Efter så här många dagars konversation, blir datumet för sista aktiviteten starkt nedtonat." + history_hours_low: "Ett inlägg som redigerats inom så här många timmar, har redigeringsindikatorn något betonat." + history_hours_medium: "Ett inlägg som redigerats inom så här många timmar, har redigeringsindikatorn måttligt betonat." + history_hours_high: "Ett inlägg som redigerats inom så här många timmar, har redigeringsindikatorn starkt betonat." faq_url: "Om du har en FAQ någon annanstans som du vill använda, skriv den fullständiga URL:en här." privacy_policy_url: "Om du har ett dokument med en integritetspolicy någon annanstans som du vill använda, skriv den fullständiga URL:en här." + auto_respond_to_flag_actions: "Aktivera automatiskt svar vid hantering av en flagga." + reply_by_email_enabled: "Aktivera möjlighet att svara på ämnen via e-post." + disable_emails: "Förhindra Discourse från att skicka någon form av e-post" + pop3_polling_ssl: "Använd SSL vid anslutning till POP3-servern. (Rekommenderat)" + email_editable: "Tillåt användare att ändra deras e-postadress efter registrering." default_digest_email_frequency: "Hur ofta användare får emailutskick som standard. De kan ändra detta val under sina inställningar." enable_user_directory: "Tillhandahåll en bläddringsbar användarkatalog" allow_anonymous_posting: "Tillåt användare att växla till anonymt läge" + anonymous_posting_min_trust_level: "Lägsta förtroendenivå som krävs för att aktivera anonyma inlägg" + allow_profile_backgrounds: "Tillåt användare att ladda upp profilbakgrunder." full_name_required: "Fullständigt namn är ett obligatoriskt fält i en användares profil." + display_name_on_posts: "Visa en användares fullständiga namn på deras inlägg som tillägg till deras @användarnamn." + show_time_gap_days: "Om två inlägg är gjorda med så här många dagar emellan, visa tidsskillnaden i ämnet." + enable_emoji: "Aktivera emoji" errors: invalid_email: "Felaktig e-postadress." invalid_username: "Det finns ingen användare med detta användarnamn." @@ -590,79 +741,239 @@ sv: invalid_integer_min: "Värdet måste vara %{max} eller större." invalid_integer_max: "Värdet får inte vara större än %{max}." invalid_integer: "Värdet måste vara ett heltal." + must_include_latest: "Toppmenyn måste inkludera 'senaste'-fliken." + invalid_string: "Ogiltigt värde." + invalid_string_min_max: "Måste vara mellan %{min} och %{max} tecken." + invalid_string_min: "Måste vara minst %{min} tecken." + invalid_string_max: "Måste vara högst %{max} tecken." notification_types: - mentioned: "%{display_username} mentioned you in %{link}" - liked: "%{display_username} liked your post in %{link}" - replied: "%{display_username} replied to your post in %{link}" - quoted: "%{display_username} quoted your post in %{link}" - edited: "%{display_username} edited your post in %{link}" - posted: "%{display_username} posted in %{link}" - moved_post: "%{display_username} moved your post to %{link}" - invitee_accepted: "%{display_username} accepted your invitation" + mentioned: "%{display_username} nämnde dig i %{link}" + liked: "%{display_username} gillade ditt inlägg i %{link}" + replied: "%{display_username} svarade på ditt inlägg i %{link}" + quoted: "%{display_username} citerade ditt inlägg i %{link}" + edited: "%{display_username} redigerade ditt inlägg i %{link}" + posted: "%{display_username} skrev i %{link}" + moved_post: "%{display_username} flyttade ditt inlägg till %{link}" + private_message: "%{display_username} har skickat ett meddelande till dig: %{link}" + invited_to_private_message: "%{display_username} har bjudit in dig till en privat konversation: %{link}" + invited_to_topic: "%{display_username} har bjudit in dig till ett ämne: %{link}" + invitee_accepted: "%{display_username} accepterade din inbjudan" + linked: "%{display_username} länkade dig i %{link}" + granted_badge: "Du förtjänade %{link}" search: within_post: "#%{post_number} av %{username}" types: - category: 'Categories' + category: 'Kategorier' topic: 'Resultat' - user: 'Users' - original_poster: "Original Poster" - most_posts: "Most Posts" - most_recent_poster: "Most Recent Poster" - frequent_poster: "Frequent Poster" + user: 'Användare' + sso: + account_not_approved: "Konto inväntar godkännande. Du kommer att få ett e-postmeddelande när kontot väl är godkänt." + original_poster: "Ursprunglig skribent" + most_posts: "Mest inlägg" + most_recent_poster: "Senaste skribent" + frequent_poster: "Flitig skribent" move_posts: existing_topic_moderator_post: - one: "Jag flyttade ett inlägg till en existerande tråd: %{topic_link}" - other: "Jag flyttade %{count} inlägg till en existerande tråd: %{topic_link}" + one: "Jag flyttade ett inlägg till ett existerande ämne: %{topic_link}" + other: "Jag flyttade %{count} inlägg till ett existerande ämne: %{topic_link}" topic_statuses: - archived_enabled: "This topic is now archived. It is frozen and cannot be changed in any way." - archived_disabled: "This topic is now unarchived. It is no longer frozen, and can be changed." - closed_enabled: "This topic is now closed. New replies are no longer allowed." - closed_disabled: "This topic is now opened. New replies are allowed." - autoclosed_disabled: "Den här tråden är nu öppen. Nya svar är tillåtna." - pinned_disabled: "This topic is now unpinned. It will no longer appear at the top of its category." + archived_enabled: "Detta ämne är nu arkiverat. Det är fryst och kan inte förändras på något sätt." + archived_disabled: "Detta ämne är nu oarkiverat. Det är inte längre fruset, och kan ändras." + closed_enabled: "Detta ämne är nu stängt. Nya svar tillåts inte längre." + closed_disabled: "Detta ämne är nu öppnat. Nya svar är tillåtna." + autoclosed_enabled_days: + one: "Detta ämne stängdes automatiskt efter 1 dag. Nya svar är ej längre tillåtet." + other: "Detta ämne stängdes automatiskt efter %{count} dagar. Nya svar är ej längre tillåtna." + autoclosed_enabled_hours: + one: "Detta ämne stängdes automatiskt efter 1 timme. Nya svar är ej längre tillåtna." + other: "Detta ämne stängdes automatiskt efter %{count} timmar. Nya svar är ej längre tillåtna." + autoclosed_enabled_minutes: + one: "Detta ämne stängdes automatiskt efter 1 minut. Nya svar är ej längre tillåtna." + other: "Detta ämne stängdes automatiskt efter %{count} minuter. Nya svar är ej längre tillåtna." + autoclosed_enabled_lastpost_days: + one: "Detta ämne stängdes automatiskt 1 dag efter det senaste svaret. Nya svar är ej längre tillåtna." + other: "Detta ämne stängdes automatiskt %{count} dagar efter det senaste svaret. Nya svar är ej längre tillåtna." + autoclosed_enabled_lastpost_hours: + one: "Detta ämne stängdes automatiskt 1 timme efter det senaste svaret. Nya svar är ej längre tillåtna." + other: "Detta ämne stängdes automatiskt %{count} timmar efter det senaste svaret. Nya svar är ej längre tillåtna." + autoclosed_enabled_lastpost_minutes: + one: "Detta ämne stängdes automatiskt 1 minut efter det senaste svaret. Nya svar är ej längre tillåtna." + other: "Detta ämne stängdes automatiskt %{count} minuter efter det senaste svaret. Nya svar är ej längre tillåtna." + autoclosed_disabled: "Detta ämne är nu öppet. Nya svar är tillåtna." + autoclosed_disabled_lastpost: "Detta ämne är nu öppnat. Nya svar är tillåtna." + pinned_enabled: "Detta ämne är nu klistrat. Det dyker upp i toppen av dess kategori tills den blir avklistrad av personal för alla, eller av enskilda användare för de själva." + pinned_disabled: "Detta ämne är nu oklistrat. Det dyker längre inte upp i toppen av dess kategori." login: - not_approved: "Your account hasn't been approved yet. You will be notified by email when you are ready to log in." - incorrect_username_email_or_password: "Incorrect username, email or password" - wait_approval: "Thanks for signing up. We will notify you when your account has been approved." - active: "Your account is active and ready." - not_activated: "You can't log in yet. We sent an activation email to you. Please follow the instructions in the email to activate your account." + not_approved: "Ditt konto har inte blivit godkänt ännu. Du kommer att meddelas via e-post när du kan logga in." + incorrect_username_email_or_password: "Felaktigt användarnamn, e-post eller lösenord" + wait_approval: "Tack för din registrering. Vi meddelar dig när ditt konto blivit godkänt." + active: "Ditt konto är aktiverat och redo att användas." + not_activated: "Du kan inte logga in ännu. Vi har skickat ett aktiveringsmejl till dig. Vänligen följ instruktionerna i mejlet för att aktivera ditt konto." not_allowed_from_ip_address: "Du kan inte logga in som %{username} från den IP-adressen." admin_not_allowed_from_ip_address: "Du kan inte logga in som admin från den IP-adressen." suspended: "Du kan inte logga in förrän %{date}." suspended_with_reason: "Konto avstängt t.o.m. %{date}: %{reason}" errors: "%{errors}" - not_available: "Not available. Try %{suggestion}?" - something_already_taken: "Something went wrong, perhaps the username or email is already registered. Try the forgot password link." - omniauth_error_unknown: "Something went wrong processing your log in, please try again." + not_available: "Inte tillgänglig. Testa %{suggestion}?" + something_already_taken: "Något gick fel. Kanske är användarnamnet eller e-postadressen redan registrerat. Testa glömt lösenord-länken." + omniauth_error_unknown: "Något gick fel med din inloggning, var god och försök igen." + password_too_long: "Lösenord har en gräns på 200 tecken." + missing_user_field: "Du har inte fyllt i alla användarfält" user: + no_accounts_associated: "Inga kopplade konton" username: - unique: "must be unique" - blank: "must be present" - must_begin_with_alphanumeric: "must begin with a letter or number" + short: "måste var minst %{min} tecken" + long: "får högst vara %{max} tecken" + characters: "får endast innehålla nummer, bokstäver och understreck" + unique: "måste vara unikt" + blank: "måste finnas" + must_begin_with_alphanumeric: "måste börja med en bokstav eller siffra" email: - not_allowed: "is not allowed from that email provider. Please use another email address." + not_allowed: "är inte en tillåten e-postleverantör. Vänligen använd en annan e-postadress." blocked: "är inte tillåtet." + ip_address: + blocked: "Nya registreringar är inte tillåtna från din IP-adress." + max_new_accounts_per_registration_ip: "Nya registreringar är inte tillåtet från din IP-adress (maxgräns uppnådd). Kontakta personal." + invite_mailer: + subject_template: "%{invitee_name} har bjudit in dig till '%{topic_title}' på %{site_domain_name}" + text_body_template: | + %{invitee_name} har bjudit in dig till en diskussion + + > **%{topic_title}** + > + > %{topic_excerpt} + + på + + > %{site_title} -- %{site_description} + + Om du är intresserad, klicka på länken nedan: + + %{invite_link} + + Denna inbjudan är från en betrodd användare, så du kan direkt delta och svara i diskussionen. + invite_forum_mailer: + subject_template: "%{invitee_name} har bjudit in dig till %{site_domain_name}" + text_body_template: | + %{invitee_name} har bjudit in dig till + + > **%{site_title}** + > + > %{site_description} + + Om du är intresserad, klicka på länken nedan: + + %{invite_link} + + Denna inbjudan kommer från en betrodd användare, så du behöver inte logga in. + invite_password_instructions: + subject_template: "Ange lösenord för ditt konto på %{site_name}" + text_body_template: | + Tack för att du accepterade inbjudan till %{site_name} -- välkommen! + + Klicka på länken för att ange ett lösenord nu: + %{base_url}/users/password-reset/%{email_token} + + Om du inte kommer ihåg ditt lösenord, eller inte skaffat något ännu, välj "jag har glömt mitt lösenord" när du loggar in med din e-postadress. test_mailer: subject_template: "[%{site_name}] Email Deliverability Test" new_version_mailer: subject_template: "[%{site_name}] Ny version av Discourse, uppdatering tillgänglig" + text_body_template: | + En ny version av [Discourse](http://www.discourse.org) finns tillgängligt. + + Din version: %{installed_version} + Ny version: **%{new_version}** + + Du kanske vill: + + - Se vad som är nytt i [GitHub changelog](https://github.com/discourse/discourse/commits/master). + + - Uppgradera från din webbläsare på [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade). + + - Besöka [meta.discourse.org](http://meta.discourse.org) för nyheter, diskussioner och support för Discourse. new_version_mailer_with_notes: subject_template: "[%{site_name}] uppdatering tillgänglig" + text_body_template: | + En ny version av [Discourse](http://www.discourse.org) finns tillgängligt. + + Din version: %{installed_version} + Ny version: **%{new_version}** + + Du kanske vill: + + - Se vad som är nytt i [GitHub changelog](https://github.com/discourse/discourse/commits/master). + + - Uppgradera från din webbläsare på [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade). + + - Besöka [meta.discourse.org](http://meta.discourse.org) för nyheter, diskussioner och support för Discourse. + + ### Release notes + + %{notes} flags_reminder: + flags_were_submitted: + one: "Dessa flaggor skickades in för mer än 1 timme sedan." + other: "Dessa flaggor skickades in för mer än %{count} timmar sedan." + please_review: "Var god och granska dessa." post_number: "inlägg" + subject_template: + one: "1 flagga väntar på att bli hanterad" + other: "%{count} flaggor väntar på att bli hanterade" + flag_reasons: + off_topic: "Ditt inlägg blev flaggat som **off-topic**. Medlemmarna i forumet kände att det inte är passande för ämnet, som definieras av titeln och det första inlägget." + inappropriate: "Ditt inlägg blev flaggat som **olämpligt**. Medlemmarna i forumet kände att det är störande, kränkande eller att det strider mot [våra riktlinjer](/guidelines)." + spam: "Ditt inlägg blev flaggat som **skräppost**. Medlemmarna i forumet kände att det är reklam, något som är överdrivet säljande istället för att vara nyttigt eller relevant för ämnet." + notify_moderators: "Ditt inlägg blev flaggat **för moderators uppmärksamhet**. Medlemmarna i forumet kände att något i inlägget kräver manuellt ingripande av personal." flags_dispositions: agreed: "Tack för att du meddelade oss. Vi håller med om att det finns ett problem och vi undersöker det. " agreed_and_deleted: "Tack för att du meddelade oss. Vi håller med om att det finns ett problem och vi har raderat inlägget." disagreed: "Tack för att du meddelande oss. Vi undersöker det." deferred: "Tack för att du meddelande oss. Vi undersöker det." deferred_and_deleted: "Tack för att du meddelande oss. Vi har raderat inlägget." + temporarily_closed_due_to_flags: "Detta ämne är tillfälligt stängt på grund av ett stort antal flaggor." system_messages: post_hidden: subject_template: "Post hidden due to community flagging" welcome_user: subject_template: "Välkommen till %{site_name}!" + text_body_template: | + Tack för att du gått med i %{site_name}, och välkommen! + + %{new_user_tips} + + Vi tror på ett [civiliserat beteende](%{base_url}/guidelines) vid alla tillfällen. + + Njut av din vistelse! + + (Om du som ny användare behöver komma i kontakt med vår [personal](%{base_url}/about), svara bara på detta meddelande) welcome_invite: subject_template: "Välkommen till %{site_name}!" + text_body_template: | + Tack för att du accepterade din inbjudan till %{site_name} -- välkommen! + + Vi har skapat ett nytt konto **%{username}** till dig och du är inloggad. Du kan byta namn genom att besöka [din användarprofil][prefs]. + + För att logga in senare: + + 1. Använda alltid **samma e-postadress som från din ursprungliga inbjudan** när du loggar in. Annars vet vi inte att det är du! + + 2. Skapa ett unikt lösenord för [din användarprofil][prefs], och använd det för att logga in. + + %{new_user_tips} + + Vi tror på ett [civiliserat beteende](%{base_url}/guidelines) vid alla tillfällen. + + Njut av din vistelse! + + (Om du som ny användare behöver komma i kontakt med vår [personal](%{base_url}/about), svara bara på detta meddelande.) + + [prefs]: %{user_preferences_url} + backup_succeeded: + subject_template: "Säkerhetskopia skapades utan problem" + text_body_template: "Säkerhetskopieringen lyckades.\nBesök [admin > Säkerhetskopior](/admin/backups) för att ladda ned din nya säkerhetskopia." + backup_failed: + subject_template: "Säkerhetskopiering misslyckades" restore_succeeded: text_body_template: "Återställningen lyckades." restore_failed: @@ -676,9 +987,9 @@ sv: text_body_template: |+ Hej, - det här är ett automatiskt meddelande från %{site_name} för att informera dig om att ditt konto har blivit avblockerat efter en granskning av personalen. + Det här är ett automatiskt meddelande från %{site_name} för att informera dig om att ditt konto har blivit avblockerat efter en granskning från personalen. - Du kan nu skapa nya svar och trådar igen. + Du kan nu skapa nya svar och ämnen igen. pending_users_reminder: subject_template: @@ -690,61 +1001,73 @@ sv: previous_discussion: "Föregående Svar" unsubscribe: title: "Unsubscribe" - description: "Not interested in getting these emails? No problem! Click below to unsubscribe instantly:" + description: "Inte intresserad av att få dessa mejl? Inga problem! Klicka nedan för att avprenumerera." + reply_by_email: "För att svara, svara på detta mejl eller besök %{base_url}%{url} i din webbläsare." visit_link_to_respond: "För att svara, besök %{base_url}%{url} i din webbläsare." posted_by: "Postat av %{username} den %{post_date}" + user_invited_to_private_message_pm: + subject_template: "[%{site_name}] %{username} har bjudit in dig till en privat konversation '%{topic_title}'" + user_invited_to_topic: + subject_template: "[%{site_name}] %{username} har bjudit in dig till ett ämne '%{topic_title}'" user_replied: + subject_template: "[%{site_name}] %{topic_title}" text_body_template: | - %{username} replied to your post in '%{topic_title}' on %{site_name}: - - --- %{message} + %{context} + --- - Please visit this link to respond: %{base_url}%{url} + %{respond_instructions} user_quoted: + subject_template: "[%{site_name}] %{topic_title}" text_body_template: | - %{username} quoted you in '%{topic_title}' on %{site_name}: - - --- %{message} + %{context} + --- - Please visit this link to respond: %{base_url}%{url} + %{respond_instructions} user_mentioned: + subject_template: "[%{site_name}] %{topic_title}" text_body_template: | - %{username} mentioned you in '%{topic_title}' on %{site_name}: - - --- %{message} + %{context} + --- - Please visit this link to respond: %{base_url}%{url} + %{respond_instructions} user_posted: + subject_template: "[%{site_name}] %{topic_title}" text_body_template: | - %{username} posted in '%{topic_title}' on %{site_name}: - - --- %{message} + %{context} + --- - Please visit this link to respond: %{base_url}%{url} + %{respond_instructions} digest: - new_activity: "New activity on your topics and posts:" + new_activity: "Ny aktivitet i dina ämnen och inlägg:" top_topics: "Populära inlägg" - other_new_topics: "Populära trådar" - click_here: "click here" - from: "%{site_name} digest" + other_new_topics: "Populära ämnen" + click_here: "klicka här" + from: "%{site_name} sammanfattning" read_more: "Läs Mer" + more_topics_category: "Fler nya ämnen:" forgot_password: - subject_template: "[%{site_name}] Password reset" + subject_template: "[%{site_name}] Återställning av lösenord" text_body_template: | - Somebody asked to reset your password on [%{site_name}](%{base_url}). + Någon bad om att få återställa ditt lösenord på [%{site_name}](%{base_url}). - If it was not you, you can safely ignore this email. + Om detta inte var du, kan du utan problem ignorera detta mejl. - Click the following link to choose a new password: + Klicka på följande länk för att välja ett nytt lösenord: %{base_url}/users/password-reset/%{email_token} + set_password: + subject_template: "[%{site_name}] Ange lösenord" + admin_login: + subject_template: "[%{site_name}] Logga in" + account_created: + subject_template: "[%{site_name}] Ditt nya konto" authorize_email: subject_template: "[%{site_name}] Confirm your new email address" text_body_template: | @@ -757,23 +1080,36 @@ sv: subject_template: "[%{site_name}] Activate your new account" text_body_template: "Välkommen till %{site_name}!\n\nKlicka på följande länk för att bekräfta och aktivera ditt nya konto:\n%{base_url}/users/activate-account/%{email_token}\n\nOm länken ovan inte går att klicka på kan du kopiera och klistra in länken i adressfältet i din webbläsare. \n" page_not_found: + title: "Sidan du sökte existerar inte eller är privat." popular_topics: "Populära" recent_topics: "Senaste" see_more: "Mer" + search_title: "Sök på sajten" + search_google: "Google" + login_required: + welcome_message: | + #[Välkommen till %{title}](#welcome) + Ett konto krävs för att logga in. Var god och skapa ett konto eller logga in för att fortsätta. terms_of_service: title: "Användarvillkor" signup_form_message: 'Jag har läst och accepterat Användarvillkoren.' deleted: 'raderad' upload: pasted_image_filename: "Inklistrad bild" + attachments: + too_large: "Tyvärr, filen du försöker ladda upp är för stor (maxstorlek är %{max_size_kb}kb)." images: + too_large: "Tyvärr, bilden du försöker ladda upp är för stor (maxstorlek är %{max_size_kb}kb). Ändra storleken och försök igen." + unknown_image_type: "Tyvärr, men filen du försökte ladda upp ser inte ut att vara en bild." size_not_found: "Vi beklagar, men vi kunde inte avgöra bildens storlek. Kanske är din bildfil skadad?" email_log: no_user: "Kan inte hitta användare med id %{user_id}" anonymous_user: "Användare är anonym" seen_recently: "Användare sågs senast" + post_not_found: "Kan inte hitta ett inlägg med id %{post_id}" post_deleted: "inlägg raderades av författaren" user_suspended: "användare blev avstängd" + message_blank: "meddelande är tomt" about: "Om" guidelines: "Riktlinjer" privacy: "Integritet" @@ -787,13 +1123,81 @@ sv: title: "Villkor" badges: long_descriptions: + autobiographer: | + Bla bla bla + Bla bla bla + first_like: | + Bla bla bla + Bla bla bla + first_link: | + Bla bla bla + Bla bla bla + first_quote: |+ + Bla bla bla + Bla bla bla + + first_share: |+ + Bla bla bla + Bla bla bla + + read_guidelines: | + Bla bla bla + Bla bla bla + reader: | + Bla bla bla + Bla bla bla + editor: | + Bla bla bla + Bla bla bla + nice_share: | + Bla bla bla + Bla bla bla + welcome: | + Bla bla bla + Bla bla bla + anniversary: |+ + Bla bla bla + Bla bla bla + + good_share: | + Bla bla bla + Bla bla bla + great_share: | + Bla bla bla + Bla bla bla nice_post: | Bla bla bla Bla bla bla nice_topic: | Bla bla bla Bla bla bla + good_post: | + Bla bla bla + Bla bla bla + good_topic: | + Bla bla bla + Bla bla bla + great_post: | + Bla bla bla + Bla bla bla + great_topic: | + Bla bla bla + Bla bla bla + basic: | + Bla bla bla + Bla bla bla + member: | + Bla bla bla + Bla bla bla + regular: | + Bla bla bla + Bla bla bla + leader: |+ + Bla bla bla + Bla bla bla + admin_login: success: "E-post skickat" error: "Fel!" + email_input: "E-post till administratör" submit_button: "Skicka e-post" diff --git a/config/locales/server.tr_TR.yml b/config/locales/server.tr_TR.yml index 9b2b94f1b7..40121c2239 100644 --- a/config/locales/server.tr_TR.yml +++ b/config/locales/server.tr_TR.yml @@ -213,7 +213,7 @@ tr_TR: no_info_other: "
" vip_category_name: "Lobi" vip_category_description: "Güven seviyesi 3 ve üzerinde olan üyelere özel kategori." - meta_category_name: "Meta" + meta_category_name: "Site geri bildirimi" meta_category_description: "Bu site, sitenin organizasyonu, nasıl çalıştığı ve nasıl geliştirilebileceği ile ilgili tartışma alanı." staff_category_name: "Görevliler" staff_category_description: "Görevliler arası konuşmalar için özel kategori. Konular sadece admin ve moderatörlere gözükür." @@ -327,7 +327,7 @@ tr_TR: almost_x_years: other: "yaklaşık %{count} yıl önce" password_reset: - no_token: "Üzgünüz, şifre değiştirme bağlantısı güncel değil. Yeni bağlantı almak için tekrar giriş yapın ve 'Şifremi unuttum\"'u seçin." + no_token: "Üzgünüz ancak bu şifre sıfırlama bağlantısının üzerinden bayağı bir süre geçmiş. Lütfen tekrar bir şifre sıfırlama isteği oluşturun." choose_new: "Lütfen yeni bir parola seçin" choose: "Lütfen parola seçin" update: 'Parolayı Güncelle' @@ -540,6 +540,14 @@ tr_TR: title: "Toplam" xaxis: "Gün" yaxis: "Toplam istekler" + time_to_first_response: + title: "İlk yanıtın verilme süresi" + xaxis: "Gün" + yaxis: "Ortalama süre (saat)" + topics_with_no_response: + title: "Hiç yanıtlanmamış konular" + xaxis: "Gün" + yaxis: "Toplam" dashboard: rails_env_warning: "Sunucunuz %{env} modunda çalışıyor." ruby_version_warning: "Problemli olduğu bilinegelen Ruby 2.0.0 sürümünü kullanmaktasınız. Yama seviyesi 247 veya daha yenisine güncelleme yapınız." @@ -897,6 +905,7 @@ tr_TR: sequential_replies_threshold: "Kullanıcının ardarda çok fazla cevap gönderdiğine dair uyarı alması için, bir konuda üstüste yapması gereken gönderi sayısı. " enable_mobile_theme: "Mobil cihazlar mobil uyumlu temayı kullanır, dilerse masaüstü görünüme geçebilirler. Eğer özel, duyarlı bir stil kullanıyorsanız bunu devredışı bırakın." dominating_topic_minimum_percent: "Konuyu domine ettiğine dair uyarı almadan önce konudaki gönderilerin yüzde kaçının kullanıcıya ait olması gerekir." + daily_performance_report: "NGINX kayıtlarını analiz edip detaylı bir şekilde günlük Yetkili kategorisinde bir konu içerisinde paylaş." suppress_uncategorized_badge: "Kategorisiz konular için olan rozeti konu listesinde gösterme." global_notice: "Tüm ziyaretçilere İVEDİ ACİL DURUM global manşet uyarısı göster, saklamak için boş bırakın (HTML kullanılabilir)." disable_edit_notifications: " 'download_remote_images_to_local' etkin olduğunda, sistem kullanıcısından gelen düzenleme bildirilerini devre dışı bırakır" @@ -931,6 +940,7 @@ tr_TR: enforce_square_emoji: "Tüm emojileri kare en-boy oranına zorla" approve_post_count: "Yeni bir kullanıcıdan onaylanması gereken gönderi sayısı" approve_unless_trust_level: "Bu güven seviyesi altındaki kullanıcılardan gelen gönderilerin onaylanması gerekir" + notify_about_queued_posts_after: "Bu kadar saat geçmesine rağmen hala incelenmemiş konular varsa, iletişim adresine e-posta gönder. Devre dışı bırakmak için 0 girin." errors: invalid_email: "Geçersiz e-posta adresi." invalid_username: "Bu kullanıcı adı ile bir kullanıcı bulunmuyor." @@ -1094,6 +1104,12 @@ tr_TR: how_to_disable: '"Bayraklarla ilgili bilgilendirme süresi" ayarından bu hatırlatma e-postasının gönderimini devre dışı bırakabilir ya da sıklığını değiştirebilirsiniz. ' subject_template: other: "İlgilenilmesi gereken %{count} bayrak var" + queued_posts_reminder: + subject_template: + other: "[%{site_name}] %{count} konu incelenmeyi bekliyor." + text_body_template: | + Merhaba, + Yeni kullanıcılar tarafından oluşturulmuş ve onayınızı bekleyen konular bulunuyor. [Konuları şuradan inceleyebilirsiniz.](%{base_url}/queued-posts). flag_reasons: off_topic: "Gönderiniz **konu-dışı** olarak bayraklandı: topluluk, gönderinizin konu başlığı ve ilk gönderi ile tanımlanan konu içeriğine uygun olmadığını düşünüyor. " inappropriate: "Gönderiniz **uygunsuz** olarak bayraklandı: topluluk gönderinizin saldırgan, kaba ya da [topluluk yönergelerine](/guidelines) aykırı olduğunu düşünüyor." @@ -1105,7 +1121,7 @@ tr_TR: disagreed: "Bizi bilgilendirdiğiniz için teşekkür ederiz. Konu ile ilgileniyoruz." deferred: "Bizi bilgilendirdiğiniz için teşekkür ederiz. Konu ile ilgileniyoruz." deferred_and_deleted: "Bizi bilgilendirdiğiniz için teşekkür ederiz. Gönderiyi kaldırdık." - temporarily_closed_due_to_flags: "Bu konu, topluluk tarafından bayraklanma sayısı çok olduğu için geçici olarak kapatıldı" + temporarily_closed_due_to_flags: "Bu konu topluluk tarafından çok fazla rapor edildiği için geçici olarak kapatılmıştır." system_messages: post_hidden: subject_template: "Topluluk tarafından bayraklandığı için gönderiniz gizlendi" @@ -1135,7 +1151,7 @@ tr_TR: text_body_template: "%{site_name} davetiyenizi onayladığınız için teşekkürler -- hoşgeldiniz! \n\nSizin için yeni bir hesap oluşturduk: **%{username}**, ve sisteme girişiniz yapıldı. [Kullanıcı profilinizi][prefs] ziyaret ederek kullanıcı adınızı değiştirebilirsiniz. \n\nDaha sonra tekrar giriş yapmak için: \n\n1. Giriş yaparken her zaman **ilk davetiyenizdekiyle aynı email adresini kullanın**. Yoksa sizin olduğunuzu anlayamayız! \n\n2. [Kullanıcı profiliniz][prefs] için yeni bir şifre oluşturun ve o şifre ile giriş yapın. \n\n%{new_user_tips} \n\nBiz her zaman [medeni topluluk davranışına](%{base_url}/guidelines) inanıyoruz. \n\nZiyaretinizin keyfini çıkarın!\n\n(Eğer yeni bir kullanıcı olarak [görevlilerle](%{base_url}/about) iletişim kurmak isterseniz, bu mesajı cevaplamanız yeterli.) \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." + text_body_template: "Yedekleme işlemi başarıyla tamamlandı.\nYeni yedeğinizi [Yönetici Paneli > Yedekler](%{base_url}/admin/backups) adresinden indirebilirsiniz." backup_failed: subject_template: "Yedekleme başarısız" text_body_template: "Yedekleme başarısız oldu. \n\nKayıtlar burada:\n\n```\n\n%{logs}\n\n```\n\n" @@ -1940,3 +1956,6 @@ tr_TR: submit_button: "E-posta Gönder" discourse_hub: access_token_problem: "Admin'e iletin: Lütfen doğru discourse_org_access_key içerecek şekilde site ayarlarını güncelleyin." + performance_report: + initial_post_raw: Bu konu siteniz hakkında günlük performans raporlarını içerir. + initial_topic_title: Site performansı raporları diff --git a/config/locales/server.zh_CN.yml b/config/locales/server.zh_CN.yml index 2310e3b7bf..767fed18f9 100644 --- a/config/locales/server.zh_CN.yml +++ b/config/locales/server.zh_CN.yml @@ -126,6 +126,7 @@ zh_CN: rss_description: latest: "最新主题" hot: "最热主题" + posts: "最新帖子" too_late_to_edit: "这个主题在很早之前创建。不能被编辑或者被删除。" excerpt_image: "图片" queue: @@ -352,7 +353,6 @@ zh_CN: almost_x_years: other: "将近 %{count} 年前" password_reset: - no_token: "抱歉,密码修改链接已过期。再登录一次并选择“我忘记了密码”获得一个新的链接。" choose_new: "请选择一个新密码" choose: "请选择一个密码" update: '更新密码' @@ -565,6 +565,13 @@ zh_CN: title: "总量" xaxis: "天" yaxis: "总请求数" + time_to_first_response: + xaxis: "天" + yaxis: "平均时间(小时)" + topics_with_no_response: + title: "没有回复的帖子" + xaxis: "天" + yaxis: "总量" dashboard: rails_env_warning: "你的服务器运行在 %{env} 模式。" ruby_version_warning: "你正在使用 Ruby 2.0.0,这个版本有较多的问题。请升级至 p247 或更新版。" @@ -1155,38 +1162,8 @@ zh_CN: [sc]: http://sendcloud.sohu.com/ new_version_mailer: subject_template: "[%{site_name}] 有新的 Discourse 版本,可供升级" - text_body_template: | - 有新版本的 Discourse 可供升级。 - - 你的版本:%{installed_version} - 新版本:**%{new_version}** - - 你可能想要: - - - 查看 [GitHub 改动日志](https://github.com/discourse/discourse/commits/master) 中的更新内容。 - - - 访问 [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade),然后按下“升级”按钮。 - - - 访问 [meta.discourse.org](http://meta.discourse.org) 获取 Discourse 的最新资讯、讨论和支持。 new_version_mailer_with_notes: subject_template: "[%{site_name}] 可以升级" - text_body_template: | - 有新版本的 [Discourse](http://www.discourse.org) 可供升级。 - - 你的版本:%{installed_version} - 新版本:**%{new_version}** - - 你可能想要: - - - 查看[GitHub 改动日志](https://github.com/discourse/discourse/commits/master)中的更新内容。 - - - 访问 [%{base_url}/admin/upgrade](%{base_url}/admin/upgrade) ,然后按下“升级”按钮。 - - - 访问 [meta.discourse.org](http://meta.discourse.org) 获取 Discourse 的最新资讯、讨论和支持。 - - ### 发行注记 - - %{notes} flags_reminder: flags_were_submitted: other: "这些标记在过去 %{count} 内被提交。" @@ -1206,7 +1183,6 @@ zh_CN: disagreed: "感谢通知我们。我们正在了解情况。" deferred: "感谢通知我们。我们正在调查情况。" deferred_and_deleted: "感谢通知我们。我们已经删除了帖子。" - temporarily_closed_due_to_flags: "帖子因为多次社群标记暂时关闭" system_messages: post_hidden: subject_template: "%{site_name} 提示:由于论坛用户标记,系统隐藏了你的帖子" @@ -1241,7 +1217,6 @@ zh_CN: 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)下载你的新备份文件。" backup_failed: subject_template: "备份失败" text_body_template: | @@ -1521,7 +1496,7 @@ zh_CN: new_activity: "在你的主题和帖子里的动态:" top_topics: "热门帖子" other_new_topics: "热门主题" - unsubscribe: "这封来自 %{site_link} 的摘要邮件是你一段时间没有访问后发送给你的。点击 %{unsubscribe_link} 取消订阅。" + unsubscribe: "这是封来自%{site_link}的摘要邮件,因为你长时间没有访问而发送。%{unsubscribe_link}取消订阅。" click_here: "点击此处" from: "%{site_name} 摘要" read_more: "阅读更多" @@ -1749,29 +1724,6 @@ zh_CN: 如果我们决定更改我们的隐私政策,我们将在此页更新这些改变。 文档以 CC-BY-SA 发布。最后更新时间为2013年5月31日。 - static: - search_help: | -
-
-
-
-
-
-
order:views | order:latest | |||
status:open | status:closed | status:archived | status:noreplies | status:singleuser |
category:foo | user:foo | |||
in:likes | in:posted | in:watching | in:tracking | in:private |
in:bookmarks | ||||
-
-
- 彩虹 category:公园 status:open order:latest 将搜索在“公园”分类中没有关闭或存档中的包含“彩虹”的主题,并按最后一个帖子的日期来排序。
-
badges:
long_descriptions:
autobiographer: |
@@ -1852,3 +1804,6 @@ zh_CN:
submit_button: "发送邮件"
discourse_hub:
access_token_problem: "告诉管理员:请更新站点设置,应使用正确的 discourse_org_access_key。"
+ performance_report:
+ initial_post_raw: 这个主题包括你网站的每日性能报告
+ initial_topic_title: 网站性能报告
diff --git a/config/nginx.sample.conf b/config/nginx.sample.conf
index 5e436fcf24..7daa8a3752 100644
--- a/config/nginx.sample.conf
+++ b/config/nginx.sample.conf
@@ -90,6 +90,13 @@ server {
add_header Access-Control-Allow-Origin *;
}
+ location = /srv/status {
+ access_log off;
+ log_not_found off;
+ proxy_pass http://discourse;
+ break;
+ }
+
location ~ ^/assets/ {
expires 1y;
# asset pipeline enables this
diff --git a/config/redis.yml b/config/redis.yml
deleted file mode 100644
index 5e8b2b5c34..0000000000
--- a/config/redis.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-defaults: &defaults
- host: <%= GlobalSetting.redis_host %>
- port: <%= GlobalSetting.redis_port %>
- password: <%= GlobalSetting.redis_password %>
- db: <%= GlobalSetting.redis_db %>
-
-development:
- <<: *defaults
-
-profile:
- <<: *defaults
-
-test:
- <<: *defaults
- db: 1
-
-staging:
- <<: *defaults
-
-production:
- <<: *defaults
diff --git a/config/routes.rb b/config/routes.rb
index 86ceb31d2e..45fb97610a 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -275,7 +275,8 @@ Discourse::Application.routes.draw do
get "users/:username/notifications" => "users#show", constraints: {username: USERNAME_ROUTE_FORMAT}
get "users/:username/pending" => "users#show", constraints: {username: USERNAME_ROUTE_FORMAT}
delete "users/:username" => "users#destroy", constraints: {username: USERNAME_ROUTE_FORMAT}
- get "users/by-external/:external_id" => "users#show"
+ # The external_id constraint is to allow periods to be used in the value without becoming part of the format. ie: foo.bar.json
+ get "users/by-external/:external_id" => "users#show", constraints: {external_id: /[^\/]+/}
get "users/:username/flagged-posts" => "users#show", constraints: {username: USERNAME_ROUTE_FORMAT}
get "users/:username/deleted-posts" => "users#show", constraints: {username: USERNAME_ROUTE_FORMAT}
get "user-badges/:username" => "user_badges#username"
@@ -409,7 +410,10 @@ Discourse::Application.routes.draw do
put "topics/bulk"
put "topics/reset-new" => 'topics#reset_new'
post "topics/timings"
- get "topics/similar_to"
+
+ get 'topics/similar_to' => 'similar_topics#index'
+ resources :similar_topics
+
get "topics/feature_stats"
get "topics/created-by/:username" => "list#topics_by", as: "topics_by", constraints: {username: USERNAME_ROUTE_FORMAT}
get "topics/private-messages/:username" => "list#private_messages", as: "topics_private_messages", constraints: {username: USERNAME_ROUTE_FORMAT}
diff --git a/config/site_settings.yml b/config/site_settings.yml
index 792b824ed7..ab50ecfd4f 100644
--- a/config/site_settings.yml
+++ b/config/site_settings.yml
@@ -416,7 +416,7 @@ posting:
client: true
default: false
show_time_gap_days:
- default: 4
+ default: 7
client: true
short_progress_text_threshold:
client: true
@@ -806,7 +806,7 @@ uncategorized:
min_search_term_length:
client: true
default: 3
- max_similar_results: 7
+ max_similar_results: 5
minimum_topics_similar: 50
new_topic_duration_minutes: 2880
@@ -870,6 +870,9 @@ uncategorized:
sequential_replies_threshold: 2
dominating_topic_minimum_percent: 20
+ # Reporting
+ daily_performance_report: false
+
global_notice:
default: ""
client: true
@@ -881,13 +884,19 @@ uncategorized:
lounge_category_id:
default: -1
hidden: true
+
meta_category_id:
default: -1
hidden: true
+
staff_category_id:
default: -1
hidden: true
+ performance_report_topic_id:
+ default: -1
+ hidden: true
+
notify_about_flags_after: 48
enable_cdn_js_debugging: false
diff --git a/lib/auth/result.rb b/lib/auth/result.rb
index 6bb016c007..461c8f7c9f 100644
--- a/lib/auth/result.rb
+++ b/lib/auth/result.rb
@@ -3,17 +3,27 @@ class Auth::Result
:email_valid, :extra_data, :awaiting_activation,
:awaiting_approval, :authenticated, :authenticator_name,
:requires_invite, :not_allowed_from_ip_address,
- :admin_not_allowed_from_ip_address
+ :admin_not_allowed_from_ip_address, :omit_username
+
+ attr_accessor :failed,
+ :failed_reason
+
+ def initialize
+ @failed = false
+ end
+
+ def failed?
+ !!@failed
+ end
def session_data
- {
- email: email,
+ { email: email,
username: username,
email_valid: email_valid,
+ omit_username: omit_username,
name: name,
authenticator_name: authenticator_name,
- extra_data: extra_data
- }
+ extra_data: extra_data }
end
def to_client_hash
@@ -42,7 +52,8 @@ class Auth::Result
username: UserNameSuggester.suggest(username || name || email),
# this feels a tad wrong
auth_provider: authenticator_name.capitalize,
- email_valid: !!email_valid
+ email_valid: !!email_valid,
+ omit_username: !!omit_username
}
end
end
diff --git a/lib/autospec/reload_css.rb b/lib/autospec/reload_css.rb
index 58e31811f6..e6bd00a6fa 100644
--- a/lib/autospec/reload_css.rb
+++ b/lib/autospec/reload_css.rb
@@ -27,11 +27,13 @@ class Autospec::ReloadCss
if paths.any? { |p| p =~ /\.(css|s[ac]ss)/ }
# todo connect to dev instead?
ActiveRecord::Base.establish_connection
- s = DiscourseStylesheets.new(:desktop) # TODO: what about mobile?
- s.compile
- s.ensure_digestless_file
+ [:desktop, :mobile].each do |style|
+ s = DiscourseStylesheets.new(style)
+ s.compile
+ s.ensure_digestless_file
+ paths << "public" + s.stylesheet_relpath_no_digest
+ end
ActiveRecord::Base.clear_active_connections!
- paths << "public" + s.stylesheet_relpath_no_digest
end
paths.map! do |p|
hash = nil
@@ -41,7 +43,7 @@ class Autospec::ReloadCss
p = p.sub(/\.sass/, "")
p = p.sub(/\.scss/, "")
p = p.sub(/^app\/assets\/stylesheets/, "assets")
- { name: p, hash: hash }
+ { name: p, hash: hash || SecureRandom.hex }
end
message_bus.publish "/file-change", paths
end
diff --git a/lib/discourse.rb b/lib/discourse.rb
index 5c97377533..bb614b70f7 100644
--- a/lib/discourse.rb
+++ b/lib/discourse.rb
@@ -354,7 +354,9 @@ module Discourse
end
def self.sidekiq_redis_config
- { url: $redis.url, namespace: 'sidekiq' }
+ conf = GlobalSetting.redis_config.dup
+ conf[:namespace] = 'sidekiq'
+ conf
end
def self.static_doc_topic_ids
diff --git a/lib/discourse_redis.rb b/lib/discourse_redis.rb
index 8cf03960f3..b4943fde9e 100644
--- a/lib/discourse_redis.rb
+++ b/lib/discourse_redis.rb
@@ -6,18 +6,11 @@ class DiscourseRedis
def self.raw_connection(config = nil)
config ||= self.config
- redis_opts = {host: config['host'], port: config['port'], db: config['db']}
- redis_opts[:password] = config['password'] if config['password']
- Redis.new(redis_opts)
+ Redis.new(config)
end
def self.config
- @config ||= YAML.load(ERB.new(File.new("#{Rails.root}/config/redis.yml").read).result)[Rails.env]
- end
-
- def self.url(config=nil)
- config ||= self.config
- "redis://#{(':' + config['password'] + '@') if config['password']}#{config['host']}:#{config['port']}/#{config['db']}"
+ GlobalSetting.redis_config
end
def initialize(config=nil)
@@ -30,10 +23,6 @@ class DiscourseRedis
@redis
end
- def url
- self.class.url(@config)
- end
-
def self.ignore_readonly
yield
rescue Redis::CommandError => ex
diff --git a/lib/pretty_text.rb b/lib/pretty_text.rb
index 1857885f97..becdfce8f7 100644
--- a/lib/pretty_text.rb
+++ b/lib/pretty_text.rb
@@ -25,15 +25,8 @@ module PrettyText
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")
- if split_avatars.present?
- hash = username.each_char.reduce(0) do |result, char|
- [((result << 5) - result) + char.ord].pack('L').unpack('l').first
- end
-
- avatar_template = split_avatars[hash.abs % split_avatars.size]
- end
+ if !user.uploaded_avatar_id
+ avatar_template = User.default_template(username)
else
avatar_template = user.avatar_template
end
diff --git a/lib/scheduler/manager.rb b/lib/scheduler/manager.rb
index fda3c300e6..2f2b42d4a9 100644
--- a/lib/scheduler/manager.rb
+++ b/lib/scheduler/manager.rb
@@ -118,16 +118,18 @@ module Scheduler
end
def self.without_runner(redis=nil)
- self.new(redis, true)
+ self.new(redis, skip_runner: true)
end
- def initialize(redis = nil, skip_runner = false)
+ def initialize(redis = nil, options=nil)
@redis = $redis || redis
@random_ratio = 0.1
- unless skip_runner
+ unless options && options[:skip_runner]
@runner = Runner.new(self)
self.class.current = self
end
+
+ @hostname = options && options[:hostname]
@manager_id = SecureRandom.hex
end
@@ -139,6 +141,10 @@ module Scheduler
@current = manager
end
+ def hostname
+ @hostname ||= `hostname`.strip
+ end
+
def schedule_info(klass)
ScheduleInfo.new(klass, self)
end
@@ -162,17 +168,22 @@ module Scheduler
def reschedule_orphans!
lock do
- redis.zrange(Manager.queue_key, 0, -1).each do |key|
- klass = get_klass(key)
- next unless klass
- info = schedule_info(klass)
+ reschedule_orphans_on!
+ reschedule_orphans_on!(hostname)
+ end
+ end
- if ['QUEUED', 'RUNNING'].include?(info.prev_result) &&
- (info.current_owner.blank? || !redis.get(info.current_owner))
- info.prev_result = 'ORPHAN'
- info.next_run = Time.now.to_i
- info.write!
- end
+ def reschedule_orphans_on!(hostname=nil)
+ redis.zrange(Manager.queue_key(hostname), 0, -1).each do |key|
+ klass = get_klass(key)
+ next unless klass
+ info = schedule_info(klass)
+
+ if ['QUEUED', 'RUNNING'].include?(info.prev_result) &&
+ (info.current_owner.blank? || !redis.get(info.current_owner))
+ info.prev_result = 'ORPHAN'
+ info.next_run = Time.now.to_i
+ info.write!
end
end
end
@@ -185,24 +196,30 @@ module Scheduler
def tick
lock do
- (key, due), _ = redis.zrange Manager.queue_key, 0, 0, withscores: true
- return unless key
- if due.to_i <= Time.now.to_i
- klass = get_klass(key)
- unless klass
- # corrupt key, nuke it (renamed job or something)
- redis.zrem Manager.queue_key, key
- return
- end
- info = schedule_info(klass)
- info.prev_run = Time.now.to_i
- info.prev_result = "QUEUED"
- info.prev_duration = -1
- info.next_run = nil
- info.current_owner = identity_key
- info.schedule!
- @runner.enq(klass)
+ schedule_next_job
+ schedule_next_job(hostname)
+ end
+ end
+
+ def schedule_next_job(hostname=nil)
+ (key, due), _ = redis.zrange Manager.queue_key(hostname), 0, 0, withscores: true
+
+ return unless key
+ if due.to_i <= Time.now.to_i
+ klass = get_klass(key)
+ unless klass
+ # corrupt key, nuke it (renamed job or something)
+ redis.zrem Manager.queue_key(hostname), key
+ return
end
+ info = schedule_info(klass)
+ info.prev_run = Time.now.to_i
+ info.prev_result = "QUEUED"
+ info.prev_duration = -1
+ info.next_run = nil
+ info.current_owner = identity_key
+ info.schedule!
+ @runner.enq(klass)
end
end
@@ -256,19 +273,27 @@ module Scheduler
end
def identity_key
- @identity_key ||= "_scheduler_#{`hostname`}:#{Process.pid}:#{self.class.seq}:#{SecureRandom.hex}"
+ @identity_key ||= "_scheduler_#{hostname}:#{Process.pid}:#{self.class.seq}:#{SecureRandom.hex}"
end
def self.lock_key
"_scheduler_lock_"
end
- def self.queue_key
- "_scheduler_queue_"
+ def self.queue_key(hostname=nil)
+ if hostname
+ "_scheduler_queue_#{hostname}_"
+ else
+ "_scheduler_queue_"
+ end
end
- def self.schedule_key(klass)
- "_scheduler_#{klass}"
+ def self.schedule_key(klass,hostname=nil)
+ if hostname
+ "_scheduler_#{klass}_#{hostname}"
+ else
+ "_scheduler_#{klass}"
+ end
end
end
end
diff --git a/lib/scheduler/schedule.rb b/lib/scheduler/schedule.rb
index 822e06fa37..a00fe1330f 100644
--- a/lib/scheduler/schedule.rb
+++ b/lib/scheduler/schedule.rb
@@ -17,6 +17,15 @@ module Scheduler::Schedule
@every
end
+ # schedule job indepndently on each host (looking at hostname)
+ def per_host
+ @per_host = true
+ end
+
+ def is_per_host
+ @per_host
+ end
+
def schedule_info
manager = Scheduler::Manager.without_runner
manager.schedule_info self
diff --git a/lib/scheduler/schedule_info.rb b/lib/scheduler/schedule_info.rb
index 9416ffa3bd..755bc621a9 100644
--- a/lib/scheduler/schedule_info.rb
+++ b/lib/scheduler/schedule_info.rb
@@ -86,6 +86,7 @@ module Scheduler
end
def write!
+
clear!
redis.set key, {
next_run: @next_run,
@@ -95,7 +96,7 @@ module Scheduler
current_owner: @current_owner
}.to_json
- redis.zadd Manager.queue_key, @next_run , @klass
+ redis.zadd queue_key, @next_run , @klass
end
def del!
@@ -104,7 +105,19 @@ module Scheduler
end
def key
- Manager.schedule_key(@klass)
+ if @klass.is_per_host
+ Manager.schedule_key(@klass, @manager.hostname)
+ else
+ Manager.schedule_key(@klass)
+ end
+ end
+
+ def queue_key
+ if @klass.is_per_host
+ Manager.queue_key(@manager.hostname)
+ else
+ Manager.queue_key
+ end
end
def redis
@@ -114,7 +127,7 @@ module Scheduler
private
def clear!
redis.del key
- redis.zrem Manager.queue_key, @klass
+ redis.zrem queue_key, @klass
end
end
diff --git a/lib/search.rb b/lib/search.rb
index 97779db687..1395cb7fd3 100644
--- a/lib/search.rb
+++ b/lib/search.rb
@@ -95,18 +95,18 @@ class Search
end
def initialize(term, opts=nil)
- term = process_advanced_search!(term)
- if term.present?
- @term = Search.prepare_data(term.to_s)
- @original_term = PG::Connection.escape_string(@term)
- end
-
@opts = opts || {}
@guardian = @opts[:guardian] || Guardian.new
@search_context = @opts[:search_context]
@include_blurbs = @opts[:include_blurbs] || false
@limit = Search.per_facet
+ term = process_advanced_search!(term)
+ if term.present?
+ @term = Search.prepare_data(term.to_s)
+ @original_term = PG::Connection.escape_string(@term)
+ end
+
if @search_pms && @guardian.user
@opts[:type_filter] = "private_messages"
@search_context = @guardian.user
@@ -125,7 +125,9 @@ class Search
# Query a term
def execute
- return nil if @term.blank? || @term.length < (@opts[:min_search_term_length] || SiteSetting.min_search_term_length)
+ if @term.blank? || @term.length < (@opts[:min_search_term_length] || SiteSetting.min_search_term_length)
+ return nil unless @filters.present?
+ end
# If the term is a number or url to a topic, just include that topic
if @opts[:search_for_id] && @results.type_filter == 'topic'
@@ -145,58 +147,128 @@ class Search
@results
end
+ def self.advanced_filter(trigger,&block)
+ (@advanced_filters ||= {})[trigger] = block
+ end
+
+ def self.advanced_filters
+ @advanced_filters
+ end
+
+ advanced_filter(/status:open/) do |posts|
+ posts.where('NOT topics.closed AND NOT topics.archived')
+ end
+
+ advanced_filter(/status:closed/) do |posts|
+ posts.where('topics.closed')
+ end
+
+ advanced_filter(/status:archived/) do |posts|
+ posts.where('topics.archived')
+ end
+
+ advanced_filter(/status:noreplies/) do |posts|
+ posts.where("topics.posts_count = 1")
+ end
+
+ advanced_filter(/status:single_user/) do |posts|
+ posts.where("topics.participant_count = 1")
+ end
+
+ advanced_filter(/posts_count:(\d+)/) do |posts, match|
+ posts.where("topics.posts_count = ?", match.to_i)
+ end
+
+ advanced_filter(/in:first/) do |posts|
+ posts.where("posts.post_number = 1")
+ end
+
+ advanced_filter(/in:(likes|bookmarks)/) do |posts, match|
+ if @guardian.user
+ post_action_type = PostActionType.types[:like] if match == "likes"
+ post_action_type = PostActionType.types[:bookmark] if match == "bookmarks"
+
+ posts.where("posts.id IN (
+ SELECT pa.post_id FROM post_actions pa
+ WHERE pa.user_id = #{@guardian.user.id} AND
+ pa.post_action_type_id = #{post_action_type} AND
+ deleted_at IS NULL
+ )")
+ end
+ end
+
+ advanced_filter(/in:posted/) do |posts|
+ posts.where("posts.user_id = #{@guardian.user.id}") if @guardian.user
+ end
+
+ advanced_filter(/in:(watching|tracking)/) do |posts,match|
+ if @guardian.user
+ level = TopicUser.notification_levels[match.to_sym]
+ posts.where("posts.topic_id IN (
+ SELECT tu.topic_id FROM topic_users tu
+ WHERE tu.user_id = #{@guardian.user.id} AND
+ tu.notification_level >= #{level}
+ )")
+
+ end
+ end
+
+ advanced_filter(/category:(.+)/) do |posts,match|
+ category_id = Category.find_by('name ilike ?', match).try(:id)
+ posts.where("topics.category_id = ?", category_id)
+ end
+
+ advanced_filter(/user:(.+)/) do |posts,match|
+ user_id = User.find_by('username_lower = ?', match.downcase).try(:id)
+ posts.where("posts.user_id = #{user_id}")
+ end
+
+ advanced_filter(/min_age:(\d+)/) do |posts,match|
+ n = match.to_i
+ posts.where("topics.created_at > ?", n.days.ago)
+ end
+
+ advanced_filter(/max_age:(\d+)/) do |posts,match|
+ n = match.to_i
+ posts.where("topics.created_at < ?", n.days.ago)
+ end
+
private
+
def process_advanced_search!(term)
term.to_s.split(/\s+/).map do |word|
- if word == 'status:open'
- @status = :open
- nil
- elsif word == 'status:closed'
- @status = :closed
- nil
- elsif word == 'status:archived'
- @status = :archived
- nil
- elsif word == 'status:noreplies'
- @posts_count = 1
- nil
- elsif word == 'status:singleuser'
- @single_user = true
- nil
- elsif word == 'order:latest'
+
+ found = false
+
+ Search.advanced_filters.each do |matcher, block|
+ if word =~ matcher
+ (@filters ||= []) << [block, $1]
+ found = true
+ end
+ end
+
+ if word == 'order:latest'
@order = :latest
nil
+ elsif word =~ /topic:(\d+)/
+ topic_id = $1.to_i
+ if topic_id > 1
+ topic = Topic.find_by(id: topic_id)
+ if @guardian.can_see?(topic)
+ @search_context = topic
+ end
+ end
+ nil
elsif word == 'order:views'
@order = :views
nil
- elsif word =~ /category:(.+)/
- @category_id = Category.find_by('name ilike ?', $1).try(:id)
- nil
- elsif word =~ /user:(.+)/
- @user_id = User.find_by('username_lower = ?', $1.downcase).try(:id)
- nil
- elsif word == 'in:likes'
- @liked_only = true
- nil
- elsif word == 'in:posted'
- @posted_only = true
- nil
- elsif word == 'in:watching'
- @notification_level = TopicUser.notification_levels[:watching]
- nil
- elsif word == 'in:tracking'
- @notification_level = TopicUser.notification_levels[:tracking]
- nil
elsif word == 'in:private'
@search_pms = true
nil
- elsif word == 'in:bookmarks'
- @bookmarked_only = true
- nil
else
- word
+ found ? nil : word
end
end.compact.join(' ')
end
@@ -210,8 +282,8 @@ class Search
else
@limit = Search.per_facet + 1
unless @search_context
- user_search
- category_search
+ user_search if @term.present?
+ category_search if @term.present?
end
topic_search
end
@@ -306,60 +378,23 @@ class Search
posts = posts.where("topics.archetype <> ?", Archetype.private_message)
end
- if is_topic_search
- posts = posts.joins('JOIN users u ON u.id = posts.user_id')
- posts = posts.where("posts.raw || ' ' || u.username || ' ' || u.name ilike ?", "%#{@term}%")
- else
- posts = posts.where("post_search_data.search_data @@ #{ts_query}")
- end
-
- if @status == :open
- posts = posts.where('NOT topics.closed AND NOT topics.archived')
- elsif @status == :archived
- posts = posts.where('topics.archived')
- elsif @status == :closed
- posts = posts.where('topics.closed')
- end
-
- if @single_user
- posts = posts.where("topics.featured_user1_id IS NULL AND topics.last_post_user_id = topics.user_id")
- end
-
- if @posts_count
- posts = posts.where("topics.posts_count = #{@posts_count}")
- end
-
- if @user_id
- posts = posts.where("posts.user_id = #{@user_id}")
- end
-
- if @guardian.user
- if @liked_only || @bookmarked_only
-
- post_action_type = PostActionType.types[:like] if @liked_only
- post_action_type = PostActionType.types[:bookmark] if @bookmarked_only
-
- posts = posts.where("posts.id IN (
- SELECT pa.post_id FROM post_actions pa
- WHERE pa.user_id = #{@guardian.user.id} AND
- pa.post_action_type_id = #{post_action_type}
- )")
+ if @term.present?
+ if is_topic_search
+ posts = posts.joins('JOIN users u ON u.id = posts.user_id')
+ posts = posts.where("posts.raw || ' ' || u.username || ' ' || u.name ilike ?", "%#{@term}%")
+ else
+ posts = posts.where("post_search_data.search_data @@ #{ts_query}")
end
-
- if @posted_only
- posts = posts.where("posts.user_id = #{@guardian.user.id}")
- end
-
- if @notification_level
- posts = posts.where("posts.topic_id IN (
- SELECT tu.topic_id FROM topic_users tu
- WHERE tu.user_id = #{@guardian.user.id} AND
- tu.notification_level >= #{@notification_level}
- )")
- end
-
end
+ @filters.each do |block, match|
+ if block.arity == 1
+ posts = instance_exec(posts, &block) || posts
+ else
+ posts = instance_exec(posts, match, &block) || posts
+ end
+ end if @filters
+
# If we have a search context, prioritize those posts first
if @search_context.present?
@@ -380,11 +415,7 @@ class Search
end
- if @category_id
- posts = posts.where("topics.category_id = ?", @category_id)
- end
-
- if @order == :latest
+ if @order == :latest || @term.blank?
if opts[:aggregate_search]
posts = posts.order("MAX(posts.created_at) DESC")
else
@@ -452,10 +483,6 @@ class Search
# double wrapping so we get correct row numbers
post_sql = "SELECT *, row_number() over() row_number FROM (#{post_sql}) xxx"
- # p Topic.exec_sql(post_sql).to_a
- # puts post_sql
- # p Topic.exec_sql("SELECT topic_id FROM topic_allowed_users WHERE user_id = 2").to_a
-
posts = Post.includes(:topic => :category)
.joins("JOIN (#{post_sql}) x ON x.id = posts.topic_id AND x.post_number = posts.post_number")
.order('row_number')
diff --git a/lib/search/grouped_search_results.rb b/lib/search/grouped_search_results.rb
index 742b1493b6..c3f661313d 100644
--- a/lib/search/grouped_search_results.rb
+++ b/lib/search/grouped_search_results.rb
@@ -3,7 +3,6 @@ require 'sanitize'
class Search
class GroupedSearchResults
-
include ActiveModel::Serialization
class TextHelper
@@ -26,11 +25,7 @@ class Search
end
def blurb(post)
- cooked = SearchObserver::HtmlScrubber.scrub(post.cooked).squish
- terms = @term.split(/\s+/)
- blurb = TextHelper.excerpt(cooked, terms.first, radius: 100)
- blurb = TextHelper.truncate(cooked, length: 200) if blurb.blank?
- Sanitize.clean(blurb)
+ GroupedSearchResults.blurb_for(post.cooked, @term)
end
def add(object)
@@ -43,6 +38,18 @@ class Search
end
end
+
+ def self.blurb_for(cooked, term=nil)
+ cooked = SearchObserver::HtmlScrubber.scrub(cooked).squish
+
+ blurb = nil
+ if term
+ terms = term.split(/\s+/)
+ blurb = TextHelper.excerpt(cooked, terms.first, radius: 100)
+ end
+ blurb = TextHelper.truncate(cooked, length: 200) if blurb.blank?
+ Sanitize.clean(blurb)
+ end
end
end
diff --git a/lib/topic_query.rb b/lib/topic_query.rb
index 13c3f9bb4b..6bda1c0abc 100644
--- a/lib/topic_query.rb
+++ b/lib/topic_query.rb
@@ -27,6 +27,7 @@ class TopicQuery
search
slow_platform
filter
+ q
).map(&:to_sym)
# Maps `order` to a columns in `topics`
@@ -71,7 +72,52 @@ class TopicQuery
end
def list_search
- create_list(:latest, {}, latest_results)
+
+ results = nil
+
+ if @options[:q].present?
+ search = Search.execute(@options[:q],
+ type_filter: 'topic',
+ guardian: Guardian.new(@user))
+
+ topic_ids = search.posts.map(&:topic_id)
+
+ if topic_ids.present?
+ sql = topic_ids.each_with_index.map do |id, idx|
+ "SELECT #{idx} pos, #{id} id"
+ end.join(" UNION ALL ")
+
+ results = Topic
+ .unscoped
+ .joins("JOIN (#{sql}) X on X.id = topics.id")
+ .order("X.pos")
+
+ posts_map = {}
+ search.posts.each do |p|
+ (posts_map[p.topic_id] ||= []) << p
+ end
+ end
+ end
+
+ results ||= Topic.where("1=0")
+
+ if @user
+ results = results.joins("LEFT OUTER JOIN topic_users AS tu ON (topics.id = tu.topic_id AND tu.user_id = #{@user.id.to_i})")
+ .references('tu')
+ end
+
+ list = create_list(:latest, {unordered: true}, results)
+
+
+ list.topics.each do |topic|
+ if posts = posts_map[topic.id]
+ if post = posts.shift
+ topic.search_data = {excerpt: search.blurb(post), post_number: post.post_number}
+ end
+ end
+ end
+
+ list
end
def list_read
@@ -167,7 +213,7 @@ class TopicQuery
end
unpinned_topics = topics.where("NOT ( #{pinned_clause} )")
- pinned_topics = topics.where(pinned_clause)
+ pinned_topics = topics.dup.offset(nil).where(pinned_clause)
per_page = options[:per_page] || per_page_setting
limit = per_page unless options[:limit] == false
@@ -176,7 +222,7 @@ class TopicQuery
if page == 0
(pinned_topics + unpinned_topics)[0...limit] if limit
else
- offset = (page * per_page - pinned_topics.count) - 1
+ offset = (page * per_page) - pinned_topics.count - 1
offset = 0 unless offset > 0
unpinned_topics.offset(offset).to_a
end
diff --git a/lib/version.rb b/lib/version.rb
index 07e3e7d582..a4881bc7f9 100644
--- a/lib/version.rb
+++ b/lib/version.rb
@@ -5,7 +5,7 @@ module Discourse
MAJOR = 1
MINOR = 4
TINY = 0
- PRE = 'beta3'
+ PRE = 'beta4'
STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
end
diff --git a/plugins/poll/assets/javascripts/components/poll-results-number.js.es6 b/plugins/poll/assets/javascripts/components/poll-results-number.js.es6
index da48d4abbf..42087e2933 100644
--- a/plugins/poll/assets/javascripts/components/poll-results-number.js.es6
+++ b/plugins/poll/assets/javascripts/components/poll-results-number.js.es6
@@ -1,4 +1,4 @@
-import round from "discourse/plugins/poll/lib/round";
+import round from "discourse/lib/round";
export default Em.Component.extend({
tagName: "span",
diff --git a/plugins/poll/config/locales/client.ar.yml b/plugins/poll/config/locales/client.ar.yml
index 37fab858e2..6a4702e0a6 100644
--- a/plugins/poll/config/locales/client.ar.yml
+++ b/plugins/poll/config/locales/client.ar.yml
@@ -17,7 +17,14 @@ ar:
one: "مجموع التصويت"
other: "مجموع الأصوات"
average_rating: "متوسط التصنيف: %{average} "
+ multiple:
+ help:
+ at_least_min_options: "من المفترض أن تختار على الأقل %{count} خيارات ."
+ up_to_max_options: "يجب عليك إختيار على الأكثر %{count} خيارات ."
+ x_options: "يجب عليك إختيار %{count} خيارات ."
+ between_min_and_max_options: "يجب عليك إختيار بين %{min} و %{max} خيارات ."
cast-votes:
+ title: "إدراج تصويتك ."
label: "صوت اﻵن!"
show-results:
title: "عرض نتائج التصويت"
@@ -25,3 +32,13 @@ ar:
hide-results:
title: "العودة إلى تصويتاتك"
label: "إخفاء النتائج"
+ open:
+ title: "فتح التصويت "
+ label: "فتح"
+ confirm: "هل بالفعل تاريد فتح هذا التصويت ؟"
+ close:
+ title: "إغلاق التصويت"
+ label: "إغلاق"
+ confirm: "هل أنت متأكد من إنك تريد إغلاق هذا التصويت ؟"
+ error_while_toggling_status: "هناك خطاء عند محاولة تبديل حالة التصويت ."
+ error_while_casting_votes: "هناك خطاء عن محاولة إدراج صوتك ."
diff --git a/plugins/poll/config/locales/client.sv.yml b/plugins/poll/config/locales/client.sv.yml
index 6f2835adb7..1dbe605d42 100644
--- a/plugins/poll/config/locales/client.sv.yml
+++ b/plugins/poll/config/locales/client.sv.yml
@@ -23,7 +23,7 @@ sv:
x_options: "Du måste välja %{count} alternativ."
between_min_and_max_options: "Du kan välja mellan %{min} och %{max} alternativ."
cast-votes:
- title: "Lägg din röster"
+ title: "Lägg dina röster"
label: "Rösta nu!"
show-results:
title: "Visa omröstningsresultatet"
diff --git a/plugins/poll/config/locales/server.ar.yml b/plugins/poll/config/locales/server.ar.yml
index 4bb9a6b925..7fcef197a3 100644
--- a/plugins/poll/config/locales/server.ar.yml
+++ b/plugins/poll/config/locales/server.ar.yml
@@ -6,5 +6,28 @@
# https://www.transifex.com/projects/p/discourse-org/
ar:
+ site_settings:
+ poll_enabled: "المستخدمين المسموح لهم إنشاء استطلاع رأي"
+ poll_maximum_options: "أقصى عدد من الخيارات المسموحة في استطلاع الرأي."
poll:
- cannot_change_polls_after_5_minutes: "لا يمكنك إضافة، حذف أو إعادة تسمية التصويتات بعد الـ5 دقائق اﻷولى."
+ multiple_polls_without_name: "هناك عدة استطلاعات رأي بدون اسم. استخدم خاصية 'name' لتحديد استطلاعاتك الفريدة."
+ multiple_polls_with_same_name: "هناك عدة استطلاعات رأي متشابهة بالاسم : %{name}. استخدم خاصية 'name' لتحدي استطلاعك الفريد."
+ default_poll_must_have_at_least_2_options: "استطلاع الرأي يجب أن يكون على الأقل 2 من الخيارات."
+ named_poll_must_have_at_least_2_options: "استطلاع الرأي المسمى %{name} يجب أن يكون على الأقل 2 من الخيارات."
+ default_poll_must_have_less_options: "استطلاع الرأي يجب أن يكون أقل من %{max} الخيارات."
+ named_poll_must_have_less_options: "استطلاع الرأي المسمى %{name} يجب أقل من %{max} الخيارات."
+ default_poll_must_have_different_options: "استطلاع الرأي يجب أن يكون مختلف الخيارات."
+ named_poll_must_have_different_options: "استطلاع الرأي المسمى %{name} يجب أن يكون مختلف الخيارات."
+ default_poll_with_multiple_choices_has_invalid_parameters: "معلمات استطلاع الرأي ذات الخيار المتعدد غير صالحة."
+ named_poll_with_multiple_choices_has_invalid_parameters: "معلمات استطلاع الرأي المسمى %{name} ذات الخيار المتعدد غير صالحة."
+ requires_at_least_1_valid_option: "يجب أن تختار أختيار 1 صحيح على الأقل."
+ cannot_change_polls_after_5_minutes: "لا يمكنك إضافة أو حذف أو إعادة تسمية استطلاعات الرأي بعد الـ5 دقائق اﻷولى."
+ op_cannot_edit_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات استطلاع الرأي بعد أول 5 دقائق. أرجو أن تتصل بالمسؤول إذا احتجت لتحرير خيارات الرأي."
+ staff_cannot_add_or_remove_options_after_5_minutes: "لا تستطيع إضافة أو حذف خيارات استطلاع الرأي بعد أول 5 دقائق. يجب عليك إغلاق هذا الموضوع وإنشاء جديد بدلا عنه."
+ no_polls_associated_with_this_post: "لا استطلاعات رأي مرتبطة مع هذا الاستطلاع."
+ no_poll_with_this_name: "استطلاع الرأي المسمى %{name} غير مرتبط مع هذا الاستطلاع."
+ post_is_deleted: "لا يمكنك عمل حذف مشاركة."
+ topic_must_be_open_to_vote: "الموضوع يجب أن يكون مفتوح للتصويت."
+ poll_must_be_open_to_vote: "يجب أن تكون الاستطلاعات مفتوحة للتصويت."
+ topic_must_be_open_to_toggle_status: "الموضوع يجب أن يكون مفتوح لتبديل الحالة."
+ only_staff_or_op_can_toggle_status: "فقط الأعضاء العاملين أو المعلنين الأصليين يمكنهم تبديل حالة الاستطلاع."
diff --git a/plugins/poll/config/locales/server.sv.yml b/plugins/poll/config/locales/server.sv.yml
index 982550ad14..d13c1eee1d 100644
--- a/plugins/poll/config/locales/server.sv.yml
+++ b/plugins/poll/config/locales/server.sv.yml
@@ -10,8 +10,24 @@ sv:
poll_enabled: "Tillåt användare att skapa omröstningar?"
poll_maximum_options: "Maximalt antal alternativ tillåtna i en omröstning."
poll:
+ multiple_polls_without_name: "Det finns flera omröstningar utan ett namn. Använd attributet 'namn' för att unikt identifiera dina omröstningar."
+ multiple_polls_with_same_name: "Det finns flera omröstningar med samma namn: %{name}. Använd attributet 'namn' för att unikt identifiera din omröstningar."
default_poll_must_have_at_least_2_options: "Omröstningen måste ha minst 2 alternativ."
named_poll_must_have_at_least_2_options: "Omröstningen med namnet %{name} måste ha minst 2 alternativ."
default_poll_must_have_less_options: "Omröstningen måste ha mindre än %{max} alternativ."
+ named_poll_must_have_less_options: "Omröstningen med namnet %{name} måste ha mindre än %{max} alternativ."
default_poll_must_have_different_options: "Omröstningen måste ha olika alternativ."
+ named_poll_must_have_different_options: "Omröstning med namnet %{name} måste ha olika alternativ."
+ default_poll_with_multiple_choices_has_invalid_parameters: "Omröstning med flera val har ogiltiga parametrar."
+ named_poll_with_multiple_choices_has_invalid_parameters: "Omröstning med namnet %{name} med flera val har ogiltiga parametrar."
requires_at_least_1_valid_option: "Du måste välja minst 1 giltigt alternativ."
+ cannot_change_polls_after_5_minutes: "Du kan inte lägga till, ta bort eller byta namn på omröstningar efter de första 5 minutrarna."
+ op_cannot_edit_options_after_5_minutes: "Du kan inte lägga till eller ta bort omröstningsalternativ efter det första 5 minutrarna. Vänligen kontakta en moderator om du behöver redigera ett omröstningsalternativ."
+ staff_cannot_add_or_remove_options_after_5_minutes: "Du kan inte lägga till eller ta bort omröstningsalternativ efter de första 5 minutrarna. Du får stänga detta ämne och skapa ett nytt i sådana fall."
+ no_polls_associated_with_this_post: "Inga omröstningar är knutet till detta inlägg."
+ no_poll_with_this_name: "Ingen omröstning med namnet %{name} är knuten till detta inlägg."
+ post_is_deleted: "Kan inte göra något med ett raderat inlägg."
+ topic_must_be_open_to_vote: "Detta ämne måste vara öppet för att kunna rösta."
+ poll_must_be_open_to_vote: "Omröstning måste vara öppen för att kunna rösta."
+ topic_must_be_open_to_toggle_status: "Ämnet måste vara öppet för att kunna växla status."
+ only_staff_or_op_can_toggle_status: "Endast personal eller ursprungsskribenten kan växla status på en omröstning."
diff --git a/public/403.ar.html b/public/403.ar.html
index 1e2006dd1a..12d30120a4 100644
--- a/public/403.ar.html
+++ b/public/403.ar.html
@@ -1,6 +1,6 @@
-
+