{{/if}}
diff --git a/app/assets/javascripts/discourse/views/category-chooser.js.es6 b/app/assets/javascripts/discourse/views/category-chooser.js.es6
index 46a82d0128..f0e39a8a1d 100644
--- a/app/assets/javascripts/discourse/views/category-chooser.js.es6
+++ b/app/assets/javascripts/discourse/views/category-chooser.js.es6
@@ -1,6 +1,5 @@
import ComboboxView from 'discourse/views/combo-box';
-
-var badgeHtml = Discourse.HTML.categoryBadge;
+import { categoryBadgeHTML } from 'discourse/helpers/category-link';
export default ComboboxView.extend({
classNames: ['combobox category-combobox'],
@@ -57,10 +56,10 @@ export default ComboboxView.extend({
}
if (!category) return item.text;
- var result = badgeHtml(category, {showParent: false, link: false, allowUncategorized: true}),
+ var result = categoryBadgeHTML(category, {link: false, allowUncategorized: true, hideParent: true}),
parentCategoryId = category.get('parent_category_id');
if (parentCategoryId) {
- result = badgeHtml(Discourse.Category.findById(parentCategoryId), {link: false}) + " " + result;
+ result = categoryBadgeHTML(Discourse.Category.findById(parentCategoryId), {link: false}) + " " + result;
}
result += " × " + category.get('topic_count') + "";
diff --git a/app/assets/javascripts/discourse/views/composer.js.es6 b/app/assets/javascripts/discourse/views/composer.js.es6
index c62e86f20c..f060f28ae7 100644
--- a/app/assets/javascripts/discourse/views/composer.js.es6
+++ b/app/assets/javascripts/discourse/views/composer.js.es6
@@ -73,6 +73,13 @@ var ComposerView = Discourse.View.extend(Ember.Evented, {
if (pos) {
self.$('.wmd-controls').css('top', $fields.height() + pos.top + 5);
}
+
+ // get the submit panel height
+ pos = self.$('.submit-panel').position();
+ if (pos) {
+ self.$('.wmd-controls').css('bottom', h - pos.top + 7);
+ }
+
});
}.observes('model.composeState', 'model.action'),
@@ -300,11 +307,15 @@ var ComposerView = Discourse.View.extend(Ember.Evented, {
// in case it's still bound somehow
this._unbindUploadTarget();
- var $uploadTarget = $('#reply-control');
+ var $uploadTarget = $('#reply-control'),
+ csrf = Discourse.Session.currentProp('csrfToken'),
+ cancelledByTheUser;
+ // NOTE: we need both the .json extension and the CSRF token as a query parameter for IE9
$uploadTarget.fileupload({
- url: Discourse.getURL('/uploads'),
+ url: Discourse.getURL('/uploads.json?authenticity_token=' + encodeURIComponent(csrf)),
dataType: 'json',
+ pasteZone: $uploadTarget
});
// submit - this event is triggered for each upload
@@ -317,22 +328,27 @@ var ComposerView = Discourse.View.extend(Ember.Evented, {
// send - this event is triggered when the upload request is about to start
$uploadTarget.on('fileuploadsend', function (e, data) {
+ cancelledByTheUser = false;
// hide the "file selector" modal
self.get('controller').send('closeModal');
- // cf. https://github.com/blueimp/jQuery-File-Upload/wiki/API#how-to-cancel-an-upload
- var jqXHR = data.xhr();
- // need to wait for the link to show up in the DOM
- Em.run.schedule('afterRender', function() {
- // bind on the click event on the cancel link
- $('#cancel-file-upload').on('click', function() {
- // cancel the upload
- self.set('isUploading', false);
- // NOTE: this might trigger a 'fileuploadfail' event with status = 0
- if (jqXHR) jqXHR.abort();
- // unbind
- $(this).off('click');
- });
- });
+ // NOTE: IE9 doesn't support XHR
+ if (data["xhr"]) {
+ var jqHXR = data.xhr();
+ if (jqHXR) {
+ // need to wait for the link to show up in the DOM
+ Em.run.schedule('afterRender', function() {
+ // bind on the click event on the cancel link
+ $('#cancel-file-upload').on('click', function() {
+ // cancel the upload
+ self.set('isUploading', false);
+ // NOTE: this might trigger a 'fileuploadfail' event with status = 0
+ if (jqHXR) { cancelledByTheUser = true; jqHXR.abort(); }
+ // unbind
+ $(this).off('click');
+ });
+ });
+ }
+ }
});
// progress all
@@ -343,14 +359,17 @@ var ComposerView = Discourse.View.extend(Ember.Evented, {
// done
$uploadTarget.on('fileuploaddone', function (e, data) {
- // make sure we have a url
- if (data.result.url) {
- var markdown = Discourse.Utilities.getUploadMarkdown(data.result);
- // appends a space at the end of the inserted markdown
- self.addMarkdown(markdown + " ");
- self.set('isUploading', false);
- } else {
- bootbox.alert(I18n.t('post.errors.upload'));
+ if (!cancelledByTheUser) {
+ // make sure we have a url
+ if (data.result.url) {
+ var markdown = Discourse.Utilities.getUploadMarkdown(data.result);
+ // appends a space at the end of the inserted markdown
+ self.addMarkdown(markdown + " ");
+ self.set('isUploading', false);
+ } else {
+ // display the error message sent by the server
+ bootbox.alert(data.result.join("\n"));
+ }
}
});
@@ -358,8 +377,10 @@ var ComposerView = Discourse.View.extend(Ember.Evented, {
$uploadTarget.on('fileuploadfail', function (e, data) {
// hide upload status
self.set('isUploading', false);
- // display an error message
- Discourse.Utilities.displayErrorForUpload(data);
+ if (!cancelledByTheUser) {
+ // display an error message
+ Discourse.Utilities.displayErrorForUpload(data);
+ }
});
// contenteditable div hack for getting image paste to upload working in
diff --git a/app/assets/javascripts/discourse/views/discovery-categories.js.es6 b/app/assets/javascripts/discourse/views/discovery-categories.js.es6
index 8571185e21..460a154237 100644
--- a/app/assets/javascripts/discourse/views/discovery-categories.js.es6
+++ b/app/assets/javascripts/discourse/views/discovery-categories.js.es6
@@ -1,3 +1,11 @@
import UrlRefresh from 'discourse/mixins/url-refresh';
-export default Discourse.View.extend(UrlRefresh, Discourse.ScrollTop);
+export default Discourse.View.extend(UrlRefresh, Discourse.ScrollTop, {
+ _addBodyClass: function() {
+ $('body').addClass('categories-list');
+ }.on('didInsertElement'),
+
+ _removeBodyClass: function() {
+ $('body').removeClass('categories-list');
+ }.on('willDestroyElement')
+});
diff --git a/app/assets/javascripts/discourse/views/dropdown-button.js.es6 b/app/assets/javascripts/discourse/views/dropdown-button.js.es6
index b10d8ad7a4..e656d6424f 100644
--- a/app/assets/javascripts/discourse/views/dropdown-button.js.es6
+++ b/app/assets/javascripts/discourse/views/dropdown-button.js.es6
@@ -31,20 +31,23 @@ export default Discourse.View.extend(StringBuffer, {
buffer.push("");
buffer.push("
");
- var self = this;
- this.get('dropDownContent').forEach(function(row) {
- var id = row.id,
- title = row.title,
- iconClass = row.styleClasses,
- description = row.description,
- className = (self.get('activeItem') === id ? 'disabled': '');
+ var contents = this.get('dropDownContent');
+ if (contents) {
+ var self = this;
+ contents.forEach(function(row) {
+ var id = row.id,
+ title = row.title,
+ iconClass = row.styleClasses,
+ description = row.description,
+ className = (self.get('activeItem') === id ? 'disabled': '');
- buffer.push("
<%- end -%>
diff --git a/app/views/users/activate_account.html.erb b/app/views/users/activate_account.html.erb
index f6847f9376..3d33bb8270 100644
--- a/app/views/users/activate_account.html.erb
+++ b/app/views/users/activate_account.html.erb
@@ -9,7 +9,7 @@
<% end %>
-<%- content_for(:no_js_head) do %>
+<%- content_for(:no_ember_head) do %>
<%= script "vendor" %>
<%- end %>
diff --git a/chef/cookbooks/discourse/recipes/default.rb b/chef/cookbooks/discourse/recipes/default.rb
index 3b9a8164a6..7313bce441 100644
--- a/chef/cookbooks/discourse/recipes/default.rb
+++ b/chef/cookbooks/discourse/recipes/default.rb
@@ -1,26 +1,26 @@
-execute "upgrade-rvm" do
- command "gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3"
- command "rvm get stable && rvm reload"
- action :nothing
-end
-
-execute "upgrade-ruby" do
- command "yes | rvm install ruby-2.1.5 --verify-downloads 1"
- action :nothing
-end
-
-execute "set-ruby" do
- command "rvm use ruby-2.1.5"
- user "vagrant"
- action :nothing
-end
-
-ruby_block "ruby-upgrade-message" do
- block do
- Chef::Log.info "Upgrading ruby. This will take a while."
- end
- notifies :run, "execute[upgrade-rvm]", :immediately
- notifies :run, "execute[upgrade-ruby]", :immediately
- notifies :run, "execute[set-ruby]", :immediately
- action :create
-end
+# execute "upgrade-rvm" do
+# command "gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3"
+# command "rvm get stable && rvm reload"
+# action :nothing
+# end
+#
+# execute "upgrade-ruby" do
+# command "yes | rvm install ruby-2.1.5 --verify-downloads 1"
+# action :nothing
+# end
+#
+# execute "set-ruby" do
+# command "rvm use ruby-2.1.5"
+# user "vagrant"
+# action :nothing
+# end
+#
+# ruby_block "ruby-upgrade-message" do
+# block do
+# Chef::Log.info "Upgrading ruby. This will take a while."
+# end
+# notifies :run, "execute[upgrade-rvm]", :immediately
+# notifies :run, "execute[upgrade-ruby]", :immediately
+# notifies :run, "execute[set-ruby]", :immediately
+# action :create
+# end
diff --git a/config/initializers/logster.rb b/config/initializers/logster.rb
index d280a18f61..48abc05567 100644
--- a/config/initializers/logster.rb
+++ b/config/initializers/logster.rb
@@ -7,8 +7,27 @@ if Rails.env.production?
/^ActionController::UnknownFormat/,
+ # some old browsers don't define the JavaScript console
+ #
+ # 'console' is undefined
+ # Url: http://discourse-cdn.codinghorror.com/assets/vendor-0dbc6e71b0ee5428574e3562afe91ef1.js
+ # Line: 16
+ # Window Location: http://discourse.codinghorror.com/t/the-non-programming-programmer/120/2
+ #
+ /^'console' is undefined/,
+
+ # ignore any empty JS errors that contain blanks or zeros for line and column fields
+ #
+ # Line:
+ # Column:
+ #
+ /(?m).*?Line: (?:\D|0).*?Column: (?:\D|0)/,
+
# suppress trackback spam bots
Logster::IgnorePattern.new("Can't verify CSRF token authenticity", { REQUEST_URI: /\/trackback\/$/ }),
+ # suppress trackback spam bots submitting to random URLs
+ # test for the presence of these params: url, title, excerpt, blog_name
+ Logster::IgnorePattern.new("Can't verify CSRF token authenticity", { params: { url: /./, title: /./, excerpt: /./, blog_name: /./} }),
# API calls, TODO fix this in rails
Logster::IgnorePattern.new("Can't verify CSRF token authenticity", { REQUEST_URI: /api_key/ })
diff --git a/config/locales/client.ar.yml b/config/locales/client.ar.yml
index 9b2de570c8..ba374225b8 100644
--- a/config/locales/client.ar.yml
+++ b/config/locales/client.ar.yml
@@ -24,18 +24,18 @@ ar:
mb: ميجا
tb: تيرا
dates:
- time: "سا:دد ف"
- long_no_year: "ش ش ش ي سا:دد ف"
- long_no_year_no_time: "ش ش ش ي"
- long_with_year: "ش ش ش ي, س س س س سا:دد ف"
- long_with_year_no_time: "ش ش ش ي, س س س س"
- long_date_with_year: "ش ش ش ي, س س س س"
- long_date_without_year: "ش ش ش ي"
- long_date_with_year_without_time: "ش ش ش ي, س س س س"
+ time: "h:mm a"
+ long_no_year: "MMM D h:mm a"
+ long_no_year_no_time: "MMM D"
+ long_with_year: "MMM D, YYYY h:mm a"
+ long_with_year_no_time: "MMM D, YYYY"
+ long_date_with_year: "MMM D, 'YY LT"
+ long_date_without_year: "MMM D, LT"
+ long_date_with_year_without_time: "MMM D, 'YY"
long_date_without_year_with_linebreak: "MMM D LT"
- long_date_with_year_with_linebreak: "ش ش ش ي, س س س س"
+ long_date_with_year_with_linebreak: "MMM D, 'YY LT"
tiny:
- half_a_minute: "< 1د"
+ half_a_minute: "< 1m"
less_than_x_seconds:
zero: "> %{count}ث"
one: "> ثانية"
@@ -43,10 +43,17 @@ ar:
few: "> %{count}ث"
many: "> %{count}ث"
other: "> %{count}ث"
- date_month: "ش ش ش ي"
- date_year: "ش ش ش ي, س س س س"
+ x_seconds:
+ zero: "%{count} ثانية"
+ one: "%{count} ثانية"
+ two: "%{count} ثانية"
+ few: "%{count} ثانية"
+ many: "%{count} ثانية"
+ other: "%{count} ثانية"
+ date_month: "MMM D"
+ date_year: "MMM 'YY"
medium:
- date_year: "ش ش ش ي, س س س س"
+ date_year: "MMM D, 'YY"
medium_with_ago:
x_days:
zero: "%{count} يوم مضى"
@@ -63,6 +70,7 @@ ar:
google+: 'شارك هذا الرابط عن طريق جوجل+'
email: 'شارك هذا الرابط عن طريق البريد الالكتروني'
topic_admin_menu: "عمليات المدير"
+ emails_are_disabled: "جميع الرسائل الالكترونية تم تعطيلها من قبل المدير , لن يتم ارسال اي بريد الكتروني "
edit: 'عدّل العنوان و التصنيف على هذا الموضوع'
not_implemented: "لم يتم تنفيذ هذه الميزة حتى الآن، نعتذر!"
no_value: "لا"
@@ -112,6 +120,13 @@ ar:
topic_count: "مواضيع"
post_count: "مشاركات"
user_count: "مستخدمين"
+ contact: "اتصل بنا"
+ contact_info: "في حالة حدوث أي مشكلة حرجة أو مسألة عاجلة تؤثر على هذا الموقع، يرجى الاتصال بنا على %{contact_email}."
+ bookmarked:
+ title: "المفضلة"
+ help:
+ bookmark: "انقر هنا لإضافة العنوان إلى المفضلة"
+ unbookmark: "أنقر هنا لحذف العنوان من المفضلة"
bookmarks:
not_logged_in: "نعتذر يجب ان تكون متصلا لكي تقوم بإضافة هدا الموضوع للمفضلة"
created: "لقد نجحت في إضافة الموضوع للمفضلة"
@@ -132,6 +147,8 @@ ar:
undo: "تراجع"
revert: "عكس"
failed: "فشل"
+ banner:
+ close: "تعطيل البانر"
choose_topic:
none_found: "لم يتم العثور على مواضيع."
title:
@@ -146,6 +163,7 @@ ar:
you_replied_to_topic: "أنت ردك على the topic"
user_mentioned_user: "{{user}} منشن{{another_user}}"
user_mentioned_you: "{{user}} منشنكyou"
+ you_mentioned_user: "You منشن{{another_user}}"
posted_by_user: "مشاركة {{user}}"
posted_by_you: "مشاركتك "
sent_by_user: "مرسلة من قبل {{user}}"
@@ -214,6 +232,7 @@ ar:
profile: "الملف الشخصي"
mute: "كتم"
edit: "تعديل التفضيلات"
+ download_archive: "تحميل مواضيعي"
new_private_message: "انشاء رسالة خاصة"
private_message: "رسائل خاصة"
private_messages: "الرسائل"
@@ -226,7 +245,6 @@ ar:
notifications: "اشعارات"
dismiss_notifications: "جعل الجميع مقروء"
dismiss_notifications_tooltip: "جعل جميع اشعارات غيرمقروء الى مقروء"
- disable_jump_reply: "لاتذهب الى مشاركة جديدة بعد الرد"
dynamic_favicon: " (أظهر تنبيهات الرسائل الواردة على فافيكون (تجريبية "
edit_history_public: "جعل المستخدمين الاخرين يطلعون على تعديلاتي"
external_links_in_new_tab: "إفتح كل الروابط الخارجية في صفحة جديدة"
@@ -239,7 +257,6 @@ ar:
suspended_notice: "هذا المستخدم موقوف حتى تاريخ {{date}}"
suspended_reason: "سبب"
github_profile: "Github"
- mailing_list_mode: "استقبال بريد الكتروني لكل مشاركة جديدة (بإسثناء لو قمت بكتم الموضوع او التصنيف)"
watched_categories: "متابع"
watched_categories_instructions: "تلقائيا ستقوم بمتابعة جميع المواضيع في هذا التصنيف , وسيتم اشعارك لجميع المشاركات والمواضيع وكذلك عداد الغيرمقروء والمشاركات الجديدة"
tracked_categories: "Tracked"
@@ -249,16 +266,24 @@ ar:
delete_account: "حذف الحساب"
delete_account_confirm: "هل انت متاكد من انك تريد حذف هذا المستخدم؟ هذا الإجراء دائماً!"
deleted_yourself: "حسابك تم حذفه بنجاح"
+ delete_yourself_not_allowed: "لايمكنك حذف حسابك لان , تواصل مع المدير ليحذف حسابك "
unread_message_count: "الرسائل"
admin_delete: "حذف"
staff_counters:
+ flags_given: "علامات مساعدة"
+ flagged_posts: "# مشاركات"
deleted_posts: "حذف جميع المشاركات"
+ suspensions: "موقف"
+ warnings_received: "تحذيرات"
messages:
all: "الكل"
+ mine: "لي"
+ unread: "غير مقروء"
change_password:
success: "(تم ارسال الرسالة)"
in_progress: "(يتم ارسال رسالة)"
error: "(خطأ)"
+ action: "ارسال اعادة ضبط كلمة المرور على البريد الالكتروني"
set_password: " إعادة تعين الرمز السري"
change_about:
title: "تعديل معلومات عنّي"
@@ -274,21 +299,51 @@ ar:
error: "حدث خطأ عند تغيير البريد الالكتروني. ربما يكون هذا البريد مستخدم من قبل؟"
success: "تم ارسال رسالة الى البريد الكتروني. يرجى اتباع تعليمات التأكيد."
change_avatar:
+ title: "غير صورتك الشخصية"
gravatar: "Gravatar, based on"
refresh_gravatar_title: "حدّث Gravatar"
+ letter_based: "الصورة الافتراضية "
uploaded_avatar: "تخصيص صورة"
uploaded_avatar_empty: "اضافة صورة "
upload_title: "رفع صورتك "
upload_picture: "رفع الصورة"
+ image_is_not_a_square: "تنبيه: تم اقتصاص جزء من الصورة ، لأنها ليست مربعة الشكل."
+ change_profile_background:
+ title: "لون خلفية الحساب"
+ instructions: "سيتم وضع خلفية الحساب في المنتصف بعرض 850px"
+ change_card_background:
+ title: "خلفية المستخدم"
+ instructions: "سيتم وضع الخلفية في المنتصف بعرض 590px"
email:
title: "بريد الكتروني"
+ instructions: "لن يتم إظهاره للعامة"
+ ok: "سيتم إرسال رسالة على بريدك الإلكتروني لتأكيد الحساب"
+ invalid: "يرجى إدخال بريد الكتروني فعّال."
+ authenticated: "تم توثيق بريدك الإلكتروني بواسطة {{provider}}"
+ frequency:
+ zero: "سيتم ارسال رسالة الكترونية فورا في حال أنك لم الرسائل السابقة"
name:
title: "الاسم"
+ instructions: "اسمك الكامل (اختياري )"
+ too_short: "اسمك قصير جداً."
+ ok: " .إسمك يبدو جيدا "
username:
title: "اسم المستخدم"
+ instructions: "غير مكرر , بدون مسافات , قصير"
+ short_instructions: "يمكن للناس بمنادتك بـ @{{username}}."
+ available: "اسم المستخدم متاح."
+ global_match: "البريد الالكتروني مطابق لـ اسم المستخدم المسّجل."
global_mismatch: "مسجل مسبقا ، جرّب {{suggestion}} ؟"
not_available: "غير متاح. جرّب {{suggestion}} ؟"
+ too_short: "اسم المستخدم قصير جداً"
+ too_long: "اسم المستخدم طويل جداً"
checking: "يتم التاكد من توفر اسم المستخدم..."
+ enter_email: 'تم العثور على اسم المستخدم. ادخل البريد الالكتروني المطابق.'
+ prefilled: "البريد الالكتروني مطابق لـ اسم المستخدم المسّجل."
+ locale:
+ title: "لغة الواجهة"
+ instructions: "لغة الواجهة تغيرت,, التغييرات سيتم تطبيقها في حا تم تحديث الصفحة"
+ default: "(default)"
password_confirmation:
title: "اعد كلمة المرور"
last_posted: " أخر موضوع"
@@ -297,21 +352,19 @@ ar:
created: "إنضم"
log_out: "تسجيل الخروج"
location: "الموقع"
+ card_badge:
+ title: "بطاقة المستخدم"
website: "موقع الكتروني"
email_settings: "بريد الكتروني"
email_digests:
- title: "عندم لا تقوم بزيارة الموقع، سنرسل رسالة الكترونية تحتوي على الجديد من موقعنا بشكل:"
daily: "يومي"
weekly: "اسبوعي"
bi_weekly: "كل اسبوعين"
- email_direct: "تلقي رسالة إلكترونية عندما يقوم شخص بإقتباس مشاركتك، الرد عليك او ذكر اسمك @username"
- email_private_messages: "إستقبل بريدا لما يرسل لك شخصا رسالة خاصة"
+ email_always: "لاتفعل ارسال رسائل بريدية اذا كنت متفاعل مع الموقع"
other_settings: "اخرى"
+ categories_settings: "اقسام"
new_topic_duration:
label: " \nإعتبر الوضوع جديد حين"
- not_viewed: "لم تقم بالاطلاع عليهم حتى الان."
- last_here: "تم انشائها منذ آخر زيارة لك"
- auto_track_topics: "تلقائيا متابعة المواضيع التي دخلتها "
auto_track_options:
never: "ابداً"
always: "دائما"
@@ -339,6 +392,7 @@ ar:
none: "لم تقم بدعوة اي احد حتى الان. تستطيع ارسال دعوة , أو ارسال عدة دعوات عن طريقuploading a bulk invite file."
text: "الدعوة من ملف"
uploading: "جاري الرقع..."
+ success: "تم رفع الملف بنجاح, سيتم اشعارك قريبا "
error: "كان هناك مشكلة في رفع الملف '{{filename}}': {{message}}"
password:
title: "كلمة المرور"
@@ -346,10 +400,13 @@ ar:
common: "كلمة المرور هذه شائعة "
ok: "كلمة المرور هذة تعتبر جيدة."
instructions: "على الاقل %{count} حرف"
+ associated_accounts: "حساب مرتبط"
ip_address:
title: "أخر عنوان أيبي"
registration_ip_address:
title: "ايبي مسجل"
+ avatar:
+ title: "صورة الملف الشخصي"
title:
title: "عنوان"
filters:
@@ -380,6 +437,11 @@ ar:
close: "اغلاق"
assets_changed_confirm: "هناك تغيير في الصفحة, هل تريد التحديث للحصول على أحدث نسخة ؟"
logout: "تم تسجيل خروجك"
+ refresh: "تحديث"
+ read_only_mode:
+ enabled: "المدير قام بتفعيل خاصية القراءة فقط , لن تستطيع التفاعل مع الموقع "
+ login_disabled: "تسجيل الدخول معطل لأن الموقع في خالة القراءة فقط"
+ too_few_topics_notice: "قم بإنشاء على الاقل 5 مواضيع و %{posts} مشاركات لتتمكن من المشاركة , المستخدمين الجدد لايمكن أن يحصلوا على مستوى الثقة حتى يكون هناك محتوى لهم , هذه الرسالة تظهر فقط للمدير"
learn_more: "تعلم المزيد..."
year: 'سنة'
year_desc: 'المواضيع المكتوبة خلال 365 يوم الماضية'
@@ -424,19 +486,36 @@ ar:
invite: "ادخل اسم مستخدمك او بريدك الالكتروني وسنقوم بإرسال اعاذة ضبط كلمة المرور على بريدك"
reset: " إعادة تعين الرمز السري"
complete_username: "اذا كان اسم المسنخدم موجود %{username}, سيتم ارسال رسالة لبريدك لإعادة ضبط كلمة المرور "
+ complete_email: "اذا كان الحساب متطابق %{email}, سوف تستلم بريد الالكتروني يحوي على التعليمات لإعادة ضبط كلمة المرور"
+ complete_username_found: "وجدنا حساب متطابق مع المستخدم %{username}, سوف تستلم بريد الالكتروني يحوي على التعليمات لإعادة ضبط كلمة المرور"
+ complete_email_found: "وجدنا حساب متطابق مع %{email}, سوف تستلم بريد الالكتروني يحوي على التعليمات لإعادة ضبط كلمة المرور"
+ complete_username_not_found: "لايوجد حساب متطابق مع هذا المستخدم %{username}"
+ complete_email_not_found: "لايوجد حساب متطابق مع %{email}"
login:
title: "تسجيل دخول"
username: "المستخدم"
password: "الرمز السري"
email_placeholder: "البريد الإلكتروني أو إسم المستخدم"
+ caps_lock_warning: "Caps Lock is on"
error: "مشكل غير معروف"
+ blank_username_or_password: "أدخل اسم المستخدم أو البريد الإلكتروني و كلمة المرور."
reset_password: ' إعادة تعيين الرمز السري'
logging_in: "...تسجيل الدخول "
or: "أو "
authenticating: " ... جاري التأكد"
+ awaiting_confirmation: "لازال حسابك غير فعال حتى هذه اللحظة، استخدم خيار \"نسيان كلمة المرور\" لإرسال رابط تفعيل آخر."
+ awaiting_approval: "لم يتم الموافقة على حسابك، سيتم إرسال بريد إلكتروني عندما تتم الموافقة."
+ requires_invite: "المعذرة، الوصول لهذا الموقع خاص بالمدعويين فقط."
+ not_activated: "لا يمكنك تسجيل الدخول. لقد سبق و أن أرسلنا بريد إلكتروني إلى {{sentTo}} لتفعيل حسابك. الرجاء اتباع التعليمات المرسلة لتفعيل الحساب."
+ not_allowed_from_ip_address: "لا يمكنك تستجيل الدخول من خلال هذا العنوان الرقمي - IP."
+ resend_activation_email: "اضغط هنا لإرسال رسالة إلكترونية أخرى لتفعيل الحساب."
+ sent_activation_email_again: "لقد سبق وأن تم إرسال رسالة إلكترونية إلى {{currentEmail}} لتفعيل حسابك. تأكد من مجلد السبام في بريدك."
google:
title: "مع جوجل"
message: "التحقق من خلال حساب جوجل ( الرجاء التأكد من عدم تشغيل مانع الاعلانات المنبثقة في المتصفح)"
+ google_oauth2:
+ title: "بواسطة Google"
+ message: "تسجيل الدخول باستخدام حسابك في Google ( تأكد أن النوافذ المنبثقة غير ممنوعة في متصفحك)"
twitter:
title: "مع تويتر"
message: "التحقق من خلال حساب تويتر ( الرجاء التأكد من عدم تشغيل مانع الاعلانات المنبثقة في المتصفح)"
@@ -449,13 +528,21 @@ ar:
github:
title: "مع جيتهب"
message: "التحقق من خلال حساب جيتهب ( الرجاء التأكد من عدم تشغيل مانع الاعلانات المنبثقة في المتصفح)"
+ apple_international: "ابل"
+ google: "جوجل"
+ twitter: "تويتر"
+ emoji_one: "تعبيرات"
composer:
+ emoji: "تعبيرات: ابتسامة"
+ add_warning: "هذا تحذير رسمي"
posting_not_on_topic: "أي موضوع تود الرد عليه؟"
saving_draft_tip: "يتم الحفظ"
saved_draft_tip: "تم الحفظ"
saved_local_draft_tip: "تم الحفظ محلياً"
similar_topics: "موضوعك مشابه لـ ..."
drafts_offline: "مسودات محفوظة "
+ min_length:
+ need_more_for_title: "{{n}} لذهاب الى العنوان"
error:
title_missing: "العنوان مطلوب"
post_missing: "لا يمكن للمشاركة أن تكون خالية"
@@ -464,15 +551,80 @@ ar:
reply_here: "الرد هنا"
reply: "الرد"
cancel: "إلغاء"
+ create_topic: "موضوع جديد"
+ create_pm: " رسالة خاصة"
+ title: "او اضغط على Ctrl+Enter"
users_placeholder: "اضافة مستخدم"
+ title_placeholder: "ما هو الموضوع المراد مناقشته في جملة واحدة ؟"
+ edit_reason_placeholder: "لمذا تريد التعديل ؟"
+ show_edit_reason: "(اضف سبب التعديل)"
+ reply_placeholder: "اكتب هنا . استعمل Markdown او BBCode لتنسيق . قم بسحب الصورة وافلاتها لرفع الصورة"
+ view_new_post: "الاطلاع على أحدث مشاركاتك"
+ saving: "يتم الحفظ..."
+ saved: "تم الحفظ"
+ saved_draft: "جاري إضافة المسودة. اضغط للاستئناف"
+ uploading: "يتم الرفع..."
+ show_preview: 'السابق »'
+ hide_preview: '« اخف المعاينة'
+ quote_post_title: "اقتبس كامل المشاركة"
+ bold_title: "قوي"
+ bold_text: "strong text"
+ italic_title: "Emphasis"
+ italic_text: "emphasized text"
+ link_title: "الرابط"
+ link_description: "ادخل وصف الرابط هنا "
+ link_dialog_title: "اضف الرابط"
+ link_optional_text: "عنوان اختياري"
+ quote_title: "حظر الاقتباس"
+ quote_text: "حظر الاقتباس"
+ code_title: "الاطلاع على التنسيق"
+ code_text: "لإضافة فراغ اول النص عن طريق 4 مسافات"
upload_title: "رفع"
upload_description: "ادخل وصف الرفع هنا"
+ olist_title: "قائمة مرقمة"
+ ulist_title: "قائمة "
+ list_item: "قائمة العناصر"
+ heading_title: "اخفاء"
+ heading_text: "اخفاء"
+ hr_title: "قانون افقي"
+ undo_title: "تراجع"
+ redo_title: "تقدم"
+ help: "مساعدة في الـ Maekdown"
+ toggler: "اخف او اظهر معلومات الكاتب"
+ admin_options_title: "اختياري اضافة اعدادات الموضوع"
+ auto_close:
+ label: "اغلاق تلقائي لوقت الموضع"
+ error: "يرجى ادخال قيمة صحيحة"
+ based_on_last_post: "لاتغلق الموضوع حتى تكون آخر مشاركة بهذا القدم "
+ all:
+ examples: 'أدخل رقم الساعة (24) . الوقت (17:30) . او التاريخ (2013-11-22 14:00).'
+ limited:
+ units: "(# of hours)"
+ examples: 'أدخل الساعة (24)'
upload_selector:
title: "اضف صورة"
title_with_attachments: "اضف صورة او ملف"
from_my_computer: "عن طريق جهازي"
from_the_web: "عن طريق الويب"
+ remote_tip: "رابط لصورة"
+ remote_tip_with_attachments: "رابط لصورة أو ملف ({{authorized_extensions}})"
+ local_tip: "اضغط لاختيار صورة من جهازك"
+ local_tip_with_attachments: "اضغط لاختيار صورة أو ملف من جهازك ({{authorized_extensions}})"
+ hint: "(تستطيع أيضا أن تسحب و تفلت ملف أو صورة في المحرر لرفعه)"
+ hint_for_supported_browsers: "(تستطيع أيضا أن تسحب وتفلت صورة أو تلصقها في المحرر لرفعها)"
uploading: "يتم الرفع"
+ image_link: "رابط ستشير له الصورة"
+ search:
+ title: "البحث في المواضيع أو الردود أو الأعضاء أو التصنيفات"
+ no_results: "لم يتم العثور على نتائج للبحث"
+ searching: "جاري البحث ..."
+ post_format: "#{{post_number}} بواسطة {{username}}"
+ context:
+ user: "البحث عن مواضيع @{{username}}"
+ category: "البحث في التصنيف \"{{category}}\""
+ topic: "بحث في هذا الموضوع"
+ private_messages: "البحث في الرسائل الخاصة"
+ go_back: 'الرجوع'
post:
errors:
attachment_too_large: "نعتذر، الملف الذي تريد رفعه كبير جداَ ( الحد الاقصى {{max_size_kb}} كيلوبايت )"
diff --git a/config/locales/client.cs.yml b/config/locales/client.cs.yml
index 9d4134cf89..5efde92f90 100644
--- a/config/locales/client.cs.yml
+++ b/config/locales/client.cs.yml
@@ -107,6 +107,7 @@ cs:
google+: 'sdílet odkaz na Google+'
email: 'odeslat odkaz emailem'
topic_admin_menu: "akce administrátora tématu"
+ emails_are_disabled: "Všechny odchozí emaily byly administrátorem vypnuty. Žádné odchozí emaily nebudou odeslány."
edit: 'upravit název a kategorii příspěvku'
not_implemented: "Tato fičura ještě není implementovaná"
no_value: "Ne"
@@ -160,6 +161,13 @@ cs:
topic_count: "Témata"
post_count: "Příspěvky"
user_count: "Uživatelé"
+ contact: "Kontaktujte nás"
+ contact_info: "V případě kritické chyby nebo urgentní záležitosti ovlivňující tuto stránku, nás prosím kontaktujte na %{contact_email}."
+ bookmarked:
+ title: "Záložka"
+ help:
+ bookmark: "Kliknutím přidáte záložku"
+ unbookmark: "Kliknutím odstraníte záložku"
bookmarks:
not_logged_in: "Pro přidání záložky se musíte přihlásit."
created: "Záložka byla přidána."
@@ -295,7 +303,6 @@ cs:
notifications: "Oznámení"
dismiss_notifications: "Označ vše jako přečtené"
dismiss_notifications_tooltip: "Označit všechny nepřečtené notifikace jako přečtené"
- disable_jump_reply: "Po odpovědi nepřeskakovat na nový příspěvek"
dynamic_favicon: "Zobrazovat notifikace na favikoně"
edit_history_public: "Povolit ostatním zobrazení všechn verzí mého příspěvku"
external_links_in_new_tab: "Otevírat všechny externí odkazy do nové záložky"
@@ -308,7 +315,6 @@ cs:
suspended_notice: "Uživatel je suspendován do {{date}}."
suspended_reason: "Důvod: "
github_profile: "Github"
- mailing_list_mode: "Obdržet email za každý nový příspěvek (pokud si neztišíte téma nebo kateogii)"
watched_categories: "Hlídané"
watched_categories_instructions: "Nová témata v těchto kategoriích budou hlídaná. Na všechny nové příspěvky budete upozorněni."
tracked_categories: "Sledované"
@@ -351,8 +357,10 @@ cs:
error: "Nastala chyba při změně emailové adresy. Není tato adresa již používaná?"
success: "Na zadanou adresu jsme zaslali email. Následujte, prosím, instrukce v tomto emailu."
change_avatar:
+ title: "Změňte si svůj profilový obrázek"
gravatar: "Založeno na Gravataru"
refresh_gravatar_title: "Obnovit Gravatar"
+ letter_based: "Systémem přidělený profilový obrázek"
uploaded_avatar: "Vlastní obrázek"
uploaded_avatar_empty: "Přidat vlastní obrázek"
upload_title: "Nahrát obrázek"
@@ -407,19 +415,14 @@ cs:
website: "Webová stránka"
email_settings: "Emailová upozornění"
email_digests:
- title: "When you don't visit the site, send an email digest of what's new:"
daily: "denně"
weekly: "týdně"
bi_weekly: "jednou za 14 dní"
- email_direct: "Upozornění emailem na citace, odpovědi na vaše příspěvky a zmínky @vy"
- email_private_messages: "Upozornění emailem na novou soukromou zprávu"
email_always: "Posílat upozorňovací emaily i když jsem zrovna na webu aktivní"
other_settings: "Ostatní"
categories_settings: "Kategorie"
new_topic_duration:
label: "Považovat témata za nová, pokud"
- not_viewed: "you haven't viewed them yet"
- last_here: "vytvořeno od poslední návštěvy"
after_n_days:
one: "vytvořeno v poslední {{count}} dnu"
few: "vytvořeno v posledních {{count}} dnech"
@@ -428,7 +431,6 @@ cs:
one: "vytvořeno v posledním {{count}} týdnu"
few: "vytvořeno v posledních {{count}} týdnech"
other: "vytvořeno v posledních {{count}} týdnech"
- auto_track_topics: "Automaticky sledovat navštívená témata"
auto_track_options:
never: "nikdy"
always: "vždy"
@@ -476,6 +478,8 @@ cs:
title: "Poslední IP adresa"
registration_ip_address:
title: "Registrační IP adresa"
+ avatar:
+ title: "Profilový obrázek"
title:
title: "Titul"
filters:
@@ -676,7 +680,6 @@ cs:
examples: 'Zadejte počet hodin (24).'
notifications:
title: "oznámení o zmínkách pomocí @jméno, odpovědi na vaše příspěvky a témata, soukromé zprávy, atd."
- none: "V tuto chvíli nemáte žádná oznámení."
more: "zobrazit starší oznámení"
total_flagged: "celkem nahlášeno příspěvků"
mentioned: "@
{{username}} {{description}}
"
@@ -919,7 +922,6 @@ cs:
to_forum: "Pošleme krátký email dovolující vašemu příteli se okamžitě zapojit s pomocí kliknutí na odkaz. Nebude potřeba registrace."
email_placeholder: 'jmeno@priklad.cz'
success: "Zaslali jsme pozvánku na {{email}}. Upozorníme vás až bude pozvánka použita. Své pozvánky můžete sledovat v tabulce pozvánek na svém uživatelském profilu."
- error: "Bohužel se nepodařilo pozvat tuto osobu. Není již registrovaným uživatelem?"
login_reply: 'Přihlaste se, chcete-li odpovědět'
filters:
n_posts:
@@ -1229,10 +1231,13 @@ cs:
notifications:
watching:
title: "Hlídání"
+ description: "Budete automaticky sledovat všechna nová témata v těchto kategoriích. Na všechny nové příspěvky budete upozorněni. Počet nepřečtených a nových příspěvků se zobrazí vedle tématu."
tracking:
title: "Sledování"
+ description: "Všechna nová témata v této kategorii budou automaticky hlídaná. Počet nepřečtených a nových příspěvků se zobrazí vedle tématu."
regular:
title: "Normální"
+ description: "Budete informováni, pokud někdo zmíní vaše @jméno nebo odpoví na váš příspěvek."
muted:
title: "Ztišený"
description: "Nebudete upozorněni na žádná nová témata v těchto kategoriích a ani se nebudou zobrazovat jako nepřečtené."
@@ -1254,6 +1259,7 @@ cs:
inappropriate: "Je to nevhodné"
spam: "Je to spam"
custom_placeholder_notify_user: "Buďte věcný, konstruktivní a vždy zdvořilý."
+ custom_placeholder_notify_moderators: "Sdělte nám, co vás přesně trápí a kde to bude možné, tak nám poskytněte související odkazy a příklady."
custom_message:
at_least: "zadejte alespoň {{n}} znaků"
more: "ještě {{n}}..."
@@ -1272,17 +1278,23 @@ cs:
topic_statuses:
warning:
help: "Toto je oficiální varování."
+ bookmarked:
+ help: "V tématu je vložena záložka"
locked:
help: "toto téma je uzavřené; další odpovědi nejsou přijímány"
unpinned:
title: "Nepřipnuté"
+ help: "Pro vás toto téma není připnuté; bude se zobrazovat v běžném pořadí"
pinned_globally:
title: "Připnuté globálně"
help: "Toto téma je připnuto globálně, zobrazí se na vršku všech seznamů"
pinned:
title: "Připnuto"
+ help: "Pro vás je toto téma připnuté; bude se zobrazovat na vrcholu seznamu ve své kategorii"
archived:
help: "toto téma je archivováno; je zmraženo a nelze ho již měnit"
+ invisible:
+ help: "Toto téma je neviditelné; nebude se zobrazovat v seznamu témat a lze ho navštívit pouze přes přímý odkaz"
posts: "Příspěvků"
posts_lowercase: "příspěvky"
posts_long: "v tomto tématu je {{number}} příspěvků"
@@ -1500,6 +1512,7 @@ cs:
delete: "Smazat"
delete_confirm: "Smazat toto skupiny?"
delete_failed: "Unable to delete group. If this is an automatic group, it cannot be destroyed."
+ delete_member_confirm: "Odstranit '%{username}' ze '%{group}' skupiny?"
name: "Jméno"
add: "Přidat"
add_members: "Přidat členy"
@@ -1568,16 +1581,25 @@ cs:
title: "Rollback the database to previous working state"
confirm: "Are your sure you want to rollback the database to the previous working state?"
export_csv:
+ success: "Exportování bylo zahájeno. O dokončení budete informováni pomocí soukromé zprávy."
failed: "Exportování selhalo. Prosím zkontrolujte logy."
+ rate_limit_error: "Příspěvky mohou být staženy jednou za den. Prosíme, zkuste to znovu zítra."
button_text: "Export"
button_title:
user: "Exportovat kompletní seznam uživatelů v CSV formátu."
+ screened_email: "Exportovat kompletní seznam emailů v CSV formátu."
+ screened_ip: "Exportovat kompletní seznam IP adres v CSV formátu."
+ screened_url: "Exportovat kompletní seznam URL v CSV formátu."
customize:
title: "Přizpůsobení"
long_title: "Přizpůsobení webu"
css: "CSS"
header: "header"
footer: "Patička"
+ head_tag:
+ text: ""
+ body_tag:
+ text: "